google-apis-classroom_v1 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: c990739af570faee39c8774779bab5925500a7a2ad319ddf67d39e8b44ad7839
4
+ data.tar.gz: cfc3c72b0b6bd181c02423c5bf9ac798876f4436f70b9cec788eea82e8c1deef
5
+ SHA512:
6
+ metadata.gz: f5d7bf57e08facba84b8fa609737232cac06c0d3b0422c2e027c4a84a499f7c0a5b3e984bbf30933cbfb1d1808dfa96eec9ed502197c2606511e4e2034912d7a
7
+ data.tar.gz: 98108e043515322ea3c3e492975fe7516fc03efa95c1b477c5c0eae46e9f7f6a6535a8dd8d1bad812d0f22175023660b47ef8928bbb804dc35ef343c5526d1cc
@@ -0,0 +1,13 @@
1
+ --hide-void-return
2
+ --no-private
3
+ --verbose
4
+ --title=google-apis-classroom_v1
5
+ --markup-provider=redcarpet
6
+ --markup=markdown
7
+ --main OVERVIEW.md
8
+ lib/google/apis/classroom_v1/*.rb
9
+ lib/google/apis/classroom_v1.rb
10
+ -
11
+ OVERVIEW.md
12
+ CHANGELOG.md
13
+ LICENSE.md
@@ -0,0 +1,7 @@
1
+ # Release history for google-apis-classroom_v1
2
+
3
+ ### v0.1.0 (2021-01-07)
4
+
5
+ * Regenerated using generator version 0.1.1
6
+ * Regenerated from discovery document revision 20201012
7
+
@@ -0,0 +1,202 @@
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright [yyyy] [name of copyright owner]
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
@@ -0,0 +1,96 @@
1
+ # Simple REST client for version V1 of the Google Classroom API
2
+
3
+ This is a simple client library for version V1 of the Google Classroom API. It provides:
4
+
5
+ * A client object that connects to the HTTP/JSON REST endpoint for the service.
6
+ * Ruby objects for data structures related to the service.
7
+ * Integration with the googleauth gem for authentication using OAuth, API keys, and service accounts.
8
+ * Control of retry, pagination, and timeouts.
9
+
10
+ Note that although this client library is supported and will continue to be updated to track changes to the service, it is otherwise considered complete and not under active development. Many Google services, especially Google Cloud Platform services, may provide a more modern client that is under more active development and improvement. See the section below titled *Which client should I use?* for more information.
11
+
12
+ ## Getting started
13
+
14
+ ### Before you begin
15
+
16
+ There are a few setup steps you need to complete before you can use this library:
17
+
18
+ 1. If you don't already have a Google account, [sign up](https://www.google.com/accounts).
19
+ 2. If you have never created a Google APIs Console project, read about [Managing Projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) and create a project in the [Google API Console](https://console.cloud.google.com/).
20
+ 3. Most APIs need to be enabled for your project. [Enable it](https://console.cloud.google.com/apis/library/classroom.googleapis.com) in the console.
21
+
22
+ ### Installation
23
+
24
+ Add this line to your application's Gemfile:
25
+
26
+ ```ruby
27
+ gem 'google-apis-classroom_v1', '~> 0.1'
28
+ ```
29
+
30
+ And then execute:
31
+
32
+ ```
33
+ $ bundle
34
+ ```
35
+
36
+ Or install it yourself as:
37
+
38
+ ```
39
+ $ gem install google-apis-classroom_v1
40
+ ```
41
+
42
+ ### Creating a client object
43
+
44
+ Once the gem is installed, you can load the client code and instantiate a client.
45
+
46
+ ```ruby
47
+ # Load the client
48
+ require "google/apis/classroom_v1"
49
+
50
+ # Create a client object
51
+ client = Google::Apis::ClassroomV1::ClassroomService.new
52
+
53
+ # Authenticate calls
54
+ client.authentication = # ... use the googleauth gem to create credentials
55
+ ```
56
+
57
+ See the class reference docs for information on the methods you can call from a client.
58
+
59
+ ## Documentation
60
+
61
+ More detailed descriptions of the Google simple REST clients are available in two documents.
62
+
63
+ * The [Usage Guide](https://github.com/googleapis/google-api-ruby-client/blob/master/docs/usage-guide.md) discusses how to make API calls, how to use the provided data structures, and how to work the various features of the client library, including media upload and download, error handling, retries, pagination, and logging.
64
+ * The [Auth Guide](https://github.com/googleapis/google-api-ruby-client/blob/master/docs/auth-guide.md) discusses authentication in the client libraries, including API keys, OAuth 2.0, service accounts, and environment variables.
65
+
66
+ (Note: the above documents are written for the simple REST clients in general, and their examples may not reflect the Classroom service in particular.)
67
+
68
+ For reference information on specific calls in the Google Classroom API, see the {Google::Apis::ClassroomV1::ClassroomService class reference docs}.
69
+
70
+ ## Which client should I use?
71
+
72
+ Google provides two types of Ruby API client libraries: **simple REST clients** and **modern clients**.
73
+
74
+ This library, `google-apis-classroom_v1`, is a simple REST client. You can identify these clients by their gem names, which are always in the form `google-apis-<servicename>_<serviceversion>`. The simple REST clients connect to HTTP/JSON REST endpoints and are automatically generated from service discovery documents. They support most API functionality, but their class interfaces are sometimes awkward.
75
+
76
+ Modern clients are produced by a modern code generator, sometimes combined with hand-crafted functionality. Most modern clients connect to high-performance gRPC endpoints, although a few are backed by REST services. Modern clients are available for many Google services, especially Google Cloud Platform services, but do not yet support all the services covered by the simple clients.
77
+
78
+ Gem names for modern clients are often of the form `google-cloud-<service_name>`. (For example, [google-cloud-pubsub](https://rubygems.org/gems/google-cloud-pubsub).) Note that most modern clients also have corresponding "versioned" gems with names like `google-cloud-<service_name>-<version>`. (For example, [google-cloud-pubsub-v1](https://rubygems.org/gems/google-cloud-pubsub-v1).) The "versioned" gems can be used directly, but often provide lower-level interfaces. In most cases, the main gem is recommended.
79
+
80
+ **For most users, we recommend the modern client, if one is available.** Compared with simple clients, modern clients are generally much easier to use and more Ruby-like, support more advanced features such as streaming and long-running operations, and often provide much better performance. You may consider using a simple client instead, if a modern client is not yet available for the service you want to use, or if you are not able to use gRPC on your infrastructure.
81
+
82
+ The [product documentation](https://developers.google.com/classroom/) may provide guidance regarding the preferred client library to use.
83
+
84
+ ## Supported Ruby versions
85
+
86
+ This library is supported on Ruby 2.5+.
87
+
88
+ Google provides official support for Ruby versions that are actively supported by Ruby Core -- that is, Ruby versions that are either in normal maintenance or in security maintenance, and not end of life. Currently, this means Ruby 2.5 and later. Older versions of Ruby _may_ still work, but are unsupported and not recommended. See https://www.ruby-lang.org/en/downloads/branches/ for details about the Ruby support schedule.
89
+
90
+ ## License
91
+
92
+ This library is licensed under Apache 2.0. Full license text is available in the {file:LICENSE.md LICENSE}.
93
+
94
+ ## Support
95
+
96
+ Please [report bugs at the project on Github](https://github.com/google/google-api-ruby-client/issues). Don't hesitate to [ask questions](http://stackoverflow.com/questions/tagged/google-api-ruby-client) about the client or APIs on [StackOverflow](http://stackoverflow.com).
@@ -0,0 +1,15 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require "google/apis/classroom_v1"
@@ -0,0 +1,99 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'google/apis/classroom_v1/service.rb'
16
+ require 'google/apis/classroom_v1/classes.rb'
17
+ require 'google/apis/classroom_v1/representations.rb'
18
+ require 'google/apis/classroom_v1/gem_version.rb'
19
+
20
+ module Google
21
+ module Apis
22
+ # Google Classroom API
23
+ #
24
+ # Manages classes, rosters, and invitations in Google Classroom.
25
+ #
26
+ # @see https://developers.google.com/classroom/
27
+ module ClassroomV1
28
+ # Version of the Google Classroom API this client connects to.
29
+ # This is NOT the gem version.
30
+ VERSION = 'V1'
31
+
32
+ # View and manage announcements in Google Classroom
33
+ AUTH_CLASSROOM_ANNOUNCEMENTS = 'https://www.googleapis.com/auth/classroom.announcements'
34
+
35
+ # View announcements in Google Classroom
36
+ AUTH_CLASSROOM_ANNOUNCEMENTS_READONLY = 'https://www.googleapis.com/auth/classroom.announcements.readonly'
37
+
38
+ # Manage your Google Classroom classes
39
+ AUTH_CLASSROOM_COURSES = 'https://www.googleapis.com/auth/classroom.courses'
40
+
41
+ # View your Google Classroom classes
42
+ AUTH_CLASSROOM_COURSES_READONLY = 'https://www.googleapis.com/auth/classroom.courses.readonly'
43
+
44
+ # Manage your course work and view your grades in Google Classroom
45
+ AUTH_CLASSROOM_COURSEWORK_ME = 'https://www.googleapis.com/auth/classroom.coursework.me'
46
+
47
+ # View your course work and grades in Google Classroom
48
+ AUTH_CLASSROOM_COURSEWORK_ME_READONLY = 'https://www.googleapis.com/auth/classroom.coursework.me.readonly'
49
+
50
+ # Manage course work and grades for students in the Google Classroom classes you teach and view the course work and grades for classes you administer
51
+ AUTH_CLASSROOM_COURSEWORK_STUDENTS = 'https://www.googleapis.com/auth/classroom.coursework.students'
52
+
53
+ # View course work and grades for students in the Google Classroom classes you teach or administer
54
+ AUTH_CLASSROOM_COURSEWORK_STUDENTS_READONLY = 'https://www.googleapis.com/auth/classroom.coursework.students.readonly'
55
+
56
+ # See, edit, and create classwork materials in Google Classroom
57
+ AUTH_CLASSROOM_COURSEWORKMATERIALS = 'https://www.googleapis.com/auth/classroom.courseworkmaterials'
58
+
59
+ # See all classwork materials for your Google Classroom classes
60
+ AUTH_CLASSROOM_COURSEWORKMATERIALS_READONLY = 'https://www.googleapis.com/auth/classroom.courseworkmaterials.readonly'
61
+
62
+ # View your Google Classroom guardians
63
+ AUTH_CLASSROOM_GUARDIANLINKS_ME_READONLY = 'https://www.googleapis.com/auth/classroom.guardianlinks.me.readonly'
64
+
65
+ # View and manage guardians for students in your Google Classroom classes
66
+ AUTH_CLASSROOM_GUARDIANLINKS_STUDENTS = 'https://www.googleapis.com/auth/classroom.guardianlinks.students'
67
+
68
+ # View guardians for students in your Google Classroom classes
69
+ AUTH_CLASSROOM_GUARDIANLINKS_STUDENTS_READONLY = 'https://www.googleapis.com/auth/classroom.guardianlinks.students.readonly'
70
+
71
+ # View the email addresses of people in your classes
72
+ AUTH_CLASSROOM_PROFILE_EMAILS = 'https://www.googleapis.com/auth/classroom.profile.emails'
73
+
74
+ # View the profile photos of people in your classes
75
+ AUTH_CLASSROOM_PROFILE_PHOTOS = 'https://www.googleapis.com/auth/classroom.profile.photos'
76
+
77
+ # Receive notifications about your Google Classroom data
78
+ AUTH_CLASSROOM_PUSH_NOTIFICATIONS = 'https://www.googleapis.com/auth/classroom.push-notifications'
79
+
80
+ # Manage your Google Classroom class rosters
81
+ AUTH_CLASSROOM_ROSTERS = 'https://www.googleapis.com/auth/classroom.rosters'
82
+
83
+ # View your Google Classroom class rosters
84
+ AUTH_CLASSROOM_ROSTERS_READONLY = 'https://www.googleapis.com/auth/classroom.rosters.readonly'
85
+
86
+ # View your course work and grades in Google Classroom
87
+ AUTH_CLASSROOM_STUDENT_SUBMISSIONS_ME_READONLY = 'https://www.googleapis.com/auth/classroom.student-submissions.me.readonly'
88
+
89
+ # View course work and grades for students in the Google Classroom classes you teach or administer
90
+ AUTH_CLASSROOM_STUDENT_SUBMISSIONS_STUDENTS_READONLY = 'https://www.googleapis.com/auth/classroom.student-submissions.students.readonly'
91
+
92
+ # See, create, and edit topics in Google Classroom
93
+ AUTH_CLASSROOM_TOPICS = 'https://www.googleapis.com/auth/classroom.topics'
94
+
95
+ # View topics in Google Classroom
96
+ AUTH_CLASSROOM_TOPICS_READONLY = 'https://www.googleapis.com/auth/classroom.topics.readonly'
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,2282 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module ClassroomV1
24
+
25
+ # Announcement created by a teacher for students of the course
26
+ class Announcement
27
+ include Google::Apis::Core::Hashable
28
+
29
+ # Absolute link to this announcement in the Classroom web UI. This is only
30
+ # populated if `state` is `PUBLISHED`. Read-only.
31
+ # Corresponds to the JSON property `alternateLink`
32
+ # @return [String]
33
+ attr_accessor :alternate_link
34
+
35
+ # Assignee mode of the announcement. If unspecified, the default value is `
36
+ # ALL_STUDENTS`.
37
+ # Corresponds to the JSON property `assigneeMode`
38
+ # @return [String]
39
+ attr_accessor :assignee_mode
40
+
41
+ # Identifier of the course. Read-only.
42
+ # Corresponds to the JSON property `courseId`
43
+ # @return [String]
44
+ attr_accessor :course_id
45
+
46
+ # Timestamp when this announcement was created. Read-only.
47
+ # Corresponds to the JSON property `creationTime`
48
+ # @return [String]
49
+ attr_accessor :creation_time
50
+
51
+ # Identifier for the user that created the announcement. Read-only.
52
+ # Corresponds to the JSON property `creatorUserId`
53
+ # @return [String]
54
+ attr_accessor :creator_user_id
55
+
56
+ # Classroom-assigned identifier of this announcement, unique per course. Read-
57
+ # only.
58
+ # Corresponds to the JSON property `id`
59
+ # @return [String]
60
+ attr_accessor :id
61
+
62
+ # Assignee details about a coursework/announcement. This field is set if and
63
+ # only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
64
+ # Corresponds to the JSON property `individualStudentsOptions`
65
+ # @return [Google::Apis::ClassroomV1::IndividualStudentsOptions]
66
+ attr_accessor :individual_students_options
67
+
68
+ # Additional materials. Announcements must have no more than 20 material items.
69
+ # Corresponds to the JSON property `materials`
70
+ # @return [Array<Google::Apis::ClassroomV1::Material>]
71
+ attr_accessor :materials
72
+
73
+ # Optional timestamp when this announcement is scheduled to be published.
74
+ # Corresponds to the JSON property `scheduledTime`
75
+ # @return [String]
76
+ attr_accessor :scheduled_time
77
+
78
+ # Status of this announcement. If unspecified, the default state is `DRAFT`.
79
+ # Corresponds to the JSON property `state`
80
+ # @return [String]
81
+ attr_accessor :state
82
+
83
+ # Description of this announcement. The text must be a valid UTF-8 string
84
+ # containing no more than 30,000 characters.
85
+ # Corresponds to the JSON property `text`
86
+ # @return [String]
87
+ attr_accessor :text
88
+
89
+ # Timestamp of the most recent change to this announcement. Read-only.
90
+ # Corresponds to the JSON property `updateTime`
91
+ # @return [String]
92
+ attr_accessor :update_time
93
+
94
+ def initialize(**args)
95
+ update!(**args)
96
+ end
97
+
98
+ # Update properties of this object
99
+ def update!(**args)
100
+ @alternate_link = args[:alternate_link] if args.key?(:alternate_link)
101
+ @assignee_mode = args[:assignee_mode] if args.key?(:assignee_mode)
102
+ @course_id = args[:course_id] if args.key?(:course_id)
103
+ @creation_time = args[:creation_time] if args.key?(:creation_time)
104
+ @creator_user_id = args[:creator_user_id] if args.key?(:creator_user_id)
105
+ @id = args[:id] if args.key?(:id)
106
+ @individual_students_options = args[:individual_students_options] if args.key?(:individual_students_options)
107
+ @materials = args[:materials] if args.key?(:materials)
108
+ @scheduled_time = args[:scheduled_time] if args.key?(:scheduled_time)
109
+ @state = args[:state] if args.key?(:state)
110
+ @text = args[:text] if args.key?(:text)
111
+ @update_time = args[:update_time] if args.key?(:update_time)
112
+ end
113
+ end
114
+
115
+ # Additional details for assignments.
116
+ class Assignment
117
+ include Google::Apis::Core::Hashable
118
+
119
+ # Representation of a Google Drive folder.
120
+ # Corresponds to the JSON property `studentWorkFolder`
121
+ # @return [Google::Apis::ClassroomV1::DriveFolder]
122
+ attr_accessor :student_work_folder
123
+
124
+ def initialize(**args)
125
+ update!(**args)
126
+ end
127
+
128
+ # Update properties of this object
129
+ def update!(**args)
130
+ @student_work_folder = args[:student_work_folder] if args.key?(:student_work_folder)
131
+ end
132
+ end
133
+
134
+ # Student work for an assignment.
135
+ class AssignmentSubmission
136
+ include Google::Apis::Core::Hashable
137
+
138
+ # Attachments added by the student. Drive files that correspond to materials
139
+ # with a share mode of STUDENT_COPY may not exist yet if the student has not
140
+ # accessed the assignment in Classroom. Some attachment metadata is only
141
+ # populated if the requesting user has permission to access it. Identifier and
142
+ # alternate_link fields are always available, but others (for example, title)
143
+ # may not be.
144
+ # Corresponds to the JSON property `attachments`
145
+ # @return [Array<Google::Apis::ClassroomV1::Attachment>]
146
+ attr_accessor :attachments
147
+
148
+ def initialize(**args)
149
+ update!(**args)
150
+ end
151
+
152
+ # Update properties of this object
153
+ def update!(**args)
154
+ @attachments = args[:attachments] if args.key?(:attachments)
155
+ end
156
+ end
157
+
158
+ # Attachment added to student assignment work. When creating attachments,
159
+ # setting the `form` field is not supported.
160
+ class Attachment
161
+ include Google::Apis::Core::Hashable
162
+
163
+ # Representation of a Google Drive file.
164
+ # Corresponds to the JSON property `driveFile`
165
+ # @return [Google::Apis::ClassroomV1::DriveFile]
166
+ attr_accessor :drive_file
167
+
168
+ # Google Forms item.
169
+ # Corresponds to the JSON property `form`
170
+ # @return [Google::Apis::ClassroomV1::Form]
171
+ attr_accessor :form
172
+
173
+ # URL item.
174
+ # Corresponds to the JSON property `link`
175
+ # @return [Google::Apis::ClassroomV1::Link]
176
+ attr_accessor :link
177
+
178
+ # YouTube video item.
179
+ # Corresponds to the JSON property `youTubeVideo`
180
+ # @return [Google::Apis::ClassroomV1::YouTubeVideo]
181
+ attr_accessor :you_tube_video
182
+
183
+ def initialize(**args)
184
+ update!(**args)
185
+ end
186
+
187
+ # Update properties of this object
188
+ def update!(**args)
189
+ @drive_file = args[:drive_file] if args.key?(:drive_file)
190
+ @form = args[:form] if args.key?(:form)
191
+ @link = args[:link] if args.key?(:link)
192
+ @you_tube_video = args[:you_tube_video] if args.key?(:you_tube_video)
193
+ end
194
+ end
195
+
196
+ # A reference to a Cloud Pub/Sub topic. To register for notifications, the owner
197
+ # of the topic must grant `classroom-notifications@system.gserviceaccount.com`
198
+ # the `projects.topics.publish` permission.
199
+ class CloudPubsubTopic
200
+ include Google::Apis::Core::Hashable
201
+
202
+ # The `name` field of a Cloud Pub/Sub [Topic](https://cloud.google.com/pubsub/
203
+ # docs/reference/rest/v1/projects.topics#Topic).
204
+ # Corresponds to the JSON property `topicName`
205
+ # @return [String]
206
+ attr_accessor :topic_name
207
+
208
+ def initialize(**args)
209
+ update!(**args)
210
+ end
211
+
212
+ # Update properties of this object
213
+ def update!(**args)
214
+ @topic_name = args[:topic_name] if args.key?(:topic_name)
215
+ end
216
+ end
217
+
218
+ # A Course in Classroom.
219
+ class Course
220
+ include Google::Apis::Core::Hashable
221
+
222
+ # Absolute link to this course in the Classroom web UI. Read-only.
223
+ # Corresponds to the JSON property `alternateLink`
224
+ # @return [String]
225
+ attr_accessor :alternate_link
226
+
227
+ # The Calendar ID for a calendar that all course members can see, to which
228
+ # Classroom adds events for course work and announcements in the course. Read-
229
+ # only.
230
+ # Corresponds to the JSON property `calendarId`
231
+ # @return [String]
232
+ attr_accessor :calendar_id
233
+
234
+ # The email address of a Google group containing all members of the course. This
235
+ # group does not accept email and can only be used for permissions. Read-only.
236
+ # Corresponds to the JSON property `courseGroupEmail`
237
+ # @return [String]
238
+ attr_accessor :course_group_email
239
+
240
+ # Sets of materials that appear on the "about" page of this course. Read-only.
241
+ # Corresponds to the JSON property `courseMaterialSets`
242
+ # @return [Array<Google::Apis::ClassroomV1::CourseMaterialSet>]
243
+ attr_accessor :course_material_sets
244
+
245
+ # State of the course. If unspecified, the default state is `PROVISIONED`.
246
+ # Corresponds to the JSON property `courseState`
247
+ # @return [String]
248
+ attr_accessor :course_state
249
+
250
+ # Creation time of the course. Specifying this field in a course update mask
251
+ # results in an error. Read-only.
252
+ # Corresponds to the JSON property `creationTime`
253
+ # @return [String]
254
+ attr_accessor :creation_time
255
+
256
+ # Optional description. For example, "We'll be learning about the structure of
257
+ # living creatures from a combination of textbooks, guest lectures, and lab work.
258
+ # Expect to be excited!" If set, this field must be a valid UTF-8 string and no
259
+ # longer than 30,000 characters.
260
+ # Corresponds to the JSON property `description`
261
+ # @return [String]
262
+ attr_accessor :description
263
+
264
+ # Optional heading for the description. For example, "Welcome to 10th Grade
265
+ # Biology." If set, this field must be a valid UTF-8 string and no longer than
266
+ # 3600 characters.
267
+ # Corresponds to the JSON property `descriptionHeading`
268
+ # @return [String]
269
+ attr_accessor :description_heading
270
+
271
+ # Enrollment code to use when joining this course. Specifying this field in a
272
+ # course update mask results in an error. Read-only.
273
+ # Corresponds to the JSON property `enrollmentCode`
274
+ # @return [String]
275
+ attr_accessor :enrollment_code
276
+
277
+ # Whether or not guardian notifications are enabled for this course. Read-only.
278
+ # Corresponds to the JSON property `guardiansEnabled`
279
+ # @return [Boolean]
280
+ attr_accessor :guardians_enabled
281
+ alias_method :guardians_enabled?, :guardians_enabled
282
+
283
+ # Identifier for this course assigned by Classroom. When creating a course, you
284
+ # may optionally set this identifier to an alias string in the request to create
285
+ # a corresponding alias. The `id` is still assigned by Classroom and cannot be
286
+ # updated after the course is created. Specifying this field in a course update
287
+ # mask results in an error.
288
+ # Corresponds to the JSON property `id`
289
+ # @return [String]
290
+ attr_accessor :id
291
+
292
+ # Name of the course. For example, "10th Grade Biology". The name is required.
293
+ # It must be between 1 and 750 characters and a valid UTF-8 string.
294
+ # Corresponds to the JSON property `name`
295
+ # @return [String]
296
+ attr_accessor :name
297
+
298
+ # The identifier of the owner of a course. When specified as a parameter of a
299
+ # create course request, this field is required. The identifier can be one of
300
+ # the following: * the numeric identifier for the user * the email address of
301
+ # the user * the string literal `"me"`, indicating the requesting user This must
302
+ # be set in a create request. Admins can also specify this field in a patch
303
+ # course request to transfer ownership. In other contexts, it is read-only.
304
+ # Corresponds to the JSON property `ownerId`
305
+ # @return [String]
306
+ attr_accessor :owner_id
307
+
308
+ # Optional room location. For example, "301". If set, this field must be a valid
309
+ # UTF-8 string and no longer than 650 characters.
310
+ # Corresponds to the JSON property `room`
311
+ # @return [String]
312
+ attr_accessor :room
313
+
314
+ # Section of the course. For example, "Period 2". If set, this field must be a
315
+ # valid UTF-8 string and no longer than 2800 characters.
316
+ # Corresponds to the JSON property `section`
317
+ # @return [String]
318
+ attr_accessor :section
319
+
320
+ # Representation of a Google Drive folder.
321
+ # Corresponds to the JSON property `teacherFolder`
322
+ # @return [Google::Apis::ClassroomV1::DriveFolder]
323
+ attr_accessor :teacher_folder
324
+
325
+ # The email address of a Google group containing all teachers of the course.
326
+ # This group does not accept email and can only be used for permissions. Read-
327
+ # only.
328
+ # Corresponds to the JSON property `teacherGroupEmail`
329
+ # @return [String]
330
+ attr_accessor :teacher_group_email
331
+
332
+ # Time of the most recent update to this course. Specifying this field in a
333
+ # course update mask results in an error. Read-only.
334
+ # Corresponds to the JSON property `updateTime`
335
+ # @return [String]
336
+ attr_accessor :update_time
337
+
338
+ def initialize(**args)
339
+ update!(**args)
340
+ end
341
+
342
+ # Update properties of this object
343
+ def update!(**args)
344
+ @alternate_link = args[:alternate_link] if args.key?(:alternate_link)
345
+ @calendar_id = args[:calendar_id] if args.key?(:calendar_id)
346
+ @course_group_email = args[:course_group_email] if args.key?(:course_group_email)
347
+ @course_material_sets = args[:course_material_sets] if args.key?(:course_material_sets)
348
+ @course_state = args[:course_state] if args.key?(:course_state)
349
+ @creation_time = args[:creation_time] if args.key?(:creation_time)
350
+ @description = args[:description] if args.key?(:description)
351
+ @description_heading = args[:description_heading] if args.key?(:description_heading)
352
+ @enrollment_code = args[:enrollment_code] if args.key?(:enrollment_code)
353
+ @guardians_enabled = args[:guardians_enabled] if args.key?(:guardians_enabled)
354
+ @id = args[:id] if args.key?(:id)
355
+ @name = args[:name] if args.key?(:name)
356
+ @owner_id = args[:owner_id] if args.key?(:owner_id)
357
+ @room = args[:room] if args.key?(:room)
358
+ @section = args[:section] if args.key?(:section)
359
+ @teacher_folder = args[:teacher_folder] if args.key?(:teacher_folder)
360
+ @teacher_group_email = args[:teacher_group_email] if args.key?(:teacher_group_email)
361
+ @update_time = args[:update_time] if args.key?(:update_time)
362
+ end
363
+ end
364
+
365
+ # Alternative identifier for a course. An alias uniquely identifies a course. It
366
+ # must be unique within one of the following scopes: * domain: A domain-scoped
367
+ # alias is visible to all users within the alias creator's domain and can be
368
+ # created only by a domain admin. A domain-scoped alias is often used when a
369
+ # course has an identifier external to Classroom. * project: A project-scoped
370
+ # alias is visible to any request from an application using the Developer
371
+ # Console project ID that created the alias and can be created by any project. A
372
+ # project-scoped alias is often used when an application has alternative
373
+ # identifiers. A random value can also be used to avoid duplicate courses in the
374
+ # event of transmission failures, as retrying a request will return `
375
+ # ALREADY_EXISTS` if a previous one has succeeded.
376
+ class CourseAlias
377
+ include Google::Apis::Core::Hashable
378
+
379
+ # Alias string. The format of the string indicates the desired alias scoping. * `
380
+ # d:` indicates a domain-scoped alias. Example: `d:math_101` * `p:` indicates a
381
+ # project-scoped alias. Example: `p:abc123` This field has a maximum length of
382
+ # 256 characters.
383
+ # Corresponds to the JSON property `alias`
384
+ # @return [String]
385
+ attr_accessor :alias
386
+
387
+ def initialize(**args)
388
+ update!(**args)
389
+ end
390
+
391
+ # Update properties of this object
392
+ def update!(**args)
393
+ @alias = args[:alias] if args.key?(:alias)
394
+ end
395
+ end
396
+
397
+ # A material attached to a course as part of a material set.
398
+ class CourseMaterial
399
+ include Google::Apis::Core::Hashable
400
+
401
+ # Representation of a Google Drive file.
402
+ # Corresponds to the JSON property `driveFile`
403
+ # @return [Google::Apis::ClassroomV1::DriveFile]
404
+ attr_accessor :drive_file
405
+
406
+ # Google Forms item.
407
+ # Corresponds to the JSON property `form`
408
+ # @return [Google::Apis::ClassroomV1::Form]
409
+ attr_accessor :form
410
+
411
+ # URL item.
412
+ # Corresponds to the JSON property `link`
413
+ # @return [Google::Apis::ClassroomV1::Link]
414
+ attr_accessor :link
415
+
416
+ # YouTube video item.
417
+ # Corresponds to the JSON property `youTubeVideo`
418
+ # @return [Google::Apis::ClassroomV1::YouTubeVideo]
419
+ attr_accessor :you_tube_video
420
+
421
+ def initialize(**args)
422
+ update!(**args)
423
+ end
424
+
425
+ # Update properties of this object
426
+ def update!(**args)
427
+ @drive_file = args[:drive_file] if args.key?(:drive_file)
428
+ @form = args[:form] if args.key?(:form)
429
+ @link = args[:link] if args.key?(:link)
430
+ @you_tube_video = args[:you_tube_video] if args.key?(:you_tube_video)
431
+ end
432
+ end
433
+
434
+ # A set of materials that appears on the "About" page of the course. These
435
+ # materials might include a syllabus, schedule, or other background information
436
+ # relating to the course as a whole.
437
+ class CourseMaterialSet
438
+ include Google::Apis::Core::Hashable
439
+
440
+ # Materials attached to this set.
441
+ # Corresponds to the JSON property `materials`
442
+ # @return [Array<Google::Apis::ClassroomV1::CourseMaterial>]
443
+ attr_accessor :materials
444
+
445
+ # Title for this set.
446
+ # Corresponds to the JSON property `title`
447
+ # @return [String]
448
+ attr_accessor :title
449
+
450
+ def initialize(**args)
451
+ update!(**args)
452
+ end
453
+
454
+ # Update properties of this object
455
+ def update!(**args)
456
+ @materials = args[:materials] if args.key?(:materials)
457
+ @title = args[:title] if args.key?(:title)
458
+ end
459
+ end
460
+
461
+ # Information about a `Feed` with a `feed_type` of `COURSE_ROSTER_CHANGES`.
462
+ class CourseRosterChangesInfo
463
+ include Google::Apis::Core::Hashable
464
+
465
+ # The `course_id` of the course to subscribe to roster changes for.
466
+ # Corresponds to the JSON property `courseId`
467
+ # @return [String]
468
+ attr_accessor :course_id
469
+
470
+ def initialize(**args)
471
+ update!(**args)
472
+ end
473
+
474
+ # Update properties of this object
475
+ def update!(**args)
476
+ @course_id = args[:course_id] if args.key?(:course_id)
477
+ end
478
+ end
479
+
480
+ # Course work created by a teacher for students of the course.
481
+ class CourseWork
482
+ include Google::Apis::Core::Hashable
483
+
484
+ # Absolute link to this course work in the Classroom web UI. This is only
485
+ # populated if `state` is `PUBLISHED`. Read-only.
486
+ # Corresponds to the JSON property `alternateLink`
487
+ # @return [String]
488
+ attr_accessor :alternate_link
489
+
490
+ # Assignee mode of the coursework. If unspecified, the default value is `
491
+ # ALL_STUDENTS`.
492
+ # Corresponds to the JSON property `assigneeMode`
493
+ # @return [String]
494
+ attr_accessor :assignee_mode
495
+
496
+ # Additional details for assignments.
497
+ # Corresponds to the JSON property `assignment`
498
+ # @return [Google::Apis::ClassroomV1::Assignment]
499
+ attr_accessor :assignment
500
+
501
+ # Whether this course work item is associated with the Developer Console project
502
+ # making the request. See CreateCourseWork for more details. Read-only.
503
+ # Corresponds to the JSON property `associatedWithDeveloper`
504
+ # @return [Boolean]
505
+ attr_accessor :associated_with_developer
506
+ alias_method :associated_with_developer?, :associated_with_developer
507
+
508
+ # Identifier of the course. Read-only.
509
+ # Corresponds to the JSON property `courseId`
510
+ # @return [String]
511
+ attr_accessor :course_id
512
+
513
+ # Timestamp when this course work was created. Read-only.
514
+ # Corresponds to the JSON property `creationTime`
515
+ # @return [String]
516
+ attr_accessor :creation_time
517
+
518
+ # Identifier for the user that created the coursework. Read-only.
519
+ # Corresponds to the JSON property `creatorUserId`
520
+ # @return [String]
521
+ attr_accessor :creator_user_id
522
+
523
+ # Optional description of this course work. If set, the description must be a
524
+ # valid UTF-8 string containing no more than 30,000 characters.
525
+ # Corresponds to the JSON property `description`
526
+ # @return [String]
527
+ attr_accessor :description
528
+
529
+ # Represents a whole or partial calendar date, such as a birthday. The time of
530
+ # day and time zone are either specified elsewhere or are insignificant. The
531
+ # date is relative to the Gregorian Calendar. This can represent one of the
532
+ # following: * A full date, with non-zero year, month, and day values * A month
533
+ # and day value, with a zero year, such as an anniversary * A year on its own,
534
+ # with zero month and day values * A year and month value, with a zero day, such
535
+ # as a credit card expiration date Related types are google.type.TimeOfDay and `
536
+ # google.protobuf.Timestamp`.
537
+ # Corresponds to the JSON property `dueDate`
538
+ # @return [Google::Apis::ClassroomV1::Date]
539
+ attr_accessor :due_date
540
+
541
+ # Represents a time of day. The date and time zone are either not significant or
542
+ # are specified elsewhere. An API may choose to allow leap seconds. Related
543
+ # types are google.type.Date and `google.protobuf.Timestamp`.
544
+ # Corresponds to the JSON property `dueTime`
545
+ # @return [Google::Apis::ClassroomV1::TimeOfDay]
546
+ attr_accessor :due_time
547
+
548
+ # Classroom-assigned identifier of this course work, unique per course. Read-
549
+ # only.
550
+ # Corresponds to the JSON property `id`
551
+ # @return [String]
552
+ attr_accessor :id
553
+
554
+ # Assignee details about a coursework/announcement. This field is set if and
555
+ # only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
556
+ # Corresponds to the JSON property `individualStudentsOptions`
557
+ # @return [Google::Apis::ClassroomV1::IndividualStudentsOptions]
558
+ attr_accessor :individual_students_options
559
+
560
+ # Additional materials. CourseWork must have no more than 20 material items.
561
+ # Corresponds to the JSON property `materials`
562
+ # @return [Array<Google::Apis::ClassroomV1::Material>]
563
+ attr_accessor :materials
564
+
565
+ # Maximum grade for this course work. If zero or unspecified, this assignment is
566
+ # considered ungraded. This must be a non-negative integer value.
567
+ # Corresponds to the JSON property `maxPoints`
568
+ # @return [Float]
569
+ attr_accessor :max_points
570
+
571
+ # Additional details for multiple-choice questions.
572
+ # Corresponds to the JSON property `multipleChoiceQuestion`
573
+ # @return [Google::Apis::ClassroomV1::MultipleChoiceQuestion]
574
+ attr_accessor :multiple_choice_question
575
+
576
+ # Optional timestamp when this course work is scheduled to be published.
577
+ # Corresponds to the JSON property `scheduledTime`
578
+ # @return [String]
579
+ attr_accessor :scheduled_time
580
+
581
+ # Status of this course work. If unspecified, the default state is `DRAFT`.
582
+ # Corresponds to the JSON property `state`
583
+ # @return [String]
584
+ attr_accessor :state
585
+
586
+ # Setting to determine when students are allowed to modify submissions. If
587
+ # unspecified, the default value is `MODIFIABLE_UNTIL_TURNED_IN`.
588
+ # Corresponds to the JSON property `submissionModificationMode`
589
+ # @return [String]
590
+ attr_accessor :submission_modification_mode
591
+
592
+ # Title of this course work. The title must be a valid UTF-8 string containing
593
+ # between 1 and 3000 characters.
594
+ # Corresponds to the JSON property `title`
595
+ # @return [String]
596
+ attr_accessor :title
597
+
598
+ # Identifier for the topic that this coursework is associated with. Must match
599
+ # an existing topic in the course.
600
+ # Corresponds to the JSON property `topicId`
601
+ # @return [String]
602
+ attr_accessor :topic_id
603
+
604
+ # Timestamp of the most recent change to this course work. Read-only.
605
+ # Corresponds to the JSON property `updateTime`
606
+ # @return [String]
607
+ attr_accessor :update_time
608
+
609
+ # Type of this course work. The type is set when the course work is created and
610
+ # cannot be changed.
611
+ # Corresponds to the JSON property `workType`
612
+ # @return [String]
613
+ attr_accessor :work_type
614
+
615
+ def initialize(**args)
616
+ update!(**args)
617
+ end
618
+
619
+ # Update properties of this object
620
+ def update!(**args)
621
+ @alternate_link = args[:alternate_link] if args.key?(:alternate_link)
622
+ @assignee_mode = args[:assignee_mode] if args.key?(:assignee_mode)
623
+ @assignment = args[:assignment] if args.key?(:assignment)
624
+ @associated_with_developer = args[:associated_with_developer] if args.key?(:associated_with_developer)
625
+ @course_id = args[:course_id] if args.key?(:course_id)
626
+ @creation_time = args[:creation_time] if args.key?(:creation_time)
627
+ @creator_user_id = args[:creator_user_id] if args.key?(:creator_user_id)
628
+ @description = args[:description] if args.key?(:description)
629
+ @due_date = args[:due_date] if args.key?(:due_date)
630
+ @due_time = args[:due_time] if args.key?(:due_time)
631
+ @id = args[:id] if args.key?(:id)
632
+ @individual_students_options = args[:individual_students_options] if args.key?(:individual_students_options)
633
+ @materials = args[:materials] if args.key?(:materials)
634
+ @max_points = args[:max_points] if args.key?(:max_points)
635
+ @multiple_choice_question = args[:multiple_choice_question] if args.key?(:multiple_choice_question)
636
+ @scheduled_time = args[:scheduled_time] if args.key?(:scheduled_time)
637
+ @state = args[:state] if args.key?(:state)
638
+ @submission_modification_mode = args[:submission_modification_mode] if args.key?(:submission_modification_mode)
639
+ @title = args[:title] if args.key?(:title)
640
+ @topic_id = args[:topic_id] if args.key?(:topic_id)
641
+ @update_time = args[:update_time] if args.key?(:update_time)
642
+ @work_type = args[:work_type] if args.key?(:work_type)
643
+ end
644
+ end
645
+
646
+ # Information about a `Feed` with a `feed_type` of `COURSE_WORK_CHANGES`.
647
+ class CourseWorkChangesInfo
648
+ include Google::Apis::Core::Hashable
649
+
650
+ # The `course_id` of the course to subscribe to work changes for.
651
+ # Corresponds to the JSON property `courseId`
652
+ # @return [String]
653
+ attr_accessor :course_id
654
+
655
+ def initialize(**args)
656
+ update!(**args)
657
+ end
658
+
659
+ # Update properties of this object
660
+ def update!(**args)
661
+ @course_id = args[:course_id] if args.key?(:course_id)
662
+ end
663
+ end
664
+
665
+ # Course work material created by a teacher for students of the course
666
+ class CourseWorkMaterial
667
+ include Google::Apis::Core::Hashable
668
+
669
+ # Absolute link to this course work material in the Classroom web UI. This is
670
+ # only populated if `state` is `PUBLISHED`. Read-only.
671
+ # Corresponds to the JSON property `alternateLink`
672
+ # @return [String]
673
+ attr_accessor :alternate_link
674
+
675
+ # Assignee mode of the course work material. If unspecified, the default value
676
+ # is `ALL_STUDENTS`.
677
+ # Corresponds to the JSON property `assigneeMode`
678
+ # @return [String]
679
+ attr_accessor :assignee_mode
680
+
681
+ # Identifier of the course. Read-only.
682
+ # Corresponds to the JSON property `courseId`
683
+ # @return [String]
684
+ attr_accessor :course_id
685
+
686
+ # Timestamp when this course work material was created. Read-only.
687
+ # Corresponds to the JSON property `creationTime`
688
+ # @return [String]
689
+ attr_accessor :creation_time
690
+
691
+ # Identifier for the user that created the course work material. Read-only.
692
+ # Corresponds to the JSON property `creatorUserId`
693
+ # @return [String]
694
+ attr_accessor :creator_user_id
695
+
696
+ # Optional description of this course work material. The text must be a valid
697
+ # UTF-8 string containing no more than 30,000 characters.
698
+ # Corresponds to the JSON property `description`
699
+ # @return [String]
700
+ attr_accessor :description
701
+
702
+ # Classroom-assigned identifier of this course work material, unique per course.
703
+ # Read-only.
704
+ # Corresponds to the JSON property `id`
705
+ # @return [String]
706
+ attr_accessor :id
707
+
708
+ # Assignee details about a coursework/announcement. This field is set if and
709
+ # only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
710
+ # Corresponds to the JSON property `individualStudentsOptions`
711
+ # @return [Google::Apis::ClassroomV1::IndividualStudentsOptions]
712
+ attr_accessor :individual_students_options
713
+
714
+ # Additional materials. A course work material must have no more than 20
715
+ # material items.
716
+ # Corresponds to the JSON property `materials`
717
+ # @return [Array<Google::Apis::ClassroomV1::Material>]
718
+ attr_accessor :materials
719
+
720
+ # Optional timestamp when this course work material is scheduled to be published.
721
+ # Corresponds to the JSON property `scheduledTime`
722
+ # @return [String]
723
+ attr_accessor :scheduled_time
724
+
725
+ # Status of this course work material. If unspecified, the default state is `
726
+ # DRAFT`.
727
+ # Corresponds to the JSON property `state`
728
+ # @return [String]
729
+ attr_accessor :state
730
+
731
+ # Title of this course work material. The title must be a valid UTF-8 string
732
+ # containing between 1 and 3000 characters.
733
+ # Corresponds to the JSON property `title`
734
+ # @return [String]
735
+ attr_accessor :title
736
+
737
+ # Identifier for the topic that this course work material is associated with.
738
+ # Must match an existing topic in the course.
739
+ # Corresponds to the JSON property `topicId`
740
+ # @return [String]
741
+ attr_accessor :topic_id
742
+
743
+ # Timestamp of the most recent change to this course work material. Read-only.
744
+ # Corresponds to the JSON property `updateTime`
745
+ # @return [String]
746
+ attr_accessor :update_time
747
+
748
+ def initialize(**args)
749
+ update!(**args)
750
+ end
751
+
752
+ # Update properties of this object
753
+ def update!(**args)
754
+ @alternate_link = args[:alternate_link] if args.key?(:alternate_link)
755
+ @assignee_mode = args[:assignee_mode] if args.key?(:assignee_mode)
756
+ @course_id = args[:course_id] if args.key?(:course_id)
757
+ @creation_time = args[:creation_time] if args.key?(:creation_time)
758
+ @creator_user_id = args[:creator_user_id] if args.key?(:creator_user_id)
759
+ @description = args[:description] if args.key?(:description)
760
+ @id = args[:id] if args.key?(:id)
761
+ @individual_students_options = args[:individual_students_options] if args.key?(:individual_students_options)
762
+ @materials = args[:materials] if args.key?(:materials)
763
+ @scheduled_time = args[:scheduled_time] if args.key?(:scheduled_time)
764
+ @state = args[:state] if args.key?(:state)
765
+ @title = args[:title] if args.key?(:title)
766
+ @topic_id = args[:topic_id] if args.key?(:topic_id)
767
+ @update_time = args[:update_time] if args.key?(:update_time)
768
+ end
769
+ end
770
+
771
+ # Represents a whole or partial calendar date, such as a birthday. The time of
772
+ # day and time zone are either specified elsewhere or are insignificant. The
773
+ # date is relative to the Gregorian Calendar. This can represent one of the
774
+ # following: * A full date, with non-zero year, month, and day values * A month
775
+ # and day value, with a zero year, such as an anniversary * A year on its own,
776
+ # with zero month and day values * A year and month value, with a zero day, such
777
+ # as a credit card expiration date Related types are google.type.TimeOfDay and `
778
+ # google.protobuf.Timestamp`.
779
+ class Date
780
+ include Google::Apis::Core::Hashable
781
+
782
+ # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to
783
+ # specify a year by itself or a year and month where the day isn't significant.
784
+ # Corresponds to the JSON property `day`
785
+ # @return [Fixnum]
786
+ attr_accessor :day
787
+
788
+ # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month
789
+ # and day.
790
+ # Corresponds to the JSON property `month`
791
+ # @return [Fixnum]
792
+ attr_accessor :month
793
+
794
+ # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a
795
+ # year.
796
+ # Corresponds to the JSON property `year`
797
+ # @return [Fixnum]
798
+ attr_accessor :year
799
+
800
+ def initialize(**args)
801
+ update!(**args)
802
+ end
803
+
804
+ # Update properties of this object
805
+ def update!(**args)
806
+ @day = args[:day] if args.key?(:day)
807
+ @month = args[:month] if args.key?(:month)
808
+ @year = args[:year] if args.key?(:year)
809
+ end
810
+ end
811
+
812
+ # Representation of a Google Drive file.
813
+ class DriveFile
814
+ include Google::Apis::Core::Hashable
815
+
816
+ # URL that can be used to access the Drive item. Read-only.
817
+ # Corresponds to the JSON property `alternateLink`
818
+ # @return [String]
819
+ attr_accessor :alternate_link
820
+
821
+ # Drive API resource ID.
822
+ # Corresponds to the JSON property `id`
823
+ # @return [String]
824
+ attr_accessor :id
825
+
826
+ # URL of a thumbnail image of the Drive item. Read-only.
827
+ # Corresponds to the JSON property `thumbnailUrl`
828
+ # @return [String]
829
+ attr_accessor :thumbnail_url
830
+
831
+ # Title of the Drive item. Read-only.
832
+ # Corresponds to the JSON property `title`
833
+ # @return [String]
834
+ attr_accessor :title
835
+
836
+ def initialize(**args)
837
+ update!(**args)
838
+ end
839
+
840
+ # Update properties of this object
841
+ def update!(**args)
842
+ @alternate_link = args[:alternate_link] if args.key?(:alternate_link)
843
+ @id = args[:id] if args.key?(:id)
844
+ @thumbnail_url = args[:thumbnail_url] if args.key?(:thumbnail_url)
845
+ @title = args[:title] if args.key?(:title)
846
+ end
847
+ end
848
+
849
+ # Representation of a Google Drive folder.
850
+ class DriveFolder
851
+ include Google::Apis::Core::Hashable
852
+
853
+ # URL that can be used to access the Drive folder. Read-only.
854
+ # Corresponds to the JSON property `alternateLink`
855
+ # @return [String]
856
+ attr_accessor :alternate_link
857
+
858
+ # Drive API resource ID.
859
+ # Corresponds to the JSON property `id`
860
+ # @return [String]
861
+ attr_accessor :id
862
+
863
+ # Title of the Drive folder. Read-only.
864
+ # Corresponds to the JSON property `title`
865
+ # @return [String]
866
+ attr_accessor :title
867
+
868
+ def initialize(**args)
869
+ update!(**args)
870
+ end
871
+
872
+ # Update properties of this object
873
+ def update!(**args)
874
+ @alternate_link = args[:alternate_link] if args.key?(:alternate_link)
875
+ @id = args[:id] if args.key?(:id)
876
+ @title = args[:title] if args.key?(:title)
877
+ end
878
+ end
879
+
880
+ # A generic empty message that you can re-use to avoid defining duplicated empty
881
+ # messages in your APIs. A typical example is to use it as the request or the
882
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
883
+ # protobuf.Empty) returns (google.protobuf.Empty); ` The JSON representation for
884
+ # `Empty` is empty JSON object ````.
885
+ class Empty
886
+ include Google::Apis::Core::Hashable
887
+
888
+ def initialize(**args)
889
+ update!(**args)
890
+ end
891
+
892
+ # Update properties of this object
893
+ def update!(**args)
894
+ end
895
+ end
896
+
897
+ # A class of notifications that an application can register to receive. For
898
+ # example: "all roster changes for a domain".
899
+ class Feed
900
+ include Google::Apis::Core::Hashable
901
+
902
+ # Information about a `Feed` with a `feed_type` of `COURSE_ROSTER_CHANGES`.
903
+ # Corresponds to the JSON property `courseRosterChangesInfo`
904
+ # @return [Google::Apis::ClassroomV1::CourseRosterChangesInfo]
905
+ attr_accessor :course_roster_changes_info
906
+
907
+ # Information about a `Feed` with a `feed_type` of `COURSE_WORK_CHANGES`.
908
+ # Corresponds to the JSON property `courseWorkChangesInfo`
909
+ # @return [Google::Apis::ClassroomV1::CourseWorkChangesInfo]
910
+ attr_accessor :course_work_changes_info
911
+
912
+ # The type of feed.
913
+ # Corresponds to the JSON property `feedType`
914
+ # @return [String]
915
+ attr_accessor :feed_type
916
+
917
+ def initialize(**args)
918
+ update!(**args)
919
+ end
920
+
921
+ # Update properties of this object
922
+ def update!(**args)
923
+ @course_roster_changes_info = args[:course_roster_changes_info] if args.key?(:course_roster_changes_info)
924
+ @course_work_changes_info = args[:course_work_changes_info] if args.key?(:course_work_changes_info)
925
+ @feed_type = args[:feed_type] if args.key?(:feed_type)
926
+ end
927
+ end
928
+
929
+ # Google Forms item.
930
+ class Form
931
+ include Google::Apis::Core::Hashable
932
+
933
+ # URL of the form.
934
+ # Corresponds to the JSON property `formUrl`
935
+ # @return [String]
936
+ attr_accessor :form_url
937
+
938
+ # URL of the form responses document. Only set if respsonses have been recorded
939
+ # and only when the requesting user is an editor of the form. Read-only.
940
+ # Corresponds to the JSON property `responseUrl`
941
+ # @return [String]
942
+ attr_accessor :response_url
943
+
944
+ # URL of a thumbnail image of the Form. Read-only.
945
+ # Corresponds to the JSON property `thumbnailUrl`
946
+ # @return [String]
947
+ attr_accessor :thumbnail_url
948
+
949
+ # Title of the Form. Read-only.
950
+ # Corresponds to the JSON property `title`
951
+ # @return [String]
952
+ attr_accessor :title
953
+
954
+ def initialize(**args)
955
+ update!(**args)
956
+ end
957
+
958
+ # Update properties of this object
959
+ def update!(**args)
960
+ @form_url = args[:form_url] if args.key?(:form_url)
961
+ @response_url = args[:response_url] if args.key?(:response_url)
962
+ @thumbnail_url = args[:thumbnail_url] if args.key?(:thumbnail_url)
963
+ @title = args[:title] if args.key?(:title)
964
+ end
965
+ end
966
+
967
+ # Global user permission description.
968
+ class GlobalPermission
969
+ include Google::Apis::Core::Hashable
970
+
971
+ # Permission value.
972
+ # Corresponds to the JSON property `permission`
973
+ # @return [String]
974
+ attr_accessor :permission
975
+
976
+ def initialize(**args)
977
+ update!(**args)
978
+ end
979
+
980
+ # Update properties of this object
981
+ def update!(**args)
982
+ @permission = args[:permission] if args.key?(:permission)
983
+ end
984
+ end
985
+
986
+ # The history of each grade on this submission.
987
+ class GradeHistory
988
+ include Google::Apis::Core::Hashable
989
+
990
+ # The teacher who made the grade change.
991
+ # Corresponds to the JSON property `actorUserId`
992
+ # @return [String]
993
+ attr_accessor :actor_user_id
994
+
995
+ # The type of grade change at this time in the submission grade history.
996
+ # Corresponds to the JSON property `gradeChangeType`
997
+ # @return [String]
998
+ attr_accessor :grade_change_type
999
+
1000
+ # When the grade of the submission was changed.
1001
+ # Corresponds to the JSON property `gradeTimestamp`
1002
+ # @return [String]
1003
+ attr_accessor :grade_timestamp
1004
+
1005
+ # The denominator of the grade at this time in the submission grade history.
1006
+ # Corresponds to the JSON property `maxPoints`
1007
+ # @return [Float]
1008
+ attr_accessor :max_points
1009
+
1010
+ # The numerator of the grade at this time in the submission grade history.
1011
+ # Corresponds to the JSON property `pointsEarned`
1012
+ # @return [Float]
1013
+ attr_accessor :points_earned
1014
+
1015
+ def initialize(**args)
1016
+ update!(**args)
1017
+ end
1018
+
1019
+ # Update properties of this object
1020
+ def update!(**args)
1021
+ @actor_user_id = args[:actor_user_id] if args.key?(:actor_user_id)
1022
+ @grade_change_type = args[:grade_change_type] if args.key?(:grade_change_type)
1023
+ @grade_timestamp = args[:grade_timestamp] if args.key?(:grade_timestamp)
1024
+ @max_points = args[:max_points] if args.key?(:max_points)
1025
+ @points_earned = args[:points_earned] if args.key?(:points_earned)
1026
+ end
1027
+ end
1028
+
1029
+ # Association between a student and a guardian of that student. The guardian may
1030
+ # receive information about the student's course work.
1031
+ class Guardian
1032
+ include Google::Apis::Core::Hashable
1033
+
1034
+ # Identifier for the guardian.
1035
+ # Corresponds to the JSON property `guardianId`
1036
+ # @return [String]
1037
+ attr_accessor :guardian_id
1038
+
1039
+ # Global information for a user.
1040
+ # Corresponds to the JSON property `guardianProfile`
1041
+ # @return [Google::Apis::ClassroomV1::UserProfile]
1042
+ attr_accessor :guardian_profile
1043
+
1044
+ # The email address to which the initial guardian invitation was sent. This
1045
+ # field is only visible to domain administrators.
1046
+ # Corresponds to the JSON property `invitedEmailAddress`
1047
+ # @return [String]
1048
+ attr_accessor :invited_email_address
1049
+
1050
+ # Identifier for the student to whom the guardian relationship applies.
1051
+ # Corresponds to the JSON property `studentId`
1052
+ # @return [String]
1053
+ attr_accessor :student_id
1054
+
1055
+ def initialize(**args)
1056
+ update!(**args)
1057
+ end
1058
+
1059
+ # Update properties of this object
1060
+ def update!(**args)
1061
+ @guardian_id = args[:guardian_id] if args.key?(:guardian_id)
1062
+ @guardian_profile = args[:guardian_profile] if args.key?(:guardian_profile)
1063
+ @invited_email_address = args[:invited_email_address] if args.key?(:invited_email_address)
1064
+ @student_id = args[:student_id] if args.key?(:student_id)
1065
+ end
1066
+ end
1067
+
1068
+ # An invitation to become the guardian of a specified user, sent to a specified
1069
+ # email address.
1070
+ class GuardianInvitation
1071
+ include Google::Apis::Core::Hashable
1072
+
1073
+ # The time that this invitation was created. Read-only.
1074
+ # Corresponds to the JSON property `creationTime`
1075
+ # @return [String]
1076
+ attr_accessor :creation_time
1077
+
1078
+ # Unique identifier for this invitation. Read-only.
1079
+ # Corresponds to the JSON property `invitationId`
1080
+ # @return [String]
1081
+ attr_accessor :invitation_id
1082
+
1083
+ # Email address that the invitation was sent to. This field is only visible to
1084
+ # domain administrators.
1085
+ # Corresponds to the JSON property `invitedEmailAddress`
1086
+ # @return [String]
1087
+ attr_accessor :invited_email_address
1088
+
1089
+ # The state that this invitation is in.
1090
+ # Corresponds to the JSON property `state`
1091
+ # @return [String]
1092
+ attr_accessor :state
1093
+
1094
+ # ID of the student (in standard format)
1095
+ # Corresponds to the JSON property `studentId`
1096
+ # @return [String]
1097
+ attr_accessor :student_id
1098
+
1099
+ def initialize(**args)
1100
+ update!(**args)
1101
+ end
1102
+
1103
+ # Update properties of this object
1104
+ def update!(**args)
1105
+ @creation_time = args[:creation_time] if args.key?(:creation_time)
1106
+ @invitation_id = args[:invitation_id] if args.key?(:invitation_id)
1107
+ @invited_email_address = args[:invited_email_address] if args.key?(:invited_email_address)
1108
+ @state = args[:state] if args.key?(:state)
1109
+ @student_id = args[:student_id] if args.key?(:student_id)
1110
+ end
1111
+ end
1112
+
1113
+ # Assignee details about a coursework/announcement. This field is set if and
1114
+ # only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
1115
+ class IndividualStudentsOptions
1116
+ include Google::Apis::Core::Hashable
1117
+
1118
+ # Identifiers for the students that have access to the coursework/announcement.
1119
+ # Corresponds to the JSON property `studentIds`
1120
+ # @return [Array<String>]
1121
+ attr_accessor :student_ids
1122
+
1123
+ def initialize(**args)
1124
+ update!(**args)
1125
+ end
1126
+
1127
+ # Update properties of this object
1128
+ def update!(**args)
1129
+ @student_ids = args[:student_ids] if args.key?(:student_ids)
1130
+ end
1131
+ end
1132
+
1133
+ # An invitation to join a course.
1134
+ class Invitation
1135
+ include Google::Apis::Core::Hashable
1136
+
1137
+ # Identifier of the course to invite the user to.
1138
+ # Corresponds to the JSON property `courseId`
1139
+ # @return [String]
1140
+ attr_accessor :course_id
1141
+
1142
+ # Identifier assigned by Classroom. Read-only.
1143
+ # Corresponds to the JSON property `id`
1144
+ # @return [String]
1145
+ attr_accessor :id
1146
+
1147
+ # Role to invite the user to have. Must not be `COURSE_ROLE_UNSPECIFIED`.
1148
+ # Corresponds to the JSON property `role`
1149
+ # @return [String]
1150
+ attr_accessor :role
1151
+
1152
+ # Identifier of the invited user. When specified as a parameter of a request,
1153
+ # this identifier can be set to one of the following: * the numeric identifier
1154
+ # for the user * the email address of the user * the string literal `"me"`,
1155
+ # indicating the requesting user
1156
+ # Corresponds to the JSON property `userId`
1157
+ # @return [String]
1158
+ attr_accessor :user_id
1159
+
1160
+ def initialize(**args)
1161
+ update!(**args)
1162
+ end
1163
+
1164
+ # Update properties of this object
1165
+ def update!(**args)
1166
+ @course_id = args[:course_id] if args.key?(:course_id)
1167
+ @id = args[:id] if args.key?(:id)
1168
+ @role = args[:role] if args.key?(:role)
1169
+ @user_id = args[:user_id] if args.key?(:user_id)
1170
+ end
1171
+ end
1172
+
1173
+ # URL item.
1174
+ class Link
1175
+ include Google::Apis::Core::Hashable
1176
+
1177
+ # URL of a thumbnail image of the target URL. Read-only.
1178
+ # Corresponds to the JSON property `thumbnailUrl`
1179
+ # @return [String]
1180
+ attr_accessor :thumbnail_url
1181
+
1182
+ # Title of the target of the URL. Read-only.
1183
+ # Corresponds to the JSON property `title`
1184
+ # @return [String]
1185
+ attr_accessor :title
1186
+
1187
+ # URL to link to. This must be a valid UTF-8 string containing between 1 and
1188
+ # 2024 characters.
1189
+ # Corresponds to the JSON property `url`
1190
+ # @return [String]
1191
+ attr_accessor :url
1192
+
1193
+ def initialize(**args)
1194
+ update!(**args)
1195
+ end
1196
+
1197
+ # Update properties of this object
1198
+ def update!(**args)
1199
+ @thumbnail_url = args[:thumbnail_url] if args.key?(:thumbnail_url)
1200
+ @title = args[:title] if args.key?(:title)
1201
+ @url = args[:url] if args.key?(:url)
1202
+ end
1203
+ end
1204
+
1205
+ # Response when listing course work.
1206
+ class ListAnnouncementsResponse
1207
+ include Google::Apis::Core::Hashable
1208
+
1209
+ # Announcement items that match the request.
1210
+ # Corresponds to the JSON property `announcements`
1211
+ # @return [Array<Google::Apis::ClassroomV1::Announcement>]
1212
+ attr_accessor :announcements
1213
+
1214
+ # Token identifying the next page of results to return. If empty, no further
1215
+ # results are available.
1216
+ # Corresponds to the JSON property `nextPageToken`
1217
+ # @return [String]
1218
+ attr_accessor :next_page_token
1219
+
1220
+ def initialize(**args)
1221
+ update!(**args)
1222
+ end
1223
+
1224
+ # Update properties of this object
1225
+ def update!(**args)
1226
+ @announcements = args[:announcements] if args.key?(:announcements)
1227
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1228
+ end
1229
+ end
1230
+
1231
+ # Response when listing course aliases.
1232
+ class ListCourseAliasesResponse
1233
+ include Google::Apis::Core::Hashable
1234
+
1235
+ # The course aliases.
1236
+ # Corresponds to the JSON property `aliases`
1237
+ # @return [Array<Google::Apis::ClassroomV1::CourseAlias>]
1238
+ attr_accessor :aliases
1239
+
1240
+ # Token identifying the next page of results to return. If empty, no further
1241
+ # results are available.
1242
+ # Corresponds to the JSON property `nextPageToken`
1243
+ # @return [String]
1244
+ attr_accessor :next_page_token
1245
+
1246
+ def initialize(**args)
1247
+ update!(**args)
1248
+ end
1249
+
1250
+ # Update properties of this object
1251
+ def update!(**args)
1252
+ @aliases = args[:aliases] if args.key?(:aliases)
1253
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1254
+ end
1255
+ end
1256
+
1257
+ # Response when listing course work material.
1258
+ class ListCourseWorkMaterialResponse
1259
+ include Google::Apis::Core::Hashable
1260
+
1261
+ # Course work material items that match the request.
1262
+ # Corresponds to the JSON property `courseWorkMaterial`
1263
+ # @return [Array<Google::Apis::ClassroomV1::CourseWorkMaterial>]
1264
+ attr_accessor :course_work_material
1265
+
1266
+ # Token identifying the next page of results to return. If empty, no further
1267
+ # results are available.
1268
+ # Corresponds to the JSON property `nextPageToken`
1269
+ # @return [String]
1270
+ attr_accessor :next_page_token
1271
+
1272
+ def initialize(**args)
1273
+ update!(**args)
1274
+ end
1275
+
1276
+ # Update properties of this object
1277
+ def update!(**args)
1278
+ @course_work_material = args[:course_work_material] if args.key?(:course_work_material)
1279
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1280
+ end
1281
+ end
1282
+
1283
+ # Response when listing course work.
1284
+ class ListCourseWorkResponse
1285
+ include Google::Apis::Core::Hashable
1286
+
1287
+ # Course work items that match the request.
1288
+ # Corresponds to the JSON property `courseWork`
1289
+ # @return [Array<Google::Apis::ClassroomV1::CourseWork>]
1290
+ attr_accessor :course_work
1291
+
1292
+ # Token identifying the next page of results to return. If empty, no further
1293
+ # results are available.
1294
+ # Corresponds to the JSON property `nextPageToken`
1295
+ # @return [String]
1296
+ attr_accessor :next_page_token
1297
+
1298
+ def initialize(**args)
1299
+ update!(**args)
1300
+ end
1301
+
1302
+ # Update properties of this object
1303
+ def update!(**args)
1304
+ @course_work = args[:course_work] if args.key?(:course_work)
1305
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1306
+ end
1307
+ end
1308
+
1309
+ # Response when listing courses.
1310
+ class ListCoursesResponse
1311
+ include Google::Apis::Core::Hashable
1312
+
1313
+ # Courses that match the list request.
1314
+ # Corresponds to the JSON property `courses`
1315
+ # @return [Array<Google::Apis::ClassroomV1::Course>]
1316
+ attr_accessor :courses
1317
+
1318
+ # Token identifying the next page of results to return. If empty, no further
1319
+ # results are available.
1320
+ # Corresponds to the JSON property `nextPageToken`
1321
+ # @return [String]
1322
+ attr_accessor :next_page_token
1323
+
1324
+ def initialize(**args)
1325
+ update!(**args)
1326
+ end
1327
+
1328
+ # Update properties of this object
1329
+ def update!(**args)
1330
+ @courses = args[:courses] if args.key?(:courses)
1331
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1332
+ end
1333
+ end
1334
+
1335
+ # Response when listing guardian invitations.
1336
+ class ListGuardianInvitationsResponse
1337
+ include Google::Apis::Core::Hashable
1338
+
1339
+ # Guardian invitations that matched the list request.
1340
+ # Corresponds to the JSON property `guardianInvitations`
1341
+ # @return [Array<Google::Apis::ClassroomV1::GuardianInvitation>]
1342
+ attr_accessor :guardian_invitations
1343
+
1344
+ # Token identifying the next page of results to return. If empty, no further
1345
+ # results are available.
1346
+ # Corresponds to the JSON property `nextPageToken`
1347
+ # @return [String]
1348
+ attr_accessor :next_page_token
1349
+
1350
+ def initialize(**args)
1351
+ update!(**args)
1352
+ end
1353
+
1354
+ # Update properties of this object
1355
+ def update!(**args)
1356
+ @guardian_invitations = args[:guardian_invitations] if args.key?(:guardian_invitations)
1357
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1358
+ end
1359
+ end
1360
+
1361
+ # Response when listing guardians.
1362
+ class ListGuardiansResponse
1363
+ include Google::Apis::Core::Hashable
1364
+
1365
+ # Guardians on this page of results that met the criteria specified in the
1366
+ # request.
1367
+ # Corresponds to the JSON property `guardians`
1368
+ # @return [Array<Google::Apis::ClassroomV1::Guardian>]
1369
+ attr_accessor :guardians
1370
+
1371
+ # Token identifying the next page of results to return. If empty, no further
1372
+ # results are available.
1373
+ # Corresponds to the JSON property `nextPageToken`
1374
+ # @return [String]
1375
+ attr_accessor :next_page_token
1376
+
1377
+ def initialize(**args)
1378
+ update!(**args)
1379
+ end
1380
+
1381
+ # Update properties of this object
1382
+ def update!(**args)
1383
+ @guardians = args[:guardians] if args.key?(:guardians)
1384
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1385
+ end
1386
+ end
1387
+
1388
+ # Response when listing invitations.
1389
+ class ListInvitationsResponse
1390
+ include Google::Apis::Core::Hashable
1391
+
1392
+ # Invitations that match the list request.
1393
+ # Corresponds to the JSON property `invitations`
1394
+ # @return [Array<Google::Apis::ClassroomV1::Invitation>]
1395
+ attr_accessor :invitations
1396
+
1397
+ # Token identifying the next page of results to return. If empty, no further
1398
+ # results are available.
1399
+ # Corresponds to the JSON property `nextPageToken`
1400
+ # @return [String]
1401
+ attr_accessor :next_page_token
1402
+
1403
+ def initialize(**args)
1404
+ update!(**args)
1405
+ end
1406
+
1407
+ # Update properties of this object
1408
+ def update!(**args)
1409
+ @invitations = args[:invitations] if args.key?(:invitations)
1410
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1411
+ end
1412
+ end
1413
+
1414
+ # Response when listing student submissions.
1415
+ class ListStudentSubmissionsResponse
1416
+ include Google::Apis::Core::Hashable
1417
+
1418
+ # Token identifying the next page of results to return. If empty, no further
1419
+ # results are available.
1420
+ # Corresponds to the JSON property `nextPageToken`
1421
+ # @return [String]
1422
+ attr_accessor :next_page_token
1423
+
1424
+ # Student work that matches the request.
1425
+ # Corresponds to the JSON property `studentSubmissions`
1426
+ # @return [Array<Google::Apis::ClassroomV1::StudentSubmission>]
1427
+ attr_accessor :student_submissions
1428
+
1429
+ def initialize(**args)
1430
+ update!(**args)
1431
+ end
1432
+
1433
+ # Update properties of this object
1434
+ def update!(**args)
1435
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1436
+ @student_submissions = args[:student_submissions] if args.key?(:student_submissions)
1437
+ end
1438
+ end
1439
+
1440
+ # Response when listing students.
1441
+ class ListStudentsResponse
1442
+ include Google::Apis::Core::Hashable
1443
+
1444
+ # Token identifying the next page of results to return. If empty, no further
1445
+ # results are available.
1446
+ # Corresponds to the JSON property `nextPageToken`
1447
+ # @return [String]
1448
+ attr_accessor :next_page_token
1449
+
1450
+ # Students who match the list request.
1451
+ # Corresponds to the JSON property `students`
1452
+ # @return [Array<Google::Apis::ClassroomV1::Student>]
1453
+ attr_accessor :students
1454
+
1455
+ def initialize(**args)
1456
+ update!(**args)
1457
+ end
1458
+
1459
+ # Update properties of this object
1460
+ def update!(**args)
1461
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1462
+ @students = args[:students] if args.key?(:students)
1463
+ end
1464
+ end
1465
+
1466
+ # Response when listing teachers.
1467
+ class ListTeachersResponse
1468
+ include Google::Apis::Core::Hashable
1469
+
1470
+ # Token identifying the next page of results to return. If empty, no further
1471
+ # results are available.
1472
+ # Corresponds to the JSON property `nextPageToken`
1473
+ # @return [String]
1474
+ attr_accessor :next_page_token
1475
+
1476
+ # Teachers who match the list request.
1477
+ # Corresponds to the JSON property `teachers`
1478
+ # @return [Array<Google::Apis::ClassroomV1::Teacher>]
1479
+ attr_accessor :teachers
1480
+
1481
+ def initialize(**args)
1482
+ update!(**args)
1483
+ end
1484
+
1485
+ # Update properties of this object
1486
+ def update!(**args)
1487
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1488
+ @teachers = args[:teachers] if args.key?(:teachers)
1489
+ end
1490
+ end
1491
+
1492
+ # Response when listing topics.
1493
+ class ListTopicResponse
1494
+ include Google::Apis::Core::Hashable
1495
+
1496
+ # Token identifying the next page of results to return. If empty, no further
1497
+ # results are available.
1498
+ # Corresponds to the JSON property `nextPageToken`
1499
+ # @return [String]
1500
+ attr_accessor :next_page_token
1501
+
1502
+ # Topic items that match the request.
1503
+ # Corresponds to the JSON property `topic`
1504
+ # @return [Array<Google::Apis::ClassroomV1::Topic>]
1505
+ attr_accessor :topic
1506
+
1507
+ def initialize(**args)
1508
+ update!(**args)
1509
+ end
1510
+
1511
+ # Update properties of this object
1512
+ def update!(**args)
1513
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1514
+ @topic = args[:topic] if args.key?(:topic)
1515
+ end
1516
+ end
1517
+
1518
+ # Material attached to course work. When creating attachments, setting the `form`
1519
+ # field is not supported.
1520
+ class Material
1521
+ include Google::Apis::Core::Hashable
1522
+
1523
+ # Drive file that is used as material for course work.
1524
+ # Corresponds to the JSON property `driveFile`
1525
+ # @return [Google::Apis::ClassroomV1::SharedDriveFile]
1526
+ attr_accessor :drive_file
1527
+
1528
+ # Google Forms item.
1529
+ # Corresponds to the JSON property `form`
1530
+ # @return [Google::Apis::ClassroomV1::Form]
1531
+ attr_accessor :form
1532
+
1533
+ # URL item.
1534
+ # Corresponds to the JSON property `link`
1535
+ # @return [Google::Apis::ClassroomV1::Link]
1536
+ attr_accessor :link
1537
+
1538
+ # YouTube video item.
1539
+ # Corresponds to the JSON property `youtubeVideo`
1540
+ # @return [Google::Apis::ClassroomV1::YouTubeVideo]
1541
+ attr_accessor :youtube_video
1542
+
1543
+ def initialize(**args)
1544
+ update!(**args)
1545
+ end
1546
+
1547
+ # Update properties of this object
1548
+ def update!(**args)
1549
+ @drive_file = args[:drive_file] if args.key?(:drive_file)
1550
+ @form = args[:form] if args.key?(:form)
1551
+ @link = args[:link] if args.key?(:link)
1552
+ @youtube_video = args[:youtube_video] if args.key?(:youtube_video)
1553
+ end
1554
+ end
1555
+
1556
+ # Request to modify assignee mode and options of an announcement.
1557
+ class ModifyAnnouncementAssigneesRequest
1558
+ include Google::Apis::Core::Hashable
1559
+
1560
+ # Mode of the announcement describing whether it is accessible by all students
1561
+ # or specified individual students.
1562
+ # Corresponds to the JSON property `assigneeMode`
1563
+ # @return [String]
1564
+ attr_accessor :assignee_mode
1565
+
1566
+ # Contains fields to add or remove students from a course work or announcement
1567
+ # where the `assigneeMode` is set to `INDIVIDUAL_STUDENTS`.
1568
+ # Corresponds to the JSON property `modifyIndividualStudentsOptions`
1569
+ # @return [Google::Apis::ClassroomV1::ModifyIndividualStudentsOptions]
1570
+ attr_accessor :modify_individual_students_options
1571
+
1572
+ def initialize(**args)
1573
+ update!(**args)
1574
+ end
1575
+
1576
+ # Update properties of this object
1577
+ def update!(**args)
1578
+ @assignee_mode = args[:assignee_mode] if args.key?(:assignee_mode)
1579
+ @modify_individual_students_options = args[:modify_individual_students_options] if args.key?(:modify_individual_students_options)
1580
+ end
1581
+ end
1582
+
1583
+ # Request to modify the attachments of a student submission.
1584
+ class ModifyAttachmentsRequest
1585
+ include Google::Apis::Core::Hashable
1586
+
1587
+ # Attachments to add. A student submission may not have more than 20 attachments.
1588
+ # Form attachments are not supported.
1589
+ # Corresponds to the JSON property `addAttachments`
1590
+ # @return [Array<Google::Apis::ClassroomV1::Attachment>]
1591
+ attr_accessor :add_attachments
1592
+
1593
+ def initialize(**args)
1594
+ update!(**args)
1595
+ end
1596
+
1597
+ # Update properties of this object
1598
+ def update!(**args)
1599
+ @add_attachments = args[:add_attachments] if args.key?(:add_attachments)
1600
+ end
1601
+ end
1602
+
1603
+ # Request to modify assignee mode and options of a coursework.
1604
+ class ModifyCourseWorkAssigneesRequest
1605
+ include Google::Apis::Core::Hashable
1606
+
1607
+ # Mode of the coursework describing whether it will be assigned to all students
1608
+ # or specified individual students.
1609
+ # Corresponds to the JSON property `assigneeMode`
1610
+ # @return [String]
1611
+ attr_accessor :assignee_mode
1612
+
1613
+ # Contains fields to add or remove students from a course work or announcement
1614
+ # where the `assigneeMode` is set to `INDIVIDUAL_STUDENTS`.
1615
+ # Corresponds to the JSON property `modifyIndividualStudentsOptions`
1616
+ # @return [Google::Apis::ClassroomV1::ModifyIndividualStudentsOptions]
1617
+ attr_accessor :modify_individual_students_options
1618
+
1619
+ def initialize(**args)
1620
+ update!(**args)
1621
+ end
1622
+
1623
+ # Update properties of this object
1624
+ def update!(**args)
1625
+ @assignee_mode = args[:assignee_mode] if args.key?(:assignee_mode)
1626
+ @modify_individual_students_options = args[:modify_individual_students_options] if args.key?(:modify_individual_students_options)
1627
+ end
1628
+ end
1629
+
1630
+ # Contains fields to add or remove students from a course work or announcement
1631
+ # where the `assigneeMode` is set to `INDIVIDUAL_STUDENTS`.
1632
+ class ModifyIndividualStudentsOptions
1633
+ include Google::Apis::Core::Hashable
1634
+
1635
+ # IDs of students to be added as having access to this coursework/announcement.
1636
+ # Corresponds to the JSON property `addStudentIds`
1637
+ # @return [Array<String>]
1638
+ attr_accessor :add_student_ids
1639
+
1640
+ # IDs of students to be removed from having access to this coursework/
1641
+ # announcement.
1642
+ # Corresponds to the JSON property `removeStudentIds`
1643
+ # @return [Array<String>]
1644
+ attr_accessor :remove_student_ids
1645
+
1646
+ def initialize(**args)
1647
+ update!(**args)
1648
+ end
1649
+
1650
+ # Update properties of this object
1651
+ def update!(**args)
1652
+ @add_student_ids = args[:add_student_ids] if args.key?(:add_student_ids)
1653
+ @remove_student_ids = args[:remove_student_ids] if args.key?(:remove_student_ids)
1654
+ end
1655
+ end
1656
+
1657
+ # Additional details for multiple-choice questions.
1658
+ class MultipleChoiceQuestion
1659
+ include Google::Apis::Core::Hashable
1660
+
1661
+ # Possible choices.
1662
+ # Corresponds to the JSON property `choices`
1663
+ # @return [Array<String>]
1664
+ attr_accessor :choices
1665
+
1666
+ def initialize(**args)
1667
+ update!(**args)
1668
+ end
1669
+
1670
+ # Update properties of this object
1671
+ def update!(**args)
1672
+ @choices = args[:choices] if args.key?(:choices)
1673
+ end
1674
+ end
1675
+
1676
+ # Student work for a multiple-choice question.
1677
+ class MultipleChoiceSubmission
1678
+ include Google::Apis::Core::Hashable
1679
+
1680
+ # Student's select choice.
1681
+ # Corresponds to the JSON property `answer`
1682
+ # @return [String]
1683
+ attr_accessor :answer
1684
+
1685
+ def initialize(**args)
1686
+ update!(**args)
1687
+ end
1688
+
1689
+ # Update properties of this object
1690
+ def update!(**args)
1691
+ @answer = args[:answer] if args.key?(:answer)
1692
+ end
1693
+ end
1694
+
1695
+ # Details of the user's name.
1696
+ class Name
1697
+ include Google::Apis::Core::Hashable
1698
+
1699
+ # The user's last name. Read-only.
1700
+ # Corresponds to the JSON property `familyName`
1701
+ # @return [String]
1702
+ attr_accessor :family_name
1703
+
1704
+ # The user's full name formed by concatenating the first and last name values.
1705
+ # Read-only.
1706
+ # Corresponds to the JSON property `fullName`
1707
+ # @return [String]
1708
+ attr_accessor :full_name
1709
+
1710
+ # The user's first name. Read-only.
1711
+ # Corresponds to the JSON property `givenName`
1712
+ # @return [String]
1713
+ attr_accessor :given_name
1714
+
1715
+ def initialize(**args)
1716
+ update!(**args)
1717
+ end
1718
+
1719
+ # Update properties of this object
1720
+ def update!(**args)
1721
+ @family_name = args[:family_name] if args.key?(:family_name)
1722
+ @full_name = args[:full_name] if args.key?(:full_name)
1723
+ @given_name = args[:given_name] if args.key?(:given_name)
1724
+ end
1725
+ end
1726
+
1727
+ # Request to reclaim a student submission.
1728
+ class ReclaimStudentSubmissionRequest
1729
+ include Google::Apis::Core::Hashable
1730
+
1731
+ def initialize(**args)
1732
+ update!(**args)
1733
+ end
1734
+
1735
+ # Update properties of this object
1736
+ def update!(**args)
1737
+ end
1738
+ end
1739
+
1740
+ # An instruction to Classroom to send notifications from the `feed` to the
1741
+ # provided destination.
1742
+ class Registration
1743
+ include Google::Apis::Core::Hashable
1744
+
1745
+ # A reference to a Cloud Pub/Sub topic. To register for notifications, the owner
1746
+ # of the topic must grant `classroom-notifications@system.gserviceaccount.com`
1747
+ # the `projects.topics.publish` permission.
1748
+ # Corresponds to the JSON property `cloudPubsubTopic`
1749
+ # @return [Google::Apis::ClassroomV1::CloudPubsubTopic]
1750
+ attr_accessor :cloud_pubsub_topic
1751
+
1752
+ # The time until which the `Registration` is effective. This is a read-only
1753
+ # field assigned by the server.
1754
+ # Corresponds to the JSON property `expiryTime`
1755
+ # @return [String]
1756
+ attr_accessor :expiry_time
1757
+
1758
+ # A class of notifications that an application can register to receive. For
1759
+ # example: "all roster changes for a domain".
1760
+ # Corresponds to the JSON property `feed`
1761
+ # @return [Google::Apis::ClassroomV1::Feed]
1762
+ attr_accessor :feed
1763
+
1764
+ # A server-generated unique identifier for this `Registration`. Read-only.
1765
+ # Corresponds to the JSON property `registrationId`
1766
+ # @return [String]
1767
+ attr_accessor :registration_id
1768
+
1769
+ def initialize(**args)
1770
+ update!(**args)
1771
+ end
1772
+
1773
+ # Update properties of this object
1774
+ def update!(**args)
1775
+ @cloud_pubsub_topic = args[:cloud_pubsub_topic] if args.key?(:cloud_pubsub_topic)
1776
+ @expiry_time = args[:expiry_time] if args.key?(:expiry_time)
1777
+ @feed = args[:feed] if args.key?(:feed)
1778
+ @registration_id = args[:registration_id] if args.key?(:registration_id)
1779
+ end
1780
+ end
1781
+
1782
+ # Request to return a student submission.
1783
+ class ReturnStudentSubmissionRequest
1784
+ include Google::Apis::Core::Hashable
1785
+
1786
+ def initialize(**args)
1787
+ update!(**args)
1788
+ end
1789
+
1790
+ # Update properties of this object
1791
+ def update!(**args)
1792
+ end
1793
+ end
1794
+
1795
+ # Drive file that is used as material for course work.
1796
+ class SharedDriveFile
1797
+ include Google::Apis::Core::Hashable
1798
+
1799
+ # Representation of a Google Drive file.
1800
+ # Corresponds to the JSON property `driveFile`
1801
+ # @return [Google::Apis::ClassroomV1::DriveFile]
1802
+ attr_accessor :drive_file
1803
+
1804
+ # Mechanism by which students access the Drive item.
1805
+ # Corresponds to the JSON property `shareMode`
1806
+ # @return [String]
1807
+ attr_accessor :share_mode
1808
+
1809
+ def initialize(**args)
1810
+ update!(**args)
1811
+ end
1812
+
1813
+ # Update properties of this object
1814
+ def update!(**args)
1815
+ @drive_file = args[:drive_file] if args.key?(:drive_file)
1816
+ @share_mode = args[:share_mode] if args.key?(:share_mode)
1817
+ end
1818
+ end
1819
+
1820
+ # Student work for a short answer question.
1821
+ class ShortAnswerSubmission
1822
+ include Google::Apis::Core::Hashable
1823
+
1824
+ # Student response to a short-answer question.
1825
+ # Corresponds to the JSON property `answer`
1826
+ # @return [String]
1827
+ attr_accessor :answer
1828
+
1829
+ def initialize(**args)
1830
+ update!(**args)
1831
+ end
1832
+
1833
+ # Update properties of this object
1834
+ def update!(**args)
1835
+ @answer = args[:answer] if args.key?(:answer)
1836
+ end
1837
+ end
1838
+
1839
+ # The history of each state this submission has been in.
1840
+ class StateHistory
1841
+ include Google::Apis::Core::Hashable
1842
+
1843
+ # The teacher or student who made the change.
1844
+ # Corresponds to the JSON property `actorUserId`
1845
+ # @return [String]
1846
+ attr_accessor :actor_user_id
1847
+
1848
+ # The workflow pipeline stage.
1849
+ # Corresponds to the JSON property `state`
1850
+ # @return [String]
1851
+ attr_accessor :state
1852
+
1853
+ # When the submission entered this state.
1854
+ # Corresponds to the JSON property `stateTimestamp`
1855
+ # @return [String]
1856
+ attr_accessor :state_timestamp
1857
+
1858
+ def initialize(**args)
1859
+ update!(**args)
1860
+ end
1861
+
1862
+ # Update properties of this object
1863
+ def update!(**args)
1864
+ @actor_user_id = args[:actor_user_id] if args.key?(:actor_user_id)
1865
+ @state = args[:state] if args.key?(:state)
1866
+ @state_timestamp = args[:state_timestamp] if args.key?(:state_timestamp)
1867
+ end
1868
+ end
1869
+
1870
+ # Student in a course.
1871
+ class Student
1872
+ include Google::Apis::Core::Hashable
1873
+
1874
+ # Identifier of the course. Read-only.
1875
+ # Corresponds to the JSON property `courseId`
1876
+ # @return [String]
1877
+ attr_accessor :course_id
1878
+
1879
+ # Global information for a user.
1880
+ # Corresponds to the JSON property `profile`
1881
+ # @return [Google::Apis::ClassroomV1::UserProfile]
1882
+ attr_accessor :profile
1883
+
1884
+ # Representation of a Google Drive folder.
1885
+ # Corresponds to the JSON property `studentWorkFolder`
1886
+ # @return [Google::Apis::ClassroomV1::DriveFolder]
1887
+ attr_accessor :student_work_folder
1888
+
1889
+ # Identifier of the user. When specified as a parameter of a request, this
1890
+ # identifier can be one of the following: * the numeric identifier for the user *
1891
+ # the email address of the user * the string literal `"me"`, indicating the
1892
+ # requesting user
1893
+ # Corresponds to the JSON property `userId`
1894
+ # @return [String]
1895
+ attr_accessor :user_id
1896
+
1897
+ def initialize(**args)
1898
+ update!(**args)
1899
+ end
1900
+
1901
+ # Update properties of this object
1902
+ def update!(**args)
1903
+ @course_id = args[:course_id] if args.key?(:course_id)
1904
+ @profile = args[:profile] if args.key?(:profile)
1905
+ @student_work_folder = args[:student_work_folder] if args.key?(:student_work_folder)
1906
+ @user_id = args[:user_id] if args.key?(:user_id)
1907
+ end
1908
+ end
1909
+
1910
+ # Student submission for course work. StudentSubmission items are generated when
1911
+ # a CourseWork item is created. StudentSubmissions that have never been accessed
1912
+ # (i.e. with `state` = NEW) may not have a creation time or update time.
1913
+ class StudentSubmission
1914
+ include Google::Apis::Core::Hashable
1915
+
1916
+ # Absolute link to the submission in the Classroom web UI. Read-only.
1917
+ # Corresponds to the JSON property `alternateLink`
1918
+ # @return [String]
1919
+ attr_accessor :alternate_link
1920
+
1921
+ # Optional grade. If unset, no grade was set. This value must be non-negative.
1922
+ # Decimal (that is, non-integer) values are allowed, but are rounded to two
1923
+ # decimal places. This may be modified only by course teachers.
1924
+ # Corresponds to the JSON property `assignedGrade`
1925
+ # @return [Float]
1926
+ attr_accessor :assigned_grade
1927
+
1928
+ # Student work for an assignment.
1929
+ # Corresponds to the JSON property `assignmentSubmission`
1930
+ # @return [Google::Apis::ClassroomV1::AssignmentSubmission]
1931
+ attr_accessor :assignment_submission
1932
+
1933
+ # Whether this student submission is associated with the Developer Console
1934
+ # project making the request. See CreateCourseWork for more details. Read-only.
1935
+ # Corresponds to the JSON property `associatedWithDeveloper`
1936
+ # @return [Boolean]
1937
+ attr_accessor :associated_with_developer
1938
+ alias_method :associated_with_developer?, :associated_with_developer
1939
+
1940
+ # Identifier of the course. Read-only.
1941
+ # Corresponds to the JSON property `courseId`
1942
+ # @return [String]
1943
+ attr_accessor :course_id
1944
+
1945
+ # Identifier for the course work this corresponds to. Read-only.
1946
+ # Corresponds to the JSON property `courseWorkId`
1947
+ # @return [String]
1948
+ attr_accessor :course_work_id
1949
+
1950
+ # Type of course work this submission is for. Read-only.
1951
+ # Corresponds to the JSON property `courseWorkType`
1952
+ # @return [String]
1953
+ attr_accessor :course_work_type
1954
+
1955
+ # Creation time of this submission. This may be unset if the student has not
1956
+ # accessed this item. Read-only.
1957
+ # Corresponds to the JSON property `creationTime`
1958
+ # @return [String]
1959
+ attr_accessor :creation_time
1960
+
1961
+ # Optional pending grade. If unset, no grade was set. This value must be non-
1962
+ # negative. Decimal (that is, non-integer) values are allowed, but are rounded
1963
+ # to two decimal places. This is only visible to and modifiable by course
1964
+ # teachers.
1965
+ # Corresponds to the JSON property `draftGrade`
1966
+ # @return [Float]
1967
+ attr_accessor :draft_grade
1968
+
1969
+ # Classroom-assigned Identifier for the student submission. This is unique among
1970
+ # submissions for the relevant course work. Read-only.
1971
+ # Corresponds to the JSON property `id`
1972
+ # @return [String]
1973
+ attr_accessor :id
1974
+
1975
+ # Whether this submission is late. Read-only.
1976
+ # Corresponds to the JSON property `late`
1977
+ # @return [Boolean]
1978
+ attr_accessor :late
1979
+ alias_method :late?, :late
1980
+
1981
+ # Student work for a multiple-choice question.
1982
+ # Corresponds to the JSON property `multipleChoiceSubmission`
1983
+ # @return [Google::Apis::ClassroomV1::MultipleChoiceSubmission]
1984
+ attr_accessor :multiple_choice_submission
1985
+
1986
+ # Student work for a short answer question.
1987
+ # Corresponds to the JSON property `shortAnswerSubmission`
1988
+ # @return [Google::Apis::ClassroomV1::ShortAnswerSubmission]
1989
+ attr_accessor :short_answer_submission
1990
+
1991
+ # State of this submission. Read-only.
1992
+ # Corresponds to the JSON property `state`
1993
+ # @return [String]
1994
+ attr_accessor :state
1995
+
1996
+ # The history of the submission (includes state and grade histories). Read-only.
1997
+ # Corresponds to the JSON property `submissionHistory`
1998
+ # @return [Array<Google::Apis::ClassroomV1::SubmissionHistory>]
1999
+ attr_accessor :submission_history
2000
+
2001
+ # Last update time of this submission. This may be unset if the student has not
2002
+ # accessed this item. Read-only.
2003
+ # Corresponds to the JSON property `updateTime`
2004
+ # @return [String]
2005
+ attr_accessor :update_time
2006
+
2007
+ # Identifier for the student that owns this submission. Read-only.
2008
+ # Corresponds to the JSON property `userId`
2009
+ # @return [String]
2010
+ attr_accessor :user_id
2011
+
2012
+ def initialize(**args)
2013
+ update!(**args)
2014
+ end
2015
+
2016
+ # Update properties of this object
2017
+ def update!(**args)
2018
+ @alternate_link = args[:alternate_link] if args.key?(:alternate_link)
2019
+ @assigned_grade = args[:assigned_grade] if args.key?(:assigned_grade)
2020
+ @assignment_submission = args[:assignment_submission] if args.key?(:assignment_submission)
2021
+ @associated_with_developer = args[:associated_with_developer] if args.key?(:associated_with_developer)
2022
+ @course_id = args[:course_id] if args.key?(:course_id)
2023
+ @course_work_id = args[:course_work_id] if args.key?(:course_work_id)
2024
+ @course_work_type = args[:course_work_type] if args.key?(:course_work_type)
2025
+ @creation_time = args[:creation_time] if args.key?(:creation_time)
2026
+ @draft_grade = args[:draft_grade] if args.key?(:draft_grade)
2027
+ @id = args[:id] if args.key?(:id)
2028
+ @late = args[:late] if args.key?(:late)
2029
+ @multiple_choice_submission = args[:multiple_choice_submission] if args.key?(:multiple_choice_submission)
2030
+ @short_answer_submission = args[:short_answer_submission] if args.key?(:short_answer_submission)
2031
+ @state = args[:state] if args.key?(:state)
2032
+ @submission_history = args[:submission_history] if args.key?(:submission_history)
2033
+ @update_time = args[:update_time] if args.key?(:update_time)
2034
+ @user_id = args[:user_id] if args.key?(:user_id)
2035
+ end
2036
+ end
2037
+
2038
+ # The history of the submission. This currently includes state and grade
2039
+ # histories.
2040
+ class SubmissionHistory
2041
+ include Google::Apis::Core::Hashable
2042
+
2043
+ # The history of each grade on this submission.
2044
+ # Corresponds to the JSON property `gradeHistory`
2045
+ # @return [Google::Apis::ClassroomV1::GradeHistory]
2046
+ attr_accessor :grade_history
2047
+
2048
+ # The history of each state this submission has been in.
2049
+ # Corresponds to the JSON property `stateHistory`
2050
+ # @return [Google::Apis::ClassroomV1::StateHistory]
2051
+ attr_accessor :state_history
2052
+
2053
+ def initialize(**args)
2054
+ update!(**args)
2055
+ end
2056
+
2057
+ # Update properties of this object
2058
+ def update!(**args)
2059
+ @grade_history = args[:grade_history] if args.key?(:grade_history)
2060
+ @state_history = args[:state_history] if args.key?(:state_history)
2061
+ end
2062
+ end
2063
+
2064
+ # Teacher of a course.
2065
+ class Teacher
2066
+ include Google::Apis::Core::Hashable
2067
+
2068
+ # Identifier of the course. Read-only.
2069
+ # Corresponds to the JSON property `courseId`
2070
+ # @return [String]
2071
+ attr_accessor :course_id
2072
+
2073
+ # Global information for a user.
2074
+ # Corresponds to the JSON property `profile`
2075
+ # @return [Google::Apis::ClassroomV1::UserProfile]
2076
+ attr_accessor :profile
2077
+
2078
+ # Identifier of the user. When specified as a parameter of a request, this
2079
+ # identifier can be one of the following: * the numeric identifier for the user *
2080
+ # the email address of the user * the string literal `"me"`, indicating the
2081
+ # requesting user
2082
+ # Corresponds to the JSON property `userId`
2083
+ # @return [String]
2084
+ attr_accessor :user_id
2085
+
2086
+ def initialize(**args)
2087
+ update!(**args)
2088
+ end
2089
+
2090
+ # Update properties of this object
2091
+ def update!(**args)
2092
+ @course_id = args[:course_id] if args.key?(:course_id)
2093
+ @profile = args[:profile] if args.key?(:profile)
2094
+ @user_id = args[:user_id] if args.key?(:user_id)
2095
+ end
2096
+ end
2097
+
2098
+ # Represents a time of day. The date and time zone are either not significant or
2099
+ # are specified elsewhere. An API may choose to allow leap seconds. Related
2100
+ # types are google.type.Date and `google.protobuf.Timestamp`.
2101
+ class TimeOfDay
2102
+ include Google::Apis::Core::Hashable
2103
+
2104
+ # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to
2105
+ # allow the value "24:00:00" for scenarios like business closing time.
2106
+ # Corresponds to the JSON property `hours`
2107
+ # @return [Fixnum]
2108
+ attr_accessor :hours
2109
+
2110
+ # Minutes of hour of day. Must be from 0 to 59.
2111
+ # Corresponds to the JSON property `minutes`
2112
+ # @return [Fixnum]
2113
+ attr_accessor :minutes
2114
+
2115
+ # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
2116
+ # Corresponds to the JSON property `nanos`
2117
+ # @return [Fixnum]
2118
+ attr_accessor :nanos
2119
+
2120
+ # Seconds of minutes of the time. Must normally be from 0 to 59. An API may
2121
+ # allow the value 60 if it allows leap-seconds.
2122
+ # Corresponds to the JSON property `seconds`
2123
+ # @return [Fixnum]
2124
+ attr_accessor :seconds
2125
+
2126
+ def initialize(**args)
2127
+ update!(**args)
2128
+ end
2129
+
2130
+ # Update properties of this object
2131
+ def update!(**args)
2132
+ @hours = args[:hours] if args.key?(:hours)
2133
+ @minutes = args[:minutes] if args.key?(:minutes)
2134
+ @nanos = args[:nanos] if args.key?(:nanos)
2135
+ @seconds = args[:seconds] if args.key?(:seconds)
2136
+ end
2137
+ end
2138
+
2139
+ # Topic created by a teacher for the course
2140
+ class Topic
2141
+ include Google::Apis::Core::Hashable
2142
+
2143
+ # Identifier of the course. Read-only.
2144
+ # Corresponds to the JSON property `courseId`
2145
+ # @return [String]
2146
+ attr_accessor :course_id
2147
+
2148
+ # The name of the topic, generated by the user. Leading and trailing whitespaces,
2149
+ # if any, are trimmed. Also, multiple consecutive whitespaces are collapsed
2150
+ # into one inside the name. The result must be a non-empty string. Topic names
2151
+ # are case sensitive, and must be no longer than 100 characters.
2152
+ # Corresponds to the JSON property `name`
2153
+ # @return [String]
2154
+ attr_accessor :name
2155
+
2156
+ # Unique identifier for the topic. Read-only.
2157
+ # Corresponds to the JSON property `topicId`
2158
+ # @return [String]
2159
+ attr_accessor :topic_id
2160
+
2161
+ # The time the topic was last updated by the system. Read-only.
2162
+ # Corresponds to the JSON property `updateTime`
2163
+ # @return [String]
2164
+ attr_accessor :update_time
2165
+
2166
+ def initialize(**args)
2167
+ update!(**args)
2168
+ end
2169
+
2170
+ # Update properties of this object
2171
+ def update!(**args)
2172
+ @course_id = args[:course_id] if args.key?(:course_id)
2173
+ @name = args[:name] if args.key?(:name)
2174
+ @topic_id = args[:topic_id] if args.key?(:topic_id)
2175
+ @update_time = args[:update_time] if args.key?(:update_time)
2176
+ end
2177
+ end
2178
+
2179
+ # Request to turn in a student submission.
2180
+ class TurnInStudentSubmissionRequest
2181
+ include Google::Apis::Core::Hashable
2182
+
2183
+ def initialize(**args)
2184
+ update!(**args)
2185
+ end
2186
+
2187
+ # Update properties of this object
2188
+ def update!(**args)
2189
+ end
2190
+ end
2191
+
2192
+ # Global information for a user.
2193
+ class UserProfile
2194
+ include Google::Apis::Core::Hashable
2195
+
2196
+ # Email address of the user. Read-only.
2197
+ # Corresponds to the JSON property `emailAddress`
2198
+ # @return [String]
2199
+ attr_accessor :email_address
2200
+
2201
+ # Identifier of the user. Read-only.
2202
+ # Corresponds to the JSON property `id`
2203
+ # @return [String]
2204
+ attr_accessor :id
2205
+
2206
+ # Details of the user's name.
2207
+ # Corresponds to the JSON property `name`
2208
+ # @return [Google::Apis::ClassroomV1::Name]
2209
+ attr_accessor :name
2210
+
2211
+ # Global permissions of the user. Read-only.
2212
+ # Corresponds to the JSON property `permissions`
2213
+ # @return [Array<Google::Apis::ClassroomV1::GlobalPermission>]
2214
+ attr_accessor :permissions
2215
+
2216
+ # URL of user's profile photo. Read-only.
2217
+ # Corresponds to the JSON property `photoUrl`
2218
+ # @return [String]
2219
+ attr_accessor :photo_url
2220
+
2221
+ # Represents whether a G Suite for Education user's domain administrator has
2222
+ # explicitly verified them as being a teacher. If the user is not a member of a
2223
+ # G Suite for Education domain, than this field is always false. Read-only
2224
+ # Corresponds to the JSON property `verifiedTeacher`
2225
+ # @return [Boolean]
2226
+ attr_accessor :verified_teacher
2227
+ alias_method :verified_teacher?, :verified_teacher
2228
+
2229
+ def initialize(**args)
2230
+ update!(**args)
2231
+ end
2232
+
2233
+ # Update properties of this object
2234
+ def update!(**args)
2235
+ @email_address = args[:email_address] if args.key?(:email_address)
2236
+ @id = args[:id] if args.key?(:id)
2237
+ @name = args[:name] if args.key?(:name)
2238
+ @permissions = args[:permissions] if args.key?(:permissions)
2239
+ @photo_url = args[:photo_url] if args.key?(:photo_url)
2240
+ @verified_teacher = args[:verified_teacher] if args.key?(:verified_teacher)
2241
+ end
2242
+ end
2243
+
2244
+ # YouTube video item.
2245
+ class YouTubeVideo
2246
+ include Google::Apis::Core::Hashable
2247
+
2248
+ # URL that can be used to view the YouTube video. Read-only.
2249
+ # Corresponds to the JSON property `alternateLink`
2250
+ # @return [String]
2251
+ attr_accessor :alternate_link
2252
+
2253
+ # YouTube API resource ID.
2254
+ # Corresponds to the JSON property `id`
2255
+ # @return [String]
2256
+ attr_accessor :id
2257
+
2258
+ # URL of a thumbnail image of the YouTube video. Read-only.
2259
+ # Corresponds to the JSON property `thumbnailUrl`
2260
+ # @return [String]
2261
+ attr_accessor :thumbnail_url
2262
+
2263
+ # Title of the YouTube video. Read-only.
2264
+ # Corresponds to the JSON property `title`
2265
+ # @return [String]
2266
+ attr_accessor :title
2267
+
2268
+ def initialize(**args)
2269
+ update!(**args)
2270
+ end
2271
+
2272
+ # Update properties of this object
2273
+ def update!(**args)
2274
+ @alternate_link = args[:alternate_link] if args.key?(:alternate_link)
2275
+ @id = args[:id] if args.key?(:id)
2276
+ @thumbnail_url = args[:thumbnail_url] if args.key?(:thumbnail_url)
2277
+ @title = args[:title] if args.key?(:title)
2278
+ end
2279
+ end
2280
+ end
2281
+ end
2282
+ end