@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Registry API
@base https://apigeeregistry.googleapis.com
@version 0.0.1
@common_fields {project: str # The project id., location: str # The location id.}
@endpoints 35
@hint download_for_search
@toc projects(35)

@endpoint GET /v1/projects/{project}/locations/{location}/apis
@desc ListApis returns matching APIs.
@optional {pageSize: int(int32) # The maximum number of APIs to return. The service may return fewer than this value. If unspecified, at most 50 values will be returned. The maximum is 1000; values above 1000 will be coerced to 1000., pageToken: str # A page token, received from a previous `ListApis` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListApis` must match the call that provided the page token., filter: str # An expression that can be used to filter the list. Filters use the Common Expression Language and can refer to all message fields.}
@returns(200) {apis: [map], nextPageToken: str} # OK

@endpoint POST /v1/projects/{project}/locations/{location}/apis
@desc CreateApi creates a specified API.
@optional {apiId: str # Required. The ID to use for the api, which will become the final component of the api's resource name. This value should be 4-63 characters, and valid characters are /[a-z][0-9]-/. Following AIP-162, IDs must not have the form of a UUID., name: str # Resource name., displayName: str # Human-meaningful name., description: str # A detailed description., createTime: str(date-time) # Output only. Creation timestamp., updateTime: str(date-time) # Output only. Last update timestamp., availability: str # A user-definable description of the availability of this service. Format: free-form, but we expect single words that describe availability, e.g. "NONE", "TESTING", "PREVIEW", "GENERAL", "DEPRECATED", "SHUTDOWN"., recommendedVersion: str # The recommended version of the API. Format: apis/{api}/versions/{version}, recommendedDeployment: str # The recommended deployment of the API. Format: apis/{api}/deployments/{deployment}, labels: map # Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with "apigeeregistry.googleapis.com/" and cannot be changed., annotations: map # Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts.}
@returns(200) {name: str, displayName: str, description: str, createTime: str(date-time), updateTime: str(date-time), availability: str, recommendedVersion: str, recommendedDeployment: str, labels: map, annotations: map} # OK

@endpoint GET /v1/projects/{project}/locations/{location}/apis/{api}
@desc GetApi returns a specified API.
@required {api: str # The api id.}
@returns(200) {name: str, displayName: str, description: str, createTime: str(date-time), updateTime: str(date-time), availability: str, recommendedVersion: str, recommendedDeployment: str, labels: map, annotations: map} # OK

@endpoint DELETE /v1/projects/{project}/locations/{location}/apis/{api}
@desc DeleteApi removes a specified API and all of the resources that it
@required {api: str # The api id.}
@optional {force: bool # If set to true, any child resources will also be deleted. (Otherwise, the request will only work if there are no child resources.)}
@returns(200) OK

@endpoint PATCH /v1/projects/{project}/locations/{location}/apis/{api}
@desc UpdateApi can be used to modify a specified API.
@required {api: str # The api id.}
@optional {updateMask: str(field-mask) # The list of fields to be updated. If omitted, all fields are updated that are set in the request message (fields set to default values are ignored). If a "*" is specified, all fields are updated, including fields that are unspecified/default in the request., allowMissing: bool # If set to true, and the api is not found, a new api_versions will be created. In this situation, `update_mask` is ignored., name: str # Resource name., displayName: str # Human-meaningful name., description: str # A detailed description., createTime: str(date-time) # Output only. Creation timestamp., updateTime: str(date-time) # Output only. Last update timestamp., availability: str # A user-definable description of the availability of this service. Format: free-form, but we expect single words that describe availability, e.g. "NONE", "TESTING", "PREVIEW", "GENERAL", "DEPRECATED", "SHUTDOWN"., recommendedVersion: str # The recommended version of the API. Format: apis/{api}/versions/{version}, recommendedDeployment: str # The recommended deployment of the API. Format: apis/{api}/deployments/{deployment}, labels: map # Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with "apigeeregistry.googleapis.com/" and cannot be changed., annotations: map # Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts.}
@returns(200) {name: str, displayName: str, description: str, createTime: str(date-time), updateTime: str(date-time), availability: str, recommendedVersion: str, recommendedDeployment: str, labels: map, annotations: map} # OK

@endpoint GET /v1/projects/{project}/locations/{location}/apis/{api}/deployments
@desc ListApiDeployments returns matching deployments.
@required {api: str # The api id.}
@optional {pageSize: int(int32) # The maximum number of deployments to return. The service may return fewer than this value. If unspecified, at most 50 values will be returned. The maximum is 1000; values above 1000 will be coerced to 1000., pageToken: str # A page token, received from a previous `ListApiDeployments` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListApiDeployments` must match the call that provided the page token., filter: str # An expression that can be used to filter the list. Filters use the Common Expression Language and can refer to all message fields.}
@returns(200) {apiDeployments: [map], nextPageToken: str} # OK

@endpoint POST /v1/projects/{project}/locations/{location}/apis/{api}/deployments
@desc CreateApiDeployment creates a specified deployment.
@required {api: str # The api id.}
@optional {apiDeploymentId: str # Required. The ID to use for the deployment, which will become the final component of the deployment's resource name. This value should be 4-63 characters, and valid characters are /[a-z][0-9]-/. Following AIP-162, IDs must not have the form of a UUID., name: str # Resource name., displayName: str # Human-meaningful name., description: str # A detailed description., revisionId: str # Output only. Immutable. The revision ID of the deployment. A new revision is committed whenever the deployment contents are changed. The format is an 8-character hexadecimal string., createTime: str(date-time) # Output only. Creation timestamp; when the deployment resource was created., revisionCreateTime: str(date-time) # Output only. Revision creation timestamp; when the represented revision was created., revisionUpdateTime: str(date-time) # Output only. Last update timestamp: when the represented revision was last modified., apiSpecRevision: str # The full resource name (including revision id) of the spec of the API being served by the deployment. Changes to this value will update the revision. Format: apis/{api}/deployments/{deployment}, endpointUri: str # The address where the deployment is serving. Changes to this value will update the revision., externalChannelUri: str # The address of the external channel of the API (e.g. the Developer Portal). Changes to this value will not affect the revision., intendedAudience: str # Text briefly identifying the intended audience of the API. Changes to this value will not affect the revision., accessGuidance: str # Text briefly describing how to access the endpoint. Changes to this value will not affect the revision., labels: map # Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with "registry.googleapis.com/" and cannot be changed., annotations: map # Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts.}
@returns(200) {name: str, displayName: str, description: str, revisionId: str, createTime: str(date-time), revisionCreateTime: str(date-time), revisionUpdateTime: str(date-time), apiSpecRevision: str, endpointUri: str, externalChannelUri: str, intendedAudience: str, accessGuidance: str, labels: map, annotations: map} # OK

@endpoint GET /v1/projects/{project}/locations/{location}/apis/{api}/deployments/{deployment}
@desc GetApiDeployment returns a specified deployment.
@required {api: str # The api id., deployment: str # The deployment id.}
@returns(200) {name: str, displayName: str, description: str, revisionId: str, createTime: str(date-time), revisionCreateTime: str(date-time), revisionUpdateTime: str(date-time), apiSpecRevision: str, endpointUri: str, externalChannelUri: str, intendedAudience: str, accessGuidance: str, labels: map, annotations: map} # OK

@endpoint DELETE /v1/projects/{project}/locations/{location}/apis/{api}/deployments/{deployment}
@desc DeleteApiDeployment removes a specified deployment, all revisions, and all
@required {api: str # The api id., deployment: str # The deployment id.}
@optional {force: bool # If set to true, any child resources will also be deleted. (Otherwise, the request will only work if there are no child resources.)}
@returns(200) OK

@endpoint PATCH /v1/projects/{project}/locations/{location}/apis/{api}/deployments/{deployment}
@desc UpdateApiDeployment can be used to modify a specified deployment.
@required {api: str # The api id., deployment: str # The deployment id.}
@optional {updateMask: str(field-mask) # The list of fields to be updated. If omitted, all fields are updated that are set in the request message (fields set to default values are ignored). If a "*" is specified, all fields are updated, including fields that are unspecified/default in the request., allowMissing: bool # If set to true, and the deployment is not found, a new deployment will be created. In this situation, `update_mask` is ignored., name: str # Resource name., displayName: str # Human-meaningful name., description: str # A detailed description., revisionId: str # Output only. Immutable. The revision ID of the deployment. A new revision is committed whenever the deployment contents are changed. The format is an 8-character hexadecimal string., createTime: str(date-time) # Output only. Creation timestamp; when the deployment resource was created., revisionCreateTime: str(date-time) # Output only. Revision creation timestamp; when the represented revision was created., revisionUpdateTime: str(date-time) # Output only. Last update timestamp: when the represented revision was last modified., apiSpecRevision: str # The full resource name (including revision id) of the spec of the API being served by the deployment. Changes to this value will update the revision. Format: apis/{api}/deployments/{deployment}, endpointUri: str # The address where the deployment is serving. Changes to this value will update the revision., externalChannelUri: str # The address of the external channel of the API (e.g. the Developer Portal). Changes to this value will not affect the revision., intendedAudience: str # Text briefly identifying the intended audience of the API. Changes to this value will not affect the revision., accessGuidance: str # Text briefly describing how to access the endpoint. Changes to this value will not affect the revision., labels: map # Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with "registry.googleapis.com/" and cannot be changed., annotations: map # Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts.}
@returns(200) {name: str, displayName: str, description: str, revisionId: str, createTime: str(date-time), revisionCreateTime: str(date-time), revisionUpdateTime: str(date-time), apiSpecRevision: str, endpointUri: str, externalChannelUri: str, intendedAudience: str, accessGuidance: str, labels: map, annotations: map} # OK

@endpoint DELETE /v1/projects/{project}/locations/{location}/apis/{api}/deployments/{deployment}:deleteRevision
@desc DeleteApiDeploymentRevision deletes a revision of a deployment.
@required {api: str # The api id., deployment: str # The deployment id.}
@returns(200) {name: str, displayName: str, description: str, revisionId: str, createTime: str(date-time), revisionCreateTime: str(date-time), revisionUpdateTime: str(date-time), apiSpecRevision: str, endpointUri: str, externalChannelUri: str, intendedAudience: str, accessGuidance: str, labels: map, annotations: map} # OK

@endpoint GET /v1/projects/{project}/locations/{location}/apis/{api}/deployments/{deployment}:listRevisions
@desc ListApiDeploymentRevisions lists all revisions of a deployment.
@required {api: str # The api id., deployment: str # The deployment id.}
@optional {pageSize: int(int32) # The maximum number of revisions to return per page., pageToken: str # The page token, received from a previous ListApiDeploymentRevisions call. Provide this to retrieve the subsequent page.}
@returns(200) {apiDeployments: [map], nextPageToken: str} # OK

@endpoint POST /v1/projects/{project}/locations/{location}/apis/{api}/deployments/{deployment}:rollback
@desc RollbackApiDeployment sets the current revision to a specified prior
@required {api: str # The api id., deployment: str # The deployment id., name: str # Required. The deployment being rolled back., revisionId: str # Required. The revision ID to roll back to. It must be a revision of the same deployment.   Example: c7cfa2a8}
@returns(200) {name: str, displayName: str, description: str, revisionId: str, createTime: str(date-time), revisionCreateTime: str(date-time), revisionUpdateTime: str(date-time), apiSpecRevision: str, endpointUri: str, externalChannelUri: str, intendedAudience: str, accessGuidance: str, labels: map, annotations: map} # OK

@endpoint POST /v1/projects/{project}/locations/{location}/apis/{api}/deployments/{deployment}:tagRevision
@desc TagApiDeploymentRevision adds a tag to a specified revision of a
@required {api: str # The api id., deployment: str # The deployment id., name: str # Required. The name of the deployment to be tagged, including the revision ID., tag: str # Required. The tag to apply. The tag should be at most 40 characters, and match `[a-z][a-z0-9-]{3,39}`.}
@returns(200) {name: str, displayName: str, description: str, revisionId: str, createTime: str(date-time), revisionCreateTime: str(date-time), revisionUpdateTime: str(date-time), apiSpecRevision: str, endpointUri: str, externalChannelUri: str, intendedAudience: str, accessGuidance: str, labels: map, annotations: map} # OK

@endpoint GET /v1/projects/{project}/locations/{location}/apis/{api}/versions
@desc ListApiVersions returns matching versions.
@required {api: str # The api id.}
@optional {pageSize: int(int32) # The maximum number of versions to return. The service may return fewer than this value. If unspecified, at most 50 values will be returned. The maximum is 1000; values above 1000 will be coerced to 1000., pageToken: str # A page token, received from a previous `ListApiVersions` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListApiVersions` must match the call that provided the page token., filter: str # An expression that can be used to filter the list. Filters use the Common Expression Language and can refer to all message fields.}
@returns(200) {apiVersions: [map], nextPageToken: str} # OK

@endpoint POST /v1/projects/{project}/locations/{location}/apis/{api}/versions
@desc CreateApiVersion creates a specified version.
@required {api: str # The api id.}
@optional {apiVersionId: str # Required. The ID to use for the version, which will become the final component of the version's resource name. This value should be 4-63 characters, and valid characters are /[a-z][0-9]-/. Following AIP-162, IDs must not have the form of a UUID., name: str # Resource name., displayName: str # Human-meaningful name., description: str # A detailed description., createTime: str(date-time) # Output only. Creation timestamp., updateTime: str(date-time) # Output only. Last update timestamp., state: str # A user-definable description of the lifecycle phase of this API version. Format: free-form, but we expect single words that describe API maturity, e.g. "CONCEPT", "DESIGN", "DEVELOPMENT", "STAGING", "PRODUCTION", "DEPRECATED", "RETIRED"., labels: map # Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with "apigeeregistry.googleapis.com/" and cannot be changed., annotations: map # Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts.}
@returns(200) {name: str, displayName: str, description: str, createTime: str(date-time), updateTime: str(date-time), state: str, labels: map, annotations: map} # OK

@endpoint GET /v1/projects/{project}/locations/{location}/apis/{api}/versions/{version}
@desc GetApiVersion returns a specified version.
@required {api: str # The api id., version: str # The version id.}
@returns(200) {name: str, displayName: str, description: str, createTime: str(date-time), updateTime: str(date-time), state: str, labels: map, annotations: map} # OK

@endpoint DELETE /v1/projects/{project}/locations/{location}/apis/{api}/versions/{version}
@desc DeleteApiVersion removes a specified version and all of the resources that
@required {api: str # The api id., version: str # The version id.}
@optional {force: bool # If set to true, any child resources will also be deleted. (Otherwise, the request will only work if there are no child resources.)}
@returns(200) OK

@endpoint PATCH /v1/projects/{project}/locations/{location}/apis/{api}/versions/{version}
@desc UpdateApiVersion can be used to modify a specified version.
@required {api: str # The api id., version: str # The version id.}
@optional {updateMask: str(field-mask) # The list of fields to be updated. If omitted, all fields are updated that are set in the request message (fields set to default values are ignored). If a "*" is specified, all fields are updated, including fields that are unspecified/default in the request., allowMissing: bool # If set to true, and the version is not found, a new version will be created. In this situation, `update_mask` is ignored., name: str # Resource name., displayName: str # Human-meaningful name., description: str # A detailed description., createTime: str(date-time) # Output only. Creation timestamp., updateTime: str(date-time) # Output only. Last update timestamp., state: str # A user-definable description of the lifecycle phase of this API version. Format: free-form, but we expect single words that describe API maturity, e.g. "CONCEPT", "DESIGN", "DEVELOPMENT", "STAGING", "PRODUCTION", "DEPRECATED", "RETIRED"., labels: map # Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with "apigeeregistry.googleapis.com/" and cannot be changed., annotations: map # Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts.}
@returns(200) {name: str, displayName: str, description: str, createTime: str(date-time), updateTime: str(date-time), state: str, labels: map, annotations: map} # OK

@endpoint GET /v1/projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs
@desc ListApiSpecs returns matching specs.
@required {api: str # The api id., version: str # The version id.}
@optional {pageSize: int(int32) # The maximum number of specs to return. The service may return fewer than this value. If unspecified, at most 50 values will be returned. The maximum is 1000; values above 1000 will be coerced to 1000., pageToken: str # A page token, received from a previous `ListApiSpecs` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListApiSpecs` must match the call that provided the page token., filter: str # An expression that can be used to filter the list. Filters use the Common Expression Language and can refer to all message fields except contents.}
@returns(200) {apiSpecs: [map], nextPageToken: str} # OK

@endpoint POST /v1/projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs
@desc CreateApiSpec creates a specified spec.
@required {api: str # The api id., version: str # The version id.}
@optional {apiSpecId: str # Required. The ID to use for the spec, which will become the final component of the spec's resource name. This value should be 4-63 characters, and valid characters are /[a-z][0-9]-/. Following AIP-162, IDs must not have the form of a UUID., name: str # Resource name., filename: str # A possibly-hierarchical name used to refer to the spec from other specs., description: str # A detailed description., revisionId: str # Output only. Immutable. The revision ID of the spec. A new revision is committed whenever the spec contents are changed. The format is an 8-character hexadecimal string., createTime: str(date-time) # Output only. Creation timestamp; when the spec resource was created., revisionCreateTime: str(date-time) # Output only. Revision creation timestamp; when the represented revision was created., revisionUpdateTime: str(date-time) # Output only. Last update timestamp: when the represented revision was last modified., mimeType: str # A style (format) descriptor for this spec that is specified as a Media Type (https://en.wikipedia.org/wiki/Media_type). Possible values include "application/vnd.apigee.proto", "application/vnd.apigee.openapi", and "application/vnd.apigee.graphql", with possible suffixes representing compression types. These hypothetical names are defined in the vendor tree defined in RFC6838 (https://tools.ietf.org/html/rfc6838) and are not final. Content types can specify compression. Currently only GZip compression is supported (indicated with "+gzip")., sizeBytes: int(int32) # Output only. The size of the spec file in bytes. If the spec is gzipped, this is the size of the uncompressed spec., hash: str # Output only. A SHA-256 hash of the spec's contents. If the spec is gzipped, this is the hash of the uncompressed spec., sourceUri: str # The original source URI of the spec (if one exists). This is an external location that can be used for reference purposes but which may not be authoritative since this external resource may change after the spec is retrieved., contents: str(bytes) # Input only. The contents of the spec. Provided by API callers when specs are created or updated. To access the contents of a spec, use GetApiSpecContents., labels: map # Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with "apigeeregistry.googleapis.com/" and cannot be changed., annotations: map # Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts.}
@returns(200) {name: str, filename: str, description: str, revisionId: str, createTime: str(date-time), revisionCreateTime: str(date-time), revisionUpdateTime: str(date-time), mimeType: str, sizeBytes: int(int32), hash: str, sourceUri: str, contents: str(bytes), labels: map, annotations: map} # OK

@endpoint GET /v1/projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}
@desc GetApiSpec returns a specified spec.
@required {api: str # The api id., version: str # The version id., spec: str # The spec id.}
@returns(200) {name: str, filename: str, description: str, revisionId: str, createTime: str(date-time), revisionCreateTime: str(date-time), revisionUpdateTime: str(date-time), mimeType: str, sizeBytes: int(int32), hash: str, sourceUri: str, contents: str(bytes), labels: map, annotations: map} # OK

@endpoint DELETE /v1/projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}
@desc DeleteApiSpec removes a specified spec, all revisions, and all child
@required {api: str # The api id., version: str # The version id., spec: str # The spec id.}
@optional {force: bool # If set to true, any child resources will also be deleted. (Otherwise, the request will only work if there are no child resources.)}
@returns(200) OK

@endpoint PATCH /v1/projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}
@desc UpdateApiSpec can be used to modify a specified spec.
@required {api: str # The api id., version: str # The version id., spec: str # The spec id.}
@optional {updateMask: str(field-mask) # The list of fields to be updated. If omitted, all fields are updated that are set in the request message (fields set to default values are ignored). If a "*" is specified, all fields are updated, including fields that are unspecified/default in the request., allowMissing: bool # If set to true, and the spec is not found, a new spec will be created. In this situation, `update_mask` is ignored., name: str # Resource name., filename: str # A possibly-hierarchical name used to refer to the spec from other specs., description: str # A detailed description., revisionId: str # Output only. Immutable. The revision ID of the spec. A new revision is committed whenever the spec contents are changed. The format is an 8-character hexadecimal string., createTime: str(date-time) # Output only. Creation timestamp; when the spec resource was created., revisionCreateTime: str(date-time) # Output only. Revision creation timestamp; when the represented revision was created., revisionUpdateTime: str(date-time) # Output only. Last update timestamp: when the represented revision was last modified., mimeType: str # A style (format) descriptor for this spec that is specified as a Media Type (https://en.wikipedia.org/wiki/Media_type). Possible values include "application/vnd.apigee.proto", "application/vnd.apigee.openapi", and "application/vnd.apigee.graphql", with possible suffixes representing compression types. These hypothetical names are defined in the vendor tree defined in RFC6838 (https://tools.ietf.org/html/rfc6838) and are not final. Content types can specify compression. Currently only GZip compression is supported (indicated with "+gzip")., sizeBytes: int(int32) # Output only. The size of the spec file in bytes. If the spec is gzipped, this is the size of the uncompressed spec., hash: str # Output only. A SHA-256 hash of the spec's contents. If the spec is gzipped, this is the hash of the uncompressed spec., sourceUri: str # The original source URI of the spec (if one exists). This is an external location that can be used for reference purposes but which may not be authoritative since this external resource may change after the spec is retrieved., contents: str(bytes) # Input only. The contents of the spec. Provided by API callers when specs are created or updated. To access the contents of a spec, use GetApiSpecContents., labels: map # Labels attach identifying metadata to resources. Identifying metadata can be used to filter list operations. Label keys and values can be no longer than 64 characters (Unicode codepoints), can only contain lowercase letters, numeric characters, underscores and dashes. International characters are allowed. No more than 64 user labels can be associated with one resource (System labels are excluded). See https://goo.gl/xmQnxf for more information and examples of labels. System reserved label keys are prefixed with "apigeeregistry.googleapis.com/" and cannot be changed., annotations: map # Annotations attach non-identifying metadata to resources. Annotation keys and values are less restricted than those of labels, but should be generally used for small values of broad interest. Larger, topic- specific metadata should be stored in Artifacts.}
@returns(200) {name: str, filename: str, description: str, revisionId: str, createTime: str(date-time), revisionCreateTime: str(date-time), revisionUpdateTime: str(date-time), mimeType: str, sizeBytes: int(int32), hash: str, sourceUri: str, contents: str(bytes), labels: map, annotations: map} # OK

@endpoint DELETE /v1/projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}:deleteRevision
@desc DeleteApiSpecRevision deletes a revision of a spec.
@required {api: str # The api id., version: str # The version id., spec: str # The spec id.}
@returns(200) {name: str, filename: str, description: str, revisionId: str, createTime: str(date-time), revisionCreateTime: str(date-time), revisionUpdateTime: str(date-time), mimeType: str, sizeBytes: int(int32), hash: str, sourceUri: str, contents: str(bytes), labels: map, annotations: map} # OK

@endpoint GET /v1/projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}:getContents
@desc GetApiSpecContents returns the contents of a specified spec.
@required {api: str # The api id., version: str # The version id., spec: str # The spec id.}
@returns(200) OK

@endpoint GET /v1/projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}:listRevisions
@desc ListApiSpecRevisions lists all revisions of a spec.
@required {api: str # The api id., version: str # The version id., spec: str # The spec id.}
@optional {pageSize: int(int32) # The maximum number of revisions to return per page., pageToken: str # The page token, received from a previous ListApiSpecRevisions call. Provide this to retrieve the subsequent page.}
@returns(200) {apiSpecs: [map], nextPageToken: str} # OK

@endpoint POST /v1/projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}:rollback
@desc RollbackApiSpec sets the current revision to a specified prior revision.
@required {api: str # The api id., version: str # The version id., spec: str # The spec id., name: str # Required. The spec being rolled back., revisionId: str # Required. The revision ID to roll back to. It must be a revision of the same spec.   Example: c7cfa2a8}
@returns(200) {name: str, filename: str, description: str, revisionId: str, createTime: str(date-time), revisionCreateTime: str(date-time), revisionUpdateTime: str(date-time), mimeType: str, sizeBytes: int(int32), hash: str, sourceUri: str, contents: str(bytes), labels: map, annotations: map} # OK

@endpoint POST /v1/projects/{project}/locations/{location}/apis/{api}/versions/{version}/specs/{spec}:tagRevision
@desc TagApiSpecRevision adds a tag to a specified revision of a spec.
@required {api: str # The api id., version: str # The version id., spec: str # The spec id., name: str # Required. The name of the spec to be tagged, including the revision ID., tag: str # Required. The tag to apply. The tag should be at most 40 characters, and match `[a-z][a-z0-9-]{3,39}`.}
@returns(200) {name: str, filename: str, description: str, revisionId: str, createTime: str(date-time), revisionCreateTime: str(date-time), revisionUpdateTime: str(date-time), mimeType: str, sizeBytes: int(int32), hash: str, sourceUri: str, contents: str(bytes), labels: map, annotations: map} # OK

@endpoint GET /v1/projects/{project}/locations/{location}/artifacts
@desc ListArtifacts returns matching artifacts.
@optional {pageSize: int(int32) # The maximum number of artifacts to return. The service may return fewer than this value. If unspecified, at most 50 values will be returned. The maximum is 1000; values above 1000 will be coerced to 1000., pageToken: str # A page token, received from a previous `ListArtifacts` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListArtifacts` must match the call that provided the page token., filter: str # An expression that can be used to filter the list. Filters use the Common Expression Language and can refer to all message fields except contents.}
@returns(200) {artifacts: [map], nextPageToken: str} # OK

@endpoint POST /v1/projects/{project}/locations/{location}/artifacts
@desc CreateArtifact creates a specified artifact.
@optional {artifactId: str # Required. The ID to use for the artifact, which will become the final component of the artifact's resource name. This value should be 4-63 characters, and valid characters are /[a-z][0-9]-/. Following AIP-162, IDs must not have the form of a UUID., name: str # Resource name., createTime: str(date-time) # Output only. Creation timestamp., updateTime: str(date-time) # Output only. Last update timestamp., mimeType: str # A content type specifier for the artifact. Content type specifiers are Media Types (https://en.wikipedia.org/wiki/Media_type) with a possible "schema" parameter that specifies a schema for the stored information. Content types can specify compression. Currently only GZip compression is supported (indicated with "+gzip")., sizeBytes: int(int32) # Output only. The size of the artifact in bytes. If the artifact is gzipped, this is the size of the uncompressed artifact., hash: str # Output only. A SHA-256 hash of the artifact's contents. If the artifact is gzipped, this is the hash of the uncompressed artifact., contents: str(bytes) # Input only. The contents of the artifact. Provided by API callers when artifacts are created or replaced. To access the contents of an artifact, use GetArtifactContents.}
@returns(200) {name: str, createTime: str(date-time), updateTime: str(date-time), mimeType: str, sizeBytes: int(int32), hash: str, contents: str(bytes)} # OK

@endpoint GET /v1/projects/{project}/locations/{location}/artifacts/{artifact}
@desc GetArtifact returns a specified artifact.
@required {artifact: str # The artifact id.}
@returns(200) {name: str, createTime: str(date-time), updateTime: str(date-time), mimeType: str, sizeBytes: int(int32), hash: str, contents: str(bytes)} # OK

@endpoint PUT /v1/projects/{project}/locations/{location}/artifacts/{artifact}
@desc ReplaceArtifact can be used to replace a specified artifact.
@required {artifact: str # The artifact id.}
@optional {name: str # Resource name., createTime: str(date-time) # Output only. Creation timestamp., updateTime: str(date-time) # Output only. Last update timestamp., mimeType: str # A content type specifier for the artifact. Content type specifiers are Media Types (https://en.wikipedia.org/wiki/Media_type) with a possible "schema" parameter that specifies a schema for the stored information. Content types can specify compression. Currently only GZip compression is supported (indicated with "+gzip")., sizeBytes: int(int32) # Output only. The size of the artifact in bytes. If the artifact is gzipped, this is the size of the uncompressed artifact., hash: str # Output only. A SHA-256 hash of the artifact's contents. If the artifact is gzipped, this is the hash of the uncompressed artifact., contents: str(bytes) # Input only. The contents of the artifact. Provided by API callers when artifacts are created or replaced. To access the contents of an artifact, use GetArtifactContents.}
@returns(200) {name: str, createTime: str(date-time), updateTime: str(date-time), mimeType: str, sizeBytes: int(int32), hash: str, contents: str(bytes)} # OK

@endpoint DELETE /v1/projects/{project}/locations/{location}/artifacts/{artifact}
@desc DeleteArtifact removes a specified artifact.
@required {artifact: str # The artifact id.}
@returns(200) OK

@endpoint GET /v1/projects/{project}/locations/{location}/artifacts/{artifact}:getContents
@desc GetArtifactContents returns the contents of a specified artifact.
@required {artifact: str # The artifact id.}
@returns(200) OK

@end
