Regen all docs. (#700)

* Stop recursing if discovery == {}

* Generate docs with 'make docs'.
diff --git a/docs/dyn/classroom_v1.courses.announcements.html b/docs/dyn/classroom_v1.courses.announcements.html
new file mode 100644
index 0000000..8b17468
--- /dev/null
+++ b/docs/dyn/classroom_v1.courses.announcements.html
@@ -0,0 +1,1053 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="classroom_v1.html">Google Classroom API</a> . <a href="classroom_v1.courses.html">courses</a> . <a href="classroom_v1.courses.announcements.html">announcements</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#create">create(courseId, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates an announcement.</p>
+<p class="toc_element">
+  <code><a href="#delete">delete(courseId, id, x__xgafv=None)</a></code></p>
+<p class="firstline">Deletes an announcement.</p>
+<p class="toc_element">
+  <code><a href="#get">get(courseId, id, x__xgafv=None)</a></code></p>
+<p class="firstline">Returns an announcement.</p>
+<p class="toc_element">
+  <code><a href="#list">list(courseId, orderBy=None, pageSize=None, announcementStates=None, pageToken=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Returns a list of announcements that the requester is permitted to view.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<p class="toc_element">
+  <code><a href="#modifyAssignees">modifyAssignees(courseId, id, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Modifies assignee mode and options of an announcement.</p>
+<p class="toc_element">
+  <code><a href="#patch">patch(courseId, id, body, updateMask=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates one or more fields of an announcement.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="create">create(courseId, body, x__xgafv=None)</code>
+  <pre>Creates an announcement.
+
+This method returns the following error codes:
+
+* `PERMISSION_DENIED` if the requesting user is not permitted to access the
+requested course, create announcements in the requested course, share a
+Drive attachment, or for access errors.
+* `INVALID_ARGUMENT` if the request is malformed.
+* `NOT_FOUND` if the requested course does not exist.
+* `FAILED_PRECONDITION` for the following request error:
+    * AttachmentNotVisible
+
+Args:
+  courseId: string, Identifier of the course.
+This identifier can be either the Classroom-assigned identifier or an
+alias. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Announcement created by a teacher for students of the course
+  "updateTime": "A String", # Timestamp of the most recent change to this announcement.
+      # 
+      # Read-only.
+  "scheduledTime": "A String", # Optional timestamp when this announcement is scheduled to be published.
+  "creatorUserId": "A String", # Identifier for the user that created the announcement.
+      # 
+      # Read-only.
+  "courseId": "A String", # Identifier of the course.
+      # 
+      # Read-only.
+  "text": "A String", # Description of this announcement.
+      # The text must be a valid UTF-8 string containing no more
+      # than 30,000 characters.
+  "alternateLink": "A String", # Absolute link to this announcement in the Classroom web UI.
+      # This is only populated if `state` is `PUBLISHED`.
+      # 
+      # Read-only.
+  "creationTime": "A String", # Timestamp when this announcement was created.
+      # 
+      # Read-only.
+  "assigneeMode": "A String", # Assignee mode of the announcement.
+      # If unspecified, the default value is `ALL_STUDENTS`.
+  "state": "A String", # Status of this announcement.
+      # If unspecified, the default state is `DRAFT`.
+  "materials": [ # Additional materials.
+      # 
+      # Announcements must have no more than 20 material items.
+    { # Material attached to course work.
+        #
+        # When creating attachments, setting the `form` field is not supported.
+      "youtubeVideo": { # YouTube video item. # YouTube video material.
+        "alternateLink": "A String", # URL that can be used to view the YouTube video.
+            #
+            # Read-only.
+        "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.
+      },
+      "driveFile": { # Drive file that is used as material for course work. # Google Drive file material.
+        "driveFile": { # Representation of a Google Drive file. # Drive file details.
+          "thumbnailUrl": "A String", # URL of a thumbnail image of the Drive item.
+              #
+              # Read-only.
+          "alternateLink": "A String", # URL that can be used to access the Drive item.
+              #
+              # Read-only.
+          "id": "A String", # Drive API resource ID.
+          "title": "A String", # Title of the Drive item.
+              #
+              # Read-only.
+        },
+        "shareMode": "A String", # Mechanism by which students access the Drive item.
+      },
+      "link": { # URL item. # Link material. On creation, will be upgraded to a more appropriate type
+          # if possible, and this will be reflected in the response.
+        "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.
+        "title": "A String", # Title of the target of the URL.
+            #
+            # Read-only.
+      },
+      "form": { # Google Forms item. # Google Forms material.
+        "formUrl": "A String", # URL of the form.
+        "thumbnailUrl": "A String", # URL of a thumbnail image of the Form.
+            #
+            # Read-only.
+        "responseUrl": "A String", # URL of the form responses document.
+            # Only set if respsonses have been recorded and only when the
+            # requesting user is an editor of the form.
+            #
+            # Read-only.
+        "title": "A String", # Title of the Form.
+            #
+            # Read-only.
+      },
+    },
+  ],
+  "individualStudentsOptions": { # Assignee details about a coursework/announcement. # Identifiers of students with access to the announcement.
+      # This field is set only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
+      # If the `assigneeMode` is `INDIVIDUAL_STUDENTS`, then only students
+      # specified in this field will be able to see the announcement.
+      # This field is set if and only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
+    "studentIds": [ # Identifiers for the students that have access to the
+        # coursework/announcement.
+      "A String",
+    ],
+  },
+  "id": "A String", # Classroom-assigned identifier of this announcement, unique per course.
+      # 
+      # Read-only.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Announcement created by a teacher for students of the course
+    "updateTime": "A String", # Timestamp of the most recent change to this announcement.
+        #
+        # Read-only.
+    "scheduledTime": "A String", # Optional timestamp when this announcement is scheduled to be published.
+    "creatorUserId": "A String", # Identifier for the user that created the announcement.
+        #
+        # Read-only.
+    "courseId": "A String", # Identifier of the course.
+        #
+        # Read-only.
+    "text": "A String", # Description of this announcement.
+        # The text must be a valid UTF-8 string containing no more
+        # than 30,000 characters.
+    "alternateLink": "A String", # Absolute link to this announcement in the Classroom web UI.
+        # This is only populated if `state` is `PUBLISHED`.
+        #
+        # Read-only.
+    "creationTime": "A String", # Timestamp when this announcement was created.
+        #
+        # Read-only.
+    "assigneeMode": "A String", # Assignee mode of the announcement.
+        # If unspecified, the default value is `ALL_STUDENTS`.
+    "state": "A String", # Status of this announcement.
+        # If unspecified, the default state is `DRAFT`.
+    "materials": [ # Additional materials.
+        #
+        # Announcements must have no more than 20 material items.
+      { # Material attached to course work.
+          #
+          # When creating attachments, setting the `form` field is not supported.
+        "youtubeVideo": { # YouTube video item. # YouTube video material.
+          "alternateLink": "A String", # URL that can be used to view the YouTube video.
+              #
+              # Read-only.
+          "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.
+        },
+        "driveFile": { # Drive file that is used as material for course work. # Google Drive file material.
+          "driveFile": { # Representation of a Google Drive file. # Drive file details.
+            "thumbnailUrl": "A String", # URL of a thumbnail image of the Drive item.
+                #
+                # Read-only.
+            "alternateLink": "A String", # URL that can be used to access the Drive item.
+                #
+                # Read-only.
+            "id": "A String", # Drive API resource ID.
+            "title": "A String", # Title of the Drive item.
+                #
+                # Read-only.
+          },
+          "shareMode": "A String", # Mechanism by which students access the Drive item.
+        },
+        "link": { # URL item. # Link material. On creation, will be upgraded to a more appropriate type
+            # if possible, and this will be reflected in the response.
+          "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.
+          "title": "A String", # Title of the target of the URL.
+              #
+              # Read-only.
+        },
+        "form": { # Google Forms item. # Google Forms material.
+          "formUrl": "A String", # URL of the form.
+          "thumbnailUrl": "A String", # URL of a thumbnail image of the Form.
+              #
+              # Read-only.
+          "responseUrl": "A String", # URL of the form responses document.
+              # Only set if respsonses have been recorded and only when the
+              # requesting user is an editor of the form.
+              #
+              # Read-only.
+          "title": "A String", # Title of the Form.
+              #
+              # Read-only.
+        },
+      },
+    ],
+    "individualStudentsOptions": { # Assignee details about a coursework/announcement. # Identifiers of students with access to the announcement.
+        # This field is set only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
+        # If the `assigneeMode` is `INDIVIDUAL_STUDENTS`, then only students
+        # specified in this field will be able to see the announcement.
+        # This field is set if and only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
+      "studentIds": [ # Identifiers for the students that have access to the
+          # coursework/announcement.
+        "A String",
+      ],
+    },
+    "id": "A String", # Classroom-assigned identifier of this announcement, unique per course.
+        #
+        # Read-only.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="delete">delete(courseId, id, x__xgafv=None)</code>
+  <pre>Deletes an announcement.
+
+This request must be made by the Developer Console project of the
+[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to
+create the corresponding announcement item.
+
+This method returns the following error codes:
+
+* `PERMISSION_DENIED` if the requesting developer project did not create
+the corresponding announcement, if the requesting user is not permitted
+to delete the requested course or for access errors.
+* `FAILED_PRECONDITION` if the requested announcement has already been
+deleted.
+* `NOT_FOUND` if no course exists with the requested ID.
+
+Args:
+  courseId: string, Identifier of the course.
+This identifier can be either the Classroom-assigned identifier or an
+alias. (required)
+  id: string, Identifier of the announcement to delete.
+This identifier is a Classroom-assigned identifier. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # A generic empty message that you can re-use to avoid defining duplicated
+      # empty messages in your APIs. A typical example is to use it as the request
+      # or the response type of an API method. For instance:
+      #
+      #     service Foo {
+      #       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
+      #     }
+      #
+      # The JSON representation for `Empty` is empty JSON object `{}`.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(courseId, id, x__xgafv=None)</code>
+  <pre>Returns an announcement.
+
+This method returns the following error codes:
+
+* `PERMISSION_DENIED` if the requesting user is not permitted to access the
+requested course or announcement, or for access errors.
+* `INVALID_ARGUMENT` if the request is malformed.
+* `NOT_FOUND` if the requested course or announcement does not exist.
+
+Args:
+  courseId: string, Identifier of the course.
+This identifier can be either the Classroom-assigned identifier or an
+alias. (required)
+  id: string, Identifier of the announcement. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Announcement created by a teacher for students of the course
+    "updateTime": "A String", # Timestamp of the most recent change to this announcement.
+        #
+        # Read-only.
+    "scheduledTime": "A String", # Optional timestamp when this announcement is scheduled to be published.
+    "creatorUserId": "A String", # Identifier for the user that created the announcement.
+        #
+        # Read-only.
+    "courseId": "A String", # Identifier of the course.
+        #
+        # Read-only.
+    "text": "A String", # Description of this announcement.
+        # The text must be a valid UTF-8 string containing no more
+        # than 30,000 characters.
+    "alternateLink": "A String", # Absolute link to this announcement in the Classroom web UI.
+        # This is only populated if `state` is `PUBLISHED`.
+        #
+        # Read-only.
+    "creationTime": "A String", # Timestamp when this announcement was created.
+        #
+        # Read-only.
+    "assigneeMode": "A String", # Assignee mode of the announcement.
+        # If unspecified, the default value is `ALL_STUDENTS`.
+    "state": "A String", # Status of this announcement.
+        # If unspecified, the default state is `DRAFT`.
+    "materials": [ # Additional materials.
+        #
+        # Announcements must have no more than 20 material items.
+      { # Material attached to course work.
+          #
+          # When creating attachments, setting the `form` field is not supported.
+        "youtubeVideo": { # YouTube video item. # YouTube video material.
+          "alternateLink": "A String", # URL that can be used to view the YouTube video.
+              #
+              # Read-only.
+          "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.
+        },
+        "driveFile": { # Drive file that is used as material for course work. # Google Drive file material.
+          "driveFile": { # Representation of a Google Drive file. # Drive file details.
+            "thumbnailUrl": "A String", # URL of a thumbnail image of the Drive item.
+                #
+                # Read-only.
+            "alternateLink": "A String", # URL that can be used to access the Drive item.
+                #
+                # Read-only.
+            "id": "A String", # Drive API resource ID.
+            "title": "A String", # Title of the Drive item.
+                #
+                # Read-only.
+          },
+          "shareMode": "A String", # Mechanism by which students access the Drive item.
+        },
+        "link": { # URL item. # Link material. On creation, will be upgraded to a more appropriate type
+            # if possible, and this will be reflected in the response.
+          "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.
+          "title": "A String", # Title of the target of the URL.
+              #
+              # Read-only.
+        },
+        "form": { # Google Forms item. # Google Forms material.
+          "formUrl": "A String", # URL of the form.
+          "thumbnailUrl": "A String", # URL of a thumbnail image of the Form.
+              #
+              # Read-only.
+          "responseUrl": "A String", # URL of the form responses document.
+              # Only set if respsonses have been recorded and only when the
+              # requesting user is an editor of the form.
+              #
+              # Read-only.
+          "title": "A String", # Title of the Form.
+              #
+              # Read-only.
+        },
+      },
+    ],
+    "individualStudentsOptions": { # Assignee details about a coursework/announcement. # Identifiers of students with access to the announcement.
+        # This field is set only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
+        # If the `assigneeMode` is `INDIVIDUAL_STUDENTS`, then only students
+        # specified in this field will be able to see the announcement.
+        # This field is set if and only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
+      "studentIds": [ # Identifiers for the students that have access to the
+          # coursework/announcement.
+        "A String",
+      ],
+    },
+    "id": "A String", # Classroom-assigned identifier of this announcement, unique per course.
+        #
+        # Read-only.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(courseId, orderBy=None, pageSize=None, announcementStates=None, pageToken=None, x__xgafv=None)</code>
+  <pre>Returns a list of announcements that the requester is permitted to view.
+
+Course students may only view `PUBLISHED` announcements. Course teachers
+and domain administrators may view all announcements.
+
+This method returns the following error codes:
+
+* `PERMISSION_DENIED` if the requesting user is not permitted to access
+the requested course or for access errors.
+* `INVALID_ARGUMENT` if the request is malformed.
+* `NOT_FOUND` if the requested course does not exist.
+
+Args:
+  courseId: string, Identifier of the course.
+This identifier can be either the Classroom-assigned identifier or an
+alias. (required)
+  orderBy: string, Optional sort ordering for results. A comma-separated list of fields with
+an optional sort direction keyword. Supported field is `updateTime`.
+Supported direction keywords are `asc` and `desc`.
+If not specified, `updateTime desc` is the default behavior.
+Examples: `updateTime asc`, `updateTime`
+  pageSize: integer, Maximum number of items to return. Zero or unspecified indicates that the
+server may assign a maximum.
+
+The server may return fewer than the specified number of results.
+  announcementStates: string, Restriction on the `state` of announcements returned.
+If this argument is left unspecified, the default value is `PUBLISHED`. (repeated)
+  pageToken: string, nextPageToken
+value returned from a previous
+list call,
+indicating that the subsequent page of results should be returned.
+
+The list request
+must be otherwise identical to the one that resulted in this token.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response when listing course work.
+    "nextPageToken": "A String", # Token identifying the next page of results to return. If empty, no further
+        # results are available.
+    "announcements": [ # Announcement items that match the request.
+      { # Announcement created by a teacher for students of the course
+        "updateTime": "A String", # Timestamp of the most recent change to this announcement.
+            #
+            # Read-only.
+        "scheduledTime": "A String", # Optional timestamp when this announcement is scheduled to be published.
+        "creatorUserId": "A String", # Identifier for the user that created the announcement.
+            #
+            # Read-only.
+        "courseId": "A String", # Identifier of the course.
+            #
+            # Read-only.
+        "text": "A String", # Description of this announcement.
+            # The text must be a valid UTF-8 string containing no more
+            # than 30,000 characters.
+        "alternateLink": "A String", # Absolute link to this announcement in the Classroom web UI.
+            # This is only populated if `state` is `PUBLISHED`.
+            #
+            # Read-only.
+        "creationTime": "A String", # Timestamp when this announcement was created.
+            #
+            # Read-only.
+        "assigneeMode": "A String", # Assignee mode of the announcement.
+            # If unspecified, the default value is `ALL_STUDENTS`.
+        "state": "A String", # Status of this announcement.
+            # If unspecified, the default state is `DRAFT`.
+        "materials": [ # Additional materials.
+            #
+            # Announcements must have no more than 20 material items.
+          { # Material attached to course work.
+              #
+              # When creating attachments, setting the `form` field is not supported.
+            "youtubeVideo": { # YouTube video item. # YouTube video material.
+              "alternateLink": "A String", # URL that can be used to view the YouTube video.
+                  #
+                  # Read-only.
+              "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.
+            },
+            "driveFile": { # Drive file that is used as material for course work. # Google Drive file material.
+              "driveFile": { # Representation of a Google Drive file. # Drive file details.
+                "thumbnailUrl": "A String", # URL of a thumbnail image of the Drive item.
+                    #
+                    # Read-only.
+                "alternateLink": "A String", # URL that can be used to access the Drive item.
+                    #
+                    # Read-only.
+                "id": "A String", # Drive API resource ID.
+                "title": "A String", # Title of the Drive item.
+                    #
+                    # Read-only.
+              },
+              "shareMode": "A String", # Mechanism by which students access the Drive item.
+            },
+            "link": { # URL item. # Link material. On creation, will be upgraded to a more appropriate type
+                # if possible, and this will be reflected in the response.
+              "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.
+              "title": "A String", # Title of the target of the URL.
+                  #
+                  # Read-only.
+            },
+            "form": { # Google Forms item. # Google Forms material.
+              "formUrl": "A String", # URL of the form.
+              "thumbnailUrl": "A String", # URL of a thumbnail image of the Form.
+                  #
+                  # Read-only.
+              "responseUrl": "A String", # URL of the form responses document.
+                  # Only set if respsonses have been recorded and only when the
+                  # requesting user is an editor of the form.
+                  #
+                  # Read-only.
+              "title": "A String", # Title of the Form.
+                  #
+                  # Read-only.
+            },
+          },
+        ],
+        "individualStudentsOptions": { # Assignee details about a coursework/announcement. # Identifiers of students with access to the announcement.
+            # This field is set only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
+            # If the `assigneeMode` is `INDIVIDUAL_STUDENTS`, then only students
+            # specified in this field will be able to see the announcement.
+            # This field is set if and only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
+          "studentIds": [ # Identifiers for the students that have access to the
+              # coursework/announcement.
+            "A String",
+          ],
+        },
+        "id": "A String", # Classroom-assigned identifier of this announcement, unique per course.
+            #
+            # Read-only.
+      },
+    ],
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call 'execute()' on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+<div class="method">
+    <code class="details" id="modifyAssignees">modifyAssignees(courseId, id, body, x__xgafv=None)</code>
+  <pre>Modifies assignee mode and options of an announcement.
+
+Only a teacher of the course that contains the announcement may
+call this method.
+
+This method returns the following error codes:
+
+* `PERMISSION_DENIED` if the requesting user is not permitted to access the
+requested course or course work or for access errors.
+* `INVALID_ARGUMENT` if the request is malformed.
+* `NOT_FOUND` if the requested course or course work does not exist.
+
+Args:
+  courseId: string, Identifier of the course.
+This identifier can be either the Classroom-assigned identifier or an
+alias. (required)
+  id: string, Identifier of the announcement. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Request to modify assignee mode and options of an announcement.
+    "assigneeMode": "A String", # Mode of the announcement describing whether it will be accessible by all
+        # students or specified individual students.
+    "modifyIndividualStudentsOptions": { # Contains fields to add or remove students from a course work or announcement # Set which students can view or cannot view the announcement.
+        # Must be specified only when `assigneeMode` is `INDIVIDUAL_STUDENTS`.
+        # where the `assigneeMode` is set to `INDIVIDUAL_STUDENTS`.
+      "addStudentIds": [ # Ids of students to be added as having access to this
+          # coursework/announcement.
+        "A String",
+      ],
+      "removeStudentIds": [ # Ids of students to be removed from having access to this
+          # coursework/announcement.
+        "A String",
+      ],
+    },
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Announcement created by a teacher for students of the course
+    "updateTime": "A String", # Timestamp of the most recent change to this announcement.
+        #
+        # Read-only.
+    "scheduledTime": "A String", # Optional timestamp when this announcement is scheduled to be published.
+    "creatorUserId": "A String", # Identifier for the user that created the announcement.
+        #
+        # Read-only.
+    "courseId": "A String", # Identifier of the course.
+        #
+        # Read-only.
+    "text": "A String", # Description of this announcement.
+        # The text must be a valid UTF-8 string containing no more
+        # than 30,000 characters.
+    "alternateLink": "A String", # Absolute link to this announcement in the Classroom web UI.
+        # This is only populated if `state` is `PUBLISHED`.
+        #
+        # Read-only.
+    "creationTime": "A String", # Timestamp when this announcement was created.
+        #
+        # Read-only.
+    "assigneeMode": "A String", # Assignee mode of the announcement.
+        # If unspecified, the default value is `ALL_STUDENTS`.
+    "state": "A String", # Status of this announcement.
+        # If unspecified, the default state is `DRAFT`.
+    "materials": [ # Additional materials.
+        #
+        # Announcements must have no more than 20 material items.
+      { # Material attached to course work.
+          #
+          # When creating attachments, setting the `form` field is not supported.
+        "youtubeVideo": { # YouTube video item. # YouTube video material.
+          "alternateLink": "A String", # URL that can be used to view the YouTube video.
+              #
+              # Read-only.
+          "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.
+        },
+        "driveFile": { # Drive file that is used as material for course work. # Google Drive file material.
+          "driveFile": { # Representation of a Google Drive file. # Drive file details.
+            "thumbnailUrl": "A String", # URL of a thumbnail image of the Drive item.
+                #
+                # Read-only.
+            "alternateLink": "A String", # URL that can be used to access the Drive item.
+                #
+                # Read-only.
+            "id": "A String", # Drive API resource ID.
+            "title": "A String", # Title of the Drive item.
+                #
+                # Read-only.
+          },
+          "shareMode": "A String", # Mechanism by which students access the Drive item.
+        },
+        "link": { # URL item. # Link material. On creation, will be upgraded to a more appropriate type
+            # if possible, and this will be reflected in the response.
+          "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.
+          "title": "A String", # Title of the target of the URL.
+              #
+              # Read-only.
+        },
+        "form": { # Google Forms item. # Google Forms material.
+          "formUrl": "A String", # URL of the form.
+          "thumbnailUrl": "A String", # URL of a thumbnail image of the Form.
+              #
+              # Read-only.
+          "responseUrl": "A String", # URL of the form responses document.
+              # Only set if respsonses have been recorded and only when the
+              # requesting user is an editor of the form.
+              #
+              # Read-only.
+          "title": "A String", # Title of the Form.
+              #
+              # Read-only.
+        },
+      },
+    ],
+    "individualStudentsOptions": { # Assignee details about a coursework/announcement. # Identifiers of students with access to the announcement.
+        # This field is set only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
+        # If the `assigneeMode` is `INDIVIDUAL_STUDENTS`, then only students
+        # specified in this field will be able to see the announcement.
+        # This field is set if and only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
+      "studentIds": [ # Identifiers for the students that have access to the
+          # coursework/announcement.
+        "A String",
+      ],
+    },
+    "id": "A String", # Classroom-assigned identifier of this announcement, unique per course.
+        #
+        # Read-only.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="patch">patch(courseId, id, body, updateMask=None, x__xgafv=None)</code>
+  <pre>Updates one or more fields of an announcement.
+
+This method returns the following error codes:
+
+* `PERMISSION_DENIED` if the requesting developer project did not create
+the corresponding announcement or for access errors.
+* `INVALID_ARGUMENT` if the request is malformed.
+* `FAILED_PRECONDITION` if the requested announcement has already been
+deleted.
+* `NOT_FOUND` if the requested course or announcement does not exist
+
+Args:
+  courseId: string, Identifier of the course.
+This identifier can be either the Classroom-assigned identifier or an
+alias. (required)
+  id: string, Identifier of the announcement. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Announcement created by a teacher for students of the course
+  "updateTime": "A String", # Timestamp of the most recent change to this announcement.
+      # 
+      # Read-only.
+  "scheduledTime": "A String", # Optional timestamp when this announcement is scheduled to be published.
+  "creatorUserId": "A String", # Identifier for the user that created the announcement.
+      # 
+      # Read-only.
+  "courseId": "A String", # Identifier of the course.
+      # 
+      # Read-only.
+  "text": "A String", # Description of this announcement.
+      # The text must be a valid UTF-8 string containing no more
+      # than 30,000 characters.
+  "alternateLink": "A String", # Absolute link to this announcement in the Classroom web UI.
+      # This is only populated if `state` is `PUBLISHED`.
+      # 
+      # Read-only.
+  "creationTime": "A String", # Timestamp when this announcement was created.
+      # 
+      # Read-only.
+  "assigneeMode": "A String", # Assignee mode of the announcement.
+      # If unspecified, the default value is `ALL_STUDENTS`.
+  "state": "A String", # Status of this announcement.
+      # If unspecified, the default state is `DRAFT`.
+  "materials": [ # Additional materials.
+      # 
+      # Announcements must have no more than 20 material items.
+    { # Material attached to course work.
+        #
+        # When creating attachments, setting the `form` field is not supported.
+      "youtubeVideo": { # YouTube video item. # YouTube video material.
+        "alternateLink": "A String", # URL that can be used to view the YouTube video.
+            #
+            # Read-only.
+        "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.
+      },
+      "driveFile": { # Drive file that is used as material for course work. # Google Drive file material.
+        "driveFile": { # Representation of a Google Drive file. # Drive file details.
+          "thumbnailUrl": "A String", # URL of a thumbnail image of the Drive item.
+              #
+              # Read-only.
+          "alternateLink": "A String", # URL that can be used to access the Drive item.
+              #
+              # Read-only.
+          "id": "A String", # Drive API resource ID.
+          "title": "A String", # Title of the Drive item.
+              #
+              # Read-only.
+        },
+        "shareMode": "A String", # Mechanism by which students access the Drive item.
+      },
+      "link": { # URL item. # Link material. On creation, will be upgraded to a more appropriate type
+          # if possible, and this will be reflected in the response.
+        "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.
+        "title": "A String", # Title of the target of the URL.
+            #
+            # Read-only.
+      },
+      "form": { # Google Forms item. # Google Forms material.
+        "formUrl": "A String", # URL of the form.
+        "thumbnailUrl": "A String", # URL of a thumbnail image of the Form.
+            #
+            # Read-only.
+        "responseUrl": "A String", # URL of the form responses document.
+            # Only set if respsonses have been recorded and only when the
+            # requesting user is an editor of the form.
+            #
+            # Read-only.
+        "title": "A String", # Title of the Form.
+            #
+            # Read-only.
+      },
+    },
+  ],
+  "individualStudentsOptions": { # Assignee details about a coursework/announcement. # Identifiers of students with access to the announcement.
+      # This field is set only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
+      # If the `assigneeMode` is `INDIVIDUAL_STUDENTS`, then only students
+      # specified in this field will be able to see the announcement.
+      # This field is set if and only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
+    "studentIds": [ # Identifiers for the students that have access to the
+        # coursework/announcement.
+      "A String",
+    ],
+  },
+  "id": "A String", # Classroom-assigned identifier of this announcement, unique per course.
+      # 
+      # Read-only.
+}
+
+  updateMask: string, Mask that identifies which fields on the announcement to update.
+This field is required to do an update. The update fails if invalid
+fields are specified. If a field supports empty values, it can be cleared
+by specifying it in the update mask and not in the Announcement object. If
+a field that does not support empty values is included in the update mask
+and not set in the Announcement object, an `INVALID_ARGUMENT` error will be
+returned.
+
+The following fields may be specified by teachers:
+
+* `text`
+* `state`
+* `scheduled_time`
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Announcement created by a teacher for students of the course
+    "updateTime": "A String", # Timestamp of the most recent change to this announcement.
+        #
+        # Read-only.
+    "scheduledTime": "A String", # Optional timestamp when this announcement is scheduled to be published.
+    "creatorUserId": "A String", # Identifier for the user that created the announcement.
+        #
+        # Read-only.
+    "courseId": "A String", # Identifier of the course.
+        #
+        # Read-only.
+    "text": "A String", # Description of this announcement.
+        # The text must be a valid UTF-8 string containing no more
+        # than 30,000 characters.
+    "alternateLink": "A String", # Absolute link to this announcement in the Classroom web UI.
+        # This is only populated if `state` is `PUBLISHED`.
+        #
+        # Read-only.
+    "creationTime": "A String", # Timestamp when this announcement was created.
+        #
+        # Read-only.
+    "assigneeMode": "A String", # Assignee mode of the announcement.
+        # If unspecified, the default value is `ALL_STUDENTS`.
+    "state": "A String", # Status of this announcement.
+        # If unspecified, the default state is `DRAFT`.
+    "materials": [ # Additional materials.
+        #
+        # Announcements must have no more than 20 material items.
+      { # Material attached to course work.
+          #
+          # When creating attachments, setting the `form` field is not supported.
+        "youtubeVideo": { # YouTube video item. # YouTube video material.
+          "alternateLink": "A String", # URL that can be used to view the YouTube video.
+              #
+              # Read-only.
+          "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.
+        },
+        "driveFile": { # Drive file that is used as material for course work. # Google Drive file material.
+          "driveFile": { # Representation of a Google Drive file. # Drive file details.
+            "thumbnailUrl": "A String", # URL of a thumbnail image of the Drive item.
+                #
+                # Read-only.
+            "alternateLink": "A String", # URL that can be used to access the Drive item.
+                #
+                # Read-only.
+            "id": "A String", # Drive API resource ID.
+            "title": "A String", # Title of the Drive item.
+                #
+                # Read-only.
+          },
+          "shareMode": "A String", # Mechanism by which students access the Drive item.
+        },
+        "link": { # URL item. # Link material. On creation, will be upgraded to a more appropriate type
+            # if possible, and this will be reflected in the response.
+          "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.
+          "title": "A String", # Title of the target of the URL.
+              #
+              # Read-only.
+        },
+        "form": { # Google Forms item. # Google Forms material.
+          "formUrl": "A String", # URL of the form.
+          "thumbnailUrl": "A String", # URL of a thumbnail image of the Form.
+              #
+              # Read-only.
+          "responseUrl": "A String", # URL of the form responses document.
+              # Only set if respsonses have been recorded and only when the
+              # requesting user is an editor of the form.
+              #
+              # Read-only.
+          "title": "A String", # Title of the Form.
+              #
+              # Read-only.
+        },
+      },
+    ],
+    "individualStudentsOptions": { # Assignee details about a coursework/announcement. # Identifiers of students with access to the announcement.
+        # This field is set only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
+        # If the `assigneeMode` is `INDIVIDUAL_STUDENTS`, then only students
+        # specified in this field will be able to see the announcement.
+        # This field is set if and only if `assigneeMode` is `INDIVIDUAL_STUDENTS`.
+      "studentIds": [ # Identifiers for the students that have access to the
+          # coursework/announcement.
+        "A String",
+      ],
+    },
+    "id": "A String", # Classroom-assigned identifier of this announcement, unique per course.
+        #
+        # Read-only.
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file