# Copyright 2015 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. require 'date' require 'google/apis/core/base_service' require 'google/apis/core/json_representation' require 'google/apis/core/hashable' require 'google/apis/errors' module Google module Apis module ClassroomV1 # Attachment added to student assignment work. # When creating attachments, setting the `form` field is not supported. class Attachment include Google::Apis::Core::Hashable # Representation of a Google Drive file. # Corresponds to the JSON property `driveFile` # @return [Google::Apis::ClassroomV1::DriveFile] attr_accessor :drive_file # YouTube video item. # Corresponds to the JSON property `youTubeVideo` # @return [Google::Apis::ClassroomV1::YouTubeVideo] attr_accessor :you_tube_video # URL item. # Corresponds to the JSON property `link` # @return [Google::Apis::ClassroomV1::Link] attr_accessor :link # Google Forms item. # Corresponds to the JSON property `form` # @return [Google::Apis::ClassroomV1::Form] attr_accessor :form def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @drive_file = args[:drive_file] if args.key?(:drive_file) @you_tube_video = args[:you_tube_video] if args.key?(:you_tube_video) @link = args[:link] if args.key?(:link) @form = args[:form] if args.key?(:form) end end # Response when listing guardian invitations. class ListGuardianInvitationsResponse include Google::Apis::Core::Hashable # Token identifying the next page of results to return. If empty, no further # results are available. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # Guardian invitations that matched the list request. # Corresponds to the JSON property `guardianInvitations` # @return [Array] attr_accessor :guardian_invitations def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @guardian_invitations = args[:guardian_invitations] if args.key?(:guardian_invitations) end end # Course work created by a teacher for students of the course. class CourseWork include Google::Apis::Core::Hashable # Classroom-assigned identifier of this course work, unique per course. # Read-only. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # Optional description of this course work. # If set, the description must be a valid UTF-8 string containing no more # than 30,000 characters. # Corresponds to the JSON property `description` # @return [String] attr_accessor :description # Setting to determine when students are allowed to modify submissions. # If unspecified, the default value is `MODIFIABLE_UNTIL_TURNED_IN`. # Corresponds to the JSON property `submissionModificationMode` # @return [String] attr_accessor :submission_modification_mode # Whether this course work item is associated with the Developer Console # project making the request. # See google.classroom.Work.CreateCourseWork for more # details. # Read-only. # Corresponds to the JSON property `associatedWithDeveloper` # @return [Boolean] attr_accessor :associated_with_developer alias_method :associated_with_developer?, :associated_with_developer # Timestamp of the most recent change to this course work. # Read-only. # Corresponds to the JSON property `updateTime` # @return [String] attr_accessor :update_time # Title of this course work. # The title must be a valid UTF-8 string containing between 1 and 3000 # characters. # Corresponds to the JSON property `title` # @return [String] attr_accessor :title # Absolute link to this course work in the Classroom web UI. # This is only populated if `state` is `PUBLISHED`. # Read-only. # Corresponds to the JSON property `alternateLink` # @return [String] attr_accessor :alternate_link # Type of this course work. # The type is set when the course work is created and cannot be changed. # Corresponds to the JSON property `workType` # @return [String] attr_accessor :work_type # Additional materials. # CourseWork must have no more than 20 material items. # Corresponds to the JSON property `materials` # @return [Array] attr_accessor :materials # Status of this course work. # If unspecified, the default state is `DRAFT`. # Corresponds to the JSON property `state` # @return [String] attr_accessor :state # Represents a whole calendar date, e.g. date of birth. The time of day and # time zone are either specified elsewhere or are not significant. The date # is relative to the Proleptic Gregorian Calendar. The day may be 0 to # represent a year and month where the day is not significant, e.g. credit card # expiration date. The year may be 0 to represent a month and day independent # of year, e.g. anniversary date. Related types are google.type.TimeOfDay # and `google.protobuf.Timestamp`. # Corresponds to the JSON property `dueDate` # @return [Google::Apis::ClassroomV1::Date] attr_accessor :due_date # Additional details for multiple-choice questions. # Corresponds to the JSON property `multipleChoiceQuestion` # @return [Google::Apis::ClassroomV1::MultipleChoiceQuestion] attr_accessor :multiple_choice_question # Timestamp when this course work was created. # Read-only. # Corresponds to the JSON property `creationTime` # @return [String] attr_accessor :creation_time # Identifier of the course. # Read-only. # Corresponds to the JSON property `courseId` # @return [String] attr_accessor :course_id # Maximum grade for this course work. # If zero or unspecified, this assignment is considered ungraded. # This must be a non-negative integer value. # Corresponds to the JSON property `maxPoints` # @return [Float] attr_accessor :max_points # Additional details for assignments. # Corresponds to the JSON property `assignment` # @return [Google::Apis::ClassroomV1::Assignment] attr_accessor :assignment # Represents a time of day. The date and time zone are either not significant # or are specified elsewhere. An API may choose to allow leap seconds. Related # types are google.type.Date and `google.protobuf.Timestamp`. # Corresponds to the JSON property `dueTime` # @return [Google::Apis::ClassroomV1::TimeOfDay] attr_accessor :due_time def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @id = args[:id] if args.key?(:id) @description = args[:description] if args.key?(:description) @submission_modification_mode = args[:submission_modification_mode] if args.key?(:submission_modification_mode) @associated_with_developer = args[:associated_with_developer] if args.key?(:associated_with_developer) @update_time = args[:update_time] if args.key?(:update_time) @title = args[:title] if args.key?(:title) @alternate_link = args[:alternate_link] if args.key?(:alternate_link) @work_type = args[:work_type] if args.key?(:work_type) @materials = args[:materials] if args.key?(:materials) @state = args[:state] if args.key?(:state) @due_date = args[:due_date] if args.key?(:due_date) @multiple_choice_question = args[:multiple_choice_question] if args.key?(:multiple_choice_question) @creation_time = args[:creation_time] if args.key?(:creation_time) @course_id = args[:course_id] if args.key?(:course_id) @max_points = args[:max_points] if args.key?(:max_points) @assignment = args[:assignment] if args.key?(:assignment) @due_time = args[:due_time] if args.key?(:due_time) end end # Representation of a Google Drive file. class DriveFile include Google::Apis::Core::Hashable # URL of a thumbnail image of the Drive item. # Read-only. # Corresponds to the JSON property `thumbnailUrl` # @return [String] attr_accessor :thumbnail_url # Title of the Drive item. # Read-only. # Corresponds to the JSON property `title` # @return [String] attr_accessor :title # URL that can be used to access the Drive item. # Read-only. # Corresponds to the JSON property `alternateLink` # @return [String] attr_accessor :alternate_link # Drive API resource ID. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @thumbnail_url = args[:thumbnail_url] if args.key?(:thumbnail_url) @title = args[:title] if args.key?(:title) @alternate_link = args[:alternate_link] if args.key?(:alternate_link) @id = args[:id] if args.key?(:id) end end # Representation of a Google Drive folder. class DriveFolder include Google::Apis::Core::Hashable # Title of the Drive folder. # Read-only. # Corresponds to the JSON property `title` # @return [String] attr_accessor :title # URL that can be used to access the Drive folder. # Read-only. # Corresponds to the JSON property `alternateLink` # @return [String] attr_accessor :alternate_link # Drive API resource ID. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @title = args[:title] if args.key?(:title) @alternate_link = args[:alternate_link] if args.key?(:alternate_link) @id = args[:id] if args.key?(:id) end end # Response when listing course aliases. class ListCourseAliasesResponse include Google::Apis::Core::Hashable # Token identifying the next page of results to return. If empty, no further # results are available. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # The course aliases. # Corresponds to the JSON property `aliases` # @return [Array] attr_accessor :aliases def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @aliases = args[:aliases] if args.key?(:aliases) end end # Student work for a short answer question. class ShortAnswerSubmission include Google::Apis::Core::Hashable # Student response to a short-answer question. # Corresponds to the JSON property `answer` # @return [String] attr_accessor :answer def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @answer = args[:answer] if args.key?(:answer) end end # A material attached to a course as part of a material set. class CourseMaterial include Google::Apis::Core::Hashable # Representation of a Google Drive file. # Corresponds to the JSON property `driveFile` # @return [Google::Apis::ClassroomV1::DriveFile] attr_accessor :drive_file # YouTube video item. # Corresponds to the JSON property `youTubeVideo` # @return [Google::Apis::ClassroomV1::YouTubeVideo] attr_accessor :you_tube_video # URL item. # Corresponds to the JSON property `link` # @return [Google::Apis::ClassroomV1::Link] attr_accessor :link # Google Forms item. # Corresponds to the JSON property `form` # @return [Google::Apis::ClassroomV1::Form] attr_accessor :form def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @drive_file = args[:drive_file] if args.key?(:drive_file) @you_tube_video = args[:you_tube_video] if args.key?(:you_tube_video) @link = args[:link] if args.key?(:link) @form = args[:form] if args.key?(:form) end end # Student work for a multiple-choice question. class MultipleChoiceSubmission include Google::Apis::Core::Hashable # Student's select choice. # Corresponds to the JSON property `answer` # @return [String] attr_accessor :answer def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @answer = args[:answer] if args.key?(:answer) end end # URL item. class Link include Google::Apis::Core::Hashable # URL to link to. # This must be a valid UTF-8 string containing between 1 and 2024 characters. # Corresponds to the JSON property `url` # @return [String] attr_accessor :url # URL of a thumbnail image of the target URL. # Read-only. # Corresponds to the JSON property `thumbnailUrl` # @return [String] attr_accessor :thumbnail_url # Title of the target of the URL. # Read-only. # Corresponds to the JSON property `title` # @return [String] attr_accessor :title def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @url = args[:url] if args.key?(:url) @thumbnail_url = args[:thumbnail_url] if args.key?(:thumbnail_url) @title = args[:title] if args.key?(:title) end end # Request to modify the attachments of a student submission. class ModifyAttachmentsRequest include Google::Apis::Core::Hashable # Attachments to add. # A student submission may not have more than 20 attachments. # Form attachments are not supported. # Corresponds to the JSON property `addAttachments` # @return [Array] attr_accessor :add_attachments def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @add_attachments = args[:add_attachments] if args.key?(:add_attachments) end end # Represents a time of day. The date and time zone are either not significant # or are specified elsewhere. An API may choose to allow leap seconds. Related # types are google.type.Date and `google.protobuf.Timestamp`. class TimeOfDay include Google::Apis::Core::Hashable # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999. # Corresponds to the JSON property `nanos` # @return [Fixnum] attr_accessor :nanos # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose # to allow the value "24:00:00" for scenarios like business closing time. # Corresponds to the JSON property `hours` # @return [Fixnum] attr_accessor :hours # Minutes of hour of day. Must be from 0 to 59. # Corresponds to the JSON property `minutes` # @return [Fixnum] attr_accessor :minutes # Seconds of minutes of the time. Must normally be from 0 to 59. An API may # allow the value 60 if it allows leap-seconds. # Corresponds to the JSON property `seconds` # @return [Fixnum] attr_accessor :seconds def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @nanos = args[:nanos] if args.key?(:nanos) @hours = args[:hours] if args.key?(:hours) @minutes = args[:minutes] if args.key?(:minutes) @seconds = args[:seconds] if args.key?(:seconds) end end # Google Forms item. class Form include Google::Apis::Core::Hashable # URL of a thumbnail image of the Form. # Read-only. # Corresponds to the JSON property `thumbnailUrl` # @return [String] attr_accessor :thumbnail_url # URL of the form. # Corresponds to the JSON property `formUrl` # @return [String] attr_accessor :form_url # Title of the Form. # Read-only. # Corresponds to the JSON property `title` # @return [String] attr_accessor :title # URL of the form responses document. # Only set if respsonses have been recorded and only when the # requesting user is an editor of the form. # Read-only. # Corresponds to the JSON property `responseUrl` # @return [String] attr_accessor :response_url def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @thumbnail_url = args[:thumbnail_url] if args.key?(:thumbnail_url) @form_url = args[:form_url] if args.key?(:form_url) @title = args[:title] if args.key?(:title) @response_url = args[:response_url] if args.key?(:response_url) end end # Additional details for multiple-choice questions. class MultipleChoiceQuestion include Google::Apis::Core::Hashable # Possible choices. # Corresponds to the JSON property `choices` # @return [Array] attr_accessor :choices def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @choices = args[:choices] if args.key?(:choices) end end # A set of materials that appears on the "About" page of the course. # These materials might include a syllabus, schedule, or other background # information relating to the course as a whole. class CourseMaterialSet include Google::Apis::Core::Hashable # Materials attached to this set. # Corresponds to the JSON property `materials` # @return [Array] attr_accessor :materials # Title for this set. # Corresponds to the JSON property `title` # @return [String] attr_accessor :title def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @materials = args[:materials] if args.key?(:materials) @title = args[:title] if args.key?(:title) end end # Student submission for course work. # StudentSubmission items are generated when a CourseWork item is created. # StudentSubmissions that have never been accessed (i.e. with `state` = NEW) # may not have a creation time or update time. class StudentSubmission include Google::Apis::Core::Hashable # Classroom-assigned Identifier for the student submission. # This is unique among submissions for the relevant course work. # Read-only. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # Type of course work this submission is for. # Read-only. # Corresponds to the JSON property `courseWorkType` # @return [String] attr_accessor :course_work_type # Optional grade. If unset, no grade was set. # This must be a non-negative integer value. # This may be modified only by course teachers. # Corresponds to the JSON property `assignedGrade` # @return [Float] attr_accessor :assigned_grade # Whether this student submission is associated with the Developer Console # project making the request. # See google.classroom.Work.CreateCourseWork for more # details. # Read-only. # Corresponds to the JSON property `associatedWithDeveloper` # @return [Boolean] attr_accessor :associated_with_developer alias_method :associated_with_developer?, :associated_with_developer # Last update time of this submission. # This may be unset if the student has not accessed this item. # Read-only. # Corresponds to the JSON property `updateTime` # @return [String] attr_accessor :update_time # Absolute link to the submission in the Classroom web UI. # Read-only. # Corresponds to the JSON property `alternateLink` # @return [String] attr_accessor :alternate_link # Optional pending grade. If unset, no grade was set. # This must be a non-negative integer value. # This is only visible to and modifiable by course teachers. # Corresponds to the JSON property `draftGrade` # @return [Float] attr_accessor :draft_grade # Identifier for the student that owns this submission. # Read-only. # Corresponds to the JSON property `userId` # @return [String] attr_accessor :user_id # Student work for a multiple-choice question. # Corresponds to the JSON property `multipleChoiceSubmission` # @return [Google::Apis::ClassroomV1::MultipleChoiceSubmission] attr_accessor :multiple_choice_submission # State of this submission. # Read-only. # Corresponds to the JSON property `state` # @return [String] attr_accessor :state # Student work for an assignment. # Corresponds to the JSON property `assignmentSubmission` # @return [Google::Apis::ClassroomV1::AssignmentSubmission] attr_accessor :assignment_submission # Creation time of this submission. # This may be unset if the student has not accessed this item. # Read-only. # Corresponds to the JSON property `creationTime` # @return [String] attr_accessor :creation_time # Identifier of the course. # Read-only. # Corresponds to the JSON property `courseId` # @return [String] attr_accessor :course_id # Student work for a short answer question. # Corresponds to the JSON property `shortAnswerSubmission` # @return [Google::Apis::ClassroomV1::ShortAnswerSubmission] attr_accessor :short_answer_submission # Whether this submission is late. # Read-only. # Corresponds to the JSON property `late` # @return [Boolean] attr_accessor :late alias_method :late?, :late # Identifier for the course work this corresponds to. # Read-only. # Corresponds to the JSON property `courseWorkId` # @return [String] attr_accessor :course_work_id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @id = args[:id] if args.key?(:id) @course_work_type = args[:course_work_type] if args.key?(:course_work_type) @assigned_grade = args[:assigned_grade] if args.key?(:assigned_grade) @associated_with_developer = args[:associated_with_developer] if args.key?(:associated_with_developer) @update_time = args[:update_time] if args.key?(:update_time) @alternate_link = args[:alternate_link] if args.key?(:alternate_link) @draft_grade = args[:draft_grade] if args.key?(:draft_grade) @user_id = args[:user_id] if args.key?(:user_id) @multiple_choice_submission = args[:multiple_choice_submission] if args.key?(:multiple_choice_submission) @state = args[:state] if args.key?(:state) @assignment_submission = args[:assignment_submission] if args.key?(:assignment_submission) @creation_time = args[:creation_time] if args.key?(:creation_time) @course_id = args[:course_id] if args.key?(:course_id) @short_answer_submission = args[:short_answer_submission] if args.key?(:short_answer_submission) @late = args[:late] if args.key?(:late) @course_work_id = args[:course_work_id] if args.key?(:course_work_id) end end # Alternative identifier for a course. # An alias uniquely identifies a course. It must be unique within one of the # following scopes: # * domain: A domain-scoped alias is visible to all users within the alias # creator's domain and can be created only by a domain admin. A domain-scoped # alias is often used when a course has an identifier external to Classroom. # * project: A project-scoped alias is visible to any request from an # application using the Developer Console project ID that created the alias # and can be created by any project. A project-scoped alias is often used when # an application has alternative identifiers. A random value can also be used # to avoid duplicate courses in the event of transmission failures, as retrying # a request will return `ALREADY_EXISTS` if a previous one has succeeded. class CourseAlias include Google::Apis::Core::Hashable # Alias string. The format of the string indicates the desired alias scoping. # * `d:` indicates a domain-scoped alias. # Example: `d:math_101` # * `p:` indicates a project-scoped alias. # Example: `p:abc123` # This field has a maximum length of 256 characters. # Corresponds to the JSON property `alias` # @return [String] attr_accessor :alias def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @alias = args[:alias] if args.key?(:alias) end end # Response when listing guardians. class ListGuardiansResponse include Google::Apis::Core::Hashable # Guardians on this page of results that met the criteria specified in # the request. # Corresponds to the JSON property `guardians` # @return [Array] attr_accessor :guardians # Token identifying the next page of results to return. If empty, no further # results are available. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @guardians = args[:guardians] if args.key?(:guardians) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) end end # Association between a student and a guardian of that student. The guardian # may receive information about the student's course work. class Guardian include Google::Apis::Core::Hashable # Global information for a user. # Corresponds to the JSON property `guardianProfile` # @return [Google::Apis::ClassroomV1::UserProfile] attr_accessor :guardian_profile # The email address to which the initial guardian invitation was sent. # This field is only visible to domain administrators. # Corresponds to the JSON property `invitedEmailAddress` # @return [String] attr_accessor :invited_email_address # Identifier for the student to whom the guardian relationship applies. # Corresponds to the JSON property `studentId` # @return [String] attr_accessor :student_id # Identifier for the guardian. # Corresponds to the JSON property `guardianId` # @return [String] attr_accessor :guardian_id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @guardian_profile = args[:guardian_profile] if args.key?(:guardian_profile) @invited_email_address = args[:invited_email_address] if args.key?(:invited_email_address) @student_id = args[:student_id] if args.key?(:student_id) @guardian_id = args[:guardian_id] if args.key?(:guardian_id) end end # Teacher of a course. class Teacher include Google::Apis::Core::Hashable # Identifier of the course. # Read-only. # Corresponds to the JSON property `courseId` # @return [String] attr_accessor :course_id # Global information for a user. # Corresponds to the JSON property `profile` # @return [Google::Apis::ClassroomV1::UserProfile] attr_accessor :profile # Identifier of the user. # When specified as a parameter of a request, this identifier can be one of # the following: # * the numeric identifier for the user # * the email address of the user # * the string literal `"me"`, indicating the requesting user # Corresponds to the JSON property `userId` # @return [String] attr_accessor :user_id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @course_id = args[:course_id] if args.key?(:course_id) @profile = args[:profile] if args.key?(:profile) @user_id = args[:user_id] if args.key?(:user_id) end end # Global information for a user. class UserProfile include Google::Apis::Core::Hashable # Email address of the user. # Read-only. # Corresponds to the JSON property `emailAddress` # @return [String] attr_accessor :email_address # Global permissions of the user. # Read-only. # Corresponds to the JSON property `permissions` # @return [Array] attr_accessor :permissions # Identifier of the user. # Read-only. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # Details of the user's name. # Corresponds to the JSON property `name` # @return [Google::Apis::ClassroomV1::Name] attr_accessor :name # URL of user's profile photo. # Read-only. # Corresponds to the JSON property `photoUrl` # @return [String] attr_accessor :photo_url def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @email_address = args[:email_address] if args.key?(:email_address) @permissions = args[:permissions] if args.key?(:permissions) @id = args[:id] if args.key?(:id) @name = args[:name] if args.key?(:name) @photo_url = args[:photo_url] if args.key?(:photo_url) end end # Request to reclaim a student submission. class ReclaimStudentSubmissionRequest include Google::Apis::Core::Hashable def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) end end # Student in a course. class Student include Google::Apis::Core::Hashable # Identifier of the course. # Read-only. # Corresponds to the JSON property `courseId` # @return [String] attr_accessor :course_id # Global information for a user. # Corresponds to the JSON property `profile` # @return [Google::Apis::ClassroomV1::UserProfile] attr_accessor :profile # Representation of a Google Drive folder. # Corresponds to the JSON property `studentWorkFolder` # @return [Google::Apis::ClassroomV1::DriveFolder] attr_accessor :student_work_folder # Identifier of the user. # When specified as a parameter of a request, this identifier can be one of # the following: # * the numeric identifier for the user # * the email address of the user # * the string literal `"me"`, indicating the requesting user # Corresponds to the JSON property `userId` # @return [String] attr_accessor :user_id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @course_id = args[:course_id] if args.key?(:course_id) @profile = args[:profile] if args.key?(:profile) @student_work_folder = args[:student_work_folder] if args.key?(:student_work_folder) @user_id = args[:user_id] if args.key?(:user_id) end end # Response when listing teachers. class ListTeachersResponse include Google::Apis::Core::Hashable # Token identifying the next page of results to return. If empty, no further # results are available. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # Teachers who match the list request. # Corresponds to the JSON property `teachers` # @return [Array] attr_accessor :teachers def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @teachers = args[:teachers] if args.key?(:teachers) end end # A Course in Classroom. class Course include Google::Apis::Core::Hashable # Identifier for this course assigned by Classroom. # When # creating a course, # you may optionally set this identifier to an # alias string in the # request to create a corresponding alias. The `id` is still assigned by # Classroom and cannot be updated after the course is created. # Specifying this field in a course update mask results in an error. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # Optional description. # For example, "We'll be learning about the structure of living # creatures from a combination of textbooks, guest lectures, and lab work. # Expect to be excited!" # If set, this field must be a valid UTF-8 string and no longer than 30,000 # characters. # Corresponds to the JSON property `description` # @return [String] attr_accessor :description # Time of the most recent update to this course. # Specifying this field in a course update mask results in an error. # Read-only. # Corresponds to the JSON property `updateTime` # @return [String] attr_accessor :update_time # Section of the course. # For example, "Period 2". # If set, this field must be a valid UTF-8 string and no longer than 2800 # characters. # Corresponds to the JSON property `section` # @return [String] attr_accessor :section # Absolute link to this course in the Classroom web UI. # Read-only. # Corresponds to the JSON property `alternateLink` # @return [String] attr_accessor :alternate_link # The email address of a Google group containing all teachers of the course. # This group does not accept email and can only be used for permissions. # Read-only. # Corresponds to the JSON property `teacherGroupEmail` # @return [String] attr_accessor :teacher_group_email # Whether or not guardian notifications are enabled for this course. # Read-only. # Corresponds to the JSON property `guardiansEnabled` # @return [Boolean] attr_accessor :guardians_enabled alias_method :guardians_enabled?, :guardians_enabled # The identifier of the owner of a course. # When specified as a parameter of a # create course request, this # field is required. # The identifier can be one of the following: # * the numeric identifier for the user # * the email address of the user # * the string literal `"me"`, indicating the requesting user # This must be set in a create request. Specifying this field in a course # update mask results in an `INVALID_ARGUMENT` error. # Corresponds to the JSON property `ownerId` # @return [String] attr_accessor :owner_id # Optional heading for the description. # For example, "Welcome to 10th Grade Biology." # If set, this field must be a valid UTF-8 string and no longer than 3600 # characters. # Corresponds to the JSON property `descriptionHeading` # @return [String] attr_accessor :description_heading # The email address of a Google group containing all members of the course. # This group does not accept email and can only be used for permissions. # Read-only. # Corresponds to the JSON property `courseGroupEmail` # @return [String] attr_accessor :course_group_email # State of the course. # If unspecified, the default state is `PROVISIONED`. # Corresponds to the JSON property `courseState` # @return [String] attr_accessor :course_state # Optional room location. # For example, "301". # If set, this field must be a valid UTF-8 string and no longer than 650 # characters. # Corresponds to the JSON property `room` # @return [String] attr_accessor :room # Name of the course. # For example, "10th Grade Biology". # The name is required. It must be between 1 and 750 characters and a valid # UTF-8 string. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # Creation time of the course. # Specifying this field in a course update mask results in an error. # Read-only. # Corresponds to the JSON property `creationTime` # @return [String] attr_accessor :creation_time # Enrollment code to use when joining this course. # Specifying this field in a course update mask results in an error. # Read-only. # Corresponds to the JSON property `enrollmentCode` # @return [String] attr_accessor :enrollment_code # Representation of a Google Drive folder. # Corresponds to the JSON property `teacherFolder` # @return [Google::Apis::ClassroomV1::DriveFolder] attr_accessor :teacher_folder # Sets of materials that appear on the "about" page of this course. # Read-only. # Corresponds to the JSON property `courseMaterialSets` # @return [Array] attr_accessor :course_material_sets def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @id = args[:id] if args.key?(:id) @description = args[:description] if args.key?(:description) @update_time = args[:update_time] if args.key?(:update_time) @section = args[:section] if args.key?(:section) @alternate_link = args[:alternate_link] if args.key?(:alternate_link) @teacher_group_email = args[:teacher_group_email] if args.key?(:teacher_group_email) @guardians_enabled = args[:guardians_enabled] if args.key?(:guardians_enabled) @owner_id = args[:owner_id] if args.key?(:owner_id) @description_heading = args[:description_heading] if args.key?(:description_heading) @course_group_email = args[:course_group_email] if args.key?(:course_group_email) @course_state = args[:course_state] if args.key?(:course_state) @room = args[:room] if args.key?(:room) @name = args[:name] if args.key?(:name) @creation_time = args[:creation_time] if args.key?(:creation_time) @enrollment_code = args[:enrollment_code] if args.key?(:enrollment_code) @teacher_folder = args[:teacher_folder] if args.key?(:teacher_folder) @course_material_sets = args[:course_material_sets] if args.key?(:course_material_sets) end end # Request to return a student submission. class ReturnStudentSubmissionRequest include Google::Apis::Core::Hashable def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) end end # An invitation to become the guardian of a specified user, sent to a specified # email address. class GuardianInvitation include Google::Apis::Core::Hashable # The time that this invitation was created. # Read-only. # Corresponds to the JSON property `creationTime` # @return [String] attr_accessor :creation_time # Unique identifier for this invitation. # Read-only. # Corresponds to the JSON property `invitationId` # @return [String] attr_accessor :invitation_id # The state that this invitation is in. # Corresponds to the JSON property `state` # @return [String] attr_accessor :state # Email address that the invitation was sent to. # This field is only visible to domain administrators. # Corresponds to the JSON property `invitedEmailAddress` # @return [String] attr_accessor :invited_email_address # ID of the student (in standard format) # Corresponds to the JSON property `studentId` # @return [String] attr_accessor :student_id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @creation_time = args[:creation_time] if args.key?(:creation_time) @invitation_id = args[:invitation_id] if args.key?(:invitation_id) @state = args[:state] if args.key?(:state) @invited_email_address = args[:invited_email_address] if args.key?(:invited_email_address) @student_id = args[:student_id] if args.key?(:student_id) end end # Request to turn in a student submission. class TurnInStudentSubmissionRequest include Google::Apis::Core::Hashable def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) end end # YouTube video item. class YouTubeVideo include Google::Apis::Core::Hashable # URL of a thumbnail image of the YouTube video. # Read-only. # Corresponds to the JSON property `thumbnailUrl` # @return [String] attr_accessor :thumbnail_url # Title of the YouTube video. # Read-only. # Corresponds to the JSON property `title` # @return [String] attr_accessor :title # URL that can be used to view the YouTube video. # Read-only. # Corresponds to the JSON property `alternateLink` # @return [String] attr_accessor :alternate_link # YouTube API resource ID. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @thumbnail_url = args[:thumbnail_url] if args.key?(:thumbnail_url) @title = args[:title] if args.key?(:title) @alternate_link = args[:alternate_link] if args.key?(:alternate_link) @id = args[:id] if args.key?(:id) end end # A generic empty message that you can re-use to avoid defining duplicated # empty messages in your APIs. A typical example is to use it as the request # or the response type of an API method. For instance: # service Foo ` # rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); # ` # The JSON representation for `Empty` is empty JSON object ````. class Empty include Google::Apis::Core::Hashable def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) end end # Response when listing course work. class ListCourseWorkResponse include Google::Apis::Core::Hashable # Token identifying the next page of results to return. If empty, no further # results are available. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # Course work items that match the request. # Corresponds to the JSON property `courseWork` # @return [Array] attr_accessor :course_work def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @course_work = args[:course_work] if args.key?(:course_work) end end # Drive file that is used as material for course work. class SharedDriveFile include Google::Apis::Core::Hashable # Representation of a Google Drive file. # Corresponds to the JSON property `driveFile` # @return [Google::Apis::ClassroomV1::DriveFile] attr_accessor :drive_file # Mechanism by which students access the Drive item. # Corresponds to the JSON property `shareMode` # @return [String] attr_accessor :share_mode def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @drive_file = args[:drive_file] if args.key?(:drive_file) @share_mode = args[:share_mode] if args.key?(:share_mode) end end # Global user permission description. class GlobalPermission include Google::Apis::Core::Hashable # Permission value. # Corresponds to the JSON property `permission` # @return [String] attr_accessor :permission def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @permission = args[:permission] if args.key?(:permission) end end # Material attached to course work. # When creating attachments, setting the `form` field is not supported. class Material include Google::Apis::Core::Hashable # Drive file that is used as material for course work. # Corresponds to the JSON property `driveFile` # @return [Google::Apis::ClassroomV1::SharedDriveFile] attr_accessor :drive_file # URL item. # Corresponds to the JSON property `link` # @return [Google::Apis::ClassroomV1::Link] attr_accessor :link # YouTube video item. # Corresponds to the JSON property `youtubeVideo` # @return [Google::Apis::ClassroomV1::YouTubeVideo] attr_accessor :youtube_video # Google Forms item. # Corresponds to the JSON property `form` # @return [Google::Apis::ClassroomV1::Form] attr_accessor :form def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @drive_file = args[:drive_file] if args.key?(:drive_file) @link = args[:link] if args.key?(:link) @youtube_video = args[:youtube_video] if args.key?(:youtube_video) @form = args[:form] if args.key?(:form) end end # Student work for an assignment. class AssignmentSubmission include Google::Apis::Core::Hashable # Attachments added by the student. # Drive files that correspond to materials with a share mode of # STUDENT_COPY may not exist yet if the student has not accessed the # assignment in Classroom. # Some attachment metadata is only populated if the requesting user has # permission to access it. Identifier and alternate_link fields are always # available, but others (e.g. title) may not be. # Corresponds to the JSON property `attachments` # @return [Array] attr_accessor :attachments def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @attachments = args[:attachments] if args.key?(:attachments) end end # Represents a whole calendar date, e.g. date of birth. The time of day and # time zone are either specified elsewhere or are not significant. The date # is relative to the Proleptic Gregorian Calendar. The day may be 0 to # represent a year and month where the day is not significant, e.g. credit card # expiration date. The year may be 0 to represent a month and day independent # of year, e.g. anniversary date. Related types are google.type.TimeOfDay # and `google.protobuf.Timestamp`. class Date include Google::Apis::Core::Hashable # Month of year. Must be from 1 to 12. # Corresponds to the JSON property `month` # @return [Fixnum] attr_accessor :month # Year of date. Must be from 1 to 9999, or 0 if specifying a date without # a year. # Corresponds to the JSON property `year` # @return [Fixnum] attr_accessor :year # Day of month. Must be from 1 to 31 and valid for the year and month, or 0 # if specifying a year/month where the day is not significant. # Corresponds to the JSON property `day` # @return [Fixnum] attr_accessor :day def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @month = args[:month] if args.key?(:month) @year = args[:year] if args.key?(:year) @day = args[:day] if args.key?(:day) end end # Additional details for assignments. class Assignment include Google::Apis::Core::Hashable # Representation of a Google Drive folder. # Corresponds to the JSON property `studentWorkFolder` # @return [Google::Apis::ClassroomV1::DriveFolder] attr_accessor :student_work_folder def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @student_work_folder = args[:student_work_folder] if args.key?(:student_work_folder) end end # Response when listing courses. class ListCoursesResponse include Google::Apis::Core::Hashable # Token identifying the next page of results to return. If empty, no further # results are available. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # Courses that match the list request. # Corresponds to the JSON property `courses` # @return [Array] attr_accessor :courses def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @courses = args[:courses] if args.key?(:courses) end end # An invitation to join a course. class Invitation include Google::Apis::Core::Hashable # Identifier of the course to invite the user to. # Corresponds to the JSON property `courseId` # @return [String] attr_accessor :course_id # Role to invite the user to have. # Must not be `COURSE_ROLE_UNSPECIFIED`. # Corresponds to the JSON property `role` # @return [String] attr_accessor :role # Identifier of the invited user. # When specified as a parameter of a request, this identifier can be set to # one of the following: # * the numeric identifier for the user # * the email address of the user # * the string literal `"me"`, indicating the requesting user # Corresponds to the JSON property `userId` # @return [String] attr_accessor :user_id # Identifier assigned by Classroom. # Read-only. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @course_id = args[:course_id] if args.key?(:course_id) @role = args[:role] if args.key?(:role) @user_id = args[:user_id] if args.key?(:user_id) @id = args[:id] if args.key?(:id) end end # Response when listing student submissions. class ListStudentSubmissionsResponse include Google::Apis::Core::Hashable # Token identifying the next page of results to return. If empty, no further # results are available. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # Student work that matches the request. # Corresponds to the JSON property `studentSubmissions` # @return [Array] attr_accessor :student_submissions def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @student_submissions = args[:student_submissions] if args.key?(:student_submissions) end end # Details of the user's name. class Name include Google::Apis::Core::Hashable # The user's first name. # Read-only. # Corresponds to the JSON property `givenName` # @return [String] attr_accessor :given_name # The user's last name. # Read-only. # Corresponds to the JSON property `familyName` # @return [String] attr_accessor :family_name # The user's full name formed by concatenating the first and last name # values. # Read-only. # Corresponds to the JSON property `fullName` # @return [String] attr_accessor :full_name def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @given_name = args[:given_name] if args.key?(:given_name) @family_name = args[:family_name] if args.key?(:family_name) @full_name = args[:full_name] if args.key?(:full_name) end end # Response when listing invitations. class ListInvitationsResponse include Google::Apis::Core::Hashable # Token identifying the next page of results to return. If empty, no further # results are available. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # Invitations that match the list request. # Corresponds to the JSON property `invitations` # @return [Array] attr_accessor :invitations def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @invitations = args[:invitations] if args.key?(:invitations) end end # Response when listing students. class ListStudentsResponse include Google::Apis::Core::Hashable # Token identifying the next page of results to return. If empty, no further # results are available. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # Students who match the list request. # Corresponds to the JSON property `students` # @return [Array] attr_accessor :students def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @students = args[:students] if args.key?(:students) end end end end end