-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Google APIs Discovery Service SDK.
--   
--   Provides information about other Google APIs, such as what APIs are
--   available, the resource, and method details for each API.
--   
--   <i>Warning:</i> This is an experimental prototype/preview release
--   which is still under exploratory development and not intended for
--   public use, caveat emptor!
--   
--   This library is compatible with version <tt>v1</tt> of the API.
@package gogol-discovery
@version 0.3.0


module Network.Google.Discovery.Types

-- | Default request referring to version <tt>v1</tt> of the APIs Discovery
--   Service. This contains the host and root path used as a starting point
--   for constructing service requests.
discoveryService :: ServiceConfig

-- | The schema for the response.
--   
--   <i>See:</i> <a>restMethodResponse</a> smart constructor.
data RestMethodResponse

-- | Creates a value of <a>RestMethodResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmrRef</a></li>
--   </ul>
restMethodResponse :: RestMethodResponse

-- | Schema ID for the response schema.
rmrRef :: Lens' RestMethodResponse (Maybe Text)

-- | Common parameters that apply across all apis.
--   
--   <i>See:</i> <a>restDescriptionParameters</a> smart constructor.
data RestDescriptionParameters

-- | Creates a value of <a>RestDescriptionParameters</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdpAddtional</a></li>
--   </ul>
restDescriptionParameters :: HashMap Text JSONSchema -> RestDescriptionParameters

-- | Description of a single parameter.
rdpAddtional :: Lens' RestDescriptionParameters (HashMap Text JSONSchema)
data RestMethod

-- | Creates a value of <a>RestMethod</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmSupportsMediaDownload</a></li>
--   <li><a>rmParameterOrder</a></li>
--   <li><a>rmMediaUpload</a></li>
--   <li><a>rmHTTPMethod</a></li>
--   <li><a>rmPath</a></li>
--   <li><a>rmResponse</a></li>
--   <li><a>rmSupportsMediaUpload</a></li>
--   <li><a>rmScopes</a></li>
--   <li><a>rmSupportsSubscription</a></li>
--   <li><a>rmParameters</a></li>
--   <li><a>rmId</a></li>
--   <li><a>rmEtagRequired</a></li>
--   <li><a>rmUseMediaDownloadService</a></li>
--   <li><a>rmDescription</a></li>
--   <li><a>rmRequest</a></li>
--   </ul>
restMethod :: RestMethod

-- | Whether this method supports media downloads.
rmSupportsMediaDownload :: Lens' RestMethod (Maybe Bool)

-- | 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 "most-significant" parameter appears first.
rmParameterOrder :: Lens' RestMethod [Text]

-- | Media upload parameters.
rmMediaUpload :: Lens' RestMethod (Maybe RestMethodMediaUpload)

-- | HTTP method used by this method.
rmHTTPMethod :: Lens' RestMethod (Maybe Text)

-- | The URI path of this REST method. Should be used in conjunction with
--   the basePath property at the api-level.
rmPath :: Lens' RestMethod (Maybe Text)

-- | The schema for the response.
rmResponse :: Lens' RestMethod (Maybe RestMethodResponse)

-- | Whether this method supports media uploads.
rmSupportsMediaUpload :: Lens' RestMethod (Maybe Bool)

-- | OAuth 2.0 scopes applicable to this method.
rmScopes :: Lens' RestMethod [Text]

-- | Whether this method supports subscriptions.
rmSupportsSubscription :: Lens' RestMethod (Maybe Bool)

-- | Details for all parameters in this method.
rmParameters :: Lens' RestMethod (Maybe RestMethodParameters)

-- | A unique ID for this method. This property can be used to match
--   methods between different versions of Discovery.
rmId :: Lens' RestMethod (Maybe Text)

-- | Whether this method requires an ETag to be specified. The ETag is sent
--   as an HTTP If-Match or If-None-Match header.
rmEtagRequired :: Lens' RestMethod (Maybe Bool)

-- | Indicates that downloads from this method should use the download
--   service URL (i.e. "/download"). Only applies if the method supports
--   media download.
rmUseMediaDownloadService :: Lens' RestMethod (Maybe Bool)

-- | Description of this method.
rmDescription :: Lens' RestMethod (Maybe Text)

-- | The schema for the request.
rmRequest :: Lens' RestMethod (Maybe RestMethodRequest)
data RestResource

-- | Creates a value of <a>RestResource</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrResources</a></li>
--   <li><a>rrMethods</a></li>
--   </ul>
restResource :: RestResource

-- | Sub-resources on this resource.
rrResources :: Lens' RestResource (Maybe RestResourceResources)

-- | Methods on this resource.
rrMethods :: Lens' RestResource (Maybe RestResourceMethods)

-- | Available OAuth 2.0 scopes.
--   
--   <i>See:</i> <a>restDescriptionAuthOAuth2Scopes</a> smart constructor.
data RestDescriptionAuthOAuth2Scopes

-- | Creates a value of <a>RestDescriptionAuthOAuth2Scopes</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdaoasAddtional</a></li>
--   </ul>
restDescriptionAuthOAuth2Scopes :: HashMap Text RestDescriptionAuthOAuth2ScopesAdditional -> RestDescriptionAuthOAuth2Scopes

-- | The scope value.
rdaoasAddtional :: Lens' RestDescriptionAuthOAuth2Scopes (HashMap Text RestDescriptionAuthOAuth2ScopesAdditional)

-- | API-level methods for this API.
--   
--   <i>See:</i> <a>restDescriptionMethods</a> smart constructor.
data RestDescriptionMethods

-- | Creates a value of <a>RestDescriptionMethods</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdmAddtional</a></li>
--   </ul>
restDescriptionMethods :: HashMap Text RestMethod -> RestDescriptionMethods

-- | An individual method description.
rdmAddtional :: Lens' RestDescriptionMethods (HashMap Text RestMethod)
data DirectoryListItemsItem

-- | Creates a value of <a>DirectoryListItemsItem</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dliiDiscoveryLink</a></li>
--   <li><a>dliiPreferred</a></li>
--   <li><a>dliiKind</a></li>
--   <li><a>dliiIcons</a></li>
--   <li><a>dliiName</a></li>
--   <li><a>dliiVersion</a></li>
--   <li><a>dliiDocumentationLink</a></li>
--   <li><a>dliiId</a></li>
--   <li><a>dliiLabels</a></li>
--   <li><a>dliiTitle</a></li>
--   <li><a>dliiDescription</a></li>
--   <li><a>dliiDiscoveryRestURL</a></li>
--   </ul>
directoryListItemsItem :: DirectoryListItemsItem

-- | A link to the discovery document.
dliiDiscoveryLink :: Lens' DirectoryListItemsItem (Maybe Text)

-- | True if this version is the preferred version to use.
dliiPreferred :: Lens' DirectoryListItemsItem (Maybe Bool)

-- | The kind for this response.
dliiKind :: Lens' DirectoryListItemsItem Text

-- | Links to 16x16 and 32x32 icons representing the API.
dliiIcons :: Lens' DirectoryListItemsItem (Maybe DirectoryListItemsItemIcons)

-- | The name of the API.
dliiName :: Lens' DirectoryListItemsItem (Maybe Text)

-- | The version of the API.
dliiVersion :: Lens' DirectoryListItemsItem (Maybe Text)

-- | A link to human readable documentation for the API.
dliiDocumentationLink :: Lens' DirectoryListItemsItem (Maybe Text)

-- | The id of this API.
dliiId :: Lens' DirectoryListItemsItem (Maybe Text)

-- | Labels for the status of this API, such as labs or deprecated.
dliiLabels :: Lens' DirectoryListItemsItem [Text]

-- | The title of this API.
dliiTitle :: Lens' DirectoryListItemsItem (Maybe Text)

-- | The description of this API.
dliiDescription :: Lens' DirectoryListItemsItem (Maybe Text)

-- | The URL for the discovery REST document.
dliiDiscoveryRestURL :: Lens' DirectoryListItemsItem (Maybe Text)

-- | Links to 16x16 and 32x32 icons representing the API.
--   
--   <i>See:</i> <a>directoryListItemsItemIcons</a> smart constructor.
data DirectoryListItemsItemIcons

-- | Creates a value of <a>DirectoryListItemsItemIcons</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dliiiX16</a></li>
--   <li><a>dliiiX32</a></li>
--   </ul>
directoryListItemsItemIcons :: DirectoryListItemsItemIcons

-- | The URL of the 16x16 icon.
dliiiX16 :: Lens' DirectoryListItemsItemIcons (Maybe Text)

-- | The URL of the 32x32 icon.
dliiiX32 :: Lens' DirectoryListItemsItemIcons (Maybe Text)

-- | Sub-resources on this resource.
--   
--   <i>See:</i> <a>restResourceResources</a> smart constructor.
data RestResourceResources

-- | Creates a value of <a>RestResourceResources</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrrAddtional</a></li>
--   </ul>
restResourceResources :: HashMap Text RestResource -> RestResourceResources

-- | Description for any sub-resources on this resource.
rrrAddtional :: Lens' RestResourceResources (HashMap Text RestResource)

-- | OAuth 2.0 authentication information.
--   
--   <i>See:</i> <a>restDescriptionAuthOAuth2</a> smart constructor.
data RestDescriptionAuthOAuth2

-- | Creates a value of <a>RestDescriptionAuthOAuth2</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdaoaScopes</a></li>
--   </ul>
restDescriptionAuthOAuth2 :: RestDescriptionAuthOAuth2

-- | Available OAuth 2.0 scopes.
rdaoaScopes :: Lens' RestDescriptionAuthOAuth2 (Maybe RestDescriptionAuthOAuth2Scopes)

-- | The scope value.
--   
--   <i>See:</i> <a>restDescriptionAuthOAuth2ScopesAdditional</a> smart
--   constructor.
data RestDescriptionAuthOAuth2ScopesAdditional

-- | Creates a value of <a>RestDescriptionAuthOAuth2ScopesAdditional</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdaoasaDescription</a></li>
--   </ul>
restDescriptionAuthOAuth2ScopesAdditional :: RestDescriptionAuthOAuth2ScopesAdditional

-- | Description of scope.
rdaoasaDescription :: Lens' RestDescriptionAuthOAuth2ScopesAdditional (Maybe Text)

-- | Supports uploading as a single HTTP request.
--   
--   <i>See:</i> <a>restMethodMediaUploadProtocolsSimple</a> smart
--   constructor.
data RestMethodMediaUploadProtocolsSimple

-- | Creates a value of <a>RestMethodMediaUploadProtocolsSimple</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmmupsPath</a></li>
--   <li><a>rmmupsMultiPart</a></li>
--   </ul>
restMethodMediaUploadProtocolsSimple :: RestMethodMediaUploadProtocolsSimple

-- | The URI path to be used for upload. Should be used in conjunction with
--   the basePath property at the api-level.
rmmupsPath :: Lens' RestMethodMediaUploadProtocolsSimple (Maybe Text)

-- | True if this endpoint supports upload multipart media.
rmmupsMultiPart :: Lens' RestMethodMediaUploadProtocolsSimple Bool

-- | Links to 16x16 and 32x32 icons representing the API.
--   
--   <i>See:</i> <a>restDescriptionIcons</a> smart constructor.
data RestDescriptionIcons

-- | Creates a value of <a>RestDescriptionIcons</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdiX16</a></li>
--   <li><a>rdiX32</a></li>
--   </ul>
restDescriptionIcons :: RestDescriptionIcons

-- | The URL of the 16x16 icon.
rdiX16 :: Lens' RestDescriptionIcons (Maybe Text)

-- | The URL of the 32x32 icon.
rdiX32 :: Lens' RestDescriptionIcons (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>jsonSchemaVariant</a> smart constructor.
data JSONSchemaVariant

-- | Creates a value of <a>JSONSchemaVariant</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jsvDiscriminant</a></li>
--   <li><a>jsvMap</a></li>
--   </ul>
jsonSchemaVariant :: JSONSchemaVariant

-- | The name of the type discriminant property.
jsvDiscriminant :: Lens' JSONSchemaVariant (Maybe Text)

-- | The map of discriminant value to schema to use for parsing..
jsvMap :: Lens' JSONSchemaVariant [JSONSchemaVariantMapItem]

-- | Methods on this resource.
--   
--   <i>See:</i> <a>restResourceMethods</a> smart constructor.
data RestResourceMethods

-- | Creates a value of <a>RestResourceMethods</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrmAddtional</a></li>
--   </ul>
restResourceMethods :: HashMap Text RestMethod -> RestResourceMethods

-- | Description for any methods on this resource.
rrmAddtional :: Lens' RestResourceMethods (HashMap Text RestMethod)

-- | Authentication information.
--   
--   <i>See:</i> <a>restDescriptionAuth</a> smart constructor.
data RestDescriptionAuth

-- | Creates a value of <a>RestDescriptionAuth</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdaOAuth2</a></li>
--   </ul>
restDescriptionAuth :: RestDescriptionAuth

-- | OAuth 2.0 authentication information.
rdaOAuth2 :: Lens' RestDescriptionAuth (Maybe RestDescriptionAuthOAuth2)
data RestDescription

-- | Creates a value of <a>RestDescription</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdEtag</a></li>
--   <li><a>rdSchemas</a></li>
--   <li><a>rdServicePath</a></li>
--   <li><a>rdBasePath</a></li>
--   <li><a>rdKind</a></li>
--   <li><a>rdExponentialBackoffDefault</a></li>
--   <li><a>rdAuth</a></li>
--   <li><a>rdIcons</a></li>
--   <li><a>rdBaseURL</a></li>
--   <li><a>rdProtocol</a></li>
--   <li><a>rdOwnerName</a></li>
--   <li><a>rdResources</a></li>
--   <li><a>rdOwnerDomain</a></li>
--   <li><a>rdBatchPath</a></li>
--   <li><a>rdMethods</a></li>
--   <li><a>rdName</a></li>
--   <li><a>rdPackagePath</a></li>
--   <li><a>rdFeatures</a></li>
--   <li><a>rdVersionModule</a></li>
--   <li><a>rdVersion</a></li>
--   <li><a>rdParameters</a></li>
--   <li><a>rdDocumentationLink</a></li>
--   <li><a>rdRootURL</a></li>
--   <li><a>rdId</a></li>
--   <li><a>rdCanonicalName</a></li>
--   <li><a>rdLabels</a></li>
--   <li><a>rdDiscoveryVersion</a></li>
--   <li><a>rdTitle</a></li>
--   <li><a>rdRevision</a></li>
--   <li><a>rdDescription</a></li>
--   </ul>
restDescription :: RestDescription

-- | The ETag for this response.
rdEtag :: Lens' RestDescription (Maybe Text)

-- | The schemas for this API.
rdSchemas :: Lens' RestDescription (Maybe RestDescriptionSchemas)

-- | The base path for all REST requests.
rdServicePath :: Lens' RestDescription (Maybe Text)

-- | <ul>
--   <li><i>DEPRECATED</i> The base path for REST requests.</li>
--   </ul>
rdBasePath :: Lens' RestDescription (Maybe Text)

-- | The kind for this response.
rdKind :: Lens' RestDescription Text

-- | Enable exponential backoff for suitable methods in the generated
--   clients.
rdExponentialBackoffDefault :: Lens' RestDescription (Maybe Bool)

-- | Authentication information.
rdAuth :: Lens' RestDescription (Maybe RestDescriptionAuth)

-- | Links to 16x16 and 32x32 icons representing the API.
rdIcons :: Lens' RestDescription (Maybe RestDescriptionIcons)

-- | <ul>
--   <li><i>DEPRECATED</i> The base URL for REST requests.</li>
--   </ul>
rdBaseURL :: Lens' RestDescription (Maybe Text)

-- | The protocol described by this document.
rdProtocol :: Lens' RestDescription Text

-- | The name of the owner of this API. See ownerDomain.
rdOwnerName :: Lens' RestDescription (Maybe Text)

-- | The resources in this API.
rdResources :: Lens' RestDescription (Maybe RestDescriptionResources)

-- | 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.
rdOwnerDomain :: Lens' RestDescription (Maybe Text)

-- | The path for REST batch requests.
rdBatchPath :: Lens' RestDescription Text

-- | API-level methods for this API.
rdMethods :: Lens' RestDescription (Maybe RestDescriptionMethods)

-- | The name of this API.
rdName :: Lens' RestDescription (Maybe Text)

-- | The package of the owner of this API. See ownerDomain.
rdPackagePath :: Lens' RestDescription (Maybe Text)

-- | A list of supported features for this API.
rdFeatures :: Lens' RestDescription [Text]
rdVersionModule :: Lens' RestDescription (Maybe Bool)

-- | The version of this API.
rdVersion :: Lens' RestDescription (Maybe Text)

-- | Common parameters that apply across all apis.
rdParameters :: Lens' RestDescription (Maybe RestDescriptionParameters)

-- | A link to human readable documentation for the API.
rdDocumentationLink :: Lens' RestDescription (Maybe Text)

-- | The root URL under which all API services live.
rdRootURL :: Lens' RestDescription (Maybe Text)

-- | The ID of this API.
rdId :: Lens' RestDescription (Maybe Text)

-- | Indicates how the API name should be capitalized and split into
--   various parts. Useful for generating pretty class names.
rdCanonicalName :: Lens' RestDescription (Maybe Text)

-- | Labels for the status of this API, such as labs or deprecated.
rdLabels :: Lens' RestDescription [Text]

-- | Indicate the version of the Discovery API used to generate this doc.
rdDiscoveryVersion :: Lens' RestDescription Text

-- | The title of this API.
rdTitle :: Lens' RestDescription (Maybe Text)

-- | The version of this API.
rdRevision :: Lens' RestDescription (Maybe Text)

-- | The description of this API.
rdDescription :: Lens' RestDescription (Maybe Text)
data JSONSchema

-- | Creates a value of <a>JSONSchema</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jsAnnotations</a></li>
--   <li><a>jsVariant</a></li>
--   <li><a>jsLocation</a></li>
--   <li><a>jsRef</a></li>
--   <li><a>jsPattern</a></li>
--   <li><a>jsMaximum</a></li>
--   <li><a>jsDefault</a></li>
--   <li><a>jsFormat</a></li>
--   <li><a>jsItems</a></li>
--   <li><a>jsMinimum</a></li>
--   <li><a>jsRequired</a></li>
--   <li><a>jsId</a></li>
--   <li><a>jsAdditionalProperties</a></li>
--   <li><a>jsType</a></li>
--   <li><a>jsEnum</a></li>
--   <li><a>jsRepeated</a></li>
--   <li><a>jsReadOnly</a></li>
--   <li><a>jsEnumDescriptions</a></li>
--   <li><a>jsDescription</a></li>
--   <li><a>jsProperties</a></li>
--   </ul>
jsonSchema :: JSONSchema

-- | Additional information about this property.
jsAnnotations :: Lens' JSONSchema (Maybe JSONSchemaAnnotations)

-- | 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.
jsVariant :: Lens' JSONSchema (Maybe JSONSchemaVariant)

-- | Whether this parameter goes in the query or the path for REST
--   requests.
jsLocation :: Lens' JSONSchema (Maybe Text)

-- | A reference to another schema. The value of this property is the "id"
--   of another schema.
jsRef :: Lens' JSONSchema (Maybe Text)

-- | 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
jsPattern :: Lens' JSONSchema (Maybe Text)

-- | The maximum value of this parameter.
jsMaximum :: Lens' JSONSchema (Maybe Text)

-- | The default value of this property (if one exists).
jsDefault :: Lens' JSONSchema (Maybe Text)

-- | 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
jsFormat :: Lens' JSONSchema (Maybe Text)

-- | If this is a schema for an array, this property is the schema for each
--   element in the array.
jsItems :: Lens' JSONSchema (Maybe JSONSchema)

-- | The minimum value of this parameter.
jsMinimum :: Lens' JSONSchema (Maybe Text)

-- | Whether the parameter is required.
jsRequired :: Lens' JSONSchema (Maybe Bool)

-- | Unique identifier for this schema.
jsId :: Lens' JSONSchema (Maybe Text)

-- | If this is a schema for an object, this property is the schema for any
--   additional properties with dynamic keys on this object.
jsAdditionalProperties :: Lens' JSONSchema (Maybe JSONSchema)

-- | 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
jsType :: Lens' JSONSchema (Maybe Text)

-- | Values this parameter may take (if it is an enum).
jsEnum :: Lens' JSONSchema [Text]

-- | Whether this parameter may appear multiple times.
jsRepeated :: Lens' JSONSchema (Maybe Bool)

-- | 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.
jsReadOnly :: Lens' JSONSchema (Maybe Bool)

-- | The descriptions for the enums. Each position maps to the
--   corresponding value in the "enum" array.
jsEnumDescriptions :: Lens' JSONSchema [Text]

-- | A description of this object.
jsDescription :: Lens' JSONSchema (Maybe Text)

-- | If this is a schema for an object, list the schema for each property
--   of this object.
jsProperties :: Lens' JSONSchema (Maybe JSONSchemaProperties)

-- | The schemas for this API.
--   
--   <i>See:</i> <a>restDescriptionSchemas</a> smart constructor.
data RestDescriptionSchemas

-- | Creates a value of <a>RestDescriptionSchemas</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdsAddtional</a></li>
--   </ul>
restDescriptionSchemas :: HashMap Text JSONSchema -> RestDescriptionSchemas

-- | An individual schema description.
rdsAddtional :: Lens' RestDescriptionSchemas (HashMap Text JSONSchema)
data JSONSchemaVariantMapItem

-- | Creates a value of <a>JSONSchemaVariantMapItem</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jsvmiRef</a></li>
--   <li><a>jsvmiTypeValue</a></li>
--   </ul>
jsonSchemaVariantMapItem :: JSONSchemaVariantMapItem
jsvmiRef :: Lens' JSONSchemaVariantMapItem (Maybe Text)
jsvmiTypeValue :: Lens' JSONSchemaVariantMapItem (Maybe Text)

-- | The resources in this API.
--   
--   <i>See:</i> <a>restDescriptionResources</a> smart constructor.
data RestDescriptionResources

-- | Creates a value of <a>RestDescriptionResources</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdrAddtional</a></li>
--   </ul>
restDescriptionResources :: HashMap Text RestResource -> RestDescriptionResources

-- | An individual resource description. Contains methods and sub-resources
--   related to this resource.
rdrAddtional :: Lens' RestDescriptionResources (HashMap Text RestResource)

-- | Supported upload protocols.
--   
--   <i>See:</i> <a>restMethodMediaUploadProtocols</a> smart constructor.
data RestMethodMediaUploadProtocols

-- | Creates a value of <a>RestMethodMediaUploadProtocols</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmmupSimple</a></li>
--   <li><a>rmmupResumable</a></li>
--   </ul>
restMethodMediaUploadProtocols :: RestMethodMediaUploadProtocols

-- | Supports uploading as a single HTTP request.
rmmupSimple :: Lens' RestMethodMediaUploadProtocols (Maybe RestMethodMediaUploadProtocolsSimple)

-- | Supports the Resumable Media Upload protocol.
rmmupResumable :: Lens' RestMethodMediaUploadProtocols (Maybe RestMethodMediaUploadProtocolsResumable)

-- | Additional information about this property.
--   
--   <i>See:</i> <a>jsonSchemaAnnotations</a> smart constructor.
data JSONSchemaAnnotations

-- | Creates a value of <a>JSONSchemaAnnotations</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jsaRequired</a></li>
--   </ul>
jsonSchemaAnnotations :: JSONSchemaAnnotations

-- | A list of methods for which this property is required on requests.
jsaRequired :: Lens' JSONSchemaAnnotations [Text]

-- | Details for all parameters in this method.
--   
--   <i>See:</i> <a>restMethodParameters</a> smart constructor.
data RestMethodParameters

-- | Creates a value of <a>RestMethodParameters</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmpAddtional</a></li>
--   </ul>
restMethodParameters :: HashMap Text JSONSchema -> RestMethodParameters

-- | Details for a single parameter in this method.
rmpAddtional :: Lens' RestMethodParameters (HashMap Text JSONSchema)

-- | Media upload parameters.
--   
--   <i>See:</i> <a>restMethodMediaUpload</a> smart constructor.
data RestMethodMediaUpload

-- | Creates a value of <a>RestMethodMediaUpload</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmmuProtocols</a></li>
--   <li><a>rmmuAccept</a></li>
--   <li><a>rmmuMaxSize</a></li>
--   </ul>
restMethodMediaUpload :: RestMethodMediaUpload

-- | Supported upload protocols.
rmmuProtocols :: Lens' RestMethodMediaUpload (Maybe RestMethodMediaUploadProtocols)

-- | MIME Media Ranges for acceptable media uploads to this method.
rmmuAccept :: Lens' RestMethodMediaUpload [Text]

-- | Maximum size of a media upload, such as "1MB", "2GB" or "3TB".
rmmuMaxSize :: Lens' RestMethodMediaUpload (Maybe Text)

-- | If this is a schema for an object, list the schema for each property
--   of this object.
--   
--   <i>See:</i> <a>jsonSchemaProperties</a> smart constructor.
data JSONSchemaProperties

-- | Creates a value of <a>JSONSchemaProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jspAddtional</a></li>
--   </ul>
jsonSchemaProperties :: HashMap Text JSONSchema -> JSONSchemaProperties

-- | A single property of this object. The value is itself a JSON Schema
--   object describing this property.
jspAddtional :: Lens' JSONSchemaProperties (HashMap Text JSONSchema)

-- | Supports the Resumable Media Upload protocol.
--   
--   <i>See:</i> <a>restMethodMediaUploadProtocolsResumable</a> smart
--   constructor.
data RestMethodMediaUploadProtocolsResumable

-- | Creates a value of <a>RestMethodMediaUploadProtocolsResumable</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmmuprPath</a></li>
--   <li><a>rmmuprMultiPart</a></li>
--   </ul>
restMethodMediaUploadProtocolsResumable :: RestMethodMediaUploadProtocolsResumable

-- | The URI path to be used for upload. Should be used in conjunction with
--   the basePath property at the api-level.
rmmuprPath :: Lens' RestMethodMediaUploadProtocolsResumable (Maybe Text)

-- | True if this endpoint supports uploading multipart media.
rmmuprMultiPart :: Lens' RestMethodMediaUploadProtocolsResumable Bool
data DirectoryList

-- | Creates a value of <a>DirectoryList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dlKind</a></li>
--   <li><a>dlItems</a></li>
--   <li><a>dlDiscoveryVersion</a></li>
--   </ul>
directoryList :: DirectoryList

-- | The kind for this response.
dlKind :: Lens' DirectoryList Text

-- | The individual directory entries. One entry per api/version pair.
dlItems :: Lens' DirectoryList [DirectoryListItemsItem]

-- | Indicate the version of the Discovery API used to generate this doc.
dlDiscoveryVersion :: Lens' DirectoryList Text

-- | The schema for the request.
--   
--   <i>See:</i> <a>restMethodRequest</a> smart constructor.
data RestMethodRequest

-- | Creates a value of <a>RestMethodRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rRef</a></li>
--   <li><a>rParameterName</a></li>
--   </ul>
restMethodRequest :: RestMethodRequest

-- | Schema ID for the request schema.
rRef :: Lens' RestMethodRequest (Maybe Text)

-- | parameter name.
rParameterName :: Lens' RestMethodRequest (Maybe Text)


-- | Retrieve the description of a particular version of an api.
--   
--   <i>See:</i> <a>APIs Discovery Service Reference</a> for
--   <tt>discovery.apis.getRest</tt>.
module Network.Google.Resource.Discovery.APIs.GetRest

-- | A resource alias for <tt>discovery.apis.getRest</tt> method which the
--   <a>APIsGetRest</a> request conforms to.
type APIsGetRestResource = "discovery" :> ("v1" :> ("apis" :> (Capture "api" Text :> (Capture "version" Text :> ("rest" :> (QueryParam "alt" AltJSON :> Get '[JSON] RestDescription))))))

-- | Creates a value of <a>APIsGetRest</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>agrVersion</a></li>
--   <li><a>agrAPI</a></li>
--   </ul>
apisGetRest :: Text -> Text -> APIsGetRest

-- | Retrieve the description of a particular version of an api.
--   
--   <i>See:</i> <a>apisGetRest</a> smart constructor.
data APIsGetRest

-- | The version of the API.
agrVersion :: Lens' APIsGetRest Text

-- | The name of the API.
agrAPI :: Lens' APIsGetRest Text
instance GHC.Generics.Generic Network.Google.Resource.Discovery.APIs.GetRest.APIsGetRest
instance Data.Data.Data Network.Google.Resource.Discovery.APIs.GetRest.APIsGetRest
instance GHC.Show.Show Network.Google.Resource.Discovery.APIs.GetRest.APIsGetRest
instance GHC.Classes.Eq Network.Google.Resource.Discovery.APIs.GetRest.APIsGetRest
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Discovery.APIs.GetRest.APIsGetRest


-- | Retrieve the list of APIs supported at this endpoint.
--   
--   <i>See:</i> <a>APIs Discovery Service Reference</a> for
--   <tt>discovery.apis.list</tt>.
module Network.Google.Resource.Discovery.APIs.List

-- | A resource alias for <tt>discovery.apis.list</tt> method which the
--   <a>APIsList</a> request conforms to.
type APIsListResource = "discovery" :> ("v1" :> ("apis" :> (QueryParam "preferred" Bool :> (QueryParam "name" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] DirectoryList)))))

-- | Creates a value of <a>APIsList</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>alPreferred</a></li>
--   <li><a>alName</a></li>
--   </ul>
apisList :: APIsList

-- | Retrieve the list of APIs supported at this endpoint.
--   
--   <i>See:</i> <a>apisList</a> smart constructor.
data APIsList

-- | Return only the preferred version of an API.
alPreferred :: Lens' APIsList Bool

-- | Only include APIs with the given name.
alName :: Lens' APIsList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Discovery.APIs.List.APIsList
instance Data.Data.Data Network.Google.Resource.Discovery.APIs.List.APIsList
instance GHC.Show.Show Network.Google.Resource.Discovery.APIs.List.APIsList
instance GHC.Classes.Eq Network.Google.Resource.Discovery.APIs.List.APIsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Discovery.APIs.List.APIsList


-- | Provides information about other Google APIs, such as what APIs are
--   available, the resource, and method details for each API.
--   
--   <i>See:</i> <a>APIs Discovery Service Reference</a>
module Network.Google.Discovery

-- | Default request referring to version <tt>v1</tt> of the APIs Discovery
--   Service. This contains the host and root path used as a starting point
--   for constructing service requests.
discoveryService :: ServiceConfig

-- | Represents the entirety of the methods and resources available for the
--   APIs Discovery Service service.
type DiscoveryAPI = APIsListResource :<|> APIsGetRestResource

-- | The schema for the response.
--   
--   <i>See:</i> <a>restMethodResponse</a> smart constructor.
data RestMethodResponse

-- | Creates a value of <a>RestMethodResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmrRef</a></li>
--   </ul>
restMethodResponse :: RestMethodResponse

-- | Schema ID for the response schema.
rmrRef :: Lens' RestMethodResponse (Maybe Text)

-- | Common parameters that apply across all apis.
--   
--   <i>See:</i> <a>restDescriptionParameters</a> smart constructor.
data RestDescriptionParameters

-- | Creates a value of <a>RestDescriptionParameters</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdpAddtional</a></li>
--   </ul>
restDescriptionParameters :: HashMap Text JSONSchema -> RestDescriptionParameters

-- | Description of a single parameter.
rdpAddtional :: Lens' RestDescriptionParameters (HashMap Text JSONSchema)
data RestMethod

-- | Creates a value of <a>RestMethod</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmSupportsMediaDownload</a></li>
--   <li><a>rmParameterOrder</a></li>
--   <li><a>rmMediaUpload</a></li>
--   <li><a>rmHTTPMethod</a></li>
--   <li><a>rmPath</a></li>
--   <li><a>rmResponse</a></li>
--   <li><a>rmSupportsMediaUpload</a></li>
--   <li><a>rmScopes</a></li>
--   <li><a>rmSupportsSubscription</a></li>
--   <li><a>rmParameters</a></li>
--   <li><a>rmId</a></li>
--   <li><a>rmEtagRequired</a></li>
--   <li><a>rmUseMediaDownloadService</a></li>
--   <li><a>rmDescription</a></li>
--   <li><a>rmRequest</a></li>
--   </ul>
restMethod :: RestMethod

-- | Whether this method supports media downloads.
rmSupportsMediaDownload :: Lens' RestMethod (Maybe Bool)

-- | 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 "most-significant" parameter appears first.
rmParameterOrder :: Lens' RestMethod [Text]

-- | Media upload parameters.
rmMediaUpload :: Lens' RestMethod (Maybe RestMethodMediaUpload)

-- | HTTP method used by this method.
rmHTTPMethod :: Lens' RestMethod (Maybe Text)

-- | The URI path of this REST method. Should be used in conjunction with
--   the basePath property at the api-level.
rmPath :: Lens' RestMethod (Maybe Text)

-- | The schema for the response.
rmResponse :: Lens' RestMethod (Maybe RestMethodResponse)

-- | Whether this method supports media uploads.
rmSupportsMediaUpload :: Lens' RestMethod (Maybe Bool)

-- | OAuth 2.0 scopes applicable to this method.
rmScopes :: Lens' RestMethod [Text]

-- | Whether this method supports subscriptions.
rmSupportsSubscription :: Lens' RestMethod (Maybe Bool)

-- | Details for all parameters in this method.
rmParameters :: Lens' RestMethod (Maybe RestMethodParameters)

-- | A unique ID for this method. This property can be used to match
--   methods between different versions of Discovery.
rmId :: Lens' RestMethod (Maybe Text)

-- | Whether this method requires an ETag to be specified. The ETag is sent
--   as an HTTP If-Match or If-None-Match header.
rmEtagRequired :: Lens' RestMethod (Maybe Bool)

-- | Indicates that downloads from this method should use the download
--   service URL (i.e. "/download"). Only applies if the method supports
--   media download.
rmUseMediaDownloadService :: Lens' RestMethod (Maybe Bool)

-- | Description of this method.
rmDescription :: Lens' RestMethod (Maybe Text)

-- | The schema for the request.
rmRequest :: Lens' RestMethod (Maybe RestMethodRequest)
data RestResource

-- | Creates a value of <a>RestResource</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrResources</a></li>
--   <li><a>rrMethods</a></li>
--   </ul>
restResource :: RestResource

-- | Sub-resources on this resource.
rrResources :: Lens' RestResource (Maybe RestResourceResources)

-- | Methods on this resource.
rrMethods :: Lens' RestResource (Maybe RestResourceMethods)

-- | Available OAuth 2.0 scopes.
--   
--   <i>See:</i> <a>restDescriptionAuthOAuth2Scopes</a> smart constructor.
data RestDescriptionAuthOAuth2Scopes

-- | Creates a value of <a>RestDescriptionAuthOAuth2Scopes</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdaoasAddtional</a></li>
--   </ul>
restDescriptionAuthOAuth2Scopes :: HashMap Text RestDescriptionAuthOAuth2ScopesAdditional -> RestDescriptionAuthOAuth2Scopes

-- | The scope value.
rdaoasAddtional :: Lens' RestDescriptionAuthOAuth2Scopes (HashMap Text RestDescriptionAuthOAuth2ScopesAdditional)

-- | API-level methods for this API.
--   
--   <i>See:</i> <a>restDescriptionMethods</a> smart constructor.
data RestDescriptionMethods

-- | Creates a value of <a>RestDescriptionMethods</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdmAddtional</a></li>
--   </ul>
restDescriptionMethods :: HashMap Text RestMethod -> RestDescriptionMethods

-- | An individual method description.
rdmAddtional :: Lens' RestDescriptionMethods (HashMap Text RestMethod)
data DirectoryListItemsItem

-- | Creates a value of <a>DirectoryListItemsItem</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dliiDiscoveryLink</a></li>
--   <li><a>dliiPreferred</a></li>
--   <li><a>dliiKind</a></li>
--   <li><a>dliiIcons</a></li>
--   <li><a>dliiName</a></li>
--   <li><a>dliiVersion</a></li>
--   <li><a>dliiDocumentationLink</a></li>
--   <li><a>dliiId</a></li>
--   <li><a>dliiLabels</a></li>
--   <li><a>dliiTitle</a></li>
--   <li><a>dliiDescription</a></li>
--   <li><a>dliiDiscoveryRestURL</a></li>
--   </ul>
directoryListItemsItem :: DirectoryListItemsItem

-- | A link to the discovery document.
dliiDiscoveryLink :: Lens' DirectoryListItemsItem (Maybe Text)

-- | True if this version is the preferred version to use.
dliiPreferred :: Lens' DirectoryListItemsItem (Maybe Bool)

-- | The kind for this response.
dliiKind :: Lens' DirectoryListItemsItem Text

-- | Links to 16x16 and 32x32 icons representing the API.
dliiIcons :: Lens' DirectoryListItemsItem (Maybe DirectoryListItemsItemIcons)

-- | The name of the API.
dliiName :: Lens' DirectoryListItemsItem (Maybe Text)

-- | The version of the API.
dliiVersion :: Lens' DirectoryListItemsItem (Maybe Text)

-- | A link to human readable documentation for the API.
dliiDocumentationLink :: Lens' DirectoryListItemsItem (Maybe Text)

-- | The id of this API.
dliiId :: Lens' DirectoryListItemsItem (Maybe Text)

-- | Labels for the status of this API, such as labs or deprecated.
dliiLabels :: Lens' DirectoryListItemsItem [Text]

-- | The title of this API.
dliiTitle :: Lens' DirectoryListItemsItem (Maybe Text)

-- | The description of this API.
dliiDescription :: Lens' DirectoryListItemsItem (Maybe Text)

-- | The URL for the discovery REST document.
dliiDiscoveryRestURL :: Lens' DirectoryListItemsItem (Maybe Text)

-- | Links to 16x16 and 32x32 icons representing the API.
--   
--   <i>See:</i> <a>directoryListItemsItemIcons</a> smart constructor.
data DirectoryListItemsItemIcons

-- | Creates a value of <a>DirectoryListItemsItemIcons</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dliiiX16</a></li>
--   <li><a>dliiiX32</a></li>
--   </ul>
directoryListItemsItemIcons :: DirectoryListItemsItemIcons

-- | The URL of the 16x16 icon.
dliiiX16 :: Lens' DirectoryListItemsItemIcons (Maybe Text)

-- | The URL of the 32x32 icon.
dliiiX32 :: Lens' DirectoryListItemsItemIcons (Maybe Text)

-- | Sub-resources on this resource.
--   
--   <i>See:</i> <a>restResourceResources</a> smart constructor.
data RestResourceResources

-- | Creates a value of <a>RestResourceResources</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrrAddtional</a></li>
--   </ul>
restResourceResources :: HashMap Text RestResource -> RestResourceResources

-- | Description for any sub-resources on this resource.
rrrAddtional :: Lens' RestResourceResources (HashMap Text RestResource)

-- | OAuth 2.0 authentication information.
--   
--   <i>See:</i> <a>restDescriptionAuthOAuth2</a> smart constructor.
data RestDescriptionAuthOAuth2

-- | Creates a value of <a>RestDescriptionAuthOAuth2</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdaoaScopes</a></li>
--   </ul>
restDescriptionAuthOAuth2 :: RestDescriptionAuthOAuth2

-- | Available OAuth 2.0 scopes.
rdaoaScopes :: Lens' RestDescriptionAuthOAuth2 (Maybe RestDescriptionAuthOAuth2Scopes)

-- | The scope value.
--   
--   <i>See:</i> <a>restDescriptionAuthOAuth2ScopesAdditional</a> smart
--   constructor.
data RestDescriptionAuthOAuth2ScopesAdditional

-- | Creates a value of <a>RestDescriptionAuthOAuth2ScopesAdditional</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdaoasaDescription</a></li>
--   </ul>
restDescriptionAuthOAuth2ScopesAdditional :: RestDescriptionAuthOAuth2ScopesAdditional

-- | Description of scope.
rdaoasaDescription :: Lens' RestDescriptionAuthOAuth2ScopesAdditional (Maybe Text)

-- | Supports uploading as a single HTTP request.
--   
--   <i>See:</i> <a>restMethodMediaUploadProtocolsSimple</a> smart
--   constructor.
data RestMethodMediaUploadProtocolsSimple

-- | Creates a value of <a>RestMethodMediaUploadProtocolsSimple</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmmupsPath</a></li>
--   <li><a>rmmupsMultiPart</a></li>
--   </ul>
restMethodMediaUploadProtocolsSimple :: RestMethodMediaUploadProtocolsSimple

-- | The URI path to be used for upload. Should be used in conjunction with
--   the basePath property at the api-level.
rmmupsPath :: Lens' RestMethodMediaUploadProtocolsSimple (Maybe Text)

-- | True if this endpoint supports upload multipart media.
rmmupsMultiPart :: Lens' RestMethodMediaUploadProtocolsSimple Bool

-- | Links to 16x16 and 32x32 icons representing the API.
--   
--   <i>See:</i> <a>restDescriptionIcons</a> smart constructor.
data RestDescriptionIcons

-- | Creates a value of <a>RestDescriptionIcons</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdiX16</a></li>
--   <li><a>rdiX32</a></li>
--   </ul>
restDescriptionIcons :: RestDescriptionIcons

-- | The URL of the 16x16 icon.
rdiX16 :: Lens' RestDescriptionIcons (Maybe Text)

-- | The URL of the 32x32 icon.
rdiX32 :: Lens' RestDescriptionIcons (Maybe Text)

-- | 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.
--   
--   <i>See:</i> <a>jsonSchemaVariant</a> smart constructor.
data JSONSchemaVariant

-- | Creates a value of <a>JSONSchemaVariant</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jsvDiscriminant</a></li>
--   <li><a>jsvMap</a></li>
--   </ul>
jsonSchemaVariant :: JSONSchemaVariant

-- | The name of the type discriminant property.
jsvDiscriminant :: Lens' JSONSchemaVariant (Maybe Text)

-- | The map of discriminant value to schema to use for parsing..
jsvMap :: Lens' JSONSchemaVariant [JSONSchemaVariantMapItem]

-- | Methods on this resource.
--   
--   <i>See:</i> <a>restResourceMethods</a> smart constructor.
data RestResourceMethods

-- | Creates a value of <a>RestResourceMethods</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrmAddtional</a></li>
--   </ul>
restResourceMethods :: HashMap Text RestMethod -> RestResourceMethods

-- | Description for any methods on this resource.
rrmAddtional :: Lens' RestResourceMethods (HashMap Text RestMethod)

-- | Authentication information.
--   
--   <i>See:</i> <a>restDescriptionAuth</a> smart constructor.
data RestDescriptionAuth

-- | Creates a value of <a>RestDescriptionAuth</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdaOAuth2</a></li>
--   </ul>
restDescriptionAuth :: RestDescriptionAuth

-- | OAuth 2.0 authentication information.
rdaOAuth2 :: Lens' RestDescriptionAuth (Maybe RestDescriptionAuthOAuth2)
data RestDescription

-- | Creates a value of <a>RestDescription</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdEtag</a></li>
--   <li><a>rdSchemas</a></li>
--   <li><a>rdServicePath</a></li>
--   <li><a>rdBasePath</a></li>
--   <li><a>rdKind</a></li>
--   <li><a>rdExponentialBackoffDefault</a></li>
--   <li><a>rdAuth</a></li>
--   <li><a>rdIcons</a></li>
--   <li><a>rdBaseURL</a></li>
--   <li><a>rdProtocol</a></li>
--   <li><a>rdOwnerName</a></li>
--   <li><a>rdResources</a></li>
--   <li><a>rdOwnerDomain</a></li>
--   <li><a>rdBatchPath</a></li>
--   <li><a>rdMethods</a></li>
--   <li><a>rdName</a></li>
--   <li><a>rdPackagePath</a></li>
--   <li><a>rdFeatures</a></li>
--   <li><a>rdVersionModule</a></li>
--   <li><a>rdVersion</a></li>
--   <li><a>rdParameters</a></li>
--   <li><a>rdDocumentationLink</a></li>
--   <li><a>rdRootURL</a></li>
--   <li><a>rdId</a></li>
--   <li><a>rdCanonicalName</a></li>
--   <li><a>rdLabels</a></li>
--   <li><a>rdDiscoveryVersion</a></li>
--   <li><a>rdTitle</a></li>
--   <li><a>rdRevision</a></li>
--   <li><a>rdDescription</a></li>
--   </ul>
restDescription :: RestDescription

-- | The ETag for this response.
rdEtag :: Lens' RestDescription (Maybe Text)

-- | The schemas for this API.
rdSchemas :: Lens' RestDescription (Maybe RestDescriptionSchemas)

-- | The base path for all REST requests.
rdServicePath :: Lens' RestDescription (Maybe Text)

-- | <ul>
--   <li><i>DEPRECATED</i> The base path for REST requests.</li>
--   </ul>
rdBasePath :: Lens' RestDescription (Maybe Text)

-- | The kind for this response.
rdKind :: Lens' RestDescription Text

-- | Enable exponential backoff for suitable methods in the generated
--   clients.
rdExponentialBackoffDefault :: Lens' RestDescription (Maybe Bool)

-- | Authentication information.
rdAuth :: Lens' RestDescription (Maybe RestDescriptionAuth)

-- | Links to 16x16 and 32x32 icons representing the API.
rdIcons :: Lens' RestDescription (Maybe RestDescriptionIcons)

-- | <ul>
--   <li><i>DEPRECATED</i> The base URL for REST requests.</li>
--   </ul>
rdBaseURL :: Lens' RestDescription (Maybe Text)

-- | The protocol described by this document.
rdProtocol :: Lens' RestDescription Text

-- | The name of the owner of this API. See ownerDomain.
rdOwnerName :: Lens' RestDescription (Maybe Text)

-- | The resources in this API.
rdResources :: Lens' RestDescription (Maybe RestDescriptionResources)

-- | 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.
rdOwnerDomain :: Lens' RestDescription (Maybe Text)

-- | The path for REST batch requests.
rdBatchPath :: Lens' RestDescription Text

-- | API-level methods for this API.
rdMethods :: Lens' RestDescription (Maybe RestDescriptionMethods)

-- | The name of this API.
rdName :: Lens' RestDescription (Maybe Text)

-- | The package of the owner of this API. See ownerDomain.
rdPackagePath :: Lens' RestDescription (Maybe Text)

-- | A list of supported features for this API.
rdFeatures :: Lens' RestDescription [Text]
rdVersionModule :: Lens' RestDescription (Maybe Bool)

-- | The version of this API.
rdVersion :: Lens' RestDescription (Maybe Text)

-- | Common parameters that apply across all apis.
rdParameters :: Lens' RestDescription (Maybe RestDescriptionParameters)

-- | A link to human readable documentation for the API.
rdDocumentationLink :: Lens' RestDescription (Maybe Text)

-- | The root URL under which all API services live.
rdRootURL :: Lens' RestDescription (Maybe Text)

-- | The ID of this API.
rdId :: Lens' RestDescription (Maybe Text)

-- | Indicates how the API name should be capitalized and split into
--   various parts. Useful for generating pretty class names.
rdCanonicalName :: Lens' RestDescription (Maybe Text)

-- | Labels for the status of this API, such as labs or deprecated.
rdLabels :: Lens' RestDescription [Text]

-- | Indicate the version of the Discovery API used to generate this doc.
rdDiscoveryVersion :: Lens' RestDescription Text

-- | The title of this API.
rdTitle :: Lens' RestDescription (Maybe Text)

-- | The version of this API.
rdRevision :: Lens' RestDescription (Maybe Text)

-- | The description of this API.
rdDescription :: Lens' RestDescription (Maybe Text)
data JSONSchema

-- | Creates a value of <a>JSONSchema</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jsAnnotations</a></li>
--   <li><a>jsVariant</a></li>
--   <li><a>jsLocation</a></li>
--   <li><a>jsRef</a></li>
--   <li><a>jsPattern</a></li>
--   <li><a>jsMaximum</a></li>
--   <li><a>jsDefault</a></li>
--   <li><a>jsFormat</a></li>
--   <li><a>jsItems</a></li>
--   <li><a>jsMinimum</a></li>
--   <li><a>jsRequired</a></li>
--   <li><a>jsId</a></li>
--   <li><a>jsAdditionalProperties</a></li>
--   <li><a>jsType</a></li>
--   <li><a>jsEnum</a></li>
--   <li><a>jsRepeated</a></li>
--   <li><a>jsReadOnly</a></li>
--   <li><a>jsEnumDescriptions</a></li>
--   <li><a>jsDescription</a></li>
--   <li><a>jsProperties</a></li>
--   </ul>
jsonSchema :: JSONSchema

-- | Additional information about this property.
jsAnnotations :: Lens' JSONSchema (Maybe JSONSchemaAnnotations)

-- | 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.
jsVariant :: Lens' JSONSchema (Maybe JSONSchemaVariant)

-- | Whether this parameter goes in the query or the path for REST
--   requests.
jsLocation :: Lens' JSONSchema (Maybe Text)

-- | A reference to another schema. The value of this property is the "id"
--   of another schema.
jsRef :: Lens' JSONSchema (Maybe Text)

-- | 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
jsPattern :: Lens' JSONSchema (Maybe Text)

-- | The maximum value of this parameter.
jsMaximum :: Lens' JSONSchema (Maybe Text)

-- | The default value of this property (if one exists).
jsDefault :: Lens' JSONSchema (Maybe Text)

-- | 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
jsFormat :: Lens' JSONSchema (Maybe Text)

-- | If this is a schema for an array, this property is the schema for each
--   element in the array.
jsItems :: Lens' JSONSchema (Maybe JSONSchema)

-- | The minimum value of this parameter.
jsMinimum :: Lens' JSONSchema (Maybe Text)

-- | Whether the parameter is required.
jsRequired :: Lens' JSONSchema (Maybe Bool)

-- | Unique identifier for this schema.
jsId :: Lens' JSONSchema (Maybe Text)

-- | If this is a schema for an object, this property is the schema for any
--   additional properties with dynamic keys on this object.
jsAdditionalProperties :: Lens' JSONSchema (Maybe JSONSchema)

-- | 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
jsType :: Lens' JSONSchema (Maybe Text)

-- | Values this parameter may take (if it is an enum).
jsEnum :: Lens' JSONSchema [Text]

-- | Whether this parameter may appear multiple times.
jsRepeated :: Lens' JSONSchema (Maybe Bool)

-- | 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.
jsReadOnly :: Lens' JSONSchema (Maybe Bool)

-- | The descriptions for the enums. Each position maps to the
--   corresponding value in the "enum" array.
jsEnumDescriptions :: Lens' JSONSchema [Text]

-- | A description of this object.
jsDescription :: Lens' JSONSchema (Maybe Text)

-- | If this is a schema for an object, list the schema for each property
--   of this object.
jsProperties :: Lens' JSONSchema (Maybe JSONSchemaProperties)

-- | The schemas for this API.
--   
--   <i>See:</i> <a>restDescriptionSchemas</a> smart constructor.
data RestDescriptionSchemas

-- | Creates a value of <a>RestDescriptionSchemas</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdsAddtional</a></li>
--   </ul>
restDescriptionSchemas :: HashMap Text JSONSchema -> RestDescriptionSchemas

-- | An individual schema description.
rdsAddtional :: Lens' RestDescriptionSchemas (HashMap Text JSONSchema)
data JSONSchemaVariantMapItem

-- | Creates a value of <a>JSONSchemaVariantMapItem</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jsvmiRef</a></li>
--   <li><a>jsvmiTypeValue</a></li>
--   </ul>
jsonSchemaVariantMapItem :: JSONSchemaVariantMapItem
jsvmiRef :: Lens' JSONSchemaVariantMapItem (Maybe Text)
jsvmiTypeValue :: Lens' JSONSchemaVariantMapItem (Maybe Text)

-- | The resources in this API.
--   
--   <i>See:</i> <a>restDescriptionResources</a> smart constructor.
data RestDescriptionResources

-- | Creates a value of <a>RestDescriptionResources</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdrAddtional</a></li>
--   </ul>
restDescriptionResources :: HashMap Text RestResource -> RestDescriptionResources

-- | An individual resource description. Contains methods and sub-resources
--   related to this resource.
rdrAddtional :: Lens' RestDescriptionResources (HashMap Text RestResource)

-- | Supported upload protocols.
--   
--   <i>See:</i> <a>restMethodMediaUploadProtocols</a> smart constructor.
data RestMethodMediaUploadProtocols

-- | Creates a value of <a>RestMethodMediaUploadProtocols</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmmupSimple</a></li>
--   <li><a>rmmupResumable</a></li>
--   </ul>
restMethodMediaUploadProtocols :: RestMethodMediaUploadProtocols

-- | Supports uploading as a single HTTP request.
rmmupSimple :: Lens' RestMethodMediaUploadProtocols (Maybe RestMethodMediaUploadProtocolsSimple)

-- | Supports the Resumable Media Upload protocol.
rmmupResumable :: Lens' RestMethodMediaUploadProtocols (Maybe RestMethodMediaUploadProtocolsResumable)

-- | Additional information about this property.
--   
--   <i>See:</i> <a>jsonSchemaAnnotations</a> smart constructor.
data JSONSchemaAnnotations

-- | Creates a value of <a>JSONSchemaAnnotations</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jsaRequired</a></li>
--   </ul>
jsonSchemaAnnotations :: JSONSchemaAnnotations

-- | A list of methods for which this property is required on requests.
jsaRequired :: Lens' JSONSchemaAnnotations [Text]

-- | Details for all parameters in this method.
--   
--   <i>See:</i> <a>restMethodParameters</a> smart constructor.
data RestMethodParameters

-- | Creates a value of <a>RestMethodParameters</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmpAddtional</a></li>
--   </ul>
restMethodParameters :: HashMap Text JSONSchema -> RestMethodParameters

-- | Details for a single parameter in this method.
rmpAddtional :: Lens' RestMethodParameters (HashMap Text JSONSchema)

-- | Media upload parameters.
--   
--   <i>See:</i> <a>restMethodMediaUpload</a> smart constructor.
data RestMethodMediaUpload

-- | Creates a value of <a>RestMethodMediaUpload</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmmuProtocols</a></li>
--   <li><a>rmmuAccept</a></li>
--   <li><a>rmmuMaxSize</a></li>
--   </ul>
restMethodMediaUpload :: RestMethodMediaUpload

-- | Supported upload protocols.
rmmuProtocols :: Lens' RestMethodMediaUpload (Maybe RestMethodMediaUploadProtocols)

-- | MIME Media Ranges for acceptable media uploads to this method.
rmmuAccept :: Lens' RestMethodMediaUpload [Text]

-- | Maximum size of a media upload, such as "1MB", "2GB" or "3TB".
rmmuMaxSize :: Lens' RestMethodMediaUpload (Maybe Text)

-- | If this is a schema for an object, list the schema for each property
--   of this object.
--   
--   <i>See:</i> <a>jsonSchemaProperties</a> smart constructor.
data JSONSchemaProperties

-- | Creates a value of <a>JSONSchemaProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>jspAddtional</a></li>
--   </ul>
jsonSchemaProperties :: HashMap Text JSONSchema -> JSONSchemaProperties

-- | A single property of this object. The value is itself a JSON Schema
--   object describing this property.
jspAddtional :: Lens' JSONSchemaProperties (HashMap Text JSONSchema)

-- | Supports the Resumable Media Upload protocol.
--   
--   <i>See:</i> <a>restMethodMediaUploadProtocolsResumable</a> smart
--   constructor.
data RestMethodMediaUploadProtocolsResumable

-- | Creates a value of <a>RestMethodMediaUploadProtocolsResumable</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmmuprPath</a></li>
--   <li><a>rmmuprMultiPart</a></li>
--   </ul>
restMethodMediaUploadProtocolsResumable :: RestMethodMediaUploadProtocolsResumable

-- | The URI path to be used for upload. Should be used in conjunction with
--   the basePath property at the api-level.
rmmuprPath :: Lens' RestMethodMediaUploadProtocolsResumable (Maybe Text)

-- | True if this endpoint supports uploading multipart media.
rmmuprMultiPart :: Lens' RestMethodMediaUploadProtocolsResumable Bool
data DirectoryList

-- | Creates a value of <a>DirectoryList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dlKind</a></li>
--   <li><a>dlItems</a></li>
--   <li><a>dlDiscoveryVersion</a></li>
--   </ul>
directoryList :: DirectoryList

-- | The kind for this response.
dlKind :: Lens' DirectoryList Text

-- | The individual directory entries. One entry per api/version pair.
dlItems :: Lens' DirectoryList [DirectoryListItemsItem]

-- | Indicate the version of the Discovery API used to generate this doc.
dlDiscoveryVersion :: Lens' DirectoryList Text

-- | The schema for the request.
--   
--   <i>See:</i> <a>restMethodRequest</a> smart constructor.
data RestMethodRequest

-- | Creates a value of <a>RestMethodRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rRef</a></li>
--   <li><a>rParameterName</a></li>
--   </ul>
restMethodRequest :: RestMethodRequest

-- | Schema ID for the request schema.
rRef :: Lens' RestMethodRequest (Maybe Text)

-- | parameter name.
rParameterName :: Lens' RestMethodRequest (Maybe Text)
