<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="discovery_v1.html">API Discovery Service</a> . <a href="discovery_v1.apis.html">apis</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#getRest">getRest(api, version)</a></code></p>
<p class="firstline">Retrieve the description of a particular version of an api.</p>
<p class="toc_element">
  <code><a href="#list">list(name=None, preferred=None)</a></code></p>
<p class="firstline">Retrieve the list of APIs supported at this endpoint.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="getRest">getRest(api, version)</code>
  <pre>Retrieve the description of a particular version of an api.

Args:
  api: string, The name of the API. (required)
  version: string, The version of the API. (required)

Returns:
  An object of the form:

    {
  &quot;auth&quot;: { # Authentication information.
    &quot;oauth2&quot;: { # OAuth 2.0 authentication information.
      &quot;scopes&quot;: { # Available OAuth 2.0 scopes.
        &quot;a_key&quot;: { # The scope value.
          &quot;description&quot;: &quot;A String&quot;, # Description of scope.
        },
      },
    },
  },
  &quot;basePath&quot;: &quot;A String&quot;, # [DEPRECATED] The base path for REST requests.
  &quot;baseUrl&quot;: &quot;A String&quot;, # [DEPRECATED] The base URL for REST requests.
  &quot;batchPath&quot;: &quot;A String&quot;, # The path for REST batch requests.
  &quot;canonicalName&quot;: &quot;A String&quot;, # Indicates how the API name should be capitalized and split into various parts. Useful for generating pretty class names.
  &quot;description&quot;: &quot;A String&quot;, # The description of this API.
  &quot;discoveryVersion&quot;: &quot;v1&quot;, # Indicate the version of the Discovery API used to generate this doc.
  &quot;documentationLink&quot;: &quot;A String&quot;, # A link to human readable documentation for the API.
  &quot;etag&quot;: &quot;A String&quot;, # The ETag for this response.
  &quot;exponentialBackoffDefault&quot;: True or False, # Enable exponential backoff for suitable methods in the generated clients.
  &quot;features&quot;: [ # A list of supported features for this API.
    &quot;A String&quot;,
  ],
  &quot;icons&quot;: { # Links to 16x16 and 32x32 icons representing the API.
    &quot;x16&quot;: &quot;A String&quot;, # The URL of the 16x16 icon.
    &quot;x32&quot;: &quot;A String&quot;, # The URL of the 32x32 icon.
  },
  &quot;id&quot;: &quot;A String&quot;, # The ID of this API.
  &quot;kind&quot;: &quot;discovery#restDescription&quot;, # The kind for this response.
  &quot;labels&quot;: [ # Labels for the status of this API, such as labs or deprecated.
    &quot;A String&quot;,
  ],
  &quot;methods&quot;: { # API-level methods for this API.
    &quot;a_key&quot;: { # An individual method description.
      &quot;description&quot;: &quot;A String&quot;, # Description of this method.
      &quot;etagRequired&quot;: True or False, # Whether this method requires an ETag to be specified. The ETag is sent as an HTTP If-Match or If-None-Match header.
      &quot;httpMethod&quot;: &quot;A String&quot;, # HTTP method used by this method.
      &quot;id&quot;: &quot;A String&quot;, # A unique ID for this method. This property can be used to match methods between different versions of Discovery.
      &quot;mediaUpload&quot;: { # Media upload parameters.
        &quot;accept&quot;: [ # MIME Media Ranges for acceptable media uploads to this method.
          &quot;A String&quot;,
        ],
        &quot;maxSize&quot;: &quot;A String&quot;, # Maximum size of a media upload, such as &quot;1MB&quot;, &quot;2GB&quot; or &quot;3TB&quot;.
        &quot;protocols&quot;: { # Supported upload protocols.
          &quot;resumable&quot;: { # Supports the Resumable Media Upload protocol.
            &quot;multipart&quot;: true, # True if this endpoint supports uploading multipart media.
            &quot;path&quot;: &quot;A String&quot;, # The URI path to be used for upload. Should be used in conjunction with the basePath property at the api-level.
          },
          &quot;simple&quot;: { # Supports uploading as a single HTTP request.
            &quot;multipart&quot;: true, # True if this endpoint supports upload multipart media.
            &quot;path&quot;: &quot;A String&quot;, # The URI path to be used for upload. Should be used in conjunction with the basePath property at the api-level.
          },
        },
      },
      &quot;parameterOrder&quot;: [ # Ordered list of required parameters, serves as a hint to clients on how to structure their method signatures. The array is ordered such that the &quot;most-significant&quot; parameter appears first.
        &quot;A String&quot;,
      ],
      &quot;parameters&quot;: { # Details for all parameters in this method.
        &quot;a_key&quot;: { # Details for a single parameter in this method.
          &quot;$ref&quot;: &quot;A String&quot;, # A reference to another schema. The value of this property is the &quot;id&quot; of another schema.
          &quot;additionalProperties&quot;: # Object with schema name: JsonSchema # If this is a schema for an object, this property is the schema for any additional properties with dynamic keys on this object.
          &quot;annotations&quot;: { # Additional information about this property.
            &quot;required&quot;: [ # A list of methods for which this property is required on requests.
              &quot;A String&quot;,
            ],
          },
          &quot;default&quot;: &quot;A String&quot;, # The default value of this property (if one exists).
          &quot;description&quot;: &quot;A String&quot;, # A description of this object.
          &quot;enum&quot;: [ # Values this parameter may take (if it is an enum).
            &quot;A String&quot;,
          ],
          &quot;enumDescriptions&quot;: [ # The descriptions for the enums. Each position maps to the corresponding value in the &quot;enum&quot; array.
            &quot;A String&quot;,
          ],
          &quot;format&quot;: &quot;A String&quot;, # An additional regular expression or key that helps constrain the value. For more details see: http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.23
          &quot;id&quot;: &quot;A String&quot;, # Unique identifier for this schema.
          &quot;items&quot;: # Object with schema name: JsonSchema # If this is a schema for an array, this property is the schema for each element in the array.
          &quot;location&quot;: &quot;A String&quot;, # Whether this parameter goes in the query or the path for REST requests.
          &quot;maximum&quot;: &quot;A String&quot;, # The maximum value of this parameter.
          &quot;minimum&quot;: &quot;A String&quot;, # The minimum value of this parameter.
          &quot;pattern&quot;: &quot;A String&quot;, # The regular expression this parameter must conform to. Uses Java 6 regex format: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
          &quot;properties&quot;: { # If this is a schema for an object, list the schema for each property of this object.
            &quot;a_key&quot;: # Object with schema name: JsonSchema # A single property of this object. The value is itself a JSON Schema object describing this property.
          },
          &quot;readOnly&quot;: True or False, # The value is read-only, generated by the service. The value cannot be modified by the client. If the value is included in a POST, PUT, or PATCH request, it is ignored by the service.
          &quot;repeated&quot;: True or False, # Whether this parameter may appear multiple times.
          &quot;required&quot;: True or False, # Whether the parameter is required.
          &quot;type&quot;: &quot;A String&quot;, # The value type for this schema. A list of values can be found here: http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1
          &quot;variant&quot;: { # In a variant data type, the value of one property is used to determine how to interpret the entire entity. Its value must exist in a map of descriminant values to schema names.
            &quot;discriminant&quot;: &quot;A String&quot;, # The name of the type discriminant property.
            &quot;map&quot;: [ # The map of discriminant value to schema to use for parsing..
              {
                &quot;$ref&quot;: &quot;A String&quot;,
                &quot;type_value&quot;: &quot;A String&quot;,
              },
            ],
          },
        },
      },
      &quot;path&quot;: &quot;A String&quot;, # The URI path of this REST method. Should be used in conjunction with the basePath property at the api-level.
      &quot;request&quot;: { # The schema for the request.
        &quot;$ref&quot;: &quot;A String&quot;, # Schema ID for the request schema.
        &quot;parameterName&quot;: &quot;A String&quot;, # parameter name.
      },
      &quot;response&quot;: { # The schema for the response.
        &quot;$ref&quot;: &quot;A String&quot;, # Schema ID for the response schema.
      },
      &quot;scopes&quot;: [ # OAuth 2.0 scopes applicable to this method.
        &quot;A String&quot;,
      ],
      &quot;supportsMediaDownload&quot;: True or False, # Whether this method supports media downloads.
      &quot;supportsMediaUpload&quot;: True or False, # Whether this method supports media uploads.
      &quot;supportsSubscription&quot;: True or False, # Whether this method supports subscriptions.
      &quot;useMediaDownloadService&quot;: True or False, # Indicates that downloads from this method should use the download service URL (i.e. &quot;/download&quot;). Only applies if the method supports media download.
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The name of this API.
  &quot;ownerDomain&quot;: &quot;A String&quot;, # The domain of the owner of this API. Together with the ownerName and a packagePath values, this can be used to generate a library for this API which would have a unique fully qualified name.
  &quot;ownerName&quot;: &quot;A String&quot;, # The name of the owner of this API. See ownerDomain.
  &quot;packagePath&quot;: &quot;A String&quot;, # The package of the owner of this API. See ownerDomain.
  &quot;parameters&quot;: { # Common parameters that apply across all apis.
    &quot;a_key&quot;: { # Description of a single parameter.
      &quot;$ref&quot;: &quot;A String&quot;, # A reference to another schema. The value of this property is the &quot;id&quot; of another schema.
      &quot;additionalProperties&quot;: # Object with schema name: JsonSchema # If this is a schema for an object, this property is the schema for any additional properties with dynamic keys on this object.
      &quot;annotations&quot;: { # Additional information about this property.
        &quot;required&quot;: [ # A list of methods for which this property is required on requests.
          &quot;A String&quot;,
        ],
      },
      &quot;default&quot;: &quot;A String&quot;, # The default value of this property (if one exists).
      &quot;description&quot;: &quot;A String&quot;, # A description of this object.
      &quot;enum&quot;: [ # Values this parameter may take (if it is an enum).
        &quot;A String&quot;,
      ],
      &quot;enumDescriptions&quot;: [ # The descriptions for the enums. Each position maps to the corresponding value in the &quot;enum&quot; array.
        &quot;A String&quot;,
      ],
      &quot;format&quot;: &quot;A String&quot;, # An additional regular expression or key that helps constrain the value. For more details see: http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.23
      &quot;id&quot;: &quot;A String&quot;, # Unique identifier for this schema.
      &quot;items&quot;: # Object with schema name: JsonSchema # If this is a schema for an array, this property is the schema for each element in the array.
      &quot;location&quot;: &quot;A String&quot;, # Whether this parameter goes in the query or the path for REST requests.
      &quot;maximum&quot;: &quot;A String&quot;, # The maximum value of this parameter.
      &quot;minimum&quot;: &quot;A String&quot;, # The minimum value of this parameter.
      &quot;pattern&quot;: &quot;A String&quot;, # The regular expression this parameter must conform to. Uses Java 6 regex format: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
      &quot;properties&quot;: { # If this is a schema for an object, list the schema for each property of this object.
        &quot;a_key&quot;: # Object with schema name: JsonSchema # A single property of this object. The value is itself a JSON Schema object describing this property.
      },
      &quot;readOnly&quot;: True or False, # The value is read-only, generated by the service. The value cannot be modified by the client. If the value is included in a POST, PUT, or PATCH request, it is ignored by the service.
      &quot;repeated&quot;: True or False, # Whether this parameter may appear multiple times.
      &quot;required&quot;: True or False, # Whether the parameter is required.
      &quot;type&quot;: &quot;A String&quot;, # The value type for this schema. A list of values can be found here: http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1
      &quot;variant&quot;: { # In a variant data type, the value of one property is used to determine how to interpret the entire entity. Its value must exist in a map of descriminant values to schema names.
        &quot;discriminant&quot;: &quot;A String&quot;, # The name of the type discriminant property.
        &quot;map&quot;: [ # The map of discriminant value to schema to use for parsing..
          {
            &quot;$ref&quot;: &quot;A String&quot;,
            &quot;type_value&quot;: &quot;A String&quot;,
          },
        ],
      },
    },
  },
  &quot;protocol&quot;: &quot;rest&quot;, # The protocol described by this document.
  &quot;resources&quot;: { # The resources in this API.
    &quot;a_key&quot;: { # An individual resource description. Contains methods and sub-resources related to this resource.
      &quot;methods&quot;: { # Methods on this resource.
        &quot;a_key&quot;: { # Description for any methods on this resource.
          &quot;description&quot;: &quot;A String&quot;, # Description of this method.
          &quot;etagRequired&quot;: True or False, # Whether this method requires an ETag to be specified. The ETag is sent as an HTTP If-Match or If-None-Match header.
          &quot;httpMethod&quot;: &quot;A String&quot;, # HTTP method used by this method.
          &quot;id&quot;: &quot;A String&quot;, # A unique ID for this method. This property can be used to match methods between different versions of Discovery.
          &quot;mediaUpload&quot;: { # Media upload parameters.
            &quot;accept&quot;: [ # MIME Media Ranges for acceptable media uploads to this method.
              &quot;A String&quot;,
            ],
            &quot;maxSize&quot;: &quot;A String&quot;, # Maximum size of a media upload, such as &quot;1MB&quot;, &quot;2GB&quot; or &quot;3TB&quot;.
            &quot;protocols&quot;: { # Supported upload protocols.
              &quot;resumable&quot;: { # Supports the Resumable Media Upload protocol.
                &quot;multipart&quot;: true, # True if this endpoint supports uploading multipart media.
                &quot;path&quot;: &quot;A String&quot;, # The URI path to be used for upload. Should be used in conjunction with the basePath property at the api-level.
              },
              &quot;simple&quot;: { # Supports uploading as a single HTTP request.
                &quot;multipart&quot;: true, # True if this endpoint supports upload multipart media.
                &quot;path&quot;: &quot;A String&quot;, # The URI path to be used for upload. Should be used in conjunction with the basePath property at the api-level.
              },
            },
          },
          &quot;parameterOrder&quot;: [ # Ordered list of required parameters, serves as a hint to clients on how to structure their method signatures. The array is ordered such that the &quot;most-significant&quot; parameter appears first.
            &quot;A String&quot;,
          ],
          &quot;parameters&quot;: { # Details for all parameters in this method.
            &quot;a_key&quot;: { # Details for a single parameter in this method.
              &quot;$ref&quot;: &quot;A String&quot;, # A reference to another schema. The value of this property is the &quot;id&quot; of another schema.
              &quot;additionalProperties&quot;: # Object with schema name: JsonSchema # If this is a schema for an object, this property is the schema for any additional properties with dynamic keys on this object.
              &quot;annotations&quot;: { # Additional information about this property.
                &quot;required&quot;: [ # A list of methods for which this property is required on requests.
                  &quot;A String&quot;,
                ],
              },
              &quot;default&quot;: &quot;A String&quot;, # The default value of this property (if one exists).
              &quot;description&quot;: &quot;A String&quot;, # A description of this object.
              &quot;enum&quot;: [ # Values this parameter may take (if it is an enum).
                &quot;A String&quot;,
              ],
              &quot;enumDescriptions&quot;: [ # The descriptions for the enums. Each position maps to the corresponding value in the &quot;enum&quot; array.
                &quot;A String&quot;,
              ],
              &quot;format&quot;: &quot;A String&quot;, # An additional regular expression or key that helps constrain the value. For more details see: http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.23
              &quot;id&quot;: &quot;A String&quot;, # Unique identifier for this schema.
              &quot;items&quot;: # Object with schema name: JsonSchema # If this is a schema for an array, this property is the schema for each element in the array.
              &quot;location&quot;: &quot;A String&quot;, # Whether this parameter goes in the query or the path for REST requests.
              &quot;maximum&quot;: &quot;A String&quot;, # The maximum value of this parameter.
              &quot;minimum&quot;: &quot;A String&quot;, # The minimum value of this parameter.
              &quot;pattern&quot;: &quot;A String&quot;, # The regular expression this parameter must conform to. Uses Java 6 regex format: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
              &quot;properties&quot;: { # If this is a schema for an object, list the schema for each property of this object.
                &quot;a_key&quot;: # Object with schema name: JsonSchema # A single property of this object. The value is itself a JSON Schema object describing this property.
              },
              &quot;readOnly&quot;: True or False, # The value is read-only, generated by the service. The value cannot be modified by the client. If the value is included in a POST, PUT, or PATCH request, it is ignored by the service.
              &quot;repeated&quot;: True or False, # Whether this parameter may appear multiple times.
              &quot;required&quot;: True or False, # Whether the parameter is required.
              &quot;type&quot;: &quot;A String&quot;, # The value type for this schema. A list of values can be found here: http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1
              &quot;variant&quot;: { # In a variant data type, the value of one property is used to determine how to interpret the entire entity. Its value must exist in a map of descriminant values to schema names.
                &quot;discriminant&quot;: &quot;A String&quot;, # The name of the type discriminant property.
                &quot;map&quot;: [ # The map of discriminant value to schema to use for parsing..
                  {
                    &quot;$ref&quot;: &quot;A String&quot;,
                    &quot;type_value&quot;: &quot;A String&quot;,
                  },
                ],
              },
            },
          },
          &quot;path&quot;: &quot;A String&quot;, # The URI path of this REST method. Should be used in conjunction with the basePath property at the api-level.
          &quot;request&quot;: { # The schema for the request.
            &quot;$ref&quot;: &quot;A String&quot;, # Schema ID for the request schema.
            &quot;parameterName&quot;: &quot;A String&quot;, # parameter name.
          },
          &quot;response&quot;: { # The schema for the response.
            &quot;$ref&quot;: &quot;A String&quot;, # Schema ID for the response schema.
          },
          &quot;scopes&quot;: [ # OAuth 2.0 scopes applicable to this method.
            &quot;A String&quot;,
          ],
          &quot;supportsMediaDownload&quot;: True or False, # Whether this method supports media downloads.
          &quot;supportsMediaUpload&quot;: True or False, # Whether this method supports media uploads.
          &quot;supportsSubscription&quot;: True or False, # Whether this method supports subscriptions.
          &quot;useMediaDownloadService&quot;: True or False, # Indicates that downloads from this method should use the download service URL (i.e. &quot;/download&quot;). Only applies if the method supports media download.
        },
      },
      &quot;resources&quot;: { # Sub-resources on this resource.
        &quot;a_key&quot;: # Object with schema name: RestResource # Description for any sub-resources on this resource.
      },
    },
  },
  &quot;revision&quot;: &quot;A String&quot;, # The version of this API.
  &quot;rootUrl&quot;: &quot;A String&quot;, # The root URL under which all API services live.
  &quot;schemas&quot;: { # The schemas for this API.
    &quot;a_key&quot;: { # An individual schema description.
      &quot;$ref&quot;: &quot;A String&quot;, # A reference to another schema. The value of this property is the &quot;id&quot; of another schema.
      &quot;additionalProperties&quot;: # Object with schema name: JsonSchema # If this is a schema for an object, this property is the schema for any additional properties with dynamic keys on this object.
      &quot;annotations&quot;: { # Additional information about this property.
        &quot;required&quot;: [ # A list of methods for which this property is required on requests.
          &quot;A String&quot;,
        ],
      },
      &quot;default&quot;: &quot;A String&quot;, # The default value of this property (if one exists).
      &quot;description&quot;: &quot;A String&quot;, # A description of this object.
      &quot;enum&quot;: [ # Values this parameter may take (if it is an enum).
        &quot;A String&quot;,
      ],
      &quot;enumDescriptions&quot;: [ # The descriptions for the enums. Each position maps to the corresponding value in the &quot;enum&quot; array.
        &quot;A String&quot;,
      ],
      &quot;format&quot;: &quot;A String&quot;, # An additional regular expression or key that helps constrain the value. For more details see: http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.23
      &quot;id&quot;: &quot;A String&quot;, # Unique identifier for this schema.
      &quot;items&quot;: # Object with schema name: JsonSchema # If this is a schema for an array, this property is the schema for each element in the array.
      &quot;location&quot;: &quot;A String&quot;, # Whether this parameter goes in the query or the path for REST requests.
      &quot;maximum&quot;: &quot;A String&quot;, # The maximum value of this parameter.
      &quot;minimum&quot;: &quot;A String&quot;, # The minimum value of this parameter.
      &quot;pattern&quot;: &quot;A String&quot;, # The regular expression this parameter must conform to. Uses Java 6 regex format: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
      &quot;properties&quot;: { # If this is a schema for an object, list the schema for each property of this object.
        &quot;a_key&quot;: # Object with schema name: JsonSchema # A single property of this object. The value is itself a JSON Schema object describing this property.
      },
      &quot;readOnly&quot;: True or False, # The value is read-only, generated by the service. The value cannot be modified by the client. If the value is included in a POST, PUT, or PATCH request, it is ignored by the service.
      &quot;repeated&quot;: True or False, # Whether this parameter may appear multiple times.
      &quot;required&quot;: True or False, # Whether the parameter is required.
      &quot;type&quot;: &quot;A String&quot;, # The value type for this schema. A list of values can be found here: http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1
      &quot;variant&quot;: { # In a variant data type, the value of one property is used to determine how to interpret the entire entity. Its value must exist in a map of descriminant values to schema names.
        &quot;discriminant&quot;: &quot;A String&quot;, # The name of the type discriminant property.
        &quot;map&quot;: [ # The map of discriminant value to schema to use for parsing..
          {
            &quot;$ref&quot;: &quot;A String&quot;,
            &quot;type_value&quot;: &quot;A String&quot;,
          },
        ],
      },
    },
  },
  &quot;servicePath&quot;: &quot;A String&quot;, # The base path for all REST requests.
  &quot;title&quot;: &quot;A String&quot;, # The title of this API.
  &quot;version&quot;: &quot;A String&quot;, # The version of this API.
  &quot;version_module&quot;: True or False,
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(name=None, preferred=None)</code>
  <pre>Retrieve the list of APIs supported at this endpoint.

Args:
  name: string, Only include APIs with the given name.
  preferred: boolean, Return only the preferred version of an API.

Returns:
  An object of the form:

    {
  &quot;discoveryVersion&quot;: &quot;v1&quot;, # Indicate the version of the Discovery API used to generate this doc.
  &quot;items&quot;: [ # The individual directory entries. One entry per api/version pair.
    {
      &quot;description&quot;: &quot;A String&quot;, # The description of this API.
      &quot;discoveryLink&quot;: &quot;A String&quot;, # A link to the discovery document.
      &quot;discoveryRestUrl&quot;: &quot;A String&quot;, # The URL for the discovery REST document.
      &quot;documentationLink&quot;: &quot;A String&quot;, # A link to human readable documentation for the API.
      &quot;icons&quot;: { # Links to 16x16 and 32x32 icons representing the API.
        &quot;x16&quot;: &quot;A String&quot;, # The URL of the 16x16 icon.
        &quot;x32&quot;: &quot;A String&quot;, # The URL of the 32x32 icon.
      },
      &quot;id&quot;: &quot;A String&quot;, # The id of this API.
      &quot;kind&quot;: &quot;discovery#directoryItem&quot;, # The kind for this response.
      &quot;labels&quot;: [ # Labels for the status of this API, such as labs or deprecated.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # The name of the API.
      &quot;preferred&quot;: True or False, # True if this version is the preferred version to use.
      &quot;title&quot;: &quot;A String&quot;, # The title of this API.
      &quot;version&quot;: &quot;A String&quot;, # The version of the API.
    },
  ],
  &quot;kind&quot;: &quot;discovery#directoryList&quot;, # The kind for this response.
}</pre>
</div>

</body></html>