1
0
Fork 0
mirror of https://github.com/Luzifer/nginx-sso.git synced 2024-12-25 15:21:16 +00:00
nginx-sso/vendor/google.golang.org/api/remotebuildexecution/v2/remotebuildexecution-api.json
Knut Ahlers 9b3c895c04
Update dependencies
Signed-off-by: Knut Ahlers <knut@ahlers.me>
2019-04-22 06:44:07 +02:00

2353 lines
No EOL
134 KiB
JSON

{
"auth": {
"oauth2": {
"scopes": {
"https://www.googleapis.com/auth/cloud-platform": {
"description": "View and manage your data across Google Cloud Platform services"
}
}
}
},
"basePath": "",
"baseUrl": "https://remotebuildexecution.googleapis.com/",
"batchPath": "batch",
"canonicalName": "Remote Build Execution",
"description": "Supplies a Remote Execution API service for tools such as bazel.",
"discoveryVersion": "v1",
"documentationLink": "https://cloud.google.com/remote-build-execution/docs/",
"fullyEncodeReservedExpansion": true,
"icons": {
"x16": "http://www.google.com/images/icons/product/search-16.gif",
"x32": "http://www.google.com/images/icons/product/search-32.gif"
},
"id": "remotebuildexecution:v2",
"kind": "discovery#restDescription",
"name": "remotebuildexecution",
"ownerDomain": "google.com",
"ownerName": "Google",
"parameters": {
"$.xgafv": {
"description": "V1 error format.",
"enum": [
"1",
"2"
],
"enumDescriptions": [
"v1 error format",
"v2 error format"
],
"location": "query",
"type": "string"
},
"access_token": {
"description": "OAuth access token.",
"location": "query",
"type": "string"
},
"alt": {
"default": "json",
"description": "Data format for response.",
"enum": [
"json",
"media",
"proto"
],
"enumDescriptions": [
"Responses with Content-Type of application/json",
"Media download with context-dependent Content-Type",
"Responses with Content-Type of application/x-protobuf"
],
"location": "query",
"type": "string"
},
"callback": {
"description": "JSONP",
"location": "query",
"type": "string"
},
"fields": {
"description": "Selector specifying which fields to include in a partial response.",
"location": "query",
"type": "string"
},
"key": {
"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
"location": "query",
"type": "string"
},
"oauth_token": {
"description": "OAuth 2.0 token for the current user.",
"location": "query",
"type": "string"
},
"prettyPrint": {
"default": "true",
"description": "Returns response with indentations and line breaks.",
"location": "query",
"type": "boolean"
},
"quotaUser": {
"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
"location": "query",
"type": "string"
},
"uploadType": {
"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
"location": "query",
"type": "string"
},
"upload_protocol": {
"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
"location": "query",
"type": "string"
}
},
"protocol": "rest",
"resources": {
"actionResults": {
"methods": {
"get": {
"description": "Retrieve a cached execution result.\n\nErrors:\n\n* `NOT_FOUND`: The requested `ActionResult` is not in the cache.",
"flatPath": "v2/{v2Id}/actionResults/{hash}/{sizeBytes}",
"httpMethod": "GET",
"id": "remotebuildexecution.actionResults.get",
"parameterOrder": [
"instanceName",
"hash",
"sizeBytes"
],
"parameters": {
"hash": {
"description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
"location": "path",
"required": true,
"type": "string"
},
"instanceName": {
"description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
"location": "path",
"pattern": "^.+$",
"required": true,
"type": "string"
},
"sizeBytes": {
"description": "The size of the blob, in bytes.",
"format": "int64",
"location": "path",
"required": true,
"type": "string"
}
},
"path": "v2/{+instanceName}/actionResults/{hash}/{sizeBytes}",
"response": {
"$ref": "BuildBazelRemoteExecutionV2ActionResult"
},
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
},
"update": {
"description": "Upload a new execution result.\n\nIn order to allow the server to perform access control based on the type of\naction, and to assist with client debugging, the client MUST first upload\nthe Action that produced the\nresult, along with its\nCommand, into the\n`ContentAddressableStorage`.\n\nErrors:\n\n* `INVALID_ARGUMENT`: One or more arguments are invalid.\n* `FAILED_PRECONDITION`: One or more errors occurred in updating the\n action result, such as a missing command or action.\n* `RESOURCE_EXHAUSTED`: There is insufficient storage space to add the\n entry to the cache.",
"flatPath": "v2/{v2Id}/actionResults/{hash}/{sizeBytes}",
"httpMethod": "PUT",
"id": "remotebuildexecution.actionResults.update",
"parameterOrder": [
"instanceName",
"hash",
"sizeBytes"
],
"parameters": {
"hash": {
"description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
"location": "path",
"required": true,
"type": "string"
},
"instanceName": {
"description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
"location": "path",
"pattern": "^.+$",
"required": true,
"type": "string"
},
"resultsCachePolicy.priority": {
"description": "The priority (relative importance) of this content in the overall cache.\nGenerally, a lower value means a longer retention time or other advantage,\nbut the interpretation of a given value is server-dependent. A priority of\n0 means a *default* value, decided by the server.\n\nThe particular semantics of this field is up to the server. In particular,\nevery server will have their own supported range of priorities, and will\ndecide how these map into retention/eviction policy.",
"format": "int32",
"location": "query",
"type": "integer"
},
"sizeBytes": {
"description": "The size of the blob, in bytes.",
"format": "int64",
"location": "path",
"required": true,
"type": "string"
}
},
"path": "v2/{+instanceName}/actionResults/{hash}/{sizeBytes}",
"request": {
"$ref": "BuildBazelRemoteExecutionV2ActionResult"
},
"response": {
"$ref": "BuildBazelRemoteExecutionV2ActionResult"
},
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
}
}
},
"actions": {
"methods": {
"execute": {
"description": "Execute an action remotely.\n\nIn order to execute an action, the client must first upload all of the\ninputs, the\nCommand to run, and the\nAction into the\nContentAddressableStorage.\nIt then calls `Execute` with an `action_digest` referring to them. The\nserver will run the action and eventually return the result.\n\nThe input `Action`'s fields MUST meet the various canonicalization\nrequirements specified in the documentation for their types so that it has\nthe same digest as other logically equivalent `Action`s. The server MAY\nenforce the requirements and return errors if a non-canonical input is\nreceived. It MAY also proceed without verifying some or all of the\nrequirements, such as for performance reasons. If the server does not\nverify the requirement, then it will treat the `Action` as distinct from\nanother logically equivalent action if they hash differently.\n\nReturns a stream of\ngoogle.longrunning.Operation messages\ndescribing the resulting execution, with eventual `response`\nExecuteResponse. The\n`metadata` on the operation is of type\nExecuteOperationMetadata.\n\nIf the client remains connected after the first response is returned after\nthe server, then updates are streamed as if the client had called\nWaitExecution\nuntil the execution completes or the request reaches an error. The\noperation can also be queried using Operations\nAPI.\n\nThe server NEED NOT implement other methods or functionality of the\nOperations API.\n\nErrors discovered during creation of the `Operation` will be reported\nas gRPC Status errors, while errors that occurred while running the\naction will be reported in the `status` field of the `ExecuteResponse`. The\nserver MUST NOT set the `error` field of the `Operation` proto.\nThe possible errors include:\n\n* `INVALID_ARGUMENT`: One or more arguments are invalid.\n* `FAILED_PRECONDITION`: One or more errors occurred in setting up the\n action requested, such as a missing input or command or no worker being\n available. The client may be able to fix the errors and retry.\n* `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to run\n the action.\n* `UNAVAILABLE`: Due to a transient condition, such as all workers being\n occupied (and the server does not support a queue), the action could not\n be started. The client should retry.\n* `INTERNAL`: An internal error occurred in the execution engine or the\n worker.\n* `DEADLINE_EXCEEDED`: The execution timed out.\n* `CANCELLED`: The operation was cancelled by the client. This status is\n only possible if the server implements the Operations API CancelOperation\n method, and it was called for the current execution.\n\nIn the case of a missing input or command, the server SHOULD additionally\nsend a PreconditionFailure error detail\nwhere, for each requested blob not present in the CAS, there is a\n`Violation` with a `type` of `MISSING` and a `subject` of\n`\"blobs/{hash}/{size}\"` indicating the digest of the missing blob.",
"flatPath": "v2/{v2Id}/actions:execute",
"httpMethod": "POST",
"id": "remotebuildexecution.actions.execute",
"parameterOrder": [
"instanceName"
],
"parameters": {
"instanceName": {
"description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
"location": "path",
"pattern": "^.+$",
"required": true,
"type": "string"
}
},
"path": "v2/{+instanceName}/actions:execute",
"request": {
"$ref": "BuildBazelRemoteExecutionV2ExecuteRequest"
},
"response": {
"$ref": "GoogleLongrunningOperation"
},
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
}
}
},
"blobs": {
"methods": {
"batchRead": {
"description": "Download many blobs at once.\n\nThe server may enforce a limit of the combined total size of blobs\nto be downloaded using this API. This limit may be obtained using the\nCapabilities API.\nRequests exceeding the limit should either be split into smaller\nchunks or downloaded using the\nByteStream API, as appropriate.\n\nThis request is equivalent to calling a Bytestream `Read` request\non each individual blob, in parallel. The requests may succeed or fail\nindependently.\n\nErrors:\n\n* `INVALID_ARGUMENT`: The client attempted to read more than the\n server supported limit.\n\nEvery error on individual read will be returned in the corresponding digest\nstatus.",
"flatPath": "v2/{v2Id}/blobs:batchRead",
"httpMethod": "POST",
"id": "remotebuildexecution.blobs.batchRead",
"parameterOrder": [
"instanceName"
],
"parameters": {
"instanceName": {
"description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
"location": "path",
"pattern": "^.+$",
"required": true,
"type": "string"
}
},
"path": "v2/{+instanceName}/blobs:batchRead",
"request": {
"$ref": "BuildBazelRemoteExecutionV2BatchReadBlobsRequest"
},
"response": {
"$ref": "BuildBazelRemoteExecutionV2BatchReadBlobsResponse"
},
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
},
"batchUpdate": {
"description": "Upload many blobs at once.\n\nThe server may enforce a limit of the combined total size of blobs\nto be uploaded using this API. This limit may be obtained using the\nCapabilities API.\nRequests exceeding the limit should either be split into smaller\nchunks or uploaded using the\nByteStream API, as appropriate.\n\nThis request is equivalent to calling a Bytestream `Write` request\non each individual blob, in parallel. The requests may succeed or fail\nindependently.\n\nErrors:\n\n* `INVALID_ARGUMENT`: The client attempted to upload more than the\n server supported limit.\n\nIndividual requests may return the following errors, additionally:\n\n* `RESOURCE_EXHAUSTED`: There is insufficient disk quota to store the blob.\n* `INVALID_ARGUMENT`: The\nDigest does not match the\nprovided data.",
"flatPath": "v2/{v2Id}/blobs:batchUpdate",
"httpMethod": "POST",
"id": "remotebuildexecution.blobs.batchUpdate",
"parameterOrder": [
"instanceName"
],
"parameters": {
"instanceName": {
"description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
"location": "path",
"pattern": "^.+$",
"required": true,
"type": "string"
}
},
"path": "v2/{+instanceName}/blobs:batchUpdate",
"request": {
"$ref": "BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest"
},
"response": {
"$ref": "BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse"
},
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
},
"findMissing": {
"description": "Determine if blobs are present in the CAS.\n\nClients can use this API before uploading blobs to determine which ones are\nalready present in the CAS and do not need to be uploaded again.\n\nThere are no method-specific errors.",
"flatPath": "v2/{v2Id}/blobs:findMissing",
"httpMethod": "POST",
"id": "remotebuildexecution.blobs.findMissing",
"parameterOrder": [
"instanceName"
],
"parameters": {
"instanceName": {
"description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
"location": "path",
"pattern": "^.+$",
"required": true,
"type": "string"
}
},
"path": "v2/{+instanceName}/blobs:findMissing",
"request": {
"$ref": "BuildBazelRemoteExecutionV2FindMissingBlobsRequest"
},
"response": {
"$ref": "BuildBazelRemoteExecutionV2FindMissingBlobsResponse"
},
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
},
"getTree": {
"description": "Fetch the entire directory tree rooted at a node.\n\nThis request must be targeted at a\nDirectory stored in the\nContentAddressableStorage\n(CAS). The server will enumerate the `Directory` tree recursively and\nreturn every node descended from the root.\n\nThe GetTreeRequest.page_token parameter can be used to skip ahead in\nthe stream (e.g. when retrying a partially completed and aborted request),\nby setting it to a value taken from GetTreeResponse.next_page_token of the\nlast successfully processed GetTreeResponse).\n\nThe exact traversal order is unspecified and, unless retrieving subsequent\npages from an earlier request, is not guaranteed to be stable across\nmultiple invocations of `GetTree`.\n\nIf part of the tree is missing from the CAS, the server will return the\nportion present and omit the rest.\n\n* `NOT_FOUND`: The requested tree root is not present in the CAS.",
"flatPath": "v2/{v2Id}/blobs/{hash}/{sizeBytes}:getTree",
"httpMethod": "GET",
"id": "remotebuildexecution.blobs.getTree",
"parameterOrder": [
"instanceName",
"hash",
"sizeBytes"
],
"parameters": {
"hash": {
"description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
"location": "path",
"required": true,
"type": "string"
},
"instanceName": {
"description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
"location": "path",
"pattern": "^.+$",
"required": true,
"type": "string"
},
"pageSize": {
"description": "A maximum page size to request. If present, the server will request no more\nthan this many items. Regardless of whether a page size is specified, the\nserver may place its own limit on the number of items to be returned and\nrequire the client to retrieve more items using a subsequent request.",
"format": "int32",
"location": "query",
"type": "integer"
},
"pageToken": {
"description": "A page token, which must be a value received in a previous\nGetTreeResponse.\nIf present, the server will use it to return the following page of results.",
"location": "query",
"type": "string"
},
"sizeBytes": {
"description": "The size of the blob, in bytes.",
"format": "int64",
"location": "path",
"required": true,
"type": "string"
}
},
"path": "v2/{+instanceName}/blobs/{hash}/{sizeBytes}:getTree",
"response": {
"$ref": "BuildBazelRemoteExecutionV2GetTreeResponse"
},
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
}
}
},
"operations": {
"methods": {
"waitExecution": {
"description": "Wait for an execution operation to complete. When the client initially\nmakes the request, the server immediately responds with the current status\nof the execution. The server will leave the request stream open until the\noperation completes, and then respond with the completed operation. The\nserver MAY choose to stream additional updates as execution progresses,\nsuch as to provide an update as to the state of the execution.",
"flatPath": "v2/operations/{operationsId}:waitExecution",
"httpMethod": "POST",
"id": "remotebuildexecution.operations.waitExecution",
"parameterOrder": [
"name"
],
"parameters": {
"name": {
"description": "The name of the Operation\nreturned by Execute.",
"location": "path",
"pattern": "^operations/.+$",
"required": true,
"type": "string"
}
},
"path": "v2/{+name}:waitExecution",
"request": {
"$ref": "BuildBazelRemoteExecutionV2WaitExecutionRequest"
},
"response": {
"$ref": "GoogleLongrunningOperation"
},
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
}
}
},
"v2": {
"methods": {
"getCapabilities": {
"description": "GetCapabilities returns the server capabilities configuration.",
"flatPath": "v2/{v2Id}/capabilities",
"httpMethod": "GET",
"id": "remotebuildexecution.getCapabilities",
"parameterOrder": [
"instanceName"
],
"parameters": {
"instanceName": {
"description": "The instance of the execution system to operate against. A server may\nsupport multiple instances of the execution system (with their own workers,\nstorage, caches, etc.). The server MAY require use of this field to select\nbetween them in an implementation-defined fashion, otherwise it can be\nomitted.",
"location": "path",
"pattern": "^.+$",
"required": true,
"type": "string"
}
},
"path": "v2/{+instanceName}/capabilities",
"response": {
"$ref": "BuildBazelRemoteExecutionV2ServerCapabilities"
},
"scopes": [
"https://www.googleapis.com/auth/cloud-platform"
]
}
}
}
},
"revision": "20190312",
"rootUrl": "https://remotebuildexecution.googleapis.com/",
"schemas": {
"BuildBazelRemoteExecutionV2Action": {
"description": "An `Action` captures all the information about an execution which is required\nto reproduce it.\n\n`Action`s are the core component of the [Execution] service. A single\n`Action` represents a repeatable action that can be performed by the\nexecution service. `Action`s can be succinctly identified by the digest of\ntheir wire format encoding and, once an `Action` has been executed, will be\ncached in the action cache. Future requests can then use the cached result\nrather than needing to run afresh.\n\nWhen a server completes execution of an\nAction, it MAY choose to\ncache the result in\nthe ActionCache unless\n`do_not_cache` is `true`. Clients SHOULD expect the server to do so. By\ndefault, future calls to\nExecute the same\n`Action` will also serve their results from the cache. Clients must take care\nto understand the caching behaviour. Ideally, all `Action`s will be\nreproducible so that serving a result from cache is always desirable and\ncorrect.",
"id": "BuildBazelRemoteExecutionV2Action",
"properties": {
"commandDigest": {
"$ref": "BuildBazelRemoteExecutionV2Digest",
"description": "The digest of the Command\nto run, which MUST be present in the\nContentAddressableStorage."
},
"doNotCache": {
"description": "If true, then the `Action`'s result cannot be cached.",
"type": "boolean"
},
"inputRootDigest": {
"$ref": "BuildBazelRemoteExecutionV2Digest",
"description": "The digest of the root\nDirectory for the input\nfiles. The files in the directory tree are available in the correct\nlocation on the build machine before the command is executed. The root\ndirectory, as well as every subdirectory and content blob referred to, MUST\nbe in the\nContentAddressableStorage."
},
"timeout": {
"description": "A timeout after which the execution should be killed. If the timeout is\nabsent, then the client is specifying that the execution should continue\nas long as the server will let it. The server SHOULD impose a timeout if\nthe client does not specify one, however, if the client does specify a\ntimeout that is longer than the server's maximum timeout, the server MUST\nreject the request.\n\nThe timeout is a part of the\nAction message, and\ntherefore two `Actions` with different timeouts are different, even if they\nare otherwise identical. This is because, if they were not, running an\n`Action` with a lower timeout than is required might result in a cache hit\nfrom an execution run with a longer timeout, hiding the fact that the\ntimeout is too short. By encoding it directly in the `Action`, a lower\ntimeout will result in a cache miss and the execution timeout will fail\nimmediately, rather than whenever the cache entry gets evicted.",
"format": "google-duration",
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2ActionCacheUpdateCapabilities": {
"description": "Describes the server/instance capabilities for updating the action cache.",
"id": "BuildBazelRemoteExecutionV2ActionCacheUpdateCapabilities",
"properties": {
"updateEnabled": {
"type": "boolean"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2ActionResult": {
"description": "An ActionResult represents the result of an\nAction being run.",
"id": "BuildBazelRemoteExecutionV2ActionResult",
"properties": {
"executionMetadata": {
"$ref": "BuildBazelRemoteExecutionV2ExecutedActionMetadata",
"description": "The details of the execution that originally produced this result."
},
"exitCode": {
"description": "The exit code of the command.",
"format": "int32",
"type": "integer"
},
"outputDirectories": {
"description": "The output directories of the action. For each output directory requested\nin the `output_directories` field of the Action, if the corresponding\ndirectory existed after the action completed, a single entry will be\npresent in the output list, which will contain the digest of a\nTree message containing the\ndirectory tree, and the path equal exactly to the corresponding Action\noutput_directories member.\n\nAs an example, suppose the Action had an output directory `a/b/dir` and the\nexecution produced the following contents in `a/b/dir`: a file named `bar`\nand a directory named `foo` with an executable file named `baz`. Then,\noutput_directory will contain (hashes shortened for readability):\n\n```json\n// OutputDirectory proto:\n{\n path: \"a/b/dir\"\n tree_digest: {\n hash: \"4a73bc9d03...\",\n size: 55\n }\n}\n// Tree proto with hash \"4a73bc9d03...\" and size 55:\n{\n root: {\n files: [\n {\n name: \"bar\",\n digest: {\n hash: \"4a73bc9d03...\",\n size: 65534\n }\n }\n ],\n directories: [\n {\n name: \"foo\",\n digest: {\n hash: \"4cf2eda940...\",\n size: 43\n }\n }\n ]\n }\n children : {\n // (Directory proto with hash \"4cf2eda940...\" and size 43)\n files: [\n {\n name: \"baz\",\n digest: {\n hash: \"b2c941073e...\",\n size: 1294,\n },\n is_executable: true\n }\n ]\n }\n}\n```",
"items": {
"$ref": "BuildBazelRemoteExecutionV2OutputDirectory"
},
"type": "array"
},
"outputDirectorySymlinks": {
"description": "The output directories of the action that are symbolic links to other\ndirectories. Those may be links to other output directories, or input\ndirectories, or even absolute paths outside of the working directory,\nif the server supports\nSymlinkAbsolutePathStrategy.ALLOWED.\nFor each output directory requested in the `output_directories` field of\nthe Action, if the directory file existed after\nthe action completed, a single entry will be present either in this field,\nor in the `output_directories` field, if the directory was not a symbolic link.\n\nIf the action does not produce the requested output, or produces a\nfile where a directory is expected or vice versa, then that output\nwill be omitted from the list. The server is free to arrange the output\nlist as desired; clients MUST NOT assume that the output list is sorted.",
"items": {
"$ref": "BuildBazelRemoteExecutionV2OutputSymlink"
},
"type": "array"
},
"outputFileSymlinks": {
"description": "The output files of the action that are symbolic links to other files. Those\nmay be links to other output files, or input files, or even absolute paths\noutside of the working directory, if the server supports\nSymlinkAbsolutePathStrategy.ALLOWED.\nFor each output file requested in the `output_files` field of the Action,\nif the corresponding file existed after\nthe action completed, a single entry will be present either in this field,\nor in the `output_files` field, if the file was not a symbolic link.\n\nIf the action does not produce the requested output, or produces a\ndirectory where a regular file is expected or vice versa, then that output\nwill be omitted from the list. The server is free to arrange the output\nlist as desired; clients MUST NOT assume that the output list is sorted.",
"items": {
"$ref": "BuildBazelRemoteExecutionV2OutputSymlink"
},
"type": "array"
},
"outputFiles": {
"description": "The output files of the action. For each output file requested in the\n`output_files` field of the Action, if the corresponding file existed after\nthe action completed, a single entry will be present either in this field,\nor in the output_file_symlinks field, if the file was a symbolic link to\nanother file.\n\nIf the action does not produce the requested output, or produces a\ndirectory where a regular file is expected or vice versa, then that output\nwill be omitted from the list. The server is free to arrange the output\nlist as desired; clients MUST NOT assume that the output list is sorted.",
"items": {
"$ref": "BuildBazelRemoteExecutionV2OutputFile"
},
"type": "array"
},
"stderrDigest": {
"$ref": "BuildBazelRemoteExecutionV2Digest",
"description": "The digest for a blob containing the standard error of the action, which\ncan be retrieved from the\nContentAddressableStorage.\nSee `stderr_raw` for when this will be set."
},
"stderrRaw": {
"description": "The standard error buffer of the action. The server will determine, based\non the size of the buffer, whether to return it in raw form or to return\na digest in `stderr_digest` that points to the buffer. If neither is set,\nthen the buffer is empty. The client SHOULD NOT assume it will get one of\nthe raw buffer or a digest on any given request and should be prepared to\nhandle either.",
"format": "byte",
"type": "string"
},
"stdoutDigest": {
"$ref": "BuildBazelRemoteExecutionV2Digest",
"description": "The digest for a blob containing the standard output of the action, which\ncan be retrieved from the\nContentAddressableStorage.\nSee `stdout_raw` for when this will be set."
},
"stdoutRaw": {
"description": "The standard output buffer of the action. The server will determine, based\non the size of the buffer, whether to return it in raw form or to return\na digest in `stdout_digest` that points to the buffer. If neither is set,\nthen the buffer is empty. The client SHOULD NOT assume it will get one of\nthe raw buffer or a digest on any given request and should be prepared to\nhandle either.",
"format": "byte",
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2BatchReadBlobsRequest": {
"description": "A request message for\nContentAddressableStorage.BatchReadBlobs.",
"id": "BuildBazelRemoteExecutionV2BatchReadBlobsRequest",
"properties": {
"digests": {
"description": "The individual blob digests.",
"items": {
"$ref": "BuildBazelRemoteExecutionV2Digest"
},
"type": "array"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2BatchReadBlobsResponse": {
"description": "A response message for\nContentAddressableStorage.BatchReadBlobs.",
"id": "BuildBazelRemoteExecutionV2BatchReadBlobsResponse",
"properties": {
"responses": {
"description": "The responses to the requests.",
"items": {
"$ref": "BuildBazelRemoteExecutionV2BatchReadBlobsResponseResponse"
},
"type": "array"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2BatchReadBlobsResponseResponse": {
"description": "A response corresponding to a single blob that the client tried to upload.",
"id": "BuildBazelRemoteExecutionV2BatchReadBlobsResponseResponse",
"properties": {
"data": {
"description": "The raw binary data.",
"format": "byte",
"type": "string"
},
"digest": {
"$ref": "BuildBazelRemoteExecutionV2Digest",
"description": "The digest to which this response corresponds."
},
"status": {
"$ref": "GoogleRpcStatus",
"description": "The result of attempting to download that blob."
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest": {
"description": "A request message for\nContentAddressableStorage.BatchUpdateBlobs.",
"id": "BuildBazelRemoteExecutionV2BatchUpdateBlobsRequest",
"properties": {
"requests": {
"description": "The individual upload requests.",
"items": {
"$ref": "BuildBazelRemoteExecutionV2BatchUpdateBlobsRequestRequest"
},
"type": "array"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2BatchUpdateBlobsRequestRequest": {
"description": "A request corresponding to a single blob that the client wants to upload.",
"id": "BuildBazelRemoteExecutionV2BatchUpdateBlobsRequestRequest",
"properties": {
"data": {
"description": "The raw binary data.",
"format": "byte",
"type": "string"
},
"digest": {
"$ref": "BuildBazelRemoteExecutionV2Digest",
"description": "The digest of the blob. This MUST be the digest of `data`."
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse": {
"description": "A response message for\nContentAddressableStorage.BatchUpdateBlobs.",
"id": "BuildBazelRemoteExecutionV2BatchUpdateBlobsResponse",
"properties": {
"responses": {
"description": "The responses to the requests.",
"items": {
"$ref": "BuildBazelRemoteExecutionV2BatchUpdateBlobsResponseResponse"
},
"type": "array"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2BatchUpdateBlobsResponseResponse": {
"description": "A response corresponding to a single blob that the client tried to upload.",
"id": "BuildBazelRemoteExecutionV2BatchUpdateBlobsResponseResponse",
"properties": {
"digest": {
"$ref": "BuildBazelRemoteExecutionV2Digest",
"description": "The blob digest to which this response corresponds."
},
"status": {
"$ref": "GoogleRpcStatus",
"description": "The result of attempting to upload that blob."
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2CacheCapabilities": {
"description": "Capabilities of the remote cache system.",
"id": "BuildBazelRemoteExecutionV2CacheCapabilities",
"properties": {
"actionCacheUpdateCapabilities": {
"$ref": "BuildBazelRemoteExecutionV2ActionCacheUpdateCapabilities",
"description": "Capabilities for updating the action cache."
},
"cachePriorityCapabilities": {
"$ref": "BuildBazelRemoteExecutionV2PriorityCapabilities",
"description": "Supported cache priority range for both CAS and ActionCache."
},
"digestFunction": {
"description": "All the digest functions supported by the remote cache.\nRemote cache may support multiple digest functions simultaneously.",
"enumDescriptions": [
"It is an error for the server to return this value.",
"The Sha-256 digest function.",
"The Sha-1 digest function.",
"The MD5 digest function."
],
"items": {
"enum": [
"UNKNOWN",
"SHA256",
"SHA1",
"MD5"
],
"type": "string"
},
"type": "array"
},
"maxBatchTotalSizeBytes": {
"description": "Maximum total size of blobs to be uploaded/downloaded using\nbatch methods. A value of 0 means no limit is set, although\nin practice there will always be a message size limitation\nof the protocol in use, e.g. GRPC.",
"format": "int64",
"type": "string"
},
"symlinkAbsolutePathStrategy": {
"description": "Whether absolute symlink targets are supported.",
"enum": [
"UNKNOWN",
"DISALLOWED",
"ALLOWED"
],
"enumDescriptions": [
"",
"Server will return an `INVALID_ARGUMENT` on input symlinks with absolute\ntargets.\nIf an action tries to create an output symlink with an absolute target, a\n`FAILED_PRECONDITION` will be returned.",
"Server will allow symlink targets to escape the input root tree, possibly\nresulting in non-hermetic builds."
],
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2Command": {
"description": "A `Command` is the actual command executed by a worker running an\nAction and specifications of its\nenvironment.\n\nExcept as otherwise required, the environment (such as which system\nlibraries or binaries are available, and what filesystems are mounted where)\nis defined by and specific to the implementation of the remote execution API.",
"id": "BuildBazelRemoteExecutionV2Command",
"properties": {
"arguments": {
"description": "The arguments to the command. The first argument must be the path to the\nexecutable, which must be either a relative path, in which case it is\nevaluated with respect to the input root, or an absolute path.",
"items": {
"type": "string"
},
"type": "array"
},
"environmentVariables": {
"description": "The environment variables to set when running the program. The worker may\nprovide its own default environment variables; these defaults can be\noverridden using this field. Additional variables can also be specified.\n\nIn order to ensure that equivalent\nCommands always hash to the same\nvalue, the environment variables MUST be lexicographically sorted by name.\nSorting of strings is done by code point, equivalently, by the UTF-8 bytes.",
"items": {
"$ref": "BuildBazelRemoteExecutionV2CommandEnvironmentVariable"
},
"type": "array"
},
"outputDirectories": {
"description": "A list of the output directories that the client expects to retrieve from\nthe action. Only the listed directories will be returned (an entire\ndirectory structure will be returned as a\nTree message digest, see\nOutputDirectory), as\nwell as files listed in `output_files`. Other files or directories that\nmay be created during command execution are discarded.\n\nThe paths are relative to the working directory of the action execution.\nThe paths are specified using a single forward slash (`/`) as a path\nseparator, even if the execution platform natively uses a different\nseparator. The path MUST NOT include a trailing slash, nor a leading slash,\nbeing a relative path. The special value of empty string is allowed,\nalthough not recommended, and can be used to capture the entire working\ndirectory tree, including inputs.\n\nIn order to ensure consistent hashing of the same Action, the output paths\nMUST be sorted lexicographically by code point (or, equivalently, by UTF-8\nbytes).\n\nAn output directory cannot be duplicated or have the same path as any of\nthe listed output files.\n\nDirectories leading up to the output directories (but not the output\ndirectories themselves) are created by the worker prior to execution, even\nif they are not explicitly part of the input root.",
"items": {
"type": "string"
},
"type": "array"
},
"outputFiles": {
"description": "A list of the output files that the client expects to retrieve from the\naction. Only the listed files, as well as directories listed in\n`output_directories`, will be returned to the client as output.\nOther files or directories that may be created during command execution\nare discarded.\n\nThe paths are relative to the working directory of the action execution.\nThe paths are specified using a single forward slash (`/`) as a path\nseparator, even if the execution platform natively uses a different\nseparator. The path MUST NOT include a trailing slash, nor a leading slash,\nbeing a relative path.\n\nIn order to ensure consistent hashing of the same Action, the output paths\nMUST be sorted lexicographically by code point (or, equivalently, by UTF-8\nbytes).\n\nAn output file cannot be duplicated, be a parent of another output file, or\nhave the same path as any of the listed output directories.\n\nDirectories leading up to the output files are created by the worker prior\nto execution, even if they are not explicitly part of the input root.",
"items": {
"type": "string"
},
"type": "array"
},
"platform": {
"$ref": "BuildBazelRemoteExecutionV2Platform",
"description": "The platform requirements for the execution environment. The server MAY\nchoose to execute the action on any worker satisfying the requirements, so\nthe client SHOULD ensure that running the action on any such worker will\nhave the same result."
},
"workingDirectory": {
"description": "The working directory, relative to the input root, for the command to run\nin. It must be a directory which exists in the input tree. If it is left\nempty, then the action is run in the input root.",
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2CommandEnvironmentVariable": {
"description": "An `EnvironmentVariable` is one variable to set in the running program's\nenvironment.",
"id": "BuildBazelRemoteExecutionV2CommandEnvironmentVariable",
"properties": {
"name": {
"description": "The variable name.",
"type": "string"
},
"value": {
"description": "The variable value.",
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2Digest": {
"description": "A content digest. A digest for a given blob consists of the size of the blob\nand its hash. The hash algorithm to use is defined by the server, but servers\nSHOULD use SHA-256.\n\nThe size is considered to be an integral part of the digest and cannot be\nseparated. That is, even if the `hash` field is correctly specified but\n`size_bytes` is not, the server MUST reject the request.\n\nThe reason for including the size in the digest is as follows: in a great\nmany cases, the server needs to know the size of the blob it is about to work\nwith prior to starting an operation with it, such as flattening Merkle tree\nstructures or streaming it to a worker. Technically, the server could\nimplement a separate metadata store, but this results in a significantly more\ncomplicated implementation as opposed to having the client specify the size\nup-front (or storing the size along with the digest in every message where\ndigests are embedded). This does mean that the API leaks some implementation\ndetails of (what we consider to be) a reasonable server implementation, but\nwe consider this to be a worthwhile tradeoff.\n\nWhen a `Digest` is used to refer to a proto message, it always refers to the\nmessage in binary encoded form. To ensure consistent hashing, clients and\nservers MUST ensure that they serialize messages according to the following\nrules, even if there are alternate valid encodings for the same message:\n\n* Fields are serialized in tag order.\n* There are no unknown fields.\n* There are no duplicate fields.\n* Fields are serialized according to the default semantics for their type.\n\nMost protocol buffer implementations will always follow these rules when\nserializing, but care should be taken to avoid shortcuts. For instance,\nconcatenating two messages to merge them may produce duplicate fields.",
"id": "BuildBazelRemoteExecutionV2Digest",
"properties": {
"hash": {
"description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
"type": "string"
},
"sizeBytes": {
"description": "The size of the blob, in bytes.",
"format": "int64",
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2Directory": {
"description": "A `Directory` represents a directory node in a file tree, containing zero or\nmore children FileNodes,\nDirectoryNodes and\nSymlinkNodes.\nEach `Node` contains its name in the directory, either the digest of its\ncontent (either a file blob or a `Directory` proto) or a symlink target, as\nwell as possibly some metadata about the file or directory.\n\nIn order to ensure that two equivalent directory trees hash to the same\nvalue, the following restrictions MUST be obeyed when constructing a\na `Directory`:\n\n* Every child in the directory must have a path of exactly one segment.\n Multiple levels of directory hierarchy may not be collapsed.\n* Each child in the directory must have a unique path segment (file name).\n* The files, directories and symlinks in the directory must each be sorted\n in lexicographical order by path. The path strings must be sorted by code\n point, equivalently, by UTF-8 bytes.\n\nA `Directory` that obeys the restrictions is said to be in canonical form.\n\nAs an example, the following could be used for a file named `bar` and a\ndirectory named `foo` with an executable file named `baz` (hashes shortened\nfor readability):\n\n```json\n// (Directory proto)\n{\n files: [\n {\n name: \"bar\",\n digest: {\n hash: \"4a73bc9d03...\",\n size: 65534\n }\n }\n ],\n directories: [\n {\n name: \"foo\",\n digest: {\n hash: \"4cf2eda940...\",\n size: 43\n }\n }\n ]\n}\n\n// (Directory proto with hash \"4cf2eda940...\" and size 43)\n{\n files: [\n {\n name: \"baz\",\n digest: {\n hash: \"b2c941073e...\",\n size: 1294,\n },\n is_executable: true\n }\n ]\n}\n```",
"id": "BuildBazelRemoteExecutionV2Directory",
"properties": {
"directories": {
"description": "The subdirectories in the directory.",
"items": {
"$ref": "BuildBazelRemoteExecutionV2DirectoryNode"
},
"type": "array"
},
"files": {
"description": "The files in the directory.",
"items": {
"$ref": "BuildBazelRemoteExecutionV2FileNode"
},
"type": "array"
},
"symlinks": {
"description": "The symlinks in the directory.",
"items": {
"$ref": "BuildBazelRemoteExecutionV2SymlinkNode"
},
"type": "array"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2DirectoryNode": {
"description": "A `DirectoryNode` represents a child of a\nDirectory which is itself\na `Directory` and its associated metadata.",
"id": "BuildBazelRemoteExecutionV2DirectoryNode",
"properties": {
"digest": {
"$ref": "BuildBazelRemoteExecutionV2Digest",
"description": "The digest of the\nDirectory object\nrepresented. See Digest\nfor information about how to take the digest of a proto message."
},
"name": {
"description": "The name of the directory.",
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2ExecuteOperationMetadata": {
"description": "Metadata about an ongoing\nexecution, which\nwill be contained in the metadata\nfield of the\nOperation.",
"id": "BuildBazelRemoteExecutionV2ExecuteOperationMetadata",
"properties": {
"actionDigest": {
"$ref": "BuildBazelRemoteExecutionV2Digest",
"description": "The digest of the Action\nbeing executed."
},
"stage": {
"enum": [
"UNKNOWN",
"CACHE_CHECK",
"QUEUED",
"EXECUTING",
"COMPLETED"
],
"enumDescriptions": [
"",
"Checking the result against the cache.",
"Currently idle, awaiting a free machine to execute.",
"Currently being executed by a worker.",
"Finished execution."
],
"type": "string"
},
"stderrStreamName": {
"description": "If set, the client can use this name with\nByteStream.Read to stream the\nstandard error.",
"type": "string"
},
"stdoutStreamName": {
"description": "If set, the client can use this name with\nByteStream.Read to stream the\nstandard output.",
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2ExecuteRequest": {
"description": "A request message for\nExecution.Execute.",
"id": "BuildBazelRemoteExecutionV2ExecuteRequest",
"properties": {
"actionDigest": {
"$ref": "BuildBazelRemoteExecutionV2Digest",
"description": "The digest of the Action to\nexecute."
},
"executionPolicy": {
"$ref": "BuildBazelRemoteExecutionV2ExecutionPolicy",
"description": "An optional policy for execution of the action.\nThe server will have a default policy if this is not provided."
},
"resultsCachePolicy": {
"$ref": "BuildBazelRemoteExecutionV2ResultsCachePolicy",
"description": "An optional policy for the results of this execution in the remote cache.\nThe server will have a default policy if this is not provided.\nThis may be applied to both the ActionResult and the associated blobs."
},
"skipCacheLookup": {
"description": "If true, the action will be executed anew even if its result was already\npresent in the cache. If false, the result may be served from the\nActionCache.",
"type": "boolean"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2ExecuteResponse": {
"description": "The response message for\nExecution.Execute,\nwhich will be contained in the response\nfield of the\nOperation.",
"id": "BuildBazelRemoteExecutionV2ExecuteResponse",
"properties": {
"cachedResult": {
"description": "True if the result was served from cache, false if it was executed.",
"type": "boolean"
},
"message": {
"description": "Freeform informational message with details on the execution of the action\nthat may be displayed to the user upon failure or when requested explicitly.",
"type": "string"
},
"result": {
"$ref": "BuildBazelRemoteExecutionV2ActionResult",
"description": "The result of the action."
},
"serverLogs": {
"additionalProperties": {
"$ref": "BuildBazelRemoteExecutionV2LogFile"
},
"description": "An optional list of additional log outputs the server wishes to provide. A\nserver can use this to return execution-specific logs however it wishes.\nThis is intended primarily to make it easier for users to debug issues that\nmay be outside of the actual job execution, such as by identifying the\nworker executing the action or by providing logs from the worker's setup\nphase. The keys SHOULD be human readable so that a client can display them\nto a user.",
"type": "object"
},
"status": {
"$ref": "GoogleRpcStatus",
"description": "If the status has a code other than `OK`, it indicates that the action did\nnot finish execution. For example, if the operation times out during\nexecution, the status will have a `DEADLINE_EXCEEDED` code. Servers MUST\nuse this field for errors in execution, rather than the error field on the\n`Operation` object.\n\nIf the status code is other than `OK`, then the result MUST NOT be cached.\nFor an error status, the `result` field is optional; the server may\npopulate the output-, stdout-, and stderr-related fields if it has any\ninformation available, such as the stdout and stderr of a timed-out action."
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2ExecutedActionMetadata": {
"description": "ExecutedActionMetadata contains details about a completed execution.",
"id": "BuildBazelRemoteExecutionV2ExecutedActionMetadata",
"properties": {
"executionCompletedTimestamp": {
"description": "When the worker completed executing the action command.",
"format": "google-datetime",
"type": "string"
},
"executionStartTimestamp": {
"description": "When the worker started executing the action command.",
"format": "google-datetime",
"type": "string"
},
"inputFetchCompletedTimestamp": {
"description": "When the worker finished fetching action inputs.",
"format": "google-datetime",
"type": "string"
},
"inputFetchStartTimestamp": {
"description": "When the worker started fetching action inputs.",
"format": "google-datetime",
"type": "string"
},
"outputUploadCompletedTimestamp": {
"description": "When the worker finished uploading action outputs.",
"format": "google-datetime",
"type": "string"
},
"outputUploadStartTimestamp": {
"description": "When the worker started uploading action outputs.",
"format": "google-datetime",
"type": "string"
},
"queuedTimestamp": {
"description": "When was the action added to the queue.",
"format": "google-datetime",
"type": "string"
},
"worker": {
"description": "The name of the worker which ran the execution.",
"type": "string"
},
"workerCompletedTimestamp": {
"description": "When the worker completed the action, including all stages.",
"format": "google-datetime",
"type": "string"
},
"workerStartTimestamp": {
"description": "When the worker received the action.",
"format": "google-datetime",
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2ExecutionCapabilities": {
"description": "Capabilities of the remote execution system.",
"id": "BuildBazelRemoteExecutionV2ExecutionCapabilities",
"properties": {
"digestFunction": {
"description": "Remote execution may only support a single digest function.",
"enum": [
"UNKNOWN",
"SHA256",
"SHA1",
"MD5"
],
"enumDescriptions": [
"It is an error for the server to return this value.",
"The Sha-256 digest function.",
"The Sha-1 digest function.",
"The MD5 digest function."
],
"type": "string"
},
"execEnabled": {
"description": "Whether remote execution is enabled for the particular server/instance.",
"type": "boolean"
},
"executionPriorityCapabilities": {
"$ref": "BuildBazelRemoteExecutionV2PriorityCapabilities",
"description": "Supported execution priority range."
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2ExecutionPolicy": {
"description": "An `ExecutionPolicy` can be used to control the scheduling of the action.",
"id": "BuildBazelRemoteExecutionV2ExecutionPolicy",
"properties": {
"priority": {
"description": "The priority (relative importance) of this action. Generally, a lower value\nmeans that the action should be run sooner than actions having a greater\npriority value, but the interpretation of a given value is server-\ndependent. A priority of 0 means the *default* priority. Priorities may be\npositive or negative, and such actions should run later or sooner than\nactions having the default priority, respectively. The particular semantics\nof this field is up to the server. In particular, every server will have\ntheir own supported range of priorities, and will decide how these map into\nscheduling policy.",
"format": "int32",
"type": "integer"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2FileNode": {
"description": "A `FileNode` represents a single file and associated metadata.",
"id": "BuildBazelRemoteExecutionV2FileNode",
"properties": {
"digest": {
"$ref": "BuildBazelRemoteExecutionV2Digest",
"description": "The digest of the file's content."
},
"isExecutable": {
"description": "True if file is executable, false otherwise.",
"type": "boolean"
},
"name": {
"description": "The name of the file.",
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2FindMissingBlobsRequest": {
"description": "A request message for\nContentAddressableStorage.FindMissingBlobs.",
"id": "BuildBazelRemoteExecutionV2FindMissingBlobsRequest",
"properties": {
"blobDigests": {
"description": "A list of the blobs to check.",
"items": {
"$ref": "BuildBazelRemoteExecutionV2Digest"
},
"type": "array"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2FindMissingBlobsResponse": {
"description": "A response message for\nContentAddressableStorage.FindMissingBlobs.",
"id": "BuildBazelRemoteExecutionV2FindMissingBlobsResponse",
"properties": {
"missingBlobDigests": {
"description": "A list of the blobs requested *not* present in the storage.",
"items": {
"$ref": "BuildBazelRemoteExecutionV2Digest"
},
"type": "array"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2GetTreeResponse": {
"description": "A response message for\nContentAddressableStorage.GetTree.",
"id": "BuildBazelRemoteExecutionV2GetTreeResponse",
"properties": {
"directories": {
"description": "The directories descended from the requested root.",
"items": {
"$ref": "BuildBazelRemoteExecutionV2Directory"
},
"type": "array"
},
"nextPageToken": {
"description": "If present, signifies that there are more results which the client can\nretrieve by passing this as the page_token in a subsequent\nrequest.\nIf empty, signifies that this is the last page of results.",
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2LogFile": {
"description": "A `LogFile` is a log stored in the CAS.",
"id": "BuildBazelRemoteExecutionV2LogFile",
"properties": {
"digest": {
"$ref": "BuildBazelRemoteExecutionV2Digest",
"description": "The digest of the log contents."
},
"humanReadable": {
"description": "This is a hint as to the purpose of the log, and is set to true if the log\nis human-readable text that can be usefully displayed to a user, and false\notherwise. For instance, if a command-line client wishes to print the\nserver logs to the terminal for a failed action, this allows it to avoid\ndisplaying a binary file.",
"type": "boolean"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2OutputDirectory": {
"description": "An `OutputDirectory` is the output in an `ActionResult` corresponding to a\ndirectory's full contents rather than a single file.",
"id": "BuildBazelRemoteExecutionV2OutputDirectory",
"properties": {
"path": {
"description": "The full path of the directory relative to the working directory. The path\nseparator is a forward slash `/`. Since this is a relative path, it MUST\nNOT begin with a leading forward slash. The empty string value is allowed,\nand it denotes the entire working directory.",
"type": "string"
},
"treeDigest": {
"$ref": "BuildBazelRemoteExecutionV2Digest",
"description": "The digest of the encoded\nTree proto containing the\ndirectory's contents."
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2OutputFile": {
"description": "An `OutputFile` is similar to a\nFileNode, but it is used as an\noutput in an `ActionResult`. It allows a full file path rather than\nonly a name.\n\n`OutputFile` is binary-compatible with `FileNode`.",
"id": "BuildBazelRemoteExecutionV2OutputFile",
"properties": {
"digest": {
"$ref": "BuildBazelRemoteExecutionV2Digest",
"description": "The digest of the file's content."
},
"isExecutable": {
"description": "True if file is executable, false otherwise.",
"type": "boolean"
},
"path": {
"description": "The full path of the file relative to the working directory, including the\nfilename. The path separator is a forward slash `/`. Since this is a\nrelative path, it MUST NOT begin with a leading forward slash.",
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2OutputSymlink": {
"description": "An `OutputSymlink` is similar to a\nSymlink, but it is used as an\noutput in an `ActionResult`.\n\n`OutputSymlink` is binary-compatible with `SymlinkNode`.",
"id": "BuildBazelRemoteExecutionV2OutputSymlink",
"properties": {
"path": {
"description": "The full path of the symlink relative to the working directory, including the\nfilename. The path separator is a forward slash `/`. Since this is a\nrelative path, it MUST NOT begin with a leading forward slash.",
"type": "string"
},
"target": {
"description": "The target path of the symlink. The path separator is a forward slash `/`.\nThe target path can be relative to the parent directory of the symlink or\nit can be an absolute path starting with `/`. Support for absolute paths\ncan be checked using the Capabilities\nAPI. The canonical form forbids the substrings `/./` and `//` in the target\npath. `..` components are allowed anywhere in the target path.",
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2Platform": {
"description": "A `Platform` is a set of requirements, such as hardware, operating system, or\ncompiler toolchain, for an\nAction's execution\nenvironment. A `Platform` is represented as a series of key-value pairs\nrepresenting the properties that are required of the platform.",
"id": "BuildBazelRemoteExecutionV2Platform",
"properties": {
"properties": {
"description": "The properties that make up this platform. In order to ensure that\nequivalent `Platform`s always hash to the same value, the properties MUST\nbe lexicographically sorted by name, and then by value. Sorting of strings\nis done by code point, equivalently, by the UTF-8 bytes.",
"items": {
"$ref": "BuildBazelRemoteExecutionV2PlatformProperty"
},
"type": "array"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2PlatformProperty": {
"description": "A single property for the environment. The server is responsible for\nspecifying the property `name`s that it accepts. If an unknown `name` is\nprovided in the requirements for an\nAction, the server SHOULD\nreject the execution request. If permitted by the server, the same `name`\nmay occur multiple times.\n\nThe server is also responsible for specifying the interpretation of\nproperty `value`s. For instance, a property describing how much RAM must be\navailable may be interpreted as allowing a worker with 16GB to fulfill a\nrequest for 8GB, while a property describing the OS environment on which\nthe action must be performed may require an exact match with the worker's\nOS.\n\nThe server MAY use the `value` of one or more properties to determine how\nit sets up the execution environment, such as by making specific system\nfiles available to the worker.",
"id": "BuildBazelRemoteExecutionV2PlatformProperty",
"properties": {
"name": {
"description": "The property name.",
"type": "string"
},
"value": {
"description": "The property value.",
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2PriorityCapabilities": {
"description": "Allowed values for priority in\nResultsCachePolicy\nUsed for querying both cache and execution valid priority ranges.",
"id": "BuildBazelRemoteExecutionV2PriorityCapabilities",
"properties": {
"priorities": {
"items": {
"$ref": "BuildBazelRemoteExecutionV2PriorityCapabilitiesPriorityRange"
},
"type": "array"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2PriorityCapabilitiesPriorityRange": {
"description": "Supported range of priorities, including boundaries.",
"id": "BuildBazelRemoteExecutionV2PriorityCapabilitiesPriorityRange",
"properties": {
"maxPriority": {
"format": "int32",
"type": "integer"
},
"minPriority": {
"format": "int32",
"type": "integer"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2RequestMetadata": {
"description": "An optional Metadata to attach to any RPC request to tell the server about an\nexternal context of the request. The server may use this for logging or other\npurposes. To use it, the client attaches the header to the call using the\ncanonical proto serialization:\n\n* name: `build.bazel.remote.execution.v2.requestmetadata-bin`\n* contents: the base64 encoded binary `RequestMetadata` message.",
"id": "BuildBazelRemoteExecutionV2RequestMetadata",
"properties": {
"actionId": {
"description": "An identifier that ties multiple requests to the same action.\nFor example, multiple requests to the CAS, Action Cache, and Execution\nAPI are used in order to compile foo.cc.",
"type": "string"
},
"correlatedInvocationsId": {
"description": "An identifier to tie multiple tool invocations together. For example,\nruns of foo_test, bar_test and baz_test on a post-submit of a given patch.",
"type": "string"
},
"toolDetails": {
"$ref": "BuildBazelRemoteExecutionV2ToolDetails",
"description": "The details for the tool invoking the requests."
},
"toolInvocationId": {
"description": "An identifier that ties multiple actions together to a final result.\nFor example, multiple actions are required to build and run foo_test.",
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2ResultsCachePolicy": {
"description": "A `ResultsCachePolicy` is used for fine-grained control over how action\noutputs are stored in the CAS and Action Cache.",
"id": "BuildBazelRemoteExecutionV2ResultsCachePolicy",
"properties": {
"priority": {
"description": "The priority (relative importance) of this content in the overall cache.\nGenerally, a lower value means a longer retention time or other advantage,\nbut the interpretation of a given value is server-dependent. A priority of\n0 means a *default* value, decided by the server.\n\nThe particular semantics of this field is up to the server. In particular,\nevery server will have their own supported range of priorities, and will\ndecide how these map into retention/eviction policy.",
"format": "int32",
"type": "integer"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2ServerCapabilities": {
"description": "A response message for\nCapabilities.GetCapabilities.",
"id": "BuildBazelRemoteExecutionV2ServerCapabilities",
"properties": {
"cacheCapabilities": {
"$ref": "BuildBazelRemoteExecutionV2CacheCapabilities",
"description": "Capabilities of the remote cache system."
},
"deprecatedApiVersion": {
"$ref": "BuildBazelSemverSemVer",
"description": "Earliest RE API version supported, including deprecated versions."
},
"executionCapabilities": {
"$ref": "BuildBazelRemoteExecutionV2ExecutionCapabilities",
"description": "Capabilities of the remote execution system."
},
"highApiVersion": {
"$ref": "BuildBazelSemverSemVer",
"description": "Latest RE API version supported."
},
"lowApiVersion": {
"$ref": "BuildBazelSemverSemVer",
"description": "Earliest non-deprecated RE API version supported."
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2SymlinkNode": {
"description": "A `SymlinkNode` represents a symbolic link.",
"id": "BuildBazelRemoteExecutionV2SymlinkNode",
"properties": {
"name": {
"description": "The name of the symlink.",
"type": "string"
},
"target": {
"description": "The target path of the symlink. The path separator is a forward slash `/`.\nThe target path can be relative to the parent directory of the symlink or\nit can be an absolute path starting with `/`. Support for absolute paths\ncan be checked using the Capabilities\nAPI. The canonical form forbids the substrings `/./` and `//` in the target\npath. `..` components are allowed anywhere in the target path.",
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2ToolDetails": {
"description": "Details for the tool used to call the API.",
"id": "BuildBazelRemoteExecutionV2ToolDetails",
"properties": {
"toolName": {
"description": "Name of the tool, e.g. bazel.",
"type": "string"
},
"toolVersion": {
"description": "Version of the tool used for the request, e.g. 5.0.3.",
"type": "string"
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2Tree": {
"description": "A `Tree` contains all the\nDirectory protos in a\nsingle directory Merkle tree, compressed into one message.",
"id": "BuildBazelRemoteExecutionV2Tree",
"properties": {
"children": {
"description": "All the child directories: the directories referred to by the root and,\nrecursively, all its children. In order to reconstruct the directory tree,\nthe client must take the digests of each of the child directories and then\nbuild up a tree starting from the `root`.",
"items": {
"$ref": "BuildBazelRemoteExecutionV2Directory"
},
"type": "array"
},
"root": {
"$ref": "BuildBazelRemoteExecutionV2Directory",
"description": "The root directory in the tree."
}
},
"type": "object"
},
"BuildBazelRemoteExecutionV2WaitExecutionRequest": {
"description": "A request message for\nWaitExecution.",
"id": "BuildBazelRemoteExecutionV2WaitExecutionRequest",
"properties": {},
"type": "object"
},
"BuildBazelSemverSemVer": {
"description": "The full version of a given tool.",
"id": "BuildBazelSemverSemVer",
"properties": {
"major": {
"description": "The major version, e.g 10 for 10.2.3.",
"format": "int32",
"type": "integer"
},
"minor": {
"description": "The minor version, e.g. 2 for 10.2.3.",
"format": "int32",
"type": "integer"
},
"patch": {
"description": "The patch version, e.g 3 for 10.2.3.",
"format": "int32",
"type": "integer"
},
"prerelease": {
"description": "The pre-release version. Either this field or major/minor/patch fields\nmust be filled. They are mutually exclusive. Pre-release versions are\nassumed to be earlier than any released versions.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemotebuildbotCommandDurations": {
"description": "CommandDuration contains the various duration metrics tracked when a bot\nperforms a command.",
"id": "GoogleDevtoolsRemotebuildbotCommandDurations",
"properties": {
"dockerPrep": {
"description": "The time spent preparing the command to be run in a Docker container\n(includes pulling the Docker image, if necessary).",
"format": "google-duration",
"type": "string"
},
"download": {
"description": "The time spent downloading the input files and constructing the working\ndirectory.",
"format": "google-duration",
"type": "string"
},
"execution": {
"description": "The time spent executing the command (i.e., doing useful work).",
"format": "google-duration",
"type": "string"
},
"isoPrepDone": {
"description": "The timestamp when preparation is done and bot starts downloading files.",
"format": "google-datetime",
"type": "string"
},
"overall": {
"description": "The time spent completing the command, in total.",
"format": "google-duration",
"type": "string"
},
"stdout": {
"description": "The time spent uploading the stdout logs.",
"format": "google-duration",
"type": "string"
},
"upload": {
"description": "The time spent uploading the output files.",
"format": "google-duration",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemotebuildbotCommandEvents": {
"description": "CommandEvents contains counters for the number of warnings and errors\nthat occurred during the execution of a command.",
"id": "GoogleDevtoolsRemotebuildbotCommandEvents",
"properties": {
"dockerCacheHit": {
"description": "Indicates whether we are using a cached Docker image (true) or had to pull\nthe Docker image (false) for this command.",
"type": "boolean"
},
"inputCacheMiss": {
"description": "The input cache miss ratio.",
"format": "float",
"type": "number"
},
"numErrors": {
"description": "The number of errors reported.",
"format": "uint64",
"type": "string"
},
"numWarnings": {
"description": "The number of warnings reported.",
"format": "uint64",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest": {
"description": "The request used for `CreateInstance`.",
"id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateInstanceRequest",
"properties": {
"instance": {
"$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance",
"description": "Specifies the instance to create.\nThe name in the instance, if specified in the instance, is ignored."
},
"instanceId": {
"description": "ID of the created instance.\nA valid `instance_id` must:\nbe 6-50 characters long,\ncontain only lowercase letters, digits, hyphens and underscores,\nstart with a lowercase letter, and\nend with a lowercase letter or a digit.",
"type": "string"
},
"parent": {
"description": "Resource name of the project containing the instance.\nFormat: `projects/[PROJECT_ID]`.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest": {
"description": "The request used for `CreateWorkerPool`.",
"id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaCreateWorkerPoolRequest",
"properties": {
"parent": {
"description": "Resource name of the instance in which to create the new worker pool.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
"type": "string"
},
"poolId": {
"description": "ID of the created worker pool.\nA valid pool ID must:\nbe 6-50 characters long,\ncontain only lowercase letters, digits, hyphens and underscores,\nstart with a lowercase letter, and\nend with a lowercase letter or a digit.",
"type": "string"
},
"workerPool": {
"$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool",
"description": "Specifies the worker pool to create.\nThe name in the worker pool, if specified, is ignored."
}
},
"type": "object"
},
"GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest": {
"description": "The request used for `DeleteInstance`.",
"id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteInstanceRequest",
"properties": {
"name": {
"description": "Name of the instance to delete.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest": {
"description": "The request used for DeleteWorkerPool.",
"id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaDeleteWorkerPoolRequest",
"properties": {
"name": {
"description": "Name of the worker pool to delete.\nFormat:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest": {
"description": "The request used for `GetInstance`.",
"id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetInstanceRequest",
"properties": {
"name": {
"description": "Name of the instance to retrieve.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest": {
"description": "The request used for GetWorkerPool.",
"id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaGetWorkerPoolRequest",
"properties": {
"name": {
"description": "Name of the worker pool to retrieve.\nFormat:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance": {
"description": "Instance conceptually encapsulates all Remote Build Execution resources\nfor remote builds.\nAn instance consists of storage and compute resources (for example,\n`ContentAddressableStorage`, `ActionCache`, `WorkerPools`) used for\nrunning remote builds.\nAll Remote Build Execution API calls are scoped to an instance.",
"id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance",
"properties": {
"location": {
"description": "The location is a GCP region. Currently only `us-central1` is supported.",
"type": "string"
},
"loggingEnabled": {
"description": "Output only. Whether stack driver logging is enabled for the instance.",
"type": "boolean"
},
"name": {
"description": "Output only. Instance resource name formatted as:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.\nName should not be populated when creating an instance since it is provided\nin the `instance_id` field.",
"type": "string"
},
"state": {
"description": "Output only. State of the instance.",
"enum": [
"STATE_UNSPECIFIED",
"CREATING",
"RUNNING",
"INACTIVE"
],
"enumDescriptions": [
"Not a valid state, but the default value of the enum.",
"The instance is in state `CREATING` once `CreateInstance` is called and\nbefore the instance is ready for use.",
"The instance is in state `RUNNING` when it is ready for use.",
"An `INACTIVE` instance indicates that there is a problem that needs to be\nfixed. Such instances cannot be used for execution and instances that\nremain in this state for a significant period of time will be removed\npermanently."
],
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest": {
"id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesRequest",
"properties": {
"parent": {
"description": "Resource name of the project.\nFormat: `projects/[PROJECT_ID]`.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse": {
"id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListInstancesResponse",
"properties": {
"instances": {
"description": "The list of instances in a given project.",
"items": {
"$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaInstance"
},
"type": "array"
}
},
"type": "object"
},
"GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest": {
"id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsRequest",
"properties": {
"parent": {
"description": "Resource name of the instance.\nFormat: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse": {
"id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaListWorkerPoolsResponse",
"properties": {
"workerPools": {
"description": "The list of worker pools in a given instance.",
"items": {
"$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool"
},
"type": "array"
}
},
"type": "object"
},
"GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest": {
"description": "The request used for UpdateWorkerPool.",
"id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaUpdateWorkerPoolRequest",
"properties": {
"updateMask": {
"description": "The update mask applies to worker_pool. For the `FieldMask` definition,\nsee https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask\nIf an empty update_mask is provided, only the non-default valued field in\nthe worker pool field will be updated. Note that in order to update a field\nto the default value (zero, false, empty string) an explicit update_mask\nmust be provided.",
"format": "google-fieldmask",
"type": "string"
},
"workerPool": {
"$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool",
"description": "Specifies the worker pool to update."
}
},
"type": "object"
},
"GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig": {
"description": "Defines the configuration to be used for a creating workers in\nthe worker pool.",
"id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig",
"properties": {
"diskSizeGb": {
"description": "Required. Size of the disk attached to the worker, in GB.\nSee https://cloud.google.com/compute/docs/disks/",
"format": "int64",
"type": "string"
},
"diskType": {
"description": "Required. Disk Type to use for the worker.\nSee [Storage options](https://cloud.google.com/compute/docs/disks/#introduction).\nCurrently only `pd-standard` is supported.",
"type": "string"
},
"machineType": {
"description": "Required. Machine type of the worker, such as `n1-standard-2`.\nSee https://cloud.google.com/compute/docs/machine-types for a list of\nsupported machine types. Note that `f1-micro` and `g1-small` are not yet\nsupported.",
"type": "string"
},
"minCpuPlatform": {
"description": "Minimum CPU platform to use when creating the worker.\nSee [CPU Platforms](https://cloud.google.com/compute/docs/cpu-platforms).",
"type": "string"
},
"reserved": {
"description": "Determines whether the worker is reserved (equivalent to a Compute Engine\non-demand VM and therefore won't be preempted).\nSee [Preemptible VMs](https://cloud.google.com/preemptible-vms/) for more\ndetails.",
"type": "boolean"
}
},
"type": "object"
},
"GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool": {
"description": "A worker pool resource in the Remote Build Execution API.",
"id": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerPool",
"properties": {
"name": {
"description": "WorkerPool resource name formatted as:\n`projects/[PROJECT_ID]/instances/[INSTANCE_ID]/workerpools/[POOL_ID]`.\nname should not be populated when creating a worker pool since it is\nprovided in the `poolId` field.",
"type": "string"
},
"state": {
"description": "Output only. State of the worker pool.",
"enum": [
"STATE_UNSPECIFIED",
"CREATING",
"RUNNING",
"UPDATING",
"DELETING",
"INACTIVE"
],
"enumDescriptions": [
"Not a valid state, but the default value of the enum.",
"The worker pool is in state `CREATING` once `CreateWorkerPool` is called\nand before all requested workers are ready.",
"The worker pool is in state `RUNNING` when all its workers are ready for\nuse.",
"The worker pool is in state `UPDATING` once `UpdateWorkerPool` is called\nand before the new configuration has all the requested workers ready for\nuse, and no older configuration has any workers. At that point the state\ntransitions to `RUNNING`.",
"The worker pool is in state `DELETING` once the `Delete` method is called\nand before the deletion completes.",
"The worker pool is in state `INACTIVE` when the instance hosting the\nworker pool in not running."
],
"type": "string"
},
"workerConfig": {
"$ref": "GoogleDevtoolsRemotebuildexecutionAdminV1alphaWorkerConfig",
"description": "Specifies the properties, such as machine type and disk size, used for\ncreating workers in a worker pool."
},
"workerCount": {
"description": "The desired number of workers in the worker pool. Must be a value between\n0 and 1000.",
"format": "int64",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteexecutionV1testActionResult": {
"description": "An ActionResult represents the result of an\nAction being run.",
"id": "GoogleDevtoolsRemoteexecutionV1testActionResult",
"properties": {
"exitCode": {
"description": "The exit code of the command.",
"format": "int32",
"type": "integer"
},
"outputDirectories": {
"description": "The output directories of the action. For each output directory requested\nin the `output_directories` field of the Action, if the corresponding\ndirectory existed after the action completed, a single entry will be\npresent in the output list, which will contain the digest of\na Tree message containing\nthe directory tree, and the path equal exactly to the corresponding Action\noutput_directories member.\nAs an example, suppose the Action had an output directory `a/b/dir` and the\nexecution produced the following contents in `a/b/dir`: a file named `bar`\nand a directory named `foo` with an executable file named `baz`. Then,\noutput_directory will contain (hashes shortened for readability):\n\n```json\n// OutputDirectory proto:\n{\n path: \"a/b/dir\"\n tree_digest: {\n hash: \"4a73bc9d03...\",\n size: 55\n }\n}\n// Tree proto with hash \"4a73bc9d03...\" and size 55:\n{\n root: {\n files: [\n {\n name: \"bar\",\n digest: {\n hash: \"4a73bc9d03...\",\n size: 65534\n }\n }\n ],\n directories: [\n {\n name: \"foo\",\n digest: {\n hash: \"4cf2eda940...\",\n size: 43\n }\n }\n ]\n }\n children : {\n // (Directory proto with hash \"4cf2eda940...\" and size 43)\n files: [\n {\n name: \"baz\",\n digest: {\n hash: \"b2c941073e...\",\n size: 1294,\n },\n is_executable: true\n }\n ]\n }\n}\n```",
"items": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testOutputDirectory"
},
"type": "array"
},
"outputFiles": {
"description": "The output files of the action. For each output file requested in the\n`output_files` field of the Action, if the corresponding file existed after\nthe action completed, a single entry will be present in the output list.\n\nIf the action does not produce the requested output, or produces a\ndirectory where a regular file is expected or vice versa, then that output\nwill be omitted from the list. The server is free to arrange the output\nlist as desired; clients MUST NOT assume that the output list is sorted.",
"items": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testOutputFile"
},
"type": "array"
},
"stderrDigest": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
"description": "The digest for a blob containing the standard error of the action, which\ncan be retrieved from the\nContentAddressableStorage.\nSee `stderr_raw` for when this will be set."
},
"stderrRaw": {
"description": "The standard error buffer of the action. The server will determine, based\non the size of the buffer, whether to return it in raw form or to return\na digest in `stderr_digest` that points to the buffer. If neither is set,\nthen the buffer is empty. The client SHOULD NOT assume it will get one of\nthe raw buffer or a digest on any given request and should be prepared to\nhandle either.",
"format": "byte",
"type": "string"
},
"stdoutDigest": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
"description": "The digest for a blob containing the standard output of the action, which\ncan be retrieved from the\nContentAddressableStorage.\nSee `stdout_raw` for when this will be set."
},
"stdoutRaw": {
"description": "The standard output buffer of the action. The server will determine, based\non the size of the buffer, whether to return it in raw form or to return\na digest in `stdout_digest` that points to the buffer. If neither is set,\nthen the buffer is empty. The client SHOULD NOT assume it will get one of\nthe raw buffer or a digest on any given request and should be prepared to\nhandle either.",
"format": "byte",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteexecutionV1testCommand": {
"description": "A `Command` is the actual command executed by a worker running an\nAction.\n\nExcept as otherwise required, the environment (such as which system\nlibraries or binaries are available, and what filesystems are mounted where)\nis defined by and specific to the implementation of the remote execution API.",
"id": "GoogleDevtoolsRemoteexecutionV1testCommand",
"properties": {
"arguments": {
"description": "The arguments to the command. The first argument must be the path to the\nexecutable, which must be either a relative path, in which case it is\nevaluated with respect to the input root, or an absolute path.\n\nThe working directory will always be the input root.",
"items": {
"type": "string"
},
"type": "array"
},
"environmentVariables": {
"description": "The environment variables to set when running the program. The worker may\nprovide its own default environment variables; these defaults can be\noverridden using this field. Additional variables can also be specified.\n\nIn order to ensure that equivalent `Command`s always hash to the same\nvalue, the environment variables MUST be lexicographically sorted by name.\nSorting of strings is done by code point, equivalently, by the UTF-8 bytes.",
"items": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable"
},
"type": "array"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable": {
"description": "An `EnvironmentVariable` is one variable to set in the running program's\nenvironment.",
"id": "GoogleDevtoolsRemoteexecutionV1testCommandEnvironmentVariable",
"properties": {
"name": {
"description": "The variable name.",
"type": "string"
},
"value": {
"description": "The variable value.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteexecutionV1testDigest": {
"description": "A content digest. A digest for a given blob consists of the size of the blob\nand its hash. The hash algorithm to use is defined by the server, but servers\nSHOULD use SHA-256.\n\nThe size is considered to be an integral part of the digest and cannot be\nseparated. That is, even if the `hash` field is correctly specified but\n`size_bytes` is not, the server MUST reject the request.\n\nThe reason for including the size in the digest is as follows: in a great\nmany cases, the server needs to know the size of the blob it is about to work\nwith prior to starting an operation with it, such as flattening Merkle tree\nstructures or streaming it to a worker. Technically, the server could\nimplement a separate metadata store, but this results in a significantly more\ncomplicated implementation as opposed to having the client specify the size\nup-front (or storing the size along with the digest in every message where\ndigests are embedded). This does mean that the API leaks some implementation\ndetails of (what we consider to be) a reasonable server implementation, but\nwe consider this to be a worthwhile tradeoff.\n\nWhen a `Digest` is used to refer to a proto message, it always refers to the\nmessage in binary encoded form. To ensure consistent hashing, clients and\nservers MUST ensure that they serialize messages according to the following\nrules, even if there are alternate valid encodings for the same message.\n- Fields are serialized in tag order.\n- There are no unknown fields.\n- There are no duplicate fields.\n- Fields are serialized according to the default semantics for their type.\n\nMost protocol buffer implementations will always follow these rules when\nserializing, but care should be taken to avoid shortcuts. For instance,\nconcatenating two messages to merge them may produce duplicate fields.",
"id": "GoogleDevtoolsRemoteexecutionV1testDigest",
"properties": {
"hash": {
"description": "The hash. In the case of SHA-256, it will always be a lowercase hex string\nexactly 64 characters long.",
"type": "string"
},
"sizeBytes": {
"description": "The size of the blob, in bytes.",
"format": "int64",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteexecutionV1testDirectory": {
"description": "A `Directory` represents a directory node in a file tree, containing zero or\nmore children FileNodes\nand DirectoryNodes.\nEach `Node` contains its name in the directory, the digest of its content\n(either a file blob or a `Directory` proto), as well as possibly some\nmetadata about the file or directory.\n\nIn order to ensure that two equivalent directory trees hash to the same\nvalue, the following restrictions MUST be obeyed when constructing a\na `Directory`:\n - Every child in the directory must have a path of exactly one segment.\n Multiple levels of directory hierarchy may not be collapsed.\n - Each child in the directory must have a unique path segment (file name).\n - The files and directories in the directory must each be sorted in\n lexicographical order by path. The path strings must be sorted by code\n point, equivalently, by UTF-8 bytes.\n\nA `Directory` that obeys the restrictions is said to be in canonical form.\n\nAs an example, the following could be used for a file named `bar` and a\ndirectory named `foo` with an executable file named `baz` (hashes shortened\nfor readability):\n\n```json\n// (Directory proto)\n{\n files: [\n {\n name: \"bar\",\n digest: {\n hash: \"4a73bc9d03...\",\n size: 65534\n }\n }\n ],\n directories: [\n {\n name: \"foo\",\n digest: {\n hash: \"4cf2eda940...\",\n size: 43\n }\n }\n ]\n}\n\n// (Directory proto with hash \"4cf2eda940...\" and size 43)\n{\n files: [\n {\n name: \"baz\",\n digest: {\n hash: \"b2c941073e...\",\n size: 1294,\n },\n is_executable: true\n }\n ]\n}\n```",
"id": "GoogleDevtoolsRemoteexecutionV1testDirectory",
"properties": {
"directories": {
"description": "The subdirectories in the directory.",
"items": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testDirectoryNode"
},
"type": "array"
},
"files": {
"description": "The files in the directory.",
"items": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testFileNode"
},
"type": "array"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteexecutionV1testDirectoryNode": {
"description": "A `DirectoryNode` represents a child of a\nDirectory which is itself\na `Directory` and its associated metadata.",
"id": "GoogleDevtoolsRemoteexecutionV1testDirectoryNode",
"properties": {
"digest": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
"description": "The digest of the\nDirectory object\nrepresented. See Digest\nfor information about how to take the digest of a proto message."
},
"name": {
"description": "The name of the directory.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata": {
"description": "Metadata about an ongoing\nexecution, which\nwill be contained in the metadata\nfield of the\nOperation.",
"id": "GoogleDevtoolsRemoteexecutionV1testExecuteOperationMetadata",
"properties": {
"actionDigest": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
"description": "The digest of the Action\nbeing executed."
},
"stage": {
"enum": [
"UNKNOWN",
"CACHE_CHECK",
"QUEUED",
"EXECUTING",
"COMPLETED"
],
"enumDescriptions": [
"",
"Checking the result against the cache.",
"Currently idle, awaiting a free machine to execute.",
"Currently being executed by a worker.",
"Finished execution."
],
"type": "string"
},
"stderrStreamName": {
"description": "If set, the client can use this name with\nByteStream.Read to stream the\nstandard error.",
"type": "string"
},
"stdoutStreamName": {
"description": "If set, the client can use this name with\nByteStream.Read to stream the\nstandard output.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteexecutionV1testExecuteResponse": {
"description": "The response message for\nExecution.Execute,\nwhich will be contained in the response\nfield of the\nOperation.",
"id": "GoogleDevtoolsRemoteexecutionV1testExecuteResponse",
"properties": {
"cachedResult": {
"description": "True if the result was served from cache, false if it was executed.",
"type": "boolean"
},
"result": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testActionResult",
"description": "The result of the action."
},
"serverLogs": {
"additionalProperties": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testLogFile"
},
"description": "An optional list of additional log outputs the server wishes to provide. A\nserver can use this to return execution-specific logs however it wishes.\nThis is intended primarily to make it easier for users to debug issues that\nmay be outside of the actual job execution, such as by identifying the\nworker executing the action or by providing logs from the worker's setup\nphase. The keys SHOULD be human readable so that a client can display them\nto a user.",
"type": "object"
},
"status": {
"$ref": "GoogleRpcStatus",
"description": "If the status has a code other than `OK`, it indicates that the action did\nnot finish execution. For example, if the operation times out during\nexecution, the status will have a `DEADLINE_EXCEEDED` code. Servers MUST\nuse this field for errors in execution, rather than the error field on the\n`Operation` object.\n\nIf the status code is other than `OK`, then the result MUST NOT be cached.\nFor an error status, the `result` field is optional; the server may\npopulate the output-, stdout-, and stderr-related fields if it has any\ninformation available, such as the stdout and stderr of a timed-out action."
}
},
"type": "object"
},
"GoogleDevtoolsRemoteexecutionV1testFileNode": {
"description": "A `FileNode` represents a single file and associated metadata.",
"id": "GoogleDevtoolsRemoteexecutionV1testFileNode",
"properties": {
"digest": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
"description": "The digest of the file's content."
},
"isExecutable": {
"description": "True if file is executable, false otherwise.",
"type": "boolean"
},
"name": {
"description": "The name of the file.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteexecutionV1testLogFile": {
"description": "A `LogFile` is a log stored in the CAS.",
"id": "GoogleDevtoolsRemoteexecutionV1testLogFile",
"properties": {
"digest": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
"description": "The digest of the log contents."
},
"humanReadable": {
"description": "This is a hint as to the purpose of the log, and is set to true if the log\nis human-readable text that can be usefully displayed to a user, and false\notherwise. For instance, if a command-line client wishes to print the\nserver logs to the terminal for a failed action, this allows it to avoid\ndisplaying a binary file.",
"type": "boolean"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteexecutionV1testOutputDirectory": {
"description": "An `OutputDirectory` is the output in an `ActionResult` corresponding to a\ndirectory's full contents rather than a single file.",
"id": "GoogleDevtoolsRemoteexecutionV1testOutputDirectory",
"properties": {
"digest": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
"description": "DEPRECATED: This field is deprecated and should no longer be used."
},
"path": {
"description": "The full path of the directory relative to the working directory. The path\nseparator is a forward slash `/`. Since this is a relative path, it MUST\nNOT begin with a leading forward slash. The empty string value is allowed,\nand it denotes the entire working directory.",
"type": "string"
},
"treeDigest": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
"description": "The digest of the encoded\nTree proto containing the\ndirectory's contents."
}
},
"type": "object"
},
"GoogleDevtoolsRemoteexecutionV1testOutputFile": {
"description": "An `OutputFile` is similar to a\nFileNode, but it is\ntailored for output as part of an `ActionResult`. It allows a full file path\nrather than only a name, and allows the server to include content inline.\n\n`OutputFile` is binary-compatible with `FileNode`.",
"id": "GoogleDevtoolsRemoteexecutionV1testOutputFile",
"properties": {
"content": {
"description": "The raw content of the file.\n\nThis field may be used by the server to provide the content of a file\ninline in an\nActionResult and\navoid requiring that the client make a separate call to\n[ContentAddressableStorage.GetBlob] to retrieve it.\n\nThe client SHOULD NOT assume that it will get raw content with any request,\nand always be prepared to retrieve it via `digest`.",
"format": "byte",
"type": "string"
},
"digest": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testDigest",
"description": "The digest of the file's content."
},
"isExecutable": {
"description": "True if file is executable, false otherwise.",
"type": "boolean"
},
"path": {
"description": "The full path of the file relative to the input root, including the\nfilename. The path separator is a forward slash `/`. Since this is a\nrelative path, it MUST NOT begin with a leading forward slash.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteexecutionV1testRequestMetadata": {
"description": "An optional Metadata to attach to any RPC request to tell the server about an\nexternal context of the request. The server may use this for logging or other\npurposes. To use it, the client attaches the header to the call using the\ncanonical proto serialization:\nname: google.devtools.remoteexecution.v1test.requestmetadata-bin\ncontents: the base64 encoded binary RequestMetadata message.",
"id": "GoogleDevtoolsRemoteexecutionV1testRequestMetadata",
"properties": {
"actionId": {
"description": "An identifier that ties multiple requests to the same action.\nFor example, multiple requests to the CAS, Action Cache, and Execution\nAPI are used in order to compile foo.cc.",
"type": "string"
},
"correlatedInvocationsId": {
"description": "An identifier to tie multiple tool invocations together. For example,\nruns of foo_test, bar_test and baz_test on a post-submit of a given patch.",
"type": "string"
},
"toolDetails": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testToolDetails",
"description": "The details for the tool invoking the requests."
},
"toolInvocationId": {
"description": "An identifier that ties multiple actions together to a final result.\nFor example, multiple actions are required to build and run foo_test.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteexecutionV1testToolDetails": {
"description": "Details for the tool used to call the API.",
"id": "GoogleDevtoolsRemoteexecutionV1testToolDetails",
"properties": {
"toolName": {
"description": "Name of the tool, e.g. bazel.",
"type": "string"
},
"toolVersion": {
"description": "Version of the tool used for the request, e.g. 5.0.3.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteexecutionV1testTree": {
"description": "A `Tree` contains all the\nDirectory protos in a\nsingle directory Merkle tree, compressed into one message.",
"id": "GoogleDevtoolsRemoteexecutionV1testTree",
"properties": {
"children": {
"description": "All the child directories: the directories referred to by the root and,\nrecursively, all its children. In order to reconstruct the directory tree,\nthe client must take the digests of each of the child directories and then\nbuild up a tree starting from the `root`.",
"items": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testDirectory"
},
"type": "array"
},
"root": {
"$ref": "GoogleDevtoolsRemoteexecutionV1testDirectory",
"description": "The root directory in the tree."
}
},
"type": "object"
},
"GoogleDevtoolsRemoteworkersV1test2AdminTemp": {
"description": "AdminTemp is a prelimiary set of administration tasks. It's called \"Temp\"\nbecause we do not yet know the best way to represent admin tasks; it's\npossible that this will be entirely replaced in later versions of this API.\nIf this message proves to be sufficient, it will be renamed in the alpha or\nbeta release of this API.\n\nThis message (suitably marshalled into a protobuf.Any) can be used as the\ninline_assignment field in a lease; the lease assignment field should simply\nbe `\"admin\"` in these cases.\n\nThis message is heavily based on Swarming administration tasks from the LUCI\nproject (http://github.com/luci/luci-py/appengine/swarming).",
"id": "GoogleDevtoolsRemoteworkersV1test2AdminTemp",
"properties": {
"arg": {
"description": "The argument to the admin action; see `Command` for semantics.",
"type": "string"
},
"command": {
"description": "The admin action; see `Command` for legal values.",
"enum": [
"UNSPECIFIED",
"BOT_UPDATE",
"BOT_RESTART",
"BOT_TERMINATE",
"HOST_RESTART"
],
"enumDescriptions": [
"Illegal value.",
"Download and run a new version of the bot. `arg` will be a resource\naccessible via `ByteStream.Read` to obtain the new bot code.",
"Restart the bot without downloading a new version. `arg` will be a\nmessage to log.",
"Shut down the bot. `arg` will be a task resource name (similar to those\nin tasks.proto) that the bot can use to tell the server that it is\nterminating.",
"Restart the host computer. `arg` will be a message to log."
],
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteworkersV1test2Blob": {
"description": "Describes a blob of binary content with its digest.",
"id": "GoogleDevtoolsRemoteworkersV1test2Blob",
"properties": {
"contents": {
"description": "The contents of the blob.",
"format": "byte",
"type": "string"
},
"digest": {
"$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
"description": "The digest of the blob. This should be verified by the receiver."
}
},
"type": "object"
},
"GoogleDevtoolsRemoteworkersV1test2CommandOutputs": {
"description": "DEPRECATED - use CommandResult instead.\nDescribes the actual outputs from the task.",
"id": "GoogleDevtoolsRemoteworkersV1test2CommandOutputs",
"properties": {
"exitCode": {
"description": "exit_code is only fully reliable if the status' code is OK. If the task\nexceeded its deadline or was cancelled, the process may still produce an\nexit code as it is cancelled, and this will be populated, but a successful\n(zero) is unlikely to be correct unless the status code is OK.",
"format": "int32",
"type": "integer"
},
"outputs": {
"$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
"description": "The output files. The blob referenced by the digest should contain\none of the following (implementation-dependent):\n * A marshalled DirectoryMetadata of the returned filesystem\n * A LUCI-style .isolated file"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteworkersV1test2CommandOverhead": {
"description": "DEPRECATED - use CommandResult instead.\nCan be used as part of CompleteRequest.metadata, or are part of a more\nsophisticated message.",
"id": "GoogleDevtoolsRemoteworkersV1test2CommandOverhead",
"properties": {
"duration": {
"description": "The elapsed time between calling Accept and Complete. The server will also\nhave its own idea of what this should be, but this excludes the overhead of\nthe RPCs and the bot response time.",
"format": "google-duration",
"type": "string"
},
"overhead": {
"description": "The amount of time *not* spent executing the command (ie\nuploading/downloading files).",
"format": "google-duration",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteworkersV1test2CommandResult": {
"description": "All information about the execution of a command, suitable for providing as\nthe Bots interface's `Lease.result` field.",
"id": "GoogleDevtoolsRemoteworkersV1test2CommandResult",
"properties": {
"duration": {
"description": "The elapsed time between calling Accept and Complete. The server will also\nhave its own idea of what this should be, but this excludes the overhead of\nthe RPCs and the bot response time.",
"format": "google-duration",
"type": "string"
},
"exitCode": {
"description": "The exit code of the process. An exit code of \"0\" should only be trusted if\n`status` has a code of OK (otherwise it may simply be unset).",
"format": "int32",
"type": "integer"
},
"metadata": {
"description": "Implementation-dependent metadata about the task. Both servers and bots\nmay define messages which can be encoded here; bots are free to provide\nmetadata in multiple formats, and servers are free to choose one or more\nof the values to process and ignore others. In particular, it is *not*\nconsidered an error for the bot to provide the server with a field that it\ndoesn't know about.",
"items": {
"additionalProperties": {
"description": "Properties of the object. Contains field @type with type URL.",
"type": "any"
},
"type": "object"
},
"type": "array"
},
"outputs": {
"$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
"description": "The output files. The blob referenced by the digest should contain\none of the following (implementation-dependent):\n * A marshalled DirectoryMetadata of the returned filesystem\n * A LUCI-style .isolated file"
},
"overhead": {
"description": "The amount of time *not* spent executing the command (ie\nuploading/downloading files).",
"format": "google-duration",
"type": "string"
},
"status": {
"$ref": "GoogleRpcStatus",
"description": "An overall status for the command. For example, if the command timed out,\nthis might have a code of DEADLINE_EXCEEDED; if it was killed by the OS for\nmemory exhaustion, it might have a code of RESOURCE_EXHAUSTED."
}
},
"type": "object"
},
"GoogleDevtoolsRemoteworkersV1test2CommandTask": {
"description": "Describes a shell-style task to execute, suitable for providing as the Bots\ninterface's `Lease.payload` field.",
"id": "GoogleDevtoolsRemoteworkersV1test2CommandTask",
"properties": {
"expectedOutputs": {
"$ref": "GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs",
"description": "The expected outputs from the task."
},
"inputs": {
"$ref": "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs",
"description": "The inputs to the task."
},
"timeouts": {
"$ref": "GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts",
"description": "The timeouts of this task."
}
},
"type": "object"
},
"GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs": {
"description": "Describes the inputs to a shell-style task.",
"id": "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputs",
"properties": {
"arguments": {
"description": "The command itself to run (e.g., argv).\n\nThis field should be passed directly to the underlying operating system,\nand so it must be sensible to that operating system. For example, on\nWindows, the first argument might be \"C:\\Windows\\System32\\ping.exe\" -\nthat is, using drive letters and backslashes. A command for a *nix\nsystem, on the other hand, would use forward slashes.\n\nAll other fields in the RWAPI must consistently use forward slashes,\nsince those fields may be interpretted by both the service and the bot.",
"items": {
"type": "string"
},
"type": "array"
},
"environmentVariables": {
"description": "All environment variables required by the task.",
"items": {
"$ref": "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable"
},
"type": "array"
},
"files": {
"description": "The input filesystem to be set up prior to the task beginning. The\ncontents should be a repeated set of FileMetadata messages though other\nformats are allowed if better for the implementation (eg, a LUCI-style\n.isolated file).\n\nThis field is repeated since implementations might want to cache the\nmetadata, in which case it may be useful to break up portions of the\nfilesystem that change frequently (eg, specific input files) from those\nthat don't (eg, standard header files).",
"items": {
"$ref": "GoogleDevtoolsRemoteworkersV1test2Digest"
},
"type": "array"
},
"inlineBlobs": {
"description": "Inline contents for blobs expected to be needed by the bot to execute the\ntask. For example, contents of entries in `files` or blobs that are\nindirectly referenced by an entry there.\n\nThe bot should check against this list before downloading required task\ninputs to reduce the number of communications between itself and the\nremote CAS server.",
"items": {
"$ref": "GoogleDevtoolsRemoteworkersV1test2Blob"
},
"type": "array"
},
"workingDirectory": {
"description": "Directory from which a command is executed. It is a relative directory\nwith respect to the bot's working directory (i.e., \"./\"). If it is\nnon-empty, then it must exist under \"./\". Otherwise, \"./\" will be used.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable": {
"description": "An environment variable required by this task.",
"id": "GoogleDevtoolsRemoteworkersV1test2CommandTaskInputsEnvironmentVariable",
"properties": {
"name": {
"description": "The envvar name.",
"type": "string"
},
"value": {
"description": "The envvar value.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs": {
"description": "Describes the expected outputs of the command.",
"id": "GoogleDevtoolsRemoteworkersV1test2CommandTaskOutputs",
"properties": {
"directories": {
"description": "A list of expected directories, relative to the execution root. All paths\nMUST be delimited by forward slashes.",
"items": {
"type": "string"
},
"type": "array"
},
"files": {
"description": "A list of expected files, relative to the execution root. All paths\nMUST be delimited by forward slashes.",
"items": {
"type": "string"
},
"type": "array"
},
"stderrDestination": {
"description": "The destination to which any stderr should be sent. The method by which\nthe bot should send the stream contents to that destination is not\ndefined in this API. As examples, the destination could be a file\nreferenced in the `files` field in this message, or it could be a URI\nthat must be written via the ByteStream API.",
"type": "string"
},
"stdoutDestination": {
"description": "The destination to which any stdout should be sent. The method by which\nthe bot should send the stream contents to that destination is not\ndefined in this API. As examples, the destination could be a file\nreferenced in the `files` field in this message, or it could be a URI\nthat must be written via the ByteStream API.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts": {
"description": "Describes the timeouts associated with this task.",
"id": "GoogleDevtoolsRemoteworkersV1test2CommandTaskTimeouts",
"properties": {
"execution": {
"description": "This specifies the maximum time that the task can run, excluding the\ntime required to download inputs or upload outputs. That is, the worker\nwill terminate the task if it runs longer than this.",
"format": "google-duration",
"type": "string"
},
"idle": {
"description": "This specifies the maximum amount of time the task can be idle - that is,\ngo without generating some output in either stdout or stderr. If the\nprocess is silent for more than the specified time, the worker will\nterminate the task.",
"format": "google-duration",
"type": "string"
},
"shutdown": {
"description": "If the execution or IO timeouts are exceeded, the worker will try to\ngracefully terminate the task and return any existing logs. However,\ntasks may be hard-frozen in which case this process will fail. This\ntimeout specifies how long to wait for a terminated task to shut down\ngracefully (e.g. via SIGTERM) before we bring down the hammer (e.g.\nSIGKILL on *nix, CTRL_BREAK_EVENT on Windows).",
"format": "google-duration",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteworkersV1test2Digest": {
"description": "The CommandTask and CommandResult messages assume the existence of a service\nthat can serve blobs of content, identified by a hash and size known as a\n\"digest.\" The method by which these blobs may be retrieved is not specified\nhere, but a model implementation is in the Remote Execution API's\n\"ContentAddressibleStorage\" interface.\n\nIn the context of the RWAPI, a Digest will virtually always refer to the\ncontents of a file or a directory. The latter is represented by the\nbyte-encoded Directory message.",
"id": "GoogleDevtoolsRemoteworkersV1test2Digest",
"properties": {
"hash": {
"description": "A string-encoded hash (eg \"1a2b3c\", not the byte array [0x1a, 0x2b, 0x3c])\nusing an implementation-defined hash algorithm (eg SHA-256).",
"type": "string"
},
"sizeBytes": {
"description": "The size of the contents. While this is not strictly required as part of an\nidentifier (after all, any given hash will have exactly one canonical\nsize), it's useful in almost all cases when one might want to send or\nretrieve blobs of content and is included here for this reason.",
"format": "int64",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteworkersV1test2Directory": {
"description": "The contents of a directory. Similar to the equivalent message in the Remote\nExecution API.",
"id": "GoogleDevtoolsRemoteworkersV1test2Directory",
"properties": {
"directories": {
"description": "Any subdirectories",
"items": {
"$ref": "GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata"
},
"type": "array"
},
"files": {
"description": "The files in this directory",
"items": {
"$ref": "GoogleDevtoolsRemoteworkersV1test2FileMetadata"
},
"type": "array"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata": {
"description": "The metadata for a directory. Similar to the equivalent message in the Remote\nExecution API.",
"id": "GoogleDevtoolsRemoteworkersV1test2DirectoryMetadata",
"properties": {
"digest": {
"$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
"description": "A pointer to the contents of the directory, in the form of a marshalled\nDirectory message."
},
"path": {
"description": "The path of the directory, as in FileMetadata.path.",
"type": "string"
}
},
"type": "object"
},
"GoogleDevtoolsRemoteworkersV1test2FileMetadata": {
"description": "The metadata for a file. Similar to the equivalent message in the Remote\nExecution API.",
"id": "GoogleDevtoolsRemoteworkersV1test2FileMetadata",
"properties": {
"contents": {
"description": "If the file is small enough, its contents may also or alternatively be\nlisted here.",
"format": "byte",
"type": "string"
},
"digest": {
"$ref": "GoogleDevtoolsRemoteworkersV1test2Digest",
"description": "A pointer to the contents of the file. The method by which a client\nretrieves the contents from a CAS system is not defined here."
},
"isExecutable": {
"description": "Properties of the file",
"type": "boolean"
},
"path": {
"description": "The path of this file. If this message is part of the\nCommandOutputs.outputs fields, the path is relative to the execution root\nand must correspond to an entry in CommandTask.outputs.files. If this\nmessage is part of a Directory message, then the path is relative to the\nroot of that directory. All paths MUST be delimited by forward slashes.",
"type": "string"
}
},
"type": "object"
},
"GoogleLongrunningOperation": {
"description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
"id": "GoogleLongrunningOperation",
"properties": {
"done": {
"description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.",
"type": "boolean"
},
"error": {
"$ref": "GoogleRpcStatus",
"description": "The error result of the operation in case of failure or cancellation."
},
"metadata": {
"additionalProperties": {
"description": "Properties of the object. Contains field @type with type URL.",
"type": "any"
},
"description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.",
"type": "object"
},
"name": {
"description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
"type": "string"
},
"response": {
"additionalProperties": {
"description": "Properties of the object. Contains field @type with type URL.",
"type": "any"
},
"description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.",
"type": "object"
}
},
"type": "object"
},
"GoogleRpcStatus": {
"description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.",
"id": "GoogleRpcStatus",
"properties": {
"code": {
"description": "The status code, which should be an enum value of google.rpc.Code.",
"format": "int32",
"type": "integer"
},
"details": {
"description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.",
"items": {
"additionalProperties": {
"description": "Properties of the object. Contains field @type with type URL.",
"type": "any"
},
"type": "object"
},
"type": "array"
},
"message": {
"description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.",
"type": "string"
}
},
"type": "object"
}
},
"servicePath": "",
"title": "Remote Build Execution API",
"version": "v2",
"version_module": true
}