Google Classroom API . courses . courseWorkMaterials . addOnAttachments

Instance Methods

close()

Close httplib2 connections.

create(courseId, itemId, addOnToken=None, body=None, postId=None, x__xgafv=None)

Creates an add-on attachment under a post. Requires the add-on to have permission to create new attachments on the post. This method returns the following error codes: * `PERMISSION_DENIED` for access errors. * `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if one of the identified resources does not exist.

delete(courseId, itemId, attachmentId, postId=None, x__xgafv=None)

Deletes an add-on attachment. Requires the add-on to have been the original creator of the attachment. This method returns the following error codes: * `PERMISSION_DENIED` for access errors. * `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if one of the identified resources does not exist.

get(courseId, itemId, attachmentId, postId=None, x__xgafv=None)

Returns an add-on attachment. Requires the add-on requesting the attachment to be the original creator of the attachment. This method returns the following error codes: * `PERMISSION_DENIED` for access errors. * `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if one of the identified resources does not exist.

list(courseId, itemId, pageSize=None, pageToken=None, postId=None, x__xgafv=None)

Returns all attachments created by an add-on under the post. Requires the add-on to have active attachments on the post or have permission to create new attachments on the post. This method returns the following error codes: * `PERMISSION_DENIED` for access errors. * `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if one of the identified resources does not exist.

list_next()

Retrieves the next page of results.

patch(courseId, itemId, attachmentId, body=None, postId=None, updateMask=None, x__xgafv=None)

Updates an add-on attachment. Requires the add-on to have been the original creator of the attachment. This method returns the following error codes: * `PERMISSION_DENIED` for access errors. * `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if one of the identified resources does not exist.

Method Details

close()
Close httplib2 connections.
create(courseId, itemId, addOnToken=None, body=None, postId=None, x__xgafv=None)
Creates an add-on attachment under a post. Requires the add-on to have permission to create new attachments on the post. This method returns the following error codes: * `PERMISSION_DENIED` for access errors. * `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if one of the identified resources does not exist.

Args:
  courseId: string, Required. Identifier of the course. (required)
  itemId: string, Identifier of the announcement, courseWork, or courseWorkMaterial under which to create the attachment. This field is required, but is not marked as such while we are migrating from post_id. (required)
  body: object, The request body.
    The object takes the form of:

{ # An add-on attachment on a post.
  "copyHistory": [ # Output only. Identifiers of attachments that were previous copies of this attachment. If the attachment was previously copied by virtue of its parent post being copied, this enumerates the identifiers of attachments that were its previous copies in ascending chronological order of copy.
    { # Identifier of a previous copy of a given attachment.
      "attachmentId": "A String", # Immutable. Identifier of the attachment.
      "courseId": "A String", # Immutable. Identifier of the course.
      "itemId": "A String", # Immutable. Identifier of the announcement, courseWork, or courseWorkMaterial under which the attachment is attached.
      "postId": "A String", # Immutable. Deprecated, use item_id instead.
    },
  ],
  "courseId": "A String", # Immutable. Identifier of the course.
  "dueDate": { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp # Date, in UTC, that work on this attachment is due. This must be specified if `due_time` is specified.
    "day": 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
    "month": 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
    "year": 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
  },
  "dueTime": { # Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`. # Time of day, in UTC, that work on this attachment is due. This must be specified if `due_date` is specified.
    "hours": 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
    "minutes": 42, # Minutes of hour of day. Must be from 0 to 59.
    "nanos": 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
    "seconds": 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
  },
  "id": "A String", # Immutable. Classroom-assigned identifier for this attachment, unique per post.
  "itemId": "A String", # Immutable. Identifier of the announcement, courseWork, or courseWorkMaterial under which the attachment is attached. Unique per course.
  "maxPoints": 3.14, # Maximum grade for this attachment. Can only be set if `studentWorkReviewUri` is set. Set to a non-zero value to indicate that the attachment supports grade passback. If set, this must be a non-negative integer value. When set to zero, the attachment will not support grade passback.
  "postId": "A String", # Immutable. Deprecated, use item_id instead.
  "studentViewUri": { # URI to be iframed after being populated with query parameters. # Required. URI to show the student view of the attachment. The URI will be opened in an iframe with the `courseId`, `postId`, and `attachmentId` query parameters set.
    "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
  },
  "studentWorkReviewUri": { # URI to be iframed after being populated with query parameters. # URI for the teacher to see student work on the attachment, if applicable. The URI will be opened in an iframe with the `courseId`, `postId`, `attachmentId`, and `submissionId` query parameters set. This is the same `submissionId` returned by google.classroom.AddOns.GetAddOnContext when a student views the attachment. If the URI is omitted or removed, `max_points` will also be discarded.
    "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
  },
  "teacherViewUri": { # URI to be iframed after being populated with query parameters. # Required. URI to show the teacher view of the attachment. The URI will be opened in an iframe with the `courseId`, `postId`, and `attachmentId` query parameters set.
    "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
  },
  "title": "A String", # Required. Title of this attachment. The title must be between 1 and 1000 characters.
}

  addOnToken: string, Optional. Token that authorizes the request. The token is passed as a query parameter when the user is redirected from Classroom to the add-on's URL. This authorization token is required for in-Classroom attachment creation but optional for partner-first attachment creation. Returns an error if not provided for partner-first attachment creation and the developer projects that created the attachment and its parent stream item do not match.
  postId: string, Optional. Deprecated, use item_id instead.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An add-on attachment on a post.
  "copyHistory": [ # Output only. Identifiers of attachments that were previous copies of this attachment. If the attachment was previously copied by virtue of its parent post being copied, this enumerates the identifiers of attachments that were its previous copies in ascending chronological order of copy.
    { # Identifier of a previous copy of a given attachment.
      "attachmentId": "A String", # Immutable. Identifier of the attachment.
      "courseId": "A String", # Immutable. Identifier of the course.
      "itemId": "A String", # Immutable. Identifier of the announcement, courseWork, or courseWorkMaterial under which the attachment is attached.
      "postId": "A String", # Immutable. Deprecated, use item_id instead.
    },
  ],
  "courseId": "A String", # Immutable. Identifier of the course.
  "dueDate": { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp # Date, in UTC, that work on this attachment is due. This must be specified if `due_time` is specified.
    "day": 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
    "month": 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
    "year": 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
  },
  "dueTime": { # Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`. # Time of day, in UTC, that work on this attachment is due. This must be specified if `due_date` is specified.
    "hours": 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
    "minutes": 42, # Minutes of hour of day. Must be from 0 to 59.
    "nanos": 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
    "seconds": 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
  },
  "id": "A String", # Immutable. Classroom-assigned identifier for this attachment, unique per post.
  "itemId": "A String", # Immutable. Identifier of the announcement, courseWork, or courseWorkMaterial under which the attachment is attached. Unique per course.
  "maxPoints": 3.14, # Maximum grade for this attachment. Can only be set if `studentWorkReviewUri` is set. Set to a non-zero value to indicate that the attachment supports grade passback. If set, this must be a non-negative integer value. When set to zero, the attachment will not support grade passback.
  "postId": "A String", # Immutable. Deprecated, use item_id instead.
  "studentViewUri": { # URI to be iframed after being populated with query parameters. # Required. URI to show the student view of the attachment. The URI will be opened in an iframe with the `courseId`, `postId`, and `attachmentId` query parameters set.
    "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
  },
  "studentWorkReviewUri": { # URI to be iframed after being populated with query parameters. # URI for the teacher to see student work on the attachment, if applicable. The URI will be opened in an iframe with the `courseId`, `postId`, `attachmentId`, and `submissionId` query parameters set. This is the same `submissionId` returned by google.classroom.AddOns.GetAddOnContext when a student views the attachment. If the URI is omitted or removed, `max_points` will also be discarded.
    "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
  },
  "teacherViewUri": { # URI to be iframed after being populated with query parameters. # Required. URI to show the teacher view of the attachment. The URI will be opened in an iframe with the `courseId`, `postId`, and `attachmentId` query parameters set.
    "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
  },
  "title": "A String", # Required. Title of this attachment. The title must be between 1 and 1000 characters.
}
delete(courseId, itemId, attachmentId, postId=None, x__xgafv=None)
Deletes an add-on attachment. Requires the add-on to have been the original creator of the attachment. This method returns the following error codes: * `PERMISSION_DENIED` for access errors. * `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if one of the identified resources does not exist.

Args:
  courseId: string, Required. Identifier of the course. (required)
  itemId: string, Identifier of the announcement, courseWork, or courseWorkMaterial under which the attachment is attached. This field is required, but is not marked as such while we are migrating from post_id. (required)
  attachmentId: string, Required. Identifier of the attachment. (required)
  postId: string, Optional. Deprecated, use item_id instead.
  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); }
}
get(courseId, itemId, attachmentId, postId=None, x__xgafv=None)
Returns an add-on attachment. Requires the add-on requesting the attachment to be the original creator of the attachment. This method returns the following error codes: * `PERMISSION_DENIED` for access errors. * `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if one of the identified resources does not exist.

Args:
  courseId: string, Required. Identifier of the course. (required)
  itemId: string, Identifier of the announcement, courseWork, or courseWorkMaterial under which the attachment is attached. This field is required, but is not marked as such while we are migrating from post_id. (required)
  attachmentId: string, Required. Identifier of the attachment. (required)
  postId: string, Optional. Deprecated, use item_id instead.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An add-on attachment on a post.
  "copyHistory": [ # Output only. Identifiers of attachments that were previous copies of this attachment. If the attachment was previously copied by virtue of its parent post being copied, this enumerates the identifiers of attachments that were its previous copies in ascending chronological order of copy.
    { # Identifier of a previous copy of a given attachment.
      "attachmentId": "A String", # Immutable. Identifier of the attachment.
      "courseId": "A String", # Immutable. Identifier of the course.
      "itemId": "A String", # Immutable. Identifier of the announcement, courseWork, or courseWorkMaterial under which the attachment is attached.
      "postId": "A String", # Immutable. Deprecated, use item_id instead.
    },
  ],
  "courseId": "A String", # Immutable. Identifier of the course.
  "dueDate": { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp # Date, in UTC, that work on this attachment is due. This must be specified if `due_time` is specified.
    "day": 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
    "month": 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
    "year": 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
  },
  "dueTime": { # Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`. # Time of day, in UTC, that work on this attachment is due. This must be specified if `due_date` is specified.
    "hours": 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
    "minutes": 42, # Minutes of hour of day. Must be from 0 to 59.
    "nanos": 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
    "seconds": 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
  },
  "id": "A String", # Immutable. Classroom-assigned identifier for this attachment, unique per post.
  "itemId": "A String", # Immutable. Identifier of the announcement, courseWork, or courseWorkMaterial under which the attachment is attached. Unique per course.
  "maxPoints": 3.14, # Maximum grade for this attachment. Can only be set if `studentWorkReviewUri` is set. Set to a non-zero value to indicate that the attachment supports grade passback. If set, this must be a non-negative integer value. When set to zero, the attachment will not support grade passback.
  "postId": "A String", # Immutable. Deprecated, use item_id instead.
  "studentViewUri": { # URI to be iframed after being populated with query parameters. # Required. URI to show the student view of the attachment. The URI will be opened in an iframe with the `courseId`, `postId`, and `attachmentId` query parameters set.
    "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
  },
  "studentWorkReviewUri": { # URI to be iframed after being populated with query parameters. # URI for the teacher to see student work on the attachment, if applicable. The URI will be opened in an iframe with the `courseId`, `postId`, `attachmentId`, and `submissionId` query parameters set. This is the same `submissionId` returned by google.classroom.AddOns.GetAddOnContext when a student views the attachment. If the URI is omitted or removed, `max_points` will also be discarded.
    "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
  },
  "teacherViewUri": { # URI to be iframed after being populated with query parameters. # Required. URI to show the teacher view of the attachment. The URI will be opened in an iframe with the `courseId`, `postId`, and `attachmentId` query parameters set.
    "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
  },
  "title": "A String", # Required. Title of this attachment. The title must be between 1 and 1000 characters.
}
list(courseId, itemId, pageSize=None, pageToken=None, postId=None, x__xgafv=None)
Returns all attachments created by an add-on under the post. Requires the add-on to have active attachments on the post or have permission to create new attachments on the post. This method returns the following error codes: * `PERMISSION_DENIED` for access errors. * `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if one of the identified resources does not exist.

Args:
  courseId: string, Required. Identifier of the course. (required)
  itemId: string, Identifier of the announcement, courseWork, or courseWorkMaterial whose attachments should be enumerated. This field is required, but is not marked as such while we are migrating from post_id. (required)
  pageSize: integer, The maximum number of attachments to return. The service may return fewer than this value. If unspecified, at most 20 attachments will be returned. The maximum value is 20; values above 20 will be coerced to 20.
  pageToken: string, A page token, received from a previous `ListAddOnAttachments` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListAddOnAttachments` must match the call that provided the page token.
  postId: string, Optional. Identifier of the post under the course whose attachments to enumerate. Deprecated, use item_id instead.
  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 add-on attachments.
  "addOnAttachments": [ # Attachments under the given post.
    { # An add-on attachment on a post.
      "copyHistory": [ # Output only. Identifiers of attachments that were previous copies of this attachment. If the attachment was previously copied by virtue of its parent post being copied, this enumerates the identifiers of attachments that were its previous copies in ascending chronological order of copy.
        { # Identifier of a previous copy of a given attachment.
          "attachmentId": "A String", # Immutable. Identifier of the attachment.
          "courseId": "A String", # Immutable. Identifier of the course.
          "itemId": "A String", # Immutable. Identifier of the announcement, courseWork, or courseWorkMaterial under which the attachment is attached.
          "postId": "A String", # Immutable. Deprecated, use item_id instead.
        },
      ],
      "courseId": "A String", # Immutable. Identifier of the course.
      "dueDate": { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp # Date, in UTC, that work on this attachment is due. This must be specified if `due_time` is specified.
        "day": 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
        "month": 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
        "year": 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
      },
      "dueTime": { # Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`. # Time of day, in UTC, that work on this attachment is due. This must be specified if `due_date` is specified.
        "hours": 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
        "minutes": 42, # Minutes of hour of day. Must be from 0 to 59.
        "nanos": 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
        "seconds": 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
      },
      "id": "A String", # Immutable. Classroom-assigned identifier for this attachment, unique per post.
      "itemId": "A String", # Immutable. Identifier of the announcement, courseWork, or courseWorkMaterial under which the attachment is attached. Unique per course.
      "maxPoints": 3.14, # Maximum grade for this attachment. Can only be set if `studentWorkReviewUri` is set. Set to a non-zero value to indicate that the attachment supports grade passback. If set, this must be a non-negative integer value. When set to zero, the attachment will not support grade passback.
      "postId": "A String", # Immutable. Deprecated, use item_id instead.
      "studentViewUri": { # URI to be iframed after being populated with query parameters. # Required. URI to show the student view of the attachment. The URI will be opened in an iframe with the `courseId`, `postId`, and `attachmentId` query parameters set.
        "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
      },
      "studentWorkReviewUri": { # URI to be iframed after being populated with query parameters. # URI for the teacher to see student work on the attachment, if applicable. The URI will be opened in an iframe with the `courseId`, `postId`, `attachmentId`, and `submissionId` query parameters set. This is the same `submissionId` returned by google.classroom.AddOns.GetAddOnContext when a student views the attachment. If the URI is omitted or removed, `max_points` will also be discarded.
        "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
      },
      "teacherViewUri": { # URI to be iframed after being populated with query parameters. # Required. URI to show the teacher view of the attachment. The URI will be opened in an iframe with the `courseId`, `postId`, and `attachmentId` query parameters set.
        "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
      },
      "title": "A String", # Required. Title of this attachment. The title must be between 1 and 1000 characters.
    },
  ],
  "nextPageToken": "A String", # A token, which can be sent as `pageToken` to retrieve the next page. If this field is omitted, there are no subsequent pages.
}
list_next()
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.
        
patch(courseId, itemId, attachmentId, body=None, postId=None, updateMask=None, x__xgafv=None)
Updates an add-on attachment. Requires the add-on to have been the original creator of the attachment. This method returns the following error codes: * `PERMISSION_DENIED` for access errors. * `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if one of the identified resources does not exist.

Args:
  courseId: string, Required. Identifier of the course. (required)
  itemId: string, Identifier of the post under which the attachment is attached. (required)
  attachmentId: string, Required. Identifier of the attachment. (required)
  body: object, The request body.
    The object takes the form of:

{ # An add-on attachment on a post.
  "copyHistory": [ # Output only. Identifiers of attachments that were previous copies of this attachment. If the attachment was previously copied by virtue of its parent post being copied, this enumerates the identifiers of attachments that were its previous copies in ascending chronological order of copy.
    { # Identifier of a previous copy of a given attachment.
      "attachmentId": "A String", # Immutable. Identifier of the attachment.
      "courseId": "A String", # Immutable. Identifier of the course.
      "itemId": "A String", # Immutable. Identifier of the announcement, courseWork, or courseWorkMaterial under which the attachment is attached.
      "postId": "A String", # Immutable. Deprecated, use item_id instead.
    },
  ],
  "courseId": "A String", # Immutable. Identifier of the course.
  "dueDate": { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp # Date, in UTC, that work on this attachment is due. This must be specified if `due_time` is specified.
    "day": 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
    "month": 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
    "year": 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
  },
  "dueTime": { # Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`. # Time of day, in UTC, that work on this attachment is due. This must be specified if `due_date` is specified.
    "hours": 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
    "minutes": 42, # Minutes of hour of day. Must be from 0 to 59.
    "nanos": 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
    "seconds": 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
  },
  "id": "A String", # Immutable. Classroom-assigned identifier for this attachment, unique per post.
  "itemId": "A String", # Immutable. Identifier of the announcement, courseWork, or courseWorkMaterial under which the attachment is attached. Unique per course.
  "maxPoints": 3.14, # Maximum grade for this attachment. Can only be set if `studentWorkReviewUri` is set. Set to a non-zero value to indicate that the attachment supports grade passback. If set, this must be a non-negative integer value. When set to zero, the attachment will not support grade passback.
  "postId": "A String", # Immutable. Deprecated, use item_id instead.
  "studentViewUri": { # URI to be iframed after being populated with query parameters. # Required. URI to show the student view of the attachment. The URI will be opened in an iframe with the `courseId`, `postId`, and `attachmentId` query parameters set.
    "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
  },
  "studentWorkReviewUri": { # URI to be iframed after being populated with query parameters. # URI for the teacher to see student work on the attachment, if applicable. The URI will be opened in an iframe with the `courseId`, `postId`, `attachmentId`, and `submissionId` query parameters set. This is the same `submissionId` returned by google.classroom.AddOns.GetAddOnContext when a student views the attachment. If the URI is omitted or removed, `max_points` will also be discarded.
    "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
  },
  "teacherViewUri": { # URI to be iframed after being populated with query parameters. # Required. URI to show the teacher view of the attachment. The URI will be opened in an iframe with the `courseId`, `postId`, and `attachmentId` query parameters set.
    "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
  },
  "title": "A String", # Required. Title of this attachment. The title must be between 1 and 1000 characters.
}

  postId: string, Required. Identifier of the post under which the attachment is attached.
  updateMask: string, Required. Mask that identifies which fields on the attachment to 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 `AddOnAttachment` object. If a field that does not support empty values is included in the update mask and not set in the `AddOnAttachment` object, an `INVALID_ARGUMENT` error is returned. The following fields may be specified by teachers: * `title` * `teacher_view_uri` * `student_view_uri` * `student_work_review_uri` * `due_date` * `due_time` * `max_points`
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An add-on attachment on a post.
  "copyHistory": [ # Output only. Identifiers of attachments that were previous copies of this attachment. If the attachment was previously copied by virtue of its parent post being copied, this enumerates the identifiers of attachments that were its previous copies in ascending chronological order of copy.
    { # Identifier of a previous copy of a given attachment.
      "attachmentId": "A String", # Immutable. Identifier of the attachment.
      "courseId": "A String", # Immutable. Identifier of the course.
      "itemId": "A String", # Immutable. Identifier of the announcement, courseWork, or courseWorkMaterial under which the attachment is attached.
      "postId": "A String", # Immutable. Deprecated, use item_id instead.
    },
  ],
  "courseId": "A String", # Immutable. Identifier of the course.
  "dueDate": { # Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp # Date, in UTC, that work on this attachment is due. This must be specified if `due_time` is specified.
    "day": 42, # Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.
    "month": 42, # Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.
    "year": 42, # Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.
  },
  "dueTime": { # Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`. # Time of day, in UTC, that work on this attachment is due. This must be specified if `due_date` is specified.
    "hours": 42, # Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value "24:00:00" for scenarios like business closing time.
    "minutes": 42, # Minutes of hour of day. Must be from 0 to 59.
    "nanos": 42, # Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
    "seconds": 42, # Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
  },
  "id": "A String", # Immutable. Classroom-assigned identifier for this attachment, unique per post.
  "itemId": "A String", # Immutable. Identifier of the announcement, courseWork, or courseWorkMaterial under which the attachment is attached. Unique per course.
  "maxPoints": 3.14, # Maximum grade for this attachment. Can only be set if `studentWorkReviewUri` is set. Set to a non-zero value to indicate that the attachment supports grade passback. If set, this must be a non-negative integer value. When set to zero, the attachment will not support grade passback.
  "postId": "A String", # Immutable. Deprecated, use item_id instead.
  "studentViewUri": { # URI to be iframed after being populated with query parameters. # Required. URI to show the student view of the attachment. The URI will be opened in an iframe with the `courseId`, `postId`, and `attachmentId` query parameters set.
    "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
  },
  "studentWorkReviewUri": { # URI to be iframed after being populated with query parameters. # URI for the teacher to see student work on the attachment, if applicable. The URI will be opened in an iframe with the `courseId`, `postId`, `attachmentId`, and `submissionId` query parameters set. This is the same `submissionId` returned by google.classroom.AddOns.GetAddOnContext when a student views the attachment. If the URI is omitted or removed, `max_points` will also be discarded.
    "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
  },
  "teacherViewUri": { # URI to be iframed after being populated with query parameters. # Required. URI to show the teacher view of the attachment. The URI will be opened in an iframe with the `courseId`, `postId`, and `attachmentId` query parameters set.
    "uri": "A String", # Required. URI to be iframed after being populated with query parameters. This must be a valid UTF-8 string containing between 1 and 1800 characters.
  },
  "title": "A String", # Required. Title of this attachment. The title must be between 1 and 1000 characters.
}