<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="plusDomains_v1.html">Google+ Domains API</a> . <a href="plusDomains_v1.media.html">media</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#insert">insert(userId, collection, body=None, media_body=None, media_mime_type=None)</a></code></p>
<p class="firstline">Add a new media item to an album. The current upload size limitations are 36MB for a photo and 1GB for a video. Uploads do not count against quota if photos are less than 2048 pixels on their longest side or videos are less than 15 minutes in length.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="insert">insert(userId, collection, body=None, media_body=None, media_mime_type=None)</code>
  <pre>Add a new media item to an album. The current upload size limitations are 36MB for a photo and 1GB for a video. Uploads do not count against quota if photos are less than 2048 pixels on their longest side or videos are less than 15 minutes in length.

Args:
  userId: string, The ID of the user to create the activity on behalf of. (required)
  collection: string, A parameter (required)
    Allowed values
      cloud - Upload the media to share on Google+.
  body: object, The request body.
    The object takes the form of:

{
    "kind": "plus#media", # The type of resource.
    "displayName": "A String", # The display name for this media.
    "exif": { # Exif information of the media item.
      "time": "A String", # The time the media was captured. Formatted as an RFC 3339 timestamp.
    },
    "author": { # The person who uploaded this media.
      "url": "A String", # A link to the author's Google profile.
      "image": { # The author's Google profile image.
        "url": "A String", # The URL of the author's profile photo. To resize the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
      },
      "displayName": "A String", # The author's name.
      "id": "A String", # ID of the author.
    },
    "url": "A String", # The URL for the page that hosts this media.
    "mediaUrl": "A String", # The URL of this photo or video's still image.
    "videoStatus": "A String", # The encoding status of this video. Possible values are:
        # - "UPLOADING" - Not all the video bytes have been received.
        # - "PENDING" - Video not yet processed.
        # - "FAILED" - Video processing failed.
        # - "READY" - A single video stream is playable.
        # - "FINAL" - All video streams are playable.
    "updated": "A String", # The time at which this media was last updated. This includes changes to media metadata. Formatted as an RFC 3339 timestamp.
    "summary": "A String", # A description, or caption, for this media.
    "height": 42, # The height in pixels of the original image.
    "videoDuration": "A String", # The duration in milliseconds of this video.
    "sizeBytes": "A String", # The size in bytes of this video.
    "etag": "A String", # ETag of this response for caching purposes.
    "streams": [ # The list of video streams for this video. There might be several different streams available for a single video, either Flash or MPEG, of various sizes
      {
        "url": "A String", # URL of the video stream.
        "width": 42, # The width, in pixels, of the video resource.
        "type": "A String", # MIME type of the video stream.
        "height": 42, # The height, in pixels, of the video resource.
      },
    ],
    "width": 42, # The width in pixels of the original image.
    "published": "A String", # The time at which this media was uploaded. Formatted as an RFC 3339 timestamp.
    "mediaCreatedTime": "A String", # The time at which this media was originally created in UTC. Formatted as an RFC 3339 timestamp that matches this example: 2010-11-25T14:30:27.655Z
    "id": "A String", # ID of this media, which is generated by the API.
  }

  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.

Returns:
  An object of the form:

    {
      "kind": "plus#media", # The type of resource.
      "displayName": "A String", # The display name for this media.
      "exif": { # Exif information of the media item.
        "time": "A String", # The time the media was captured. Formatted as an RFC 3339 timestamp.
      },
      "author": { # The person who uploaded this media.
        "url": "A String", # A link to the author's Google profile.
        "image": { # The author's Google profile image.
          "url": "A String", # The URL of the author's profile photo. To resize the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
        },
        "displayName": "A String", # The author's name.
        "id": "A String", # ID of the author.
      },
      "url": "A String", # The URL for the page that hosts this media.
      "mediaUrl": "A String", # The URL of this photo or video's still image.
      "videoStatus": "A String", # The encoding status of this video. Possible values are:
          # - "UPLOADING" - Not all the video bytes have been received.
          # - "PENDING" - Video not yet processed.
          # - "FAILED" - Video processing failed.
          # - "READY" - A single video stream is playable.
          # - "FINAL" - All video streams are playable.
      "updated": "A String", # The time at which this media was last updated. This includes changes to media metadata. Formatted as an RFC 3339 timestamp.
      "summary": "A String", # A description, or caption, for this media.
      "height": 42, # The height in pixels of the original image.
      "videoDuration": "A String", # The duration in milliseconds of this video.
      "sizeBytes": "A String", # The size in bytes of this video.
      "etag": "A String", # ETag of this response for caching purposes.
      "streams": [ # The list of video streams for this video. There might be several different streams available for a single video, either Flash or MPEG, of various sizes
        {
          "url": "A String", # URL of the video stream.
          "width": 42, # The width, in pixels, of the video resource.
          "type": "A String", # MIME type of the video stream.
          "height": 42, # The height, in pixels, of the video resource.
        },
      ],
      "width": 42, # The width in pixels of the original image.
      "published": "A String", # The time at which this media was uploaded. Formatted as an RFC 3339 timestamp.
      "mediaCreatedTime": "A String", # The time at which this media was originally created in UTC. Formatted as an RFC 3339 timestamp that matches this example: 2010-11-25T14:30:27.655Z
      "id": "A String", # ID of this media, which is generated by the API.
    }</pre>
</div>

</body></html>