Regen all docs. (#700)

* Stop recursing if discovery == {}

* Generate docs with 'make docs'.
diff --git a/docs/dyn/classroom_v1.courses.html b/docs/dyn/classroom_v1.courses.html
index 930ed4d..e7242c3 100644
--- a/docs/dyn/classroom_v1.courses.html
+++ b/docs/dyn/classroom_v1.courses.html
@@ -80,6 +80,11 @@
 <p class="firstline">Returns the aliases Resource.</p>
 
 <p class="toc_element">
+  <code><a href="classroom_v1.courses.announcements.html">announcements()</a></code>
+</p>
+<p class="firstline">Returns the announcements Resource.</p>
+
+<p class="toc_element">
   <code><a href="classroom_v1.courses.courseWork.html">courseWork()</a></code>
 </p>
 <p class="firstline">Returns the courseWork Resource.</p>
@@ -95,6 +100,11 @@
 <p class="firstline">Returns the teachers Resource.</p>
 
 <p class="toc_element">
+  <code><a href="classroom_v1.courses.topics.html">topics()</a></code>
+</p>
+<p class="firstline">Returns the topics Resource.</p>
+
+<p class="toc_element">
   <code><a href="#create">create(body, x__xgafv=None)</a></code></p>
 <p class="firstline">Creates a course.</p>
 <p class="toc_element">
@@ -139,14 +149,16 @@
     The object takes the form of:
 
 { # A Course in Classroom.
+  "description": "A String", # Optional description.
+      # For example, "We'll be learning about the structure of living
+      # creatures from a combination of textbooks, guest lectures, and lab work.
+      # Expect to be excited!"
+      # If set, this field must be a valid UTF-8 string and no longer than 30,000
+      # characters.
   "updateTime": "A String", # Time of the most recent update to this course.
       # Specifying this field in a course update mask results in an error.
       # 
       # Read-only.
-  "room": "A String", # Optional room location.
-      # For example, "301".
-      # If set, this field must be a valid UTF-8 string and no longer than 650
-      # characters.
   "name": "A String", # Name of the course.
       # For example, "10th Grade Biology".
       # The name is required. It must be between 1 and 750 characters and a valid
@@ -158,6 +170,10 @@
       # Specifying this field in a course update mask results in an error.
       # 
       # Read-only.
+  "courseGroupEmail": "A String", # The email address of a Google group containing all members of the course.
+      # This group does not accept email and can only be used for permissions.
+      # 
+      # Read-only.
   "section": "A String", # Section of the course.
       # For example, "Period 2".
       # If set, this field must be a valid UTF-8 string and no longer than 2800
@@ -165,10 +181,6 @@
   "guardiansEnabled": True or False, # Whether or not guardian notifications are enabled for this course.
       # 
       # Read-only.
-  "courseGroupEmail": "A String", # The email address of a Google group containing all members of the course.
-      # This group does not accept email and can only be used for permissions.
-      # 
-      # Read-only.
   "creationTime": "A String", # Creation time of the course.
       # Specifying this field in a course update mask results in an error.
       # 
@@ -185,13 +197,15 @@
         # information relating to the course as a whole.
       "materials": [ # Materials attached to this set.
         { # A material attached to a course as part of a material set.
-          "link": { # URL item. # Link atatchment.
-            "url": "A String", # URL to link to.
-                # This must be a valid UTF-8 string containing between 1 and 2024 characters.
-            "thumbnailUrl": "A String", # URL of a thumbnail image of the target URL.
+          "youTubeVideo": { # YouTube video item. # Youtube video attachment.
+            "alternateLink": "A String", # URL that can be used to view the YouTube video.
                 #
                 # Read-only.
-            "title": "A String", # Title of the target of the URL.
+            "thumbnailUrl": "A String", # URL of a thumbnail image of the YouTube video.
+                #
+                # Read-only.
+            "id": "A String", # YouTube API resource ID.
+            "title": "A String", # Title of the YouTube video.
                 #
                 # Read-only.
           },
@@ -207,15 +221,13 @@
                 #
                 # Read-only.
           },
-          "youTubeVideo": { # YouTube video item. # Youtube video attachment.
-            "thumbnailUrl": "A String", # URL of a thumbnail image of the YouTube video.
+          "link": { # URL item. # Link atatchment.
+            "url": "A String", # URL to link to.
+                # This must be a valid UTF-8 string containing between 1 and 2024 characters.
+            "thumbnailUrl": "A String", # URL of a thumbnail image of the target URL.
                 #
                 # Read-only.
-            "alternateLink": "A String", # URL that can be used to view the YouTube video.
-                #
-                # Read-only.
-            "id": "A String", # YouTube API resource ID.
-            "title": "A String", # Title of the YouTube video.
+            "title": "A String", # Title of the target of the URL.
                 #
                 # Read-only.
           },
@@ -238,20 +250,6 @@
       "title": "A String", # Title for this set.
     },
   ],
-  "teacherFolder": { # Representation of a Google Drive folder. # Information about a Drive Folder that is shared with all teachers of the
-      # course.
-      # 
-      # This field will only be set for teachers of the course and domain administrators.
-      # 
-      # Read-only.
-    "alternateLink": "A String", # URL that can be used to access the Drive folder.
-        #
-        # Read-only.
-    "id": "A String", # Drive API resource ID.
-    "title": "A String", # Title of the Drive folder.
-        #
-        # Read-only.
-  },
   "ownerId": "A String", # The identifier of the owner of a course.
       # 
       # When specified as a parameter of a
@@ -263,8 +261,28 @@
       # * the email address of the user
       # * the string literal `"me"`, indicating the requesting user
       # 
-      # This must be set in a create request. Specifying this field in a course
-      # update mask results in an `INVALID_ARGUMENT` error.
+      # This must be set in a create request. Admins can also specify this field
+      # in a patch course request to
+      # transfer ownership. In other contexts, it is read-only.
+  "calendarId": "A String", # The Calendar ID for a calendar that all course members can see, to which
+      # Classroom adds events for course work and announcements in the course.
+      # 
+      # Read-only.
+  "teacherFolder": { # Representation of a Google Drive folder. # Information about a Drive Folder that is shared with all teachers of the
+      # course.
+      # 
+      # This field will only be set for teachers of the course and domain
+      # administrators.
+      # 
+      # Read-only.
+    "alternateLink": "A String", # URL that can be used to access the Drive folder.
+        #
+        # Read-only.
+    "id": "A String", # Drive API resource ID.
+    "title": "A String", # Title of the Drive folder.
+        #
+        # Read-only.
+  },
   "courseState": "A String", # State of the course.
       # If unspecified, the default state is `PROVISIONED`.
   "id": "A String", # Identifier for this course assigned by Classroom.
@@ -281,11 +299,9 @@
       # For example, "Welcome to 10th Grade Biology."
       # If set, this field must be a valid UTF-8 string and no longer than 3600
       # characters.
-  "description": "A String", # Optional description.
-      # For example, "We'll be learning about the structure of living
-      # creatures from a combination of textbooks, guest lectures, and lab work.
-      # Expect to be excited!"
-      # If set, this field must be a valid UTF-8 string and no longer than 30,000
+  "room": "A String", # Optional room location.
+      # For example, "301".
+      # If set, this field must be a valid UTF-8 string and no longer than 650
       # characters.
 }
 
@@ -298,14 +314,16 @@
   An object of the form:
 
     { # A Course in Classroom.
+    "description": "A String", # Optional description.
+        # For example, "We'll be learning about the structure of living
+        # creatures from a combination of textbooks, guest lectures, and lab work.
+        # Expect to be excited!"
+        # If set, this field must be a valid UTF-8 string and no longer than 30,000
+        # characters.
     "updateTime": "A String", # Time of the most recent update to this course.
         # Specifying this field in a course update mask results in an error.
         #
         # Read-only.
-    "room": "A String", # Optional room location.
-        # For example, "301".
-        # If set, this field must be a valid UTF-8 string and no longer than 650
-        # characters.
     "name": "A String", # Name of the course.
         # For example, "10th Grade Biology".
         # The name is required. It must be between 1 and 750 characters and a valid
@@ -317,6 +335,10 @@
         # Specifying this field in a course update mask results in an error.
         #
         # Read-only.
+    "courseGroupEmail": "A String", # The email address of a Google group containing all members of the course.
+        # This group does not accept email and can only be used for permissions.
+        #
+        # Read-only.
     "section": "A String", # Section of the course.
         # For example, "Period 2".
         # If set, this field must be a valid UTF-8 string and no longer than 2800
@@ -324,10 +346,6 @@
     "guardiansEnabled": True or False, # Whether or not guardian notifications are enabled for this course.
         #
         # Read-only.
-    "courseGroupEmail": "A String", # The email address of a Google group containing all members of the course.
-        # This group does not accept email and can only be used for permissions.
-        #
-        # Read-only.
     "creationTime": "A String", # Creation time of the course.
         # Specifying this field in a course update mask results in an error.
         #
@@ -344,13 +362,15 @@
           # information relating to the course as a whole.
         "materials": [ # Materials attached to this set.
           { # A material attached to a course as part of a material set.
-            "link": { # URL item. # Link atatchment.
-              "url": "A String", # URL to link to.
-                  # This must be a valid UTF-8 string containing between 1 and 2024 characters.
-              "thumbnailUrl": "A String", # URL of a thumbnail image of the target URL.
+            "youTubeVideo": { # YouTube video item. # Youtube video attachment.
+              "alternateLink": "A String", # URL that can be used to view the YouTube video.
                   #
                   # Read-only.
-              "title": "A String", # Title of the target of the URL.
+              "thumbnailUrl": "A String", # URL of a thumbnail image of the YouTube video.
+                  #
+                  # Read-only.
+              "id": "A String", # YouTube API resource ID.
+              "title": "A String", # Title of the YouTube video.
                   #
                   # Read-only.
             },
@@ -366,15 +386,13 @@
                   #
                   # Read-only.
             },
-            "youTubeVideo": { # YouTube video item. # Youtube video attachment.
-              "thumbnailUrl": "A String", # URL of a thumbnail image of the YouTube video.
+            "link": { # URL item. # Link atatchment.
+              "url": "A String", # URL to link to.
+                  # This must be a valid UTF-8 string containing between 1 and 2024 characters.
+              "thumbnailUrl": "A String", # URL of a thumbnail image of the target URL.
                   #
                   # Read-only.
-              "alternateLink": "A String", # URL that can be used to view the YouTube video.
-                  #
-                  # Read-only.
-              "id": "A String", # YouTube API resource ID.
-              "title": "A String", # Title of the YouTube video.
+              "title": "A String", # Title of the target of the URL.
                   #
                   # Read-only.
             },
@@ -397,20 +415,6 @@
         "title": "A String", # Title for this set.
       },
     ],
-    "teacherFolder": { # Representation of a Google Drive folder. # Information about a Drive Folder that is shared with all teachers of the
-        # course.
-        #
-        # This field will only be set for teachers of the course and domain administrators.
-        #
-        # Read-only.
-      "alternateLink": "A String", # URL that can be used to access the Drive folder.
-          #
-          # Read-only.
-      "id": "A String", # Drive API resource ID.
-      "title": "A String", # Title of the Drive folder.
-          #
-          # Read-only.
-    },
     "ownerId": "A String", # The identifier of the owner of a course.
         #
         # When specified as a parameter of a
@@ -422,8 +426,28 @@
         # * the email address of the user
         # * the string literal `"me"`, indicating the requesting user
         #
-        # This must be set in a create request. Specifying this field in a course
-        # update mask results in an `INVALID_ARGUMENT` error.
+        # This must be set in a create request. Admins can also specify this field
+        # in a patch course request to
+        # transfer ownership. In other contexts, it is read-only.
+    "calendarId": "A String", # The Calendar ID for a calendar that all course members can see, to which
+        # Classroom adds events for course work and announcements in the course.
+        #
+        # Read-only.
+    "teacherFolder": { # Representation of a Google Drive folder. # Information about a Drive Folder that is shared with all teachers of the
+        # course.
+        #
+        # This field will only be set for teachers of the course and domain
+        # administrators.
+        #
+        # Read-only.
+      "alternateLink": "A String", # URL that can be used to access the Drive folder.
+          #
+          # Read-only.
+      "id": "A String", # Drive API resource ID.
+      "title": "A String", # Title of the Drive folder.
+          #
+          # Read-only.
+    },
     "courseState": "A String", # State of the course.
         # If unspecified, the default state is `PROVISIONED`.
     "id": "A String", # Identifier for this course assigned by Classroom.
@@ -440,11 +464,9 @@
         # For example, "Welcome to 10th Grade Biology."
         # If set, this field must be a valid UTF-8 string and no longer than 3600
         # characters.
-    "description": "A String", # Optional description.
-        # For example, "We'll be learning about the structure of living
-        # creatures from a combination of textbooks, guest lectures, and lab work.
-        # Expect to be excited!"
-        # If set, this field must be a valid UTF-8 string and no longer than 30,000
+    "room": "A String", # Optional room location.
+        # For example, "301".
+        # If set, this field must be a valid UTF-8 string and no longer than 650
         # characters.
   }</pre>
 </div>
@@ -506,14 +528,16 @@
   An object of the form:
 
     { # A Course in Classroom.
+    "description": "A String", # Optional description.
+        # For example, "We'll be learning about the structure of living
+        # creatures from a combination of textbooks, guest lectures, and lab work.
+        # Expect to be excited!"
+        # If set, this field must be a valid UTF-8 string and no longer than 30,000
+        # characters.
     "updateTime": "A String", # Time of the most recent update to this course.
         # Specifying this field in a course update mask results in an error.
         #
         # Read-only.
-    "room": "A String", # Optional room location.
-        # For example, "301".
-        # If set, this field must be a valid UTF-8 string and no longer than 650
-        # characters.
     "name": "A String", # Name of the course.
         # For example, "10th Grade Biology".
         # The name is required. It must be between 1 and 750 characters and a valid
@@ -525,6 +549,10 @@
         # Specifying this field in a course update mask results in an error.
         #
         # Read-only.
+    "courseGroupEmail": "A String", # The email address of a Google group containing all members of the course.
+        # This group does not accept email and can only be used for permissions.
+        #
+        # Read-only.
     "section": "A String", # Section of the course.
         # For example, "Period 2".
         # If set, this field must be a valid UTF-8 string and no longer than 2800
@@ -532,10 +560,6 @@
     "guardiansEnabled": True or False, # Whether or not guardian notifications are enabled for this course.
         #
         # Read-only.
-    "courseGroupEmail": "A String", # The email address of a Google group containing all members of the course.
-        # This group does not accept email and can only be used for permissions.
-        #
-        # Read-only.
     "creationTime": "A String", # Creation time of the course.
         # Specifying this field in a course update mask results in an error.
         #
@@ -552,13 +576,15 @@
           # information relating to the course as a whole.
         "materials": [ # Materials attached to this set.
           { # A material attached to a course as part of a material set.
-            "link": { # URL item. # Link atatchment.
-              "url": "A String", # URL to link to.
-                  # This must be a valid UTF-8 string containing between 1 and 2024 characters.
-              "thumbnailUrl": "A String", # URL of a thumbnail image of the target URL.
+            "youTubeVideo": { # YouTube video item. # Youtube video attachment.
+              "alternateLink": "A String", # URL that can be used to view the YouTube video.
                   #
                   # Read-only.
-              "title": "A String", # Title of the target of the URL.
+              "thumbnailUrl": "A String", # URL of a thumbnail image of the YouTube video.
+                  #
+                  # Read-only.
+              "id": "A String", # YouTube API resource ID.
+              "title": "A String", # Title of the YouTube video.
                   #
                   # Read-only.
             },
@@ -574,15 +600,13 @@
                   #
                   # Read-only.
             },
-            "youTubeVideo": { # YouTube video item. # Youtube video attachment.
-              "thumbnailUrl": "A String", # URL of a thumbnail image of the YouTube video.
+            "link": { # URL item. # Link atatchment.
+              "url": "A String", # URL to link to.
+                  # This must be a valid UTF-8 string containing between 1 and 2024 characters.
+              "thumbnailUrl": "A String", # URL of a thumbnail image of the target URL.
                   #
                   # Read-only.
-              "alternateLink": "A String", # URL that can be used to view the YouTube video.
-                  #
-                  # Read-only.
-              "id": "A String", # YouTube API resource ID.
-              "title": "A String", # Title of the YouTube video.
+              "title": "A String", # Title of the target of the URL.
                   #
                   # Read-only.
             },
@@ -605,20 +629,6 @@
         "title": "A String", # Title for this set.
       },
     ],
-    "teacherFolder": { # Representation of a Google Drive folder. # Information about a Drive Folder that is shared with all teachers of the
-        # course.
-        #
-        # This field will only be set for teachers of the course and domain administrators.
-        #
-        # Read-only.
-      "alternateLink": "A String", # URL that can be used to access the Drive folder.
-          #
-          # Read-only.
-      "id": "A String", # Drive API resource ID.
-      "title": "A String", # Title of the Drive folder.
-          #
-          # Read-only.
-    },
     "ownerId": "A String", # The identifier of the owner of a course.
         #
         # When specified as a parameter of a
@@ -630,8 +640,28 @@
         # * the email address of the user
         # * the string literal `"me"`, indicating the requesting user
         #
-        # This must be set in a create request. Specifying this field in a course
-        # update mask results in an `INVALID_ARGUMENT` error.
+        # This must be set in a create request. Admins can also specify this field
+        # in a patch course request to
+        # transfer ownership. In other contexts, it is read-only.
+    "calendarId": "A String", # The Calendar ID for a calendar that all course members can see, to which
+        # Classroom adds events for course work and announcements in the course.
+        #
+        # Read-only.
+    "teacherFolder": { # Representation of a Google Drive folder. # Information about a Drive Folder that is shared with all teachers of the
+        # course.
+        #
+        # This field will only be set for teachers of the course and domain
+        # administrators.
+        #
+        # Read-only.
+      "alternateLink": "A String", # URL that can be used to access the Drive folder.
+          #
+          # Read-only.
+      "id": "A String", # Drive API resource ID.
+      "title": "A String", # Title of the Drive folder.
+          #
+          # Read-only.
+    },
     "courseState": "A String", # State of the course.
         # If unspecified, the default state is `PROVISIONED`.
     "id": "A String", # Identifier for this course assigned by Classroom.
@@ -648,11 +678,9 @@
         # For example, "Welcome to 10th Grade Biology."
         # If set, this field must be a valid UTF-8 string and no longer than 3600
         # characters.
-    "description": "A String", # Optional description.
-        # For example, "We'll be learning about the structure of living
-        # creatures from a combination of textbooks, guest lectures, and lab work.
-        # Expect to be excited!"
-        # If set, this field must be a valid UTF-8 string and no longer than 30,000
+    "room": "A String", # Optional room location.
+        # For example, "301".
+        # If set, this field must be a valid UTF-8 string and no longer than 650
         # characters.
   }</pre>
 </div>
@@ -660,7 +688,8 @@
 <div class="method">
     <code class="details" id="list">list(studentId=None, pageSize=None, courseStates=None, teacherId=None, pageToken=None, x__xgafv=None)</code>
   <pre>Returns a list of courses that the requesting user is permitted to view,
-restricted to those that match the request.
+restricted to those that match the request. Returned courses are ordered by
+creation time, with the most recently created coming first.
 
 This method returns the following error codes:
 
@@ -707,14 +736,16 @@
         # results are available.
     "courses": [ # Courses that match the list request.
       { # A Course in Classroom.
+        "description": "A String", # Optional description.
+            # For example, "We'll be learning about the structure of living
+            # creatures from a combination of textbooks, guest lectures, and lab work.
+            # Expect to be excited!"
+            # If set, this field must be a valid UTF-8 string and no longer than 30,000
+            # characters.
         "updateTime": "A String", # Time of the most recent update to this course.
             # Specifying this field in a course update mask results in an error.
             #
             # Read-only.
-        "room": "A String", # Optional room location.
-            # For example, "301".
-            # If set, this field must be a valid UTF-8 string and no longer than 650
-            # characters.
         "name": "A String", # Name of the course.
             # For example, "10th Grade Biology".
             # The name is required. It must be between 1 and 750 characters and a valid
@@ -726,6 +757,10 @@
             # Specifying this field in a course update mask results in an error.
             #
             # Read-only.
+        "courseGroupEmail": "A String", # The email address of a Google group containing all members of the course.
+            # This group does not accept email and can only be used for permissions.
+            #
+            # Read-only.
         "section": "A String", # Section of the course.
             # For example, "Period 2".
             # If set, this field must be a valid UTF-8 string and no longer than 2800
@@ -733,10 +768,6 @@
         "guardiansEnabled": True or False, # Whether or not guardian notifications are enabled for this course.
             #
             # Read-only.
-        "courseGroupEmail": "A String", # The email address of a Google group containing all members of the course.
-            # This group does not accept email and can only be used for permissions.
-            #
-            # Read-only.
         "creationTime": "A String", # Creation time of the course.
             # Specifying this field in a course update mask results in an error.
             #
@@ -753,13 +784,15 @@
               # information relating to the course as a whole.
             "materials": [ # Materials attached to this set.
               { # A material attached to a course as part of a material set.
-                "link": { # URL item. # Link atatchment.
-                  "url": "A String", # URL to link to.
-                      # This must be a valid UTF-8 string containing between 1 and 2024 characters.
-                  "thumbnailUrl": "A String", # URL of a thumbnail image of the target URL.
+                "youTubeVideo": { # YouTube video item. # Youtube video attachment.
+                  "alternateLink": "A String", # URL that can be used to view the YouTube video.
                       #
                       # Read-only.
-                  "title": "A String", # Title of the target of the URL.
+                  "thumbnailUrl": "A String", # URL of a thumbnail image of the YouTube video.
+                      #
+                      # Read-only.
+                  "id": "A String", # YouTube API resource ID.
+                  "title": "A String", # Title of the YouTube video.
                       #
                       # Read-only.
                 },
@@ -775,15 +808,13 @@
                       #
                       # Read-only.
                 },
-                "youTubeVideo": { # YouTube video item. # Youtube video attachment.
-                  "thumbnailUrl": "A String", # URL of a thumbnail image of the YouTube video.
+                "link": { # URL item. # Link atatchment.
+                  "url": "A String", # URL to link to.
+                      # This must be a valid UTF-8 string containing between 1 and 2024 characters.
+                  "thumbnailUrl": "A String", # URL of a thumbnail image of the target URL.
                       #
                       # Read-only.
-                  "alternateLink": "A String", # URL that can be used to view the YouTube video.
-                      #
-                      # Read-only.
-                  "id": "A String", # YouTube API resource ID.
-                  "title": "A String", # Title of the YouTube video.
+                  "title": "A String", # Title of the target of the URL.
                       #
                       # Read-only.
                 },
@@ -806,20 +837,6 @@
             "title": "A String", # Title for this set.
           },
         ],
-        "teacherFolder": { # Representation of a Google Drive folder. # Information about a Drive Folder that is shared with all teachers of the
-            # course.
-            #
-            # This field will only be set for teachers of the course and domain administrators.
-            #
-            # Read-only.
-          "alternateLink": "A String", # URL that can be used to access the Drive folder.
-              #
-              # Read-only.
-          "id": "A String", # Drive API resource ID.
-          "title": "A String", # Title of the Drive folder.
-              #
-              # Read-only.
-        },
         "ownerId": "A String", # The identifier of the owner of a course.
             #
             # When specified as a parameter of a
@@ -831,8 +848,28 @@
             # * the email address of the user
             # * the string literal `"me"`, indicating the requesting user
             #
-            # This must be set in a create request. Specifying this field in a course
-            # update mask results in an `INVALID_ARGUMENT` error.
+            # This must be set in a create request. Admins can also specify this field
+            # in a patch course request to
+            # transfer ownership. In other contexts, it is read-only.
+        "calendarId": "A String", # The Calendar ID for a calendar that all course members can see, to which
+            # Classroom adds events for course work and announcements in the course.
+            #
+            # Read-only.
+        "teacherFolder": { # Representation of a Google Drive folder. # Information about a Drive Folder that is shared with all teachers of the
+            # course.
+            #
+            # This field will only be set for teachers of the course and domain
+            # administrators.
+            #
+            # Read-only.
+          "alternateLink": "A String", # URL that can be used to access the Drive folder.
+              #
+              # Read-only.
+          "id": "A String", # Drive API resource ID.
+          "title": "A String", # Title of the Drive folder.
+              #
+              # Read-only.
+        },
         "courseState": "A String", # State of the course.
             # If unspecified, the default state is `PROVISIONED`.
         "id": "A String", # Identifier for this course assigned by Classroom.
@@ -849,11 +886,9 @@
             # For example, "Welcome to 10th Grade Biology."
             # If set, this field must be a valid UTF-8 string and no longer than 3600
             # characters.
-        "description": "A String", # Optional description.
-            # For example, "We'll be learning about the structure of living
-            # creatures from a combination of textbooks, guest lectures, and lab work.
-            # Expect to be excited!"
-            # If set, this field must be a valid UTF-8 string and no longer than 30,000
+        "room": "A String", # Optional room location.
+            # For example, "301".
+            # If set, this field must be a valid UTF-8 string and no longer than 650
             # characters.
       },
     ],
@@ -896,14 +931,16 @@
     The object takes the form of:
 
 { # A Course in Classroom.
+  "description": "A String", # Optional description.
+      # For example, "We'll be learning about the structure of living
+      # creatures from a combination of textbooks, guest lectures, and lab work.
+      # Expect to be excited!"
+      # If set, this field must be a valid UTF-8 string and no longer than 30,000
+      # characters.
   "updateTime": "A String", # Time of the most recent update to this course.
       # Specifying this field in a course update mask results in an error.
       # 
       # Read-only.
-  "room": "A String", # Optional room location.
-      # For example, "301".
-      # If set, this field must be a valid UTF-8 string and no longer than 650
-      # characters.
   "name": "A String", # Name of the course.
       # For example, "10th Grade Biology".
       # The name is required. It must be between 1 and 750 characters and a valid
@@ -915,6 +952,10 @@
       # Specifying this field in a course update mask results in an error.
       # 
       # Read-only.
+  "courseGroupEmail": "A String", # The email address of a Google group containing all members of the course.
+      # This group does not accept email and can only be used for permissions.
+      # 
+      # Read-only.
   "section": "A String", # Section of the course.
       # For example, "Period 2".
       # If set, this field must be a valid UTF-8 string and no longer than 2800
@@ -922,10 +963,6 @@
   "guardiansEnabled": True or False, # Whether or not guardian notifications are enabled for this course.
       # 
       # Read-only.
-  "courseGroupEmail": "A String", # The email address of a Google group containing all members of the course.
-      # This group does not accept email and can only be used for permissions.
-      # 
-      # Read-only.
   "creationTime": "A String", # Creation time of the course.
       # Specifying this field in a course update mask results in an error.
       # 
@@ -942,13 +979,15 @@
         # information relating to the course as a whole.
       "materials": [ # Materials attached to this set.
         { # A material attached to a course as part of a material set.
-          "link": { # URL item. # Link atatchment.
-            "url": "A String", # URL to link to.
-                # This must be a valid UTF-8 string containing between 1 and 2024 characters.
-            "thumbnailUrl": "A String", # URL of a thumbnail image of the target URL.
+          "youTubeVideo": { # YouTube video item. # Youtube video attachment.
+            "alternateLink": "A String", # URL that can be used to view the YouTube video.
                 #
                 # Read-only.
-            "title": "A String", # Title of the target of the URL.
+            "thumbnailUrl": "A String", # URL of a thumbnail image of the YouTube video.
+                #
+                # Read-only.
+            "id": "A String", # YouTube API resource ID.
+            "title": "A String", # Title of the YouTube video.
                 #
                 # Read-only.
           },
@@ -964,15 +1003,13 @@
                 #
                 # Read-only.
           },
-          "youTubeVideo": { # YouTube video item. # Youtube video attachment.
-            "thumbnailUrl": "A String", # URL of a thumbnail image of the YouTube video.
+          "link": { # URL item. # Link atatchment.
+            "url": "A String", # URL to link to.
+                # This must be a valid UTF-8 string containing between 1 and 2024 characters.
+            "thumbnailUrl": "A String", # URL of a thumbnail image of the target URL.
                 #
                 # Read-only.
-            "alternateLink": "A String", # URL that can be used to view the YouTube video.
-                #
-                # Read-only.
-            "id": "A String", # YouTube API resource ID.
-            "title": "A String", # Title of the YouTube video.
+            "title": "A String", # Title of the target of the URL.
                 #
                 # Read-only.
           },
@@ -995,20 +1032,6 @@
       "title": "A String", # Title for this set.
     },
   ],
-  "teacherFolder": { # Representation of a Google Drive folder. # Information about a Drive Folder that is shared with all teachers of the
-      # course.
-      # 
-      # This field will only be set for teachers of the course and domain administrators.
-      # 
-      # Read-only.
-    "alternateLink": "A String", # URL that can be used to access the Drive folder.
-        #
-        # Read-only.
-    "id": "A String", # Drive API resource ID.
-    "title": "A String", # Title of the Drive folder.
-        #
-        # Read-only.
-  },
   "ownerId": "A String", # The identifier of the owner of a course.
       # 
       # When specified as a parameter of a
@@ -1020,8 +1043,28 @@
       # * the email address of the user
       # * the string literal `"me"`, indicating the requesting user
       # 
-      # This must be set in a create request. Specifying this field in a course
-      # update mask results in an `INVALID_ARGUMENT` error.
+      # This must be set in a create request. Admins can also specify this field
+      # in a patch course request to
+      # transfer ownership. In other contexts, it is read-only.
+  "calendarId": "A String", # The Calendar ID for a calendar that all course members can see, to which
+      # Classroom adds events for course work and announcements in the course.
+      # 
+      # Read-only.
+  "teacherFolder": { # Representation of a Google Drive folder. # Information about a Drive Folder that is shared with all teachers of the
+      # course.
+      # 
+      # This field will only be set for teachers of the course and domain
+      # administrators.
+      # 
+      # Read-only.
+    "alternateLink": "A String", # URL that can be used to access the Drive folder.
+        #
+        # Read-only.
+    "id": "A String", # Drive API resource ID.
+    "title": "A String", # Title of the Drive folder.
+        #
+        # Read-only.
+  },
   "courseState": "A String", # State of the course.
       # If unspecified, the default state is `PROVISIONED`.
   "id": "A String", # Identifier for this course assigned by Classroom.
@@ -1038,11 +1081,9 @@
       # For example, "Welcome to 10th Grade Biology."
       # If set, this field must be a valid UTF-8 string and no longer than 3600
       # characters.
-  "description": "A String", # Optional description.
-      # For example, "We'll be learning about the structure of living
-      # creatures from a combination of textbooks, guest lectures, and lab work.
-      # Expect to be excited!"
-      # If set, this field must be a valid UTF-8 string and no longer than 30,000
+  "room": "A String", # Optional room location.
+      # For example, "301".
+      # If set, this field must be a valid UTF-8 string and no longer than 650
       # characters.
 }
 
@@ -1056,6 +1097,11 @@
 * `description`
 * `room`
 * `courseState`
+* `ownerId`
+
+Note: patches to ownerId are treated as being effective immediately, but in
+practice it may take some time for the ownership transfer of all affected
+resources to complete.
 
 When set in a query parameter, this field should be specified as
 
@@ -1069,14 +1115,16 @@
   An object of the form:
 
     { # A Course in Classroom.
+    "description": "A String", # Optional description.
+        # For example, "We'll be learning about the structure of living
+        # creatures from a combination of textbooks, guest lectures, and lab work.
+        # Expect to be excited!"
+        # If set, this field must be a valid UTF-8 string and no longer than 30,000
+        # characters.
     "updateTime": "A String", # Time of the most recent update to this course.
         # Specifying this field in a course update mask results in an error.
         #
         # Read-only.
-    "room": "A String", # Optional room location.
-        # For example, "301".
-        # If set, this field must be a valid UTF-8 string and no longer than 650
-        # characters.
     "name": "A String", # Name of the course.
         # For example, "10th Grade Biology".
         # The name is required. It must be between 1 and 750 characters and a valid
@@ -1088,6 +1136,10 @@
         # Specifying this field in a course update mask results in an error.
         #
         # Read-only.
+    "courseGroupEmail": "A String", # The email address of a Google group containing all members of the course.
+        # This group does not accept email and can only be used for permissions.
+        #
+        # Read-only.
     "section": "A String", # Section of the course.
         # For example, "Period 2".
         # If set, this field must be a valid UTF-8 string and no longer than 2800
@@ -1095,10 +1147,6 @@
     "guardiansEnabled": True or False, # Whether or not guardian notifications are enabled for this course.
         #
         # Read-only.
-    "courseGroupEmail": "A String", # The email address of a Google group containing all members of the course.
-        # This group does not accept email and can only be used for permissions.
-        #
-        # Read-only.
     "creationTime": "A String", # Creation time of the course.
         # Specifying this field in a course update mask results in an error.
         #
@@ -1115,13 +1163,15 @@
           # information relating to the course as a whole.
         "materials": [ # Materials attached to this set.
           { # A material attached to a course as part of a material set.
-            "link": { # URL item. # Link atatchment.
-              "url": "A String", # URL to link to.
-                  # This must be a valid UTF-8 string containing between 1 and 2024 characters.
-              "thumbnailUrl": "A String", # URL of a thumbnail image of the target URL.
+            "youTubeVideo": { # YouTube video item. # Youtube video attachment.
+              "alternateLink": "A String", # URL that can be used to view the YouTube video.
                   #
                   # Read-only.
-              "title": "A String", # Title of the target of the URL.
+              "thumbnailUrl": "A String", # URL of a thumbnail image of the YouTube video.
+                  #
+                  # Read-only.
+              "id": "A String", # YouTube API resource ID.
+              "title": "A String", # Title of the YouTube video.
                   #
                   # Read-only.
             },
@@ -1137,15 +1187,13 @@
                   #
                   # Read-only.
             },
-            "youTubeVideo": { # YouTube video item. # Youtube video attachment.
-              "thumbnailUrl": "A String", # URL of a thumbnail image of the YouTube video.
+            "link": { # URL item. # Link atatchment.
+              "url": "A String", # URL to link to.
+                  # This must be a valid UTF-8 string containing between 1 and 2024 characters.
+              "thumbnailUrl": "A String", # URL of a thumbnail image of the target URL.
                   #
                   # Read-only.
-              "alternateLink": "A String", # URL that can be used to view the YouTube video.
-                  #
-                  # Read-only.
-              "id": "A String", # YouTube API resource ID.
-              "title": "A String", # Title of the YouTube video.
+              "title": "A String", # Title of the target of the URL.
                   #
                   # Read-only.
             },
@@ -1168,20 +1216,6 @@
         "title": "A String", # Title for this set.
       },
     ],
-    "teacherFolder": { # Representation of a Google Drive folder. # Information about a Drive Folder that is shared with all teachers of the
-        # course.
-        #
-        # This field will only be set for teachers of the course and domain administrators.
-        #
-        # Read-only.
-      "alternateLink": "A String", # URL that can be used to access the Drive folder.
-          #
-          # Read-only.
-      "id": "A String", # Drive API resource ID.
-      "title": "A String", # Title of the Drive folder.
-          #
-          # Read-only.
-    },
     "ownerId": "A String", # The identifier of the owner of a course.
         #
         # When specified as a parameter of a
@@ -1193,8 +1227,28 @@
         # * the email address of the user
         # * the string literal `"me"`, indicating the requesting user
         #
-        # This must be set in a create request. Specifying this field in a course
-        # update mask results in an `INVALID_ARGUMENT` error.
+        # This must be set in a create request. Admins can also specify this field
+        # in a patch course request to
+        # transfer ownership. In other contexts, it is read-only.
+    "calendarId": "A String", # The Calendar ID for a calendar that all course members can see, to which
+        # Classroom adds events for course work and announcements in the course.
+        #
+        # Read-only.
+    "teacherFolder": { # Representation of a Google Drive folder. # Information about a Drive Folder that is shared with all teachers of the
+        # course.
+        #
+        # This field will only be set for teachers of the course and domain
+        # administrators.
+        #
+        # Read-only.
+      "alternateLink": "A String", # URL that can be used to access the Drive folder.
+          #
+          # Read-only.
+      "id": "A String", # Drive API resource ID.
+      "title": "A String", # Title of the Drive folder.
+          #
+          # Read-only.
+    },
     "courseState": "A String", # State of the course.
         # If unspecified, the default state is `PROVISIONED`.
     "id": "A String", # Identifier for this course assigned by Classroom.
@@ -1211,11 +1265,9 @@
         # For example, "Welcome to 10th Grade Biology."
         # If set, this field must be a valid UTF-8 string and no longer than 3600
         # characters.
-    "description": "A String", # Optional description.
-        # For example, "We'll be learning about the structure of living
-        # creatures from a combination of textbooks, guest lectures, and lab work.
-        # Expect to be excited!"
-        # If set, this field must be a valid UTF-8 string and no longer than 30,000
+    "room": "A String", # Optional room location.
+        # For example, "301".
+        # If set, this field must be a valid UTF-8 string and no longer than 650
         # characters.
   }</pre>
 </div>
@@ -1240,14 +1292,16 @@
     The object takes the form of:
 
 { # A Course in Classroom.
+  "description": "A String", # Optional description.
+      # For example, "We'll be learning about the structure of living
+      # creatures from a combination of textbooks, guest lectures, and lab work.
+      # Expect to be excited!"
+      # If set, this field must be a valid UTF-8 string and no longer than 30,000
+      # characters.
   "updateTime": "A String", # Time of the most recent update to this course.
       # Specifying this field in a course update mask results in an error.
       # 
       # Read-only.
-  "room": "A String", # Optional room location.
-      # For example, "301".
-      # If set, this field must be a valid UTF-8 string and no longer than 650
-      # characters.
   "name": "A String", # Name of the course.
       # For example, "10th Grade Biology".
       # The name is required. It must be between 1 and 750 characters and a valid
@@ -1259,6 +1313,10 @@
       # Specifying this field in a course update mask results in an error.
       # 
       # Read-only.
+  "courseGroupEmail": "A String", # The email address of a Google group containing all members of the course.
+      # This group does not accept email and can only be used for permissions.
+      # 
+      # Read-only.
   "section": "A String", # Section of the course.
       # For example, "Period 2".
       # If set, this field must be a valid UTF-8 string and no longer than 2800
@@ -1266,10 +1324,6 @@
   "guardiansEnabled": True or False, # Whether or not guardian notifications are enabled for this course.
       # 
       # Read-only.
-  "courseGroupEmail": "A String", # The email address of a Google group containing all members of the course.
-      # This group does not accept email and can only be used for permissions.
-      # 
-      # Read-only.
   "creationTime": "A String", # Creation time of the course.
       # Specifying this field in a course update mask results in an error.
       # 
@@ -1286,13 +1340,15 @@
         # information relating to the course as a whole.
       "materials": [ # Materials attached to this set.
         { # A material attached to a course as part of a material set.
-          "link": { # URL item. # Link atatchment.
-            "url": "A String", # URL to link to.
-                # This must be a valid UTF-8 string containing between 1 and 2024 characters.
-            "thumbnailUrl": "A String", # URL of a thumbnail image of the target URL.
+          "youTubeVideo": { # YouTube video item. # Youtube video attachment.
+            "alternateLink": "A String", # URL that can be used to view the YouTube video.
                 #
                 # Read-only.
-            "title": "A String", # Title of the target of the URL.
+            "thumbnailUrl": "A String", # URL of a thumbnail image of the YouTube video.
+                #
+                # Read-only.
+            "id": "A String", # YouTube API resource ID.
+            "title": "A String", # Title of the YouTube video.
                 #
                 # Read-only.
           },
@@ -1308,15 +1364,13 @@
                 #
                 # Read-only.
           },
-          "youTubeVideo": { # YouTube video item. # Youtube video attachment.
-            "thumbnailUrl": "A String", # URL of a thumbnail image of the YouTube video.
+          "link": { # URL item. # Link atatchment.
+            "url": "A String", # URL to link to.
+                # This must be a valid UTF-8 string containing between 1 and 2024 characters.
+            "thumbnailUrl": "A String", # URL of a thumbnail image of the target URL.
                 #
                 # Read-only.
-            "alternateLink": "A String", # URL that can be used to view the YouTube video.
-                #
-                # Read-only.
-            "id": "A String", # YouTube API resource ID.
-            "title": "A String", # Title of the YouTube video.
+            "title": "A String", # Title of the target of the URL.
                 #
                 # Read-only.
           },
@@ -1339,20 +1393,6 @@
       "title": "A String", # Title for this set.
     },
   ],
-  "teacherFolder": { # Representation of a Google Drive folder. # Information about a Drive Folder that is shared with all teachers of the
-      # course.
-      # 
-      # This field will only be set for teachers of the course and domain administrators.
-      # 
-      # Read-only.
-    "alternateLink": "A String", # URL that can be used to access the Drive folder.
-        #
-        # Read-only.
-    "id": "A String", # Drive API resource ID.
-    "title": "A String", # Title of the Drive folder.
-        #
-        # Read-only.
-  },
   "ownerId": "A String", # The identifier of the owner of a course.
       # 
       # When specified as a parameter of a
@@ -1364,8 +1404,28 @@
       # * the email address of the user
       # * the string literal `"me"`, indicating the requesting user
       # 
-      # This must be set in a create request. Specifying this field in a course
-      # update mask results in an `INVALID_ARGUMENT` error.
+      # This must be set in a create request. Admins can also specify this field
+      # in a patch course request to
+      # transfer ownership. In other contexts, it is read-only.
+  "calendarId": "A String", # The Calendar ID for a calendar that all course members can see, to which
+      # Classroom adds events for course work and announcements in the course.
+      # 
+      # Read-only.
+  "teacherFolder": { # Representation of a Google Drive folder. # Information about a Drive Folder that is shared with all teachers of the
+      # course.
+      # 
+      # This field will only be set for teachers of the course and domain
+      # administrators.
+      # 
+      # Read-only.
+    "alternateLink": "A String", # URL that can be used to access the Drive folder.
+        #
+        # Read-only.
+    "id": "A String", # Drive API resource ID.
+    "title": "A String", # Title of the Drive folder.
+        #
+        # Read-only.
+  },
   "courseState": "A String", # State of the course.
       # If unspecified, the default state is `PROVISIONED`.
   "id": "A String", # Identifier for this course assigned by Classroom.
@@ -1382,11 +1442,9 @@
       # For example, "Welcome to 10th Grade Biology."
       # If set, this field must be a valid UTF-8 string and no longer than 3600
       # characters.
-  "description": "A String", # Optional description.
-      # For example, "We'll be learning about the structure of living
-      # creatures from a combination of textbooks, guest lectures, and lab work.
-      # Expect to be excited!"
-      # If set, this field must be a valid UTF-8 string and no longer than 30,000
+  "room": "A String", # Optional room location.
+      # For example, "301".
+      # If set, this field must be a valid UTF-8 string and no longer than 650
       # characters.
 }
 
@@ -1399,14 +1457,16 @@
   An object of the form:
 
     { # A Course in Classroom.
+    "description": "A String", # Optional description.
+        # For example, "We'll be learning about the structure of living
+        # creatures from a combination of textbooks, guest lectures, and lab work.
+        # Expect to be excited!"
+        # If set, this field must be a valid UTF-8 string and no longer than 30,000
+        # characters.
     "updateTime": "A String", # Time of the most recent update to this course.
         # Specifying this field in a course update mask results in an error.
         #
         # Read-only.
-    "room": "A String", # Optional room location.
-        # For example, "301".
-        # If set, this field must be a valid UTF-8 string and no longer than 650
-        # characters.
     "name": "A String", # Name of the course.
         # For example, "10th Grade Biology".
         # The name is required. It must be between 1 and 750 characters and a valid
@@ -1418,6 +1478,10 @@
         # Specifying this field in a course update mask results in an error.
         #
         # Read-only.
+    "courseGroupEmail": "A String", # The email address of a Google group containing all members of the course.
+        # This group does not accept email and can only be used for permissions.
+        #
+        # Read-only.
     "section": "A String", # Section of the course.
         # For example, "Period 2".
         # If set, this field must be a valid UTF-8 string and no longer than 2800
@@ -1425,10 +1489,6 @@
     "guardiansEnabled": True or False, # Whether or not guardian notifications are enabled for this course.
         #
         # Read-only.
-    "courseGroupEmail": "A String", # The email address of a Google group containing all members of the course.
-        # This group does not accept email and can only be used for permissions.
-        #
-        # Read-only.
     "creationTime": "A String", # Creation time of the course.
         # Specifying this field in a course update mask results in an error.
         #
@@ -1445,13 +1505,15 @@
           # information relating to the course as a whole.
         "materials": [ # Materials attached to this set.
           { # A material attached to a course as part of a material set.
-            "link": { # URL item. # Link atatchment.
-              "url": "A String", # URL to link to.
-                  # This must be a valid UTF-8 string containing between 1 and 2024 characters.
-              "thumbnailUrl": "A String", # URL of a thumbnail image of the target URL.
+            "youTubeVideo": { # YouTube video item. # Youtube video attachment.
+              "alternateLink": "A String", # URL that can be used to view the YouTube video.
                   #
                   # Read-only.
-              "title": "A String", # Title of the target of the URL.
+              "thumbnailUrl": "A String", # URL of a thumbnail image of the YouTube video.
+                  #
+                  # Read-only.
+              "id": "A String", # YouTube API resource ID.
+              "title": "A String", # Title of the YouTube video.
                   #
                   # Read-only.
             },
@@ -1467,15 +1529,13 @@
                   #
                   # Read-only.
             },
-            "youTubeVideo": { # YouTube video item. # Youtube video attachment.
-              "thumbnailUrl": "A String", # URL of a thumbnail image of the YouTube video.
+            "link": { # URL item. # Link atatchment.
+              "url": "A String", # URL to link to.
+                  # This must be a valid UTF-8 string containing between 1 and 2024 characters.
+              "thumbnailUrl": "A String", # URL of a thumbnail image of the target URL.
                   #
                   # Read-only.
-              "alternateLink": "A String", # URL that can be used to view the YouTube video.
-                  #
-                  # Read-only.
-              "id": "A String", # YouTube API resource ID.
-              "title": "A String", # Title of the YouTube video.
+              "title": "A String", # Title of the target of the URL.
                   #
                   # Read-only.
             },
@@ -1498,20 +1558,6 @@
         "title": "A String", # Title for this set.
       },
     ],
-    "teacherFolder": { # Representation of a Google Drive folder. # Information about a Drive Folder that is shared with all teachers of the
-        # course.
-        #
-        # This field will only be set for teachers of the course and domain administrators.
-        #
-        # Read-only.
-      "alternateLink": "A String", # URL that can be used to access the Drive folder.
-          #
-          # Read-only.
-      "id": "A String", # Drive API resource ID.
-      "title": "A String", # Title of the Drive folder.
-          #
-          # Read-only.
-    },
     "ownerId": "A String", # The identifier of the owner of a course.
         #
         # When specified as a parameter of a
@@ -1523,8 +1569,28 @@
         # * the email address of the user
         # * the string literal `"me"`, indicating the requesting user
         #
-        # This must be set in a create request. Specifying this field in a course
-        # update mask results in an `INVALID_ARGUMENT` error.
+        # This must be set in a create request. Admins can also specify this field
+        # in a patch course request to
+        # transfer ownership. In other contexts, it is read-only.
+    "calendarId": "A String", # The Calendar ID for a calendar that all course members can see, to which
+        # Classroom adds events for course work and announcements in the course.
+        #
+        # Read-only.
+    "teacherFolder": { # Representation of a Google Drive folder. # Information about a Drive Folder that is shared with all teachers of the
+        # course.
+        #
+        # This field will only be set for teachers of the course and domain
+        # administrators.
+        #
+        # Read-only.
+      "alternateLink": "A String", # URL that can be used to access the Drive folder.
+          #
+          # Read-only.
+      "id": "A String", # Drive API resource ID.
+      "title": "A String", # Title of the Drive folder.
+          #
+          # Read-only.
+    },
     "courseState": "A String", # State of the course.
         # If unspecified, the default state is `PROVISIONED`.
     "id": "A String", # Identifier for this course assigned by Classroom.
@@ -1541,11 +1607,9 @@
         # For example, "Welcome to 10th Grade Biology."
         # If set, this field must be a valid UTF-8 string and no longer than 3600
         # characters.
-    "description": "A String", # Optional description.
-        # For example, "We'll be learning about the structure of living
-        # creatures from a combination of textbooks, guest lectures, and lab work.
-        # Expect to be excited!"
-        # If set, this field must be a valid UTF-8 string and no longer than 30,000
+    "room": "A String", # Optional room location.
+        # For example, "301".
+        # If set, this field must be a valid UTF-8 string and no longer than 650
         # characters.
   }</pre>
 </div>