# Generated with protoc-gen-openapi # https://github.com/googleapis/gnostic/tree/master/apps/protoc-gen-openapi openapi: 3.0.3 info: title: Registry description: The Registry service allows teams to manage descriptions of APIs. version: 0.0.1 paths: /v1alpha1/projects: get: summary: ListProjects returns matching projects. operationId: Registry_ListProjects parameters: - name: page_size in: query description: The maximum number of projects 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. schema: type: string - name: page_token in: query description: A page token, received from a previous `ListProjects` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListProjects` must match the call that provided the page token. schema: type: string - name: filter in: query description: An expression that can be used to filter the list. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListProjectsResponse' post: summary: CreateProject creates a specified project. operationId: Registry_CreateProject parameters: - name: project_id in: query description: The ID to use for the project, which will become the final component of the project's resource name. This value should be 4-63 characters, and valid characters are /[a-z][0-9]-/. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Project' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Project' /v1alpha1/projects/{project}: get: summary: GetProject returns a specified project. operationId: Registry_GetProject parameters: - name: project in: path description: The project id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Project' delete: summary: DeleteProject removes a specified project and all of the resources that it owns. operationId: Registry_DeleteProject parameters: - name: project in: path description: The project id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Empty' patch: summary: UpdateProject can be used to modify a specified project. operationId: Registry_UpdateProject parameters: - name: project in: path description: The project id. required: true schema: type: string - name: update_mask in: query description: The list of fields to be updated. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Project' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Project' /v1alpha1/projects/{project}/apis: get: summary: ListApis returns matching APIs. operationId: Registry_ListApis parameters: - name: project in: path description: The project id. required: true schema: type: string - name: page_size in: query description: 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. schema: type: string - name: page_token in: query description: 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. schema: type: string - name: filter in: query description: An expression that can be used to filter the list. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListApisResponse' post: summary: CreateApi creates a specified API. operationId: Registry_CreateApi parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api_id in: query description: 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]-/. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Api' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Api' /v1alpha1/projects/{project}/apis/{api}: get: summary: GetApi returns a specified API. operationId: Registry_GetApi parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Api' delete: summary: DeleteApi removes a specified API and all of the resources that it owns. operationId: Registry_DeleteApi parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Empty' patch: summary: UpdateApi can be used to modify a specified API. operationId: Registry_UpdateApi parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string - name: update_mask in: query description: The list of fields to be updated. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Api' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Api' /v1alpha1/projects/{project}/apis/{api}/versions: get: summary: ListVersions returns matching versions. operationId: Registry_ListVersions parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string - name: page_size in: query description: 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. schema: type: string - name: page_token in: query description: A page token, received from a previous `ListVersions` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListVersions` must match the call that provided the page token. schema: type: string - name: filter in: query description: An expression that can be used to filter the list. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListVersionsResponse' post: summary: CreateVersion creates a specified version. operationId: Registry_CreateVersion parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string - name: version_id in: query description: 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]-/. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Version' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Version' /v1alpha1/projects/{project}/apis/{api}/versions/{version}: get: summary: GetVersion returns a specified version. operationId: Registry_GetVersion parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string - name: version in: path description: The version id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Version' delete: summary: DeleteVersion removes a specified version and all of the resources that it owns. operationId: Registry_DeleteVersion parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string - name: version in: path description: The version id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Empty' patch: summary: UpdateVersion can be used to modify a specified version. operationId: Registry_UpdateVersion parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string - name: version in: path description: The version id. required: true schema: type: string - name: update_mask in: query description: The list of fields to be updated. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Version' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Version' /v1alpha1/projects/{project}/apis/{api}/versions/{version}/specs: get: summary: ListSpecs returns matching specs. operationId: Registry_ListSpecs parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string - name: version in: path description: The version id. required: true schema: type: string - name: page_size in: query description: 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. schema: type: string - name: page_token in: query description: A page token, received from a previous `ListSpecs` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListSpecs` must match the call that provided the page token. schema: type: string - name: filter in: query description: An expression that can be used to filter the list. schema: type: string - name: view in: query description: The level of detail to return (defaults to BASIC). schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListSpecsResponse' post: summary: CreateSpec creates a specified spec. operationId: Registry_CreateSpec parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string - name: version in: path description: The version id. required: true schema: type: string - name: spec_id in: query description: 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]-/. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Spec' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Spec' /v1alpha1/projects/{project}/apis/{api}/versions/{version}/specs/{spec}: get: summary: GetSpec returns a specified spec. operationId: Registry_GetSpec parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string - name: version in: path description: The version id. required: true schema: type: string - name: spec in: path description: The spec id. required: true schema: type: string - name: view in: query description: The level of detail to return (defaults to BASIC). schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Spec' delete: summary: DeleteSpec removes a specified spec and all of the resources that it owns. operationId: Registry_DeleteSpec parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string - name: version in: path description: The version id. required: true schema: type: string - name: spec in: path description: The spec id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Empty' patch: summary: UpdateSpec can be used to modify a specified spec. operationId: Registry_UpdateSpec parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string - name: version in: path description: The version id. required: true schema: type: string - name: spec in: path description: The spec id. required: true schema: type: string - name: update_mask in: query description: The list of fields to be updated. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Spec' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Spec' /v1alpha1/projects/{project}/apis/{api}/versions/{version}/specs/{spec}:deleteRevision: delete: summary: DeleteSpecRevision deletes a revision of a spec. operationId: Registry_DeleteSpecRevision parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string - name: version in: path description: The version id. required: true schema: type: string - name: spec in: path description: The spec id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Empty' /v1alpha1/projects/{project}/apis/{api}/versions/{version}/specs/{spec}:listRevisionTags: get: summary: ListSpecRevisionTags lists all revision tags defined for a spec. operationId: Registry_ListSpecRevisionTags parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string - name: version in: path description: The version id. required: true schema: type: string - name: spec in: path description: The spec id. required: true schema: type: string - name: page_size in: query description: The maximum number of revision tags to return per page. schema: type: string - name: page_token in: query description: The page token, received from a previous ListSpecRevisionTags call. Provide this to retrieve the subsequent page. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListSpecRevisionTagsResponse' /v1alpha1/projects/{project}/apis/{api}/versions/{version}/specs/{spec}:listRevisions: get: summary: ListSpecRevisions lists all revisions of a spec. operationId: Registry_ListSpecRevisions parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string - name: version in: path description: The version id. required: true schema: type: string - name: spec in: path description: The spec id. required: true schema: type: string - name: page_size in: query description: The maximum number of revisions to return per page. schema: type: string - name: page_token in: query description: The page token, received from a previous ListSpecRevisions call. Provide this to retrieve the subsequent page. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListSpecRevisionsResponse' /v1alpha1/projects/{project}/apis/{api}/versions/{version}/specs/{spec}:rollback: post: summary: RollbackSpec sets the current revision to a specified prior revision. Note that this creates a new revision ID. operationId: Registry_RollbackSpec parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string - name: version in: path description: The version id. required: true schema: type: string - name: spec in: path description: The spec id. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/RollbackSpecRequest' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Spec' /v1alpha1/projects/{project}/apis/{api}/versions/{version}/specs/{spec}:tagRevision: post: summary: TagSpecRevision adds a tag to a specified revision of a spec. operationId: Registry_TagSpecRevision parameters: - name: project in: path description: The project id. required: true schema: type: string - name: api in: path description: The api id. required: true schema: type: string - name: version in: path description: The version id. required: true schema: type: string - name: spec in: path description: The spec id. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/TagSpecRevisionRequest' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Spec' /v1alpha1/projects/{project}/labels: get: summary: ListLabels returns matching labels. operationId: Registry_ListLabels parameters: - name: project in: path description: The project id. required: true schema: type: string - name: page_size in: query description: The maximum number of labels 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. schema: type: string - name: page_token in: query description: A page token, received from a previous `ListLabels` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListLabels` must match the call that provided the page token. schema: type: string - name: filter in: query description: An expression that can be used to filter the list. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListLabelsResponse' post: summary: CreateLabel creates a specified label. operationId: Registry_CreateLabel parameters: - name: project in: path description: The project id. required: true schema: type: string - name: label_id in: query description: The ID to use for the label, which will become the final component of the label's resource name. This value should be 4-63 characters, and valid characters are /[a-z][0-9]-/. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Label' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Label' /v1alpha1/projects/{project}/labels/{label}: get: summary: GetLabel returns a specified label. operationId: Registry_GetLabel parameters: - name: project in: path description: The project id. required: true schema: type: string - name: label in: path description: The label id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Label' delete: summary: DeleteLabel removes a specified label and all of the resources that it owns. operationId: Registry_DeleteLabel parameters: - name: project in: path description: The project id. required: true schema: type: string - name: label in: path description: The label id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Empty' /v1alpha1/projects/{project}/properties: get: summary: ListProperties returns matching properties. operationId: Registry_ListProperties parameters: - name: project in: path description: The project id. required: true schema: type: string - name: page_size in: query description: The maximum number of properties 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. schema: type: string - name: page_token in: query description: A page token, received from a previous `ListProperties` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListProperties` must match the call that provided the page token. schema: type: string - name: filter in: query description: An expression that can be used to filter the list. schema: type: string - name: view in: query description: The level of detail to return (defaults to BASIC). schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListPropertiesResponse' post: summary: CreateProperty creates a specified property. operationId: Registry_CreateProperty parameters: - name: project in: path description: The project id. required: true schema: type: string - name: property_id in: query description: The ID to use for the property, which will become the final component of the property's resource name. This value should be 4-63 characters, and valid characters are /[a-z][0-9]-/. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Property' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Property' /v1alpha1/projects/{project}/properties/{property}: get: summary: GetProperty returns a specified property. operationId: Registry_GetProperty parameters: - name: project in: path description: The project id. required: true schema: type: string - name: property in: path description: The property id. required: true schema: type: string - name: view in: query description: The level of detail to return (defaults to BASIC). schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Property' delete: summary: DeleteProperty removes a specified property and all of the resources that it owns. operationId: Registry_DeleteProperty parameters: - name: project in: path description: The project id. required: true schema: type: string - name: property in: path description: The property id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Empty' patch: summary: UpdateProperty can be used to modify a specified property. operationId: Registry_UpdateProperty parameters: - name: project in: path description: The project id. required: true schema: type: string - name: property in: path description: The property id. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Property' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Property' /v1alpha1/status: get: summary: GetStatus returns the status of the service. operationId: Registry_GetStatus responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Status' components: schemas: Any: properties: type_url: type: string description: 'A URL/resource name that uniquely identifies the type of the serialized protocol buffer message. This string must contain at least one "/" character. The last segment of the URL''s path must represent the fully qualified name of the type (as in `path/google.protobuf.Duration`). The name should be in a canonical form (e.g., leading "." is not accepted). In practice, teams usually precompile into the binary all types that they expect it to use in the context of Any. However, for URLs which use the scheme `http`, `https`, or no scheme, one can optionally set up a type server that maps type URLs to message definitions as follows: * If no scheme is provided, `https` is assumed. * An HTTP GET on the URL must yield a [google.protobuf.Type][] value in binary format, or produce an error. * Applications are allowed to cache lookup results based on the URL, or have them precompiled into a binary to avoid any lookup. Therefore, binary compatibility needs to be preserved on changes to types. (Use versioned type names to manage breaking changes.) Note: this functionality is not currently available in the official protobuf release, and it is not used for type URLs beginning with type.googleapis.com. Schemes other than `http`, `https` (or the empty scheme) might be used with implementation specific semantics.' value: type: string description: Must be a valid serialized protocol buffer of the above specified type. format: bytes description: '`Any` contains an arbitrary serialized protocol buffer message along with a URL that describes the type of the serialized message. Protobuf library provides support to pack/unpack Any values in the form of utility functions or additional generated methods of the Any type. Example 1: Pack and unpack a message in C++. Foo foo = ...; Any any; any.PackFrom(foo); ... if (any.UnpackTo(&foo)) { ... } Example 2: Pack and unpack a message in Java. Foo foo = ...; Any any = Any.pack(foo); ... if (any.is(Foo.class)) { foo = any.unpack(Foo.class); } Example 3: Pack and unpack a message in Python. foo = Foo(...) any = Any() any.Pack(foo) ... if any.Is(Foo.DESCRIPTOR): any.Unpack(foo) ... Example 4: Pack and unpack a message in Go foo := &pb.Foo{...} any, err := ptypes.MarshalAny(foo) ... foo := &pb.Foo{} if err := ptypes.UnmarshalAny(any, foo); err != nil { ... } The pack methods provided by protobuf library will by default use ''type.googleapis.com/full.type.name'' as the type URL and the unpack methods only use the fully qualified type name after the last ''/'' in the type URL, for example "foo.bar.com/x/y.z" will yield type name "y.z". JSON ==== The JSON representation of an `Any` value uses the regular representation of the deserialized, embedded message, with an additional field `@type` which contains the type URL. Example: package google.profile; message Person { string first_name = 1; string last_name = 2; } { "@type": "type.googleapis.com/google.profile.Person", "firstName": , "lastName": } If the embedded message type is well-known and has a custom JSON representation, that representation will be embedded adding a field `value` which holds the custom JSON in addition to the `@type` field. Example (for message [google.protobuf.Duration][]): { "@type": "type.googleapis.com/google.protobuf.Duration", "value": "1.212s" }' Api: properties: name: readOnly: true type: string description: Resource name. display_name: type: string description: Human-meaningful name. description: type: string description: A detailed description. create_time: $ref: '#/components/schemas/Timestamp' update_time: $ref: '#/components/schemas/Timestamp' availability: type: string description: '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".' recommended_version: type: string description: 'The recommended version of the API. Format: apis/{api}/versions/{version}' owner: type: string description: The owner of the the API. description: An Api is a top-level description of an API. Apis are produced by producers and are commitments to provide services. Empty: properties: {} description: 'A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.' Label: properties: name: readOnly: true type: string description: Resource name. subject: readOnly: true type: string description: Subject resource name. label: readOnly: true type: string description: Label name. create_time: $ref: '#/components/schemas/Timestamp' update_time: $ref: '#/components/schemas/Timestamp' description: Labels on resources. Labels are similar to properties but are in a separate namespace and without values. ListApisResponse: properties: apis: type: array items: $ref: '#/components/schemas/Api' description: The APIs from the specified publisher. next_page_token: type: string description: A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. description: Response message for ListApis. ListLabelsResponse: properties: labels: type: array items: $ref: '#/components/schemas/Label' description: The labels from the specified publisher. next_page_token: type: string description: A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. description: Response message for ListLabels. ListProjectsResponse: properties: projects: type: array items: $ref: '#/components/schemas/Project' description: The projects from the specified publisher. next_page_token: type: string description: A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. description: Response message for ListProjects. ListPropertiesResponse: properties: properties: type: array items: $ref: '#/components/schemas/Property' description: The properties from the specified publisher. next_page_token: type: string description: A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. description: Response message for ListProperties. ListSpecRevisionTagsResponse: properties: tags: type: array items: $ref: '#/components/schemas/SpecRevisionTag' description: The revisions of the spec. next_page_token: type: string description: A token that can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. description: Response message for ListSpecRevisionTagsResponse. ListSpecRevisionsResponse: properties: specs: type: array items: $ref: '#/components/schemas/Spec' description: The revisions of the spec. next_page_token: type: string description: A token that can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. description: Response message for ListSpecRevisionsResponse. ListSpecsResponse: properties: specs: type: array items: $ref: '#/components/schemas/Spec' description: The specs from the specified publisher. next_page_token: type: string description: A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. description: Response message for ListSpecs. ListVersionsResponse: properties: versions: type: array items: $ref: '#/components/schemas/Version' description: The versions from the specified publisher. next_page_token: type: string description: A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. description: Response message for ListVersions. Project: properties: name: readOnly: true type: string description: Resource name. display_name: type: string description: Human-meaningful name. description: type: string description: A detailed description. create_time: $ref: '#/components/schemas/Timestamp' update_time: $ref: '#/components/schemas/Timestamp' description: A Project is a top-level description of a collection of APIs. Typically there would be one project for an entire organization. Property: properties: name: readOnly: true type: string description: Resource name. subject: readOnly: true type: string description: Subject resource name. relation: readOnly: true type: string description: Relation name. create_time: $ref: '#/components/schemas/Timestamp' update_time: $ref: '#/components/schemas/Timestamp' string_value: type: string description: String value of property. int64_value: type: integer description: Integer value of property. format: int64 double_value: type: number description: Double value of property. format: double bool_value: type: boolean description: Boolean value of property. bytes_value: type: string description: Bytes value of property. format: bytes message_value: $ref: '#/components/schemas/Any' description: Properties of resources. Properties are unique (single-value) per resource. RollbackSpecRequest: properties: name: type: string description: The spec being rolled back. revision_id: type: string description: 'The revision ID to roll back to. It must be a revision of the same spec. Example: c7cfa2a8' description: Request message for RollbackSpec. Spec: properties: name: readOnly: true type: string description: Resource name. filename: type: string description: A possibly-hierarchical name used to refer to the file from other files. description: type: string description: A detailed description. create_time: $ref: '#/components/schemas/Timestamp' update_time: $ref: '#/components/schemas/Timestamp' style: type: string description: A style (format) descriptor for this spec. Possible values include "proto3", "OpenAPI-2.0", "OpenAPI-3.0". This is free-form but we expect that it will eventually be quite structured with an "API Description Format" part and possible "API Style" parts, e.g. "OpenAPI-3.0+Google" for OpenAPI v3 with (hypothetical) Google style constraints. size_bytes: readOnly: true type: integer description: The size of the spec file in bytes. format: int32 hash: readOnly: true type: string description: A hash of the spec file's contents source_uri: type: string description: The original source URI of the spec file (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 file is retrieved. contents: type: string description: The contents of the spec file. Returned only when the FULL view is requested. format: bytes revision_id: readOnly: true type: string description: The revision ID of the spec. A new revision is committed whenever the spec is changed in any way. The format is an 8-character hexadecimal string. revision_create_time: $ref: '#/components/schemas/Timestamp' description: A Spec describes a version of an API in a structured way. Specs provide formal descriptions that consumers can use to use a version. When specs consist of multiple files, each is a separate spec resource with its own name and a common value for the format property. SpecRevisionTag: properties: name: readOnly: true type: string description: The resource name of the tag. value: type: string description: The resource name at which the tag points. description: SpecRevisionTags represent tags used to mark spec revisions. Status: properties: message: type: string description: A string describing the status. description: Response message for GetStatus. TagSpecRevisionRequest: properties: name: type: string description: The name of the spec to be tagged, including the revision ID. tag: type: string description: The tag to apply. The tag should be at most 40 characters, and match `[a-z][a-z0-9-]{3,39}`. description: Request message for TagSpecRevision. Timestamp: properties: seconds: type: integer description: Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive. format: int64 nanos: type: integer description: Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be from 0 to 999,999,999 inclusive. format: int32 description: 'A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one. All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap second table is needed for interpretation, using a [24-hour linear smear](https://developers.google.com/time/smear). The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. # Examples Example 1: Compute Timestamp from POSIX `time()`. Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0); Example 2: Compute Timestamp from POSIX `gettimeofday()`. struct timeval tv; gettimeofday(&tv, NULL); Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.tv_usec * 1000); Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. long millis = System.currentTimeMillis(); Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .setNanos((int) ((millis % 1000) * 1000000)).build(); Example 5: Compute Timestamp from current time in Python. timestamp = Timestamp() timestamp.GetCurrentTime() # JSON Mapping In JSON format, the Timestamp type is encoded as a string in the [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone is required. A proto3 JSON serializer should always use UTC (as indicated by "Z") when printing the Timestamp type and a proto3 JSON parser should be able to accept both UTC and other timezones (as indicated by an offset). For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on January 15, 2017. In JavaScript, one can convert a Date object to this format using the standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) method. In Python, a standard `datetime.datetime` object can be converted to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with the time format spec ''%Y-%m-%dT%H:%M:%S.%fZ''. Likewise, in Java, one can use the Joda Time''s [`ISODateTimeFormat.dateTime()`]( http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D ) to obtain a formatter capable of generating timestamps in this format.' Version: properties: name: readOnly: true type: string description: Resource name. display_name: type: string description: Human-meaningful name. description: type: string description: A detailed description. create_time: $ref: '#/components/schemas/Timestamp' update_time: $ref: '#/components/schemas/Timestamp' state: type: string description: '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".' description: A Version describes a particular version of an API. Versions are what consumers actually use.