<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="#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="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>