perd-contracts 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- perd_contracts-0.1.0/.gitignore +24 -0
- perd_contracts-0.1.0/PKG-INFO +8 -0
- perd_contracts-0.1.0/buf.gen.yaml +38 -0
- perd_contracts-0.1.0/buf.yaml +23 -0
- perd_contracts-0.1.0/gen/py/perd/v1/account_connect.py +253 -0
- perd_contracts-0.1.0/gen/py/perd/v1/account_pb2.py +52 -0
- perd_contracts-0.1.0/gen/py/perd/v1/account_pb2.pyi +55 -0
- perd_contracts-0.1.0/gen/py/perd/v1/common_pb2.py +52 -0
- perd_contracts-0.1.0/gen/py/perd/v1/common_pb2.pyi +115 -0
- perd_contracts-0.1.0/gen/py/perd/v1/job_connect.py +253 -0
- perd_contracts-0.1.0/gen/py/perd/v1/job_pb2.py +80 -0
- perd_contracts-0.1.0/gen/py/perd/v1/job_pb2.pyi +223 -0
- perd_contracts-0.1.0/gen/py/perd/v1/py.typed +0 -0
- perd_contracts-0.1.0/gen/py/perd/v1/store_connect.py +383 -0
- perd_contracts-0.1.0/gen/py/perd/v1/store_pb2.py +70 -0
- perd_contracts-0.1.0/gen/py/perd/v1/store_pb2.pyi +170 -0
- perd_contracts-0.1.0/gen/py/perd/v1/worker_connect.py +188 -0
- perd_contracts-0.1.0/gen/py/perd/v1/worker_pb2.py +69 -0
- perd_contracts-0.1.0/gen/py/perd/v1/worker_pb2.pyi +154 -0
- perd_contracts-0.1.0/gen/py/perd/v1/worker_pb2_grpc.py +153 -0
- perd_contracts-0.1.0/gen/py/perd/v1/workstation_connect.py +448 -0
- perd_contracts-0.1.0/gen/py/perd/v1/workstation_pb2.py +73 -0
- perd_contracts-0.1.0/gen/py/perd/v1/workstation_pb2.pyi +166 -0
- perd_contracts-0.1.0/gen/ts/perd/v1/account-AccountService_connectquery.ts +25 -0
- perd_contracts-0.1.0/gen/ts/perd/v1/account_pb.ts +201 -0
- perd_contracts-0.1.0/gen/ts/perd/v1/common_pb.ts +356 -0
- perd_contracts-0.1.0/gen/ts/perd/v1/job-JobService_connectquery.ts +30 -0
- perd_contracts-0.1.0/gen/ts/perd/v1/job_pb.ts +734 -0
- perd_contracts-0.1.0/gen/ts/perd/v1/store-StoreService_connectquery.ts +28 -0
- perd_contracts-0.1.0/gen/ts/perd/v1/store_pb.ts +525 -0
- perd_contracts-0.1.0/gen/ts/perd/v1/worker-WorkerService_connectquery.ts +17 -0
- perd_contracts-0.1.0/gen/ts/perd/v1/worker_pb.ts +529 -0
- perd_contracts-0.1.0/gen/ts/perd/v1/workstation-WorkstationService_connectquery.ts +32 -0
- perd_contracts-0.1.0/gen/ts/perd/v1/workstation_pb.ts +533 -0
- perd_contracts-0.1.0/generate.sh +12 -0
- perd_contracts-0.1.0/package.json +16 -0
- perd_contracts-0.1.0/proto/perd/v1/account.proto +54 -0
- perd_contracts-0.1.0/proto/perd/v1/common.proto +106 -0
- perd_contracts-0.1.0/proto/perd/v1/job.proto +226 -0
- perd_contracts-0.1.0/proto/perd/v1/store.proto +128 -0
- perd_contracts-0.1.0/proto/perd/v1/worker.proto +167 -0
- perd_contracts-0.1.0/proto/perd/v1/workstation.proto +134 -0
- perd_contracts-0.1.0/pyproject.toml +28 -0
- perd_contracts-0.1.0/tools/manifest_from_descriptor.py +209 -0
- perd_contracts-0.1.0/tools/test_manifest_from_descriptor.py +271 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.py[cod]
|
|
3
|
+
.venv/
|
|
4
|
+
node_modules/
|
|
5
|
+
.pytest_cache/
|
|
6
|
+
.coverage
|
|
7
|
+
.coverage.*
|
|
8
|
+
# Spike codegen: regenerated by conftest.py on every run.
|
|
9
|
+
spikes/**/echo_pb2.py
|
|
10
|
+
spikes/**/echo_pb2.pyi
|
|
11
|
+
# Next.js build output
|
|
12
|
+
.next/
|
|
13
|
+
out/
|
|
14
|
+
*.tsbuildinfo
|
|
15
|
+
|
|
16
|
+
# Build artifacts
|
|
17
|
+
dist/
|
|
18
|
+
coverage.xml
|
|
19
|
+
|
|
20
|
+
# terraform: state and plugin cache never committed; .terraform.lock.hcl IS.
|
|
21
|
+
**/.terraform/
|
|
22
|
+
*.tfplan
|
|
23
|
+
*.tfstate
|
|
24
|
+
*.tfstate.*
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: perd-contracts
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Generated perd.v1 protocol modules and the contract manifest tool
|
|
5
|
+
Requires-Python: >=3.11
|
|
6
|
+
Requires-Dist: connect-python<0.10,>=0.9.0
|
|
7
|
+
Requires-Dist: grpcio>=1.60
|
|
8
|
+
Requires-Dist: protobuf>=6
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
version: v2
|
|
2
|
+
|
|
3
|
+
managed:
|
|
4
|
+
enabled: true
|
|
5
|
+
|
|
6
|
+
# ALL plugins run locally. Two reasons, both learned the hard way:
|
|
7
|
+
# 1. The BSR remote connect-python plugin drifted ahead of the released
|
|
8
|
+
# PyPI runtime and generated imports against unreleased modules. Local
|
|
9
|
+
# plugins are version-locked to the same lockfiles the services install.
|
|
10
|
+
# 2. Unauthenticated remote generation is rate-limited, which makes CI
|
|
11
|
+
# nondeterministic. Local generation is hermetic.
|
|
12
|
+
#
|
|
13
|
+
# Python plugins come from the uv environment (protoc-gen-connect-python
|
|
14
|
+
# pinned to the connect-python runtime version). TS plugins come from
|
|
15
|
+
# contracts/node_modules via pnpm.
|
|
16
|
+
plugins:
|
|
17
|
+
# ---- Python: services/api, services/orchestrator, packages/client-py ----
|
|
18
|
+
- protoc_builtin: python
|
|
19
|
+
out: gen/py
|
|
20
|
+
- protoc_builtin: pyi
|
|
21
|
+
out: gen/py
|
|
22
|
+
- local: protoc-gen-connect-python
|
|
23
|
+
out: gen/py
|
|
24
|
+
|
|
25
|
+
# ---- TypeScript: apps/web, apps/docs ----
|
|
26
|
+
- local: node_modules/.bin/protoc-gen-es
|
|
27
|
+
out: gen/ts
|
|
28
|
+
opt:
|
|
29
|
+
- target=ts
|
|
30
|
+
- import_extension=none
|
|
31
|
+
- local: node_modules/.bin/protoc-gen-connect-query
|
|
32
|
+
out: gen/ts
|
|
33
|
+
opt:
|
|
34
|
+
- target=ts
|
|
35
|
+
- import_extension=none
|
|
36
|
+
|
|
37
|
+
inputs:
|
|
38
|
+
- directory: proto
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
version: v2
|
|
2
|
+
|
|
3
|
+
modules:
|
|
4
|
+
- path: proto
|
|
5
|
+
|
|
6
|
+
lint:
|
|
7
|
+
use:
|
|
8
|
+
- STANDARD
|
|
9
|
+
except:
|
|
10
|
+
# Our package is `perd.v1` and files live at perd/v1/*.proto, which
|
|
11
|
+
# STANDARD already enforces. We keep PACKAGE_DIRECTORY_MATCH on.
|
|
12
|
+
- PACKAGE_VERSION_SUFFIX
|
|
13
|
+
disallow_comment_ignores: true
|
|
14
|
+
|
|
15
|
+
breaking:
|
|
16
|
+
use:
|
|
17
|
+
- FILE
|
|
18
|
+
except:
|
|
19
|
+
# Field/enum-value *additions* are always safe; FILE already permits them.
|
|
20
|
+
# Nothing else is excepted: this repo has no backward-compatibility
|
|
21
|
+
# obligation to v1, but it does have one to already-published workflows,
|
|
22
|
+
# whose pinned contract_hash must keep resolving.
|
|
23
|
+
- EXTENSION_NO_DELETE
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by https://github.com/connectrpc/connect-python. DO NOT EDIT!
|
|
3
|
+
# source: perd/v1/account.proto
|
|
4
|
+
|
|
5
|
+
from collections.abc import AsyncGenerator, AsyncIterator, Iterable, Iterator, Mapping
|
|
6
|
+
from typing import Protocol
|
|
7
|
+
|
|
8
|
+
from connectrpc.client import ConnectClient, ConnectClientSync
|
|
9
|
+
from connectrpc.code import Code
|
|
10
|
+
from connectrpc.compression import Compression
|
|
11
|
+
from connectrpc.errors import ConnectError
|
|
12
|
+
from connectrpc.interceptor import Interceptor, InterceptorSync
|
|
13
|
+
from connectrpc.method import IdempotencyLevel, MethodInfo
|
|
14
|
+
from connectrpc.request import Headers, RequestContext
|
|
15
|
+
from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync
|
|
16
|
+
import perd.v1.account_pb2 as perd_dot_v1_dot_account__pb2
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class AccountService(Protocol):
|
|
20
|
+
async def list_api_keys(self, request: perd_dot_v1_dot_account__pb2.ListApiKeysRequest, ctx: RequestContext) -> perd_dot_v1_dot_account__pb2.ListApiKeysResponse:
|
|
21
|
+
raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
|
|
22
|
+
|
|
23
|
+
async def issue_api_key(self, request: perd_dot_v1_dot_account__pb2.IssueApiKeyRequest, ctx: RequestContext) -> perd_dot_v1_dot_account__pb2.IssueApiKeyResponse:
|
|
24
|
+
raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
|
|
25
|
+
|
|
26
|
+
async def revoke_api_key(self, request: perd_dot_v1_dot_account__pb2.RevokeApiKeyRequest, ctx: RequestContext) -> perd_dot_v1_dot_account__pb2.RevokeApiKeyResponse:
|
|
27
|
+
raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class AccountServiceASGIApplication(ConnectASGIApplication[AccountService]):
|
|
31
|
+
def __init__(self, service: AccountService | AsyncGenerator[AccountService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
|
|
32
|
+
super().__init__(
|
|
33
|
+
service=service,
|
|
34
|
+
endpoints=lambda svc: {
|
|
35
|
+
"/perd.v1.AccountService/ListApiKeys": Endpoint.unary(
|
|
36
|
+
method=MethodInfo(
|
|
37
|
+
name="ListApiKeys",
|
|
38
|
+
service_name="perd.v1.AccountService",
|
|
39
|
+
input=perd_dot_v1_dot_account__pb2.ListApiKeysRequest,
|
|
40
|
+
output=perd_dot_v1_dot_account__pb2.ListApiKeysResponse,
|
|
41
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
42
|
+
),
|
|
43
|
+
function=svc.list_api_keys,
|
|
44
|
+
),
|
|
45
|
+
"/perd.v1.AccountService/IssueApiKey": Endpoint.unary(
|
|
46
|
+
method=MethodInfo(
|
|
47
|
+
name="IssueApiKey",
|
|
48
|
+
service_name="perd.v1.AccountService",
|
|
49
|
+
input=perd_dot_v1_dot_account__pb2.IssueApiKeyRequest,
|
|
50
|
+
output=perd_dot_v1_dot_account__pb2.IssueApiKeyResponse,
|
|
51
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
52
|
+
),
|
|
53
|
+
function=svc.issue_api_key,
|
|
54
|
+
),
|
|
55
|
+
"/perd.v1.AccountService/RevokeApiKey": Endpoint.unary(
|
|
56
|
+
method=MethodInfo(
|
|
57
|
+
name="RevokeApiKey",
|
|
58
|
+
service_name="perd.v1.AccountService",
|
|
59
|
+
input=perd_dot_v1_dot_account__pb2.RevokeApiKeyRequest,
|
|
60
|
+
output=perd_dot_v1_dot_account__pb2.RevokeApiKeyResponse,
|
|
61
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
62
|
+
),
|
|
63
|
+
function=svc.revoke_api_key,
|
|
64
|
+
),
|
|
65
|
+
},
|
|
66
|
+
interceptors=interceptors,
|
|
67
|
+
read_max_bytes=read_max_bytes,
|
|
68
|
+
compressions=compressions,
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
@property
|
|
72
|
+
def path(self) -> str:
|
|
73
|
+
"""Returns the URL path to mount the application to when serving multiple applications."""
|
|
74
|
+
return "/perd.v1.AccountService"
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
class AccountServiceClient(ConnectClient):
|
|
78
|
+
async def list_api_keys(
|
|
79
|
+
self,
|
|
80
|
+
request: perd_dot_v1_dot_account__pb2.ListApiKeysRequest,
|
|
81
|
+
*,
|
|
82
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
83
|
+
timeout_ms: int | None = None,
|
|
84
|
+
) -> perd_dot_v1_dot_account__pb2.ListApiKeysResponse:
|
|
85
|
+
return await self.execute_unary(
|
|
86
|
+
request=request,
|
|
87
|
+
method=MethodInfo(
|
|
88
|
+
name="ListApiKeys",
|
|
89
|
+
service_name="perd.v1.AccountService",
|
|
90
|
+
input=perd_dot_v1_dot_account__pb2.ListApiKeysRequest,
|
|
91
|
+
output=perd_dot_v1_dot_account__pb2.ListApiKeysResponse,
|
|
92
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
93
|
+
),
|
|
94
|
+
headers=headers,
|
|
95
|
+
timeout_ms=timeout_ms,
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
async def issue_api_key(
|
|
99
|
+
self,
|
|
100
|
+
request: perd_dot_v1_dot_account__pb2.IssueApiKeyRequest,
|
|
101
|
+
*,
|
|
102
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
103
|
+
timeout_ms: int | None = None,
|
|
104
|
+
) -> perd_dot_v1_dot_account__pb2.IssueApiKeyResponse:
|
|
105
|
+
return await self.execute_unary(
|
|
106
|
+
request=request,
|
|
107
|
+
method=MethodInfo(
|
|
108
|
+
name="IssueApiKey",
|
|
109
|
+
service_name="perd.v1.AccountService",
|
|
110
|
+
input=perd_dot_v1_dot_account__pb2.IssueApiKeyRequest,
|
|
111
|
+
output=perd_dot_v1_dot_account__pb2.IssueApiKeyResponse,
|
|
112
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
113
|
+
),
|
|
114
|
+
headers=headers,
|
|
115
|
+
timeout_ms=timeout_ms,
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
async def revoke_api_key(
|
|
119
|
+
self,
|
|
120
|
+
request: perd_dot_v1_dot_account__pb2.RevokeApiKeyRequest,
|
|
121
|
+
*,
|
|
122
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
123
|
+
timeout_ms: int | None = None,
|
|
124
|
+
) -> perd_dot_v1_dot_account__pb2.RevokeApiKeyResponse:
|
|
125
|
+
return await self.execute_unary(
|
|
126
|
+
request=request,
|
|
127
|
+
method=MethodInfo(
|
|
128
|
+
name="RevokeApiKey",
|
|
129
|
+
service_name="perd.v1.AccountService",
|
|
130
|
+
input=perd_dot_v1_dot_account__pb2.RevokeApiKeyRequest,
|
|
131
|
+
output=perd_dot_v1_dot_account__pb2.RevokeApiKeyResponse,
|
|
132
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
133
|
+
),
|
|
134
|
+
headers=headers,
|
|
135
|
+
timeout_ms=timeout_ms,
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
class AccountServiceSync(Protocol):
|
|
140
|
+
def list_api_keys(self, request: perd_dot_v1_dot_account__pb2.ListApiKeysRequest, ctx: RequestContext) -> perd_dot_v1_dot_account__pb2.ListApiKeysResponse:
|
|
141
|
+
raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
|
|
142
|
+
def issue_api_key(self, request: perd_dot_v1_dot_account__pb2.IssueApiKeyRequest, ctx: RequestContext) -> perd_dot_v1_dot_account__pb2.IssueApiKeyResponse:
|
|
143
|
+
raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
|
|
144
|
+
def revoke_api_key(self, request: perd_dot_v1_dot_account__pb2.RevokeApiKeyRequest, ctx: RequestContext) -> perd_dot_v1_dot_account__pb2.RevokeApiKeyResponse:
|
|
145
|
+
raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
class AccountServiceWSGIApplication(ConnectWSGIApplication):
|
|
149
|
+
def __init__(self, service: AccountServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
|
|
150
|
+
super().__init__(
|
|
151
|
+
endpoints={
|
|
152
|
+
"/perd.v1.AccountService/ListApiKeys": EndpointSync.unary(
|
|
153
|
+
method=MethodInfo(
|
|
154
|
+
name="ListApiKeys",
|
|
155
|
+
service_name="perd.v1.AccountService",
|
|
156
|
+
input=perd_dot_v1_dot_account__pb2.ListApiKeysRequest,
|
|
157
|
+
output=perd_dot_v1_dot_account__pb2.ListApiKeysResponse,
|
|
158
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
159
|
+
),
|
|
160
|
+
function=service.list_api_keys,
|
|
161
|
+
),
|
|
162
|
+
"/perd.v1.AccountService/IssueApiKey": EndpointSync.unary(
|
|
163
|
+
method=MethodInfo(
|
|
164
|
+
name="IssueApiKey",
|
|
165
|
+
service_name="perd.v1.AccountService",
|
|
166
|
+
input=perd_dot_v1_dot_account__pb2.IssueApiKeyRequest,
|
|
167
|
+
output=perd_dot_v1_dot_account__pb2.IssueApiKeyResponse,
|
|
168
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
169
|
+
),
|
|
170
|
+
function=service.issue_api_key,
|
|
171
|
+
),
|
|
172
|
+
"/perd.v1.AccountService/RevokeApiKey": EndpointSync.unary(
|
|
173
|
+
method=MethodInfo(
|
|
174
|
+
name="RevokeApiKey",
|
|
175
|
+
service_name="perd.v1.AccountService",
|
|
176
|
+
input=perd_dot_v1_dot_account__pb2.RevokeApiKeyRequest,
|
|
177
|
+
output=perd_dot_v1_dot_account__pb2.RevokeApiKeyResponse,
|
|
178
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
179
|
+
),
|
|
180
|
+
function=service.revoke_api_key,
|
|
181
|
+
),
|
|
182
|
+
},
|
|
183
|
+
interceptors=interceptors,
|
|
184
|
+
read_max_bytes=read_max_bytes,
|
|
185
|
+
compressions=compressions,
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
@property
|
|
189
|
+
def path(self) -> str:
|
|
190
|
+
"""Returns the URL path to mount the application to when serving multiple applications."""
|
|
191
|
+
return "/perd.v1.AccountService"
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
class AccountServiceClientSync(ConnectClientSync):
|
|
195
|
+
def list_api_keys(
|
|
196
|
+
self,
|
|
197
|
+
request: perd_dot_v1_dot_account__pb2.ListApiKeysRequest,
|
|
198
|
+
*,
|
|
199
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
200
|
+
timeout_ms: int | None = None,
|
|
201
|
+
) -> perd_dot_v1_dot_account__pb2.ListApiKeysResponse:
|
|
202
|
+
return self.execute_unary(
|
|
203
|
+
request=request,
|
|
204
|
+
method=MethodInfo(
|
|
205
|
+
name="ListApiKeys",
|
|
206
|
+
service_name="perd.v1.AccountService",
|
|
207
|
+
input=perd_dot_v1_dot_account__pb2.ListApiKeysRequest,
|
|
208
|
+
output=perd_dot_v1_dot_account__pb2.ListApiKeysResponse,
|
|
209
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
210
|
+
),
|
|
211
|
+
headers=headers,
|
|
212
|
+
timeout_ms=timeout_ms,
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
def issue_api_key(
|
|
216
|
+
self,
|
|
217
|
+
request: perd_dot_v1_dot_account__pb2.IssueApiKeyRequest,
|
|
218
|
+
*,
|
|
219
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
220
|
+
timeout_ms: int | None = None,
|
|
221
|
+
) -> perd_dot_v1_dot_account__pb2.IssueApiKeyResponse:
|
|
222
|
+
return self.execute_unary(
|
|
223
|
+
request=request,
|
|
224
|
+
method=MethodInfo(
|
|
225
|
+
name="IssueApiKey",
|
|
226
|
+
service_name="perd.v1.AccountService",
|
|
227
|
+
input=perd_dot_v1_dot_account__pb2.IssueApiKeyRequest,
|
|
228
|
+
output=perd_dot_v1_dot_account__pb2.IssueApiKeyResponse,
|
|
229
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
230
|
+
),
|
|
231
|
+
headers=headers,
|
|
232
|
+
timeout_ms=timeout_ms,
|
|
233
|
+
)
|
|
234
|
+
|
|
235
|
+
def revoke_api_key(
|
|
236
|
+
self,
|
|
237
|
+
request: perd_dot_v1_dot_account__pb2.RevokeApiKeyRequest,
|
|
238
|
+
*,
|
|
239
|
+
headers: Headers | Mapping[str, str] | None = None,
|
|
240
|
+
timeout_ms: int | None = None,
|
|
241
|
+
) -> perd_dot_v1_dot_account__pb2.RevokeApiKeyResponse:
|
|
242
|
+
return self.execute_unary(
|
|
243
|
+
request=request,
|
|
244
|
+
method=MethodInfo(
|
|
245
|
+
name="RevokeApiKey",
|
|
246
|
+
service_name="perd.v1.AccountService",
|
|
247
|
+
input=perd_dot_v1_dot_account__pb2.RevokeApiKeyRequest,
|
|
248
|
+
output=perd_dot_v1_dot_account__pb2.RevokeApiKeyResponse,
|
|
249
|
+
idempotency_level=IdempotencyLevel.UNKNOWN,
|
|
250
|
+
),
|
|
251
|
+
headers=headers,
|
|
252
|
+
timeout_ms=timeout_ms,
|
|
253
|
+
)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
|
4
|
+
# source: perd/v1/account.proto
|
|
5
|
+
# Protobuf Python Version: 5.29.3
|
|
6
|
+
"""Generated protocol buffer code."""
|
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
11
|
+
from google.protobuf.internal import builder as _builder
|
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
|
14
|
+
5,
|
|
15
|
+
29,
|
|
16
|
+
3,
|
|
17
|
+
'',
|
|
18
|
+
'perd/v1/account.proto'
|
|
19
|
+
)
|
|
20
|
+
# @@protoc_insertion_point(imports)
|
|
21
|
+
|
|
22
|
+
_sym_db = _symbol_database.Default()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15perd/v1/account.proto\x12\x07perd.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\xcc\x01\n\x06\x41piKey\x12\x15\n\x06key_id\x18\x01 \x01(\tR\x05keyId\x12!\n\x0c\x64isplay_name\x18\x02 \x01(\tR\x0b\x64isplayName\x12\x39\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12>\n\nrevoked_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\trevokedAt\x88\x01\x01\x42\r\n\x0b_revoked_at\"\x14\n\x12ListApiKeysRequest\":\n\x13ListApiKeysResponse\x12#\n\x04keys\x18\x01 \x03(\x0b\x32\x0f.perd.v1.ApiKeyR\x04keys\"7\n\x12IssueApiKeyRequest\x12!\n\x0c\x64isplay_name\x18\x01 \x01(\tR\x0b\x64isplayName\"Q\n\x13IssueApiKeyResponse\x12!\n\x03key\x18\x01 \x01(\x0b\x32\x0f.perd.v1.ApiKeyR\x03key\x12\x17\n\x07\x61pi_key\x18\x02 \x01(\tR\x06\x61piKey\",\n\x13RevokeApiKeyRequest\x12\x15\n\x06key_id\x18\x01 \x01(\tR\x05keyId\"9\n\x14RevokeApiKeyResponse\x12!\n\x03key\x18\x01 \x01(\x0b\x32\x0f.perd.v1.ApiKeyR\x03key2\xf1\x01\n\x0e\x41\x63\x63ountService\x12H\n\x0bListApiKeys\x12\x1b.perd.v1.ListApiKeysRequest\x1a\x1c.perd.v1.ListApiKeysResponse\x12H\n\x0bIssueApiKey\x12\x1b.perd.v1.IssueApiKeyRequest\x1a\x1c.perd.v1.IssueApiKeyResponse\x12K\n\x0cRevokeApiKey\x12\x1c.perd.v1.RevokeApiKeyRequest\x1a\x1d.perd.v1.RevokeApiKeyResponseBX\n\x0b\x63om.perd.v1B\x0c\x41\x63\x63ountProtoP\x01\xa2\x02\x03PXX\xaa\x02\x07Perd.V1\xca\x02\x07Perd\\V1\xe2\x02\x13Perd\\V1\\GPBMetadata\xea\x02\x08Perd::V1b\x06proto3')
|
|
29
|
+
|
|
30
|
+
_globals = globals()
|
|
31
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
32
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'perd.v1.account_pb2', _globals)
|
|
33
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
|
34
|
+
_globals['DESCRIPTOR']._loaded_options = None
|
|
35
|
+
_globals['DESCRIPTOR']._serialized_options = b'\n\013com.perd.v1B\014AccountProtoP\001\242\002\003PXX\252\002\007Perd.V1\312\002\007Perd\\V1\342\002\023Perd\\V1\\GPBMetadata\352\002\010Perd::V1'
|
|
36
|
+
_globals['_APIKEY']._serialized_start=68
|
|
37
|
+
_globals['_APIKEY']._serialized_end=272
|
|
38
|
+
_globals['_LISTAPIKEYSREQUEST']._serialized_start=274
|
|
39
|
+
_globals['_LISTAPIKEYSREQUEST']._serialized_end=294
|
|
40
|
+
_globals['_LISTAPIKEYSRESPONSE']._serialized_start=296
|
|
41
|
+
_globals['_LISTAPIKEYSRESPONSE']._serialized_end=354
|
|
42
|
+
_globals['_ISSUEAPIKEYREQUEST']._serialized_start=356
|
|
43
|
+
_globals['_ISSUEAPIKEYREQUEST']._serialized_end=411
|
|
44
|
+
_globals['_ISSUEAPIKEYRESPONSE']._serialized_start=413
|
|
45
|
+
_globals['_ISSUEAPIKEYRESPONSE']._serialized_end=494
|
|
46
|
+
_globals['_REVOKEAPIKEYREQUEST']._serialized_start=496
|
|
47
|
+
_globals['_REVOKEAPIKEYREQUEST']._serialized_end=540
|
|
48
|
+
_globals['_REVOKEAPIKEYRESPONSE']._serialized_start=542
|
|
49
|
+
_globals['_REVOKEAPIKEYRESPONSE']._serialized_end=599
|
|
50
|
+
_globals['_ACCOUNTSERVICE']._serialized_start=602
|
|
51
|
+
_globals['_ACCOUNTSERVICE']._serialized_end=843
|
|
52
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
from google.protobuf import timestamp_pb2 as _timestamp_pb2
|
|
2
|
+
from google.protobuf.internal import containers as _containers
|
|
3
|
+
from google.protobuf import descriptor as _descriptor
|
|
4
|
+
from google.protobuf import message as _message
|
|
5
|
+
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
|
|
6
|
+
|
|
7
|
+
DESCRIPTOR: _descriptor.FileDescriptor
|
|
8
|
+
|
|
9
|
+
class ApiKey(_message.Message):
|
|
10
|
+
__slots__ = ("key_id", "display_name", "created_at", "revoked_at")
|
|
11
|
+
KEY_ID_FIELD_NUMBER: _ClassVar[int]
|
|
12
|
+
DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int]
|
|
13
|
+
CREATED_AT_FIELD_NUMBER: _ClassVar[int]
|
|
14
|
+
REVOKED_AT_FIELD_NUMBER: _ClassVar[int]
|
|
15
|
+
key_id: str
|
|
16
|
+
display_name: str
|
|
17
|
+
created_at: _timestamp_pb2.Timestamp
|
|
18
|
+
revoked_at: _timestamp_pb2.Timestamp
|
|
19
|
+
def __init__(self, key_id: _Optional[str] = ..., display_name: _Optional[str] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., revoked_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...
|
|
20
|
+
|
|
21
|
+
class ListApiKeysRequest(_message.Message):
|
|
22
|
+
__slots__ = ()
|
|
23
|
+
def __init__(self) -> None: ...
|
|
24
|
+
|
|
25
|
+
class ListApiKeysResponse(_message.Message):
|
|
26
|
+
__slots__ = ("keys",)
|
|
27
|
+
KEYS_FIELD_NUMBER: _ClassVar[int]
|
|
28
|
+
keys: _containers.RepeatedCompositeFieldContainer[ApiKey]
|
|
29
|
+
def __init__(self, keys: _Optional[_Iterable[_Union[ApiKey, _Mapping]]] = ...) -> None: ...
|
|
30
|
+
|
|
31
|
+
class IssueApiKeyRequest(_message.Message):
|
|
32
|
+
__slots__ = ("display_name",)
|
|
33
|
+
DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int]
|
|
34
|
+
display_name: str
|
|
35
|
+
def __init__(self, display_name: _Optional[str] = ...) -> None: ...
|
|
36
|
+
|
|
37
|
+
class IssueApiKeyResponse(_message.Message):
|
|
38
|
+
__slots__ = ("key", "api_key")
|
|
39
|
+
KEY_FIELD_NUMBER: _ClassVar[int]
|
|
40
|
+
API_KEY_FIELD_NUMBER: _ClassVar[int]
|
|
41
|
+
key: ApiKey
|
|
42
|
+
api_key: str
|
|
43
|
+
def __init__(self, key: _Optional[_Union[ApiKey, _Mapping]] = ..., api_key: _Optional[str] = ...) -> None: ...
|
|
44
|
+
|
|
45
|
+
class RevokeApiKeyRequest(_message.Message):
|
|
46
|
+
__slots__ = ("key_id",)
|
|
47
|
+
KEY_ID_FIELD_NUMBER: _ClassVar[int]
|
|
48
|
+
key_id: str
|
|
49
|
+
def __init__(self, key_id: _Optional[str] = ...) -> None: ...
|
|
50
|
+
|
|
51
|
+
class RevokeApiKeyResponse(_message.Message):
|
|
52
|
+
__slots__ = ("key",)
|
|
53
|
+
KEY_FIELD_NUMBER: _ClassVar[int]
|
|
54
|
+
key: ApiKey
|
|
55
|
+
def __init__(self, key: _Optional[_Union[ApiKey, _Mapping]] = ...) -> None: ...
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
|
4
|
+
# source: perd/v1/common.proto
|
|
5
|
+
# Protobuf Python Version: 5.29.3
|
|
6
|
+
"""Generated protocol buffer code."""
|
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
11
|
+
from google.protobuf.internal import builder as _builder
|
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
|
14
|
+
5,
|
|
15
|
+
29,
|
|
16
|
+
3,
|
|
17
|
+
'',
|
|
18
|
+
'perd/v1/common.proto'
|
|
19
|
+
)
|
|
20
|
+
# @@protoc_insertion_point(imports)
|
|
21
|
+
|
|
22
|
+
_sym_db = _symbol_database.Default()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14perd/v1/common.proto\x12\x07perd.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\x8d\x02\n\x07\x46\x61ilure\x12(\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x14.perd.v1.FailureCodeR\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12\x1c\n\tretryable\x18\x03 \x01(\x08R\tretryable\x12)\n\x0eretry_after_ms\x18\x04 \x01(\rH\x00R\x0cretryAfterMs\x88\x01\x01\x12%\n\x0bremediation\x18\x05 \x01(\tH\x01R\x0bremediation\x88\x01\x01\x12\x1e\n\x08trace_id\x18\x06 \x01(\tH\x02R\x07traceId\x88\x01\x01\x42\x11\n\x0f_retry_after_msB\x0e\n\x0c_remediationB\x0b\n\t_trace_id\"m\n\x0bWorkflowRef\x12\x1f\n\x0bworkflow_id\x18\x01 \x01(\tR\nworkflowId\x12\x18\n\x07version\x18\x02 \x01(\tR\x07version\x12#\n\rcontract_hash\x18\x03 \x01(\tR\x0c\x63ontractHash\"b\n\x05\x41\x63tor\x12\x17\n\x07user_id\x18\x01 \x01(\tR\x06userId\x12,\n\x0forganization_id\x18\x02 \x01(\tH\x00R\x0eorganizationId\x88\x01\x01\x42\x12\n\x10_organization_id\"\xc5\x01\n\nAuditStamp\x12\x39\n\ncreated_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12>\n\nupdated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\tupdatedAt\x88\x01\x01\x12-\n\ncreated_by\x18\x03 \x01(\x0b\x32\x0e.perd.v1.ActorR\tcreatedByB\r\n\x0b_updated_at\"]\n\x0bPageRequest\x12\x1b\n\tpage_size\x18\x01 \x01(\rR\x08pageSize\x12\"\n\npage_token\x18\x02 \x01(\tH\x00R\tpageToken\x88\x01\x01\x42\r\n\x0b_page_token\"\x82\x01\n\x0cPageResponse\x12+\n\x0fnext_page_token\x18\x01 \x01(\tH\x00R\rnextPageToken\x88\x01\x01\x12\"\n\ntotal_size\x18\x02 \x01(\rH\x01R\ttotalSize\x88\x01\x01\x42\x12\n\x10_next_page_tokenB\r\n\x0b_total_size*\x84\x04\n\x0b\x46\x61ilureCode\x12\x1c\n\x18\x46\x41ILURE_CODE_UNSPECIFIED\x10\x00\x12!\n\x1d\x46\x41ILURE_CODE_INVALID_ARGUMENT\x10\x01\x12 \n\x1c\x46\x41ILURE_CODE_UNAUTHENTICATED\x10\x02\x12\"\n\x1e\x46\x41ILURE_CODE_PERMISSION_DENIED\x10\x03\x12\x1a\n\x16\x46\x41ILURE_CODE_NOT_FOUND\x10\x04\x12\x1f\n\x1b\x46\x41ILURE_CODE_ALREADY_EXISTS\x10\x05\x12#\n\x1f\x46\x41ILURE_CODE_RESOURCE_EXHAUSTED\x10\x06\x12\"\n\x1e\x46\x41ILURE_CODE_DEADLINE_EXCEEDED\x10\x07\x12\x1a\n\x16\x46\x41ILURE_CODE_CANCELLED\x10\x08\x12\"\n\x1e\x46\x41ILURE_CODE_CONTRACT_MISMATCH\x10\x14\x12&\n\"FAILURE_CODE_RESUME_WINDOW_EXPIRED\x10\x15\x12\x19\n\x15\x46\x41ILURE_CODE_INTERNAL\x10(\x12\x1c\n\x18\x46\x41ILURE_CODE_UNAVAILABLE\x10)\x12&\n\"FAILURE_CODE_WORKSTATION_NOT_READY\x10*\x12\x1f\n\x1b\x46\x41ILURE_CODE_QUOTA_EXCEEDED\x10+*\xaf\x01\n\x0c\x43omputeClass\x12\x1d\n\x19\x43OMPUTE_CLASS_UNSPECIFIED\x10\x00\x12\x17\n\x13\x43OMPUTE_CLASS_SMALL\x10\x01\x12\x18\n\x14\x43OMPUTE_CLASS_MEDIUM\x10\x02\x12\x17\n\x13\x43OMPUTE_CLASS_LARGE\x10\x03\x12\x18\n\x14\x43OMPUTE_CLASS_GPU_L4\x10\n\x12\x1a\n\x16\x43OMPUTE_CLASS_GPU_A100\x10\x0b\x42W\n\x0b\x63om.perd.v1B\x0b\x43ommonProtoP\x01\xa2\x02\x03PXX\xaa\x02\x07Perd.V1\xca\x02\x07Perd\\V1\xe2\x02\x13Perd\\V1\\GPBMetadata\xea\x02\x08Perd::V1b\x06proto3')
|
|
29
|
+
|
|
30
|
+
_globals = globals()
|
|
31
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
32
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'perd.v1.common_pb2', _globals)
|
|
33
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
|
34
|
+
_globals['DESCRIPTOR']._loaded_options = None
|
|
35
|
+
_globals['DESCRIPTOR']._serialized_options = b'\n\013com.perd.v1B\013CommonProtoP\001\242\002\003PXX\252\002\007Perd.V1\312\002\007Perd\\V1\342\002\023Perd\\V1\\GPBMetadata\352\002\010Perd::V1'
|
|
36
|
+
_globals['_FAILURECODE']._serialized_start=978
|
|
37
|
+
_globals['_FAILURECODE']._serialized_end=1494
|
|
38
|
+
_globals['_COMPUTECLASS']._serialized_start=1497
|
|
39
|
+
_globals['_COMPUTECLASS']._serialized_end=1672
|
|
40
|
+
_globals['_FAILURE']._serialized_start=67
|
|
41
|
+
_globals['_FAILURE']._serialized_end=336
|
|
42
|
+
_globals['_WORKFLOWREF']._serialized_start=338
|
|
43
|
+
_globals['_WORKFLOWREF']._serialized_end=447
|
|
44
|
+
_globals['_ACTOR']._serialized_start=449
|
|
45
|
+
_globals['_ACTOR']._serialized_end=547
|
|
46
|
+
_globals['_AUDITSTAMP']._serialized_start=550
|
|
47
|
+
_globals['_AUDITSTAMP']._serialized_end=747
|
|
48
|
+
_globals['_PAGEREQUEST']._serialized_start=749
|
|
49
|
+
_globals['_PAGEREQUEST']._serialized_end=842
|
|
50
|
+
_globals['_PAGERESPONSE']._serialized_start=845
|
|
51
|
+
_globals['_PAGERESPONSE']._serialized_end=975
|
|
52
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
from google.protobuf import timestamp_pb2 as _timestamp_pb2
|
|
2
|
+
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
|
3
|
+
from google.protobuf import descriptor as _descriptor
|
|
4
|
+
from google.protobuf import message as _message
|
|
5
|
+
from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union
|
|
6
|
+
|
|
7
|
+
DESCRIPTOR: _descriptor.FileDescriptor
|
|
8
|
+
|
|
9
|
+
class FailureCode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
10
|
+
__slots__ = ()
|
|
11
|
+
FAILURE_CODE_UNSPECIFIED: _ClassVar[FailureCode]
|
|
12
|
+
FAILURE_CODE_INVALID_ARGUMENT: _ClassVar[FailureCode]
|
|
13
|
+
FAILURE_CODE_UNAUTHENTICATED: _ClassVar[FailureCode]
|
|
14
|
+
FAILURE_CODE_PERMISSION_DENIED: _ClassVar[FailureCode]
|
|
15
|
+
FAILURE_CODE_NOT_FOUND: _ClassVar[FailureCode]
|
|
16
|
+
FAILURE_CODE_ALREADY_EXISTS: _ClassVar[FailureCode]
|
|
17
|
+
FAILURE_CODE_RESOURCE_EXHAUSTED: _ClassVar[FailureCode]
|
|
18
|
+
FAILURE_CODE_DEADLINE_EXCEEDED: _ClassVar[FailureCode]
|
|
19
|
+
FAILURE_CODE_CANCELLED: _ClassVar[FailureCode]
|
|
20
|
+
FAILURE_CODE_CONTRACT_MISMATCH: _ClassVar[FailureCode]
|
|
21
|
+
FAILURE_CODE_RESUME_WINDOW_EXPIRED: _ClassVar[FailureCode]
|
|
22
|
+
FAILURE_CODE_INTERNAL: _ClassVar[FailureCode]
|
|
23
|
+
FAILURE_CODE_UNAVAILABLE: _ClassVar[FailureCode]
|
|
24
|
+
FAILURE_CODE_WORKSTATION_NOT_READY: _ClassVar[FailureCode]
|
|
25
|
+
FAILURE_CODE_QUOTA_EXCEEDED: _ClassVar[FailureCode]
|
|
26
|
+
|
|
27
|
+
class ComputeClass(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
28
|
+
__slots__ = ()
|
|
29
|
+
COMPUTE_CLASS_UNSPECIFIED: _ClassVar[ComputeClass]
|
|
30
|
+
COMPUTE_CLASS_SMALL: _ClassVar[ComputeClass]
|
|
31
|
+
COMPUTE_CLASS_MEDIUM: _ClassVar[ComputeClass]
|
|
32
|
+
COMPUTE_CLASS_LARGE: _ClassVar[ComputeClass]
|
|
33
|
+
COMPUTE_CLASS_GPU_L4: _ClassVar[ComputeClass]
|
|
34
|
+
COMPUTE_CLASS_GPU_A100: _ClassVar[ComputeClass]
|
|
35
|
+
FAILURE_CODE_UNSPECIFIED: FailureCode
|
|
36
|
+
FAILURE_CODE_INVALID_ARGUMENT: FailureCode
|
|
37
|
+
FAILURE_CODE_UNAUTHENTICATED: FailureCode
|
|
38
|
+
FAILURE_CODE_PERMISSION_DENIED: FailureCode
|
|
39
|
+
FAILURE_CODE_NOT_FOUND: FailureCode
|
|
40
|
+
FAILURE_CODE_ALREADY_EXISTS: FailureCode
|
|
41
|
+
FAILURE_CODE_RESOURCE_EXHAUSTED: FailureCode
|
|
42
|
+
FAILURE_CODE_DEADLINE_EXCEEDED: FailureCode
|
|
43
|
+
FAILURE_CODE_CANCELLED: FailureCode
|
|
44
|
+
FAILURE_CODE_CONTRACT_MISMATCH: FailureCode
|
|
45
|
+
FAILURE_CODE_RESUME_WINDOW_EXPIRED: FailureCode
|
|
46
|
+
FAILURE_CODE_INTERNAL: FailureCode
|
|
47
|
+
FAILURE_CODE_UNAVAILABLE: FailureCode
|
|
48
|
+
FAILURE_CODE_WORKSTATION_NOT_READY: FailureCode
|
|
49
|
+
FAILURE_CODE_QUOTA_EXCEEDED: FailureCode
|
|
50
|
+
COMPUTE_CLASS_UNSPECIFIED: ComputeClass
|
|
51
|
+
COMPUTE_CLASS_SMALL: ComputeClass
|
|
52
|
+
COMPUTE_CLASS_MEDIUM: ComputeClass
|
|
53
|
+
COMPUTE_CLASS_LARGE: ComputeClass
|
|
54
|
+
COMPUTE_CLASS_GPU_L4: ComputeClass
|
|
55
|
+
COMPUTE_CLASS_GPU_A100: ComputeClass
|
|
56
|
+
|
|
57
|
+
class Failure(_message.Message):
|
|
58
|
+
__slots__ = ("code", "message", "retryable", "retry_after_ms", "remediation", "trace_id")
|
|
59
|
+
CODE_FIELD_NUMBER: _ClassVar[int]
|
|
60
|
+
MESSAGE_FIELD_NUMBER: _ClassVar[int]
|
|
61
|
+
RETRYABLE_FIELD_NUMBER: _ClassVar[int]
|
|
62
|
+
RETRY_AFTER_MS_FIELD_NUMBER: _ClassVar[int]
|
|
63
|
+
REMEDIATION_FIELD_NUMBER: _ClassVar[int]
|
|
64
|
+
TRACE_ID_FIELD_NUMBER: _ClassVar[int]
|
|
65
|
+
code: FailureCode
|
|
66
|
+
message: str
|
|
67
|
+
retryable: bool
|
|
68
|
+
retry_after_ms: int
|
|
69
|
+
remediation: str
|
|
70
|
+
trace_id: str
|
|
71
|
+
def __init__(self, code: _Optional[_Union[FailureCode, str]] = ..., message: _Optional[str] = ..., retryable: bool = ..., retry_after_ms: _Optional[int] = ..., remediation: _Optional[str] = ..., trace_id: _Optional[str] = ...) -> None: ...
|
|
72
|
+
|
|
73
|
+
class WorkflowRef(_message.Message):
|
|
74
|
+
__slots__ = ("workflow_id", "version", "contract_hash")
|
|
75
|
+
WORKFLOW_ID_FIELD_NUMBER: _ClassVar[int]
|
|
76
|
+
VERSION_FIELD_NUMBER: _ClassVar[int]
|
|
77
|
+
CONTRACT_HASH_FIELD_NUMBER: _ClassVar[int]
|
|
78
|
+
workflow_id: str
|
|
79
|
+
version: str
|
|
80
|
+
contract_hash: str
|
|
81
|
+
def __init__(self, workflow_id: _Optional[str] = ..., version: _Optional[str] = ..., contract_hash: _Optional[str] = ...) -> None: ...
|
|
82
|
+
|
|
83
|
+
class Actor(_message.Message):
|
|
84
|
+
__slots__ = ("user_id", "organization_id")
|
|
85
|
+
USER_ID_FIELD_NUMBER: _ClassVar[int]
|
|
86
|
+
ORGANIZATION_ID_FIELD_NUMBER: _ClassVar[int]
|
|
87
|
+
user_id: str
|
|
88
|
+
organization_id: str
|
|
89
|
+
def __init__(self, user_id: _Optional[str] = ..., organization_id: _Optional[str] = ...) -> None: ...
|
|
90
|
+
|
|
91
|
+
class AuditStamp(_message.Message):
|
|
92
|
+
__slots__ = ("created_at", "updated_at", "created_by")
|
|
93
|
+
CREATED_AT_FIELD_NUMBER: _ClassVar[int]
|
|
94
|
+
UPDATED_AT_FIELD_NUMBER: _ClassVar[int]
|
|
95
|
+
CREATED_BY_FIELD_NUMBER: _ClassVar[int]
|
|
96
|
+
created_at: _timestamp_pb2.Timestamp
|
|
97
|
+
updated_at: _timestamp_pb2.Timestamp
|
|
98
|
+
created_by: Actor
|
|
99
|
+
def __init__(self, created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., created_by: _Optional[_Union[Actor, _Mapping]] = ...) -> None: ...
|
|
100
|
+
|
|
101
|
+
class PageRequest(_message.Message):
|
|
102
|
+
__slots__ = ("page_size", "page_token")
|
|
103
|
+
PAGE_SIZE_FIELD_NUMBER: _ClassVar[int]
|
|
104
|
+
PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
|
|
105
|
+
page_size: int
|
|
106
|
+
page_token: str
|
|
107
|
+
def __init__(self, page_size: _Optional[int] = ..., page_token: _Optional[str] = ...) -> None: ...
|
|
108
|
+
|
|
109
|
+
class PageResponse(_message.Message):
|
|
110
|
+
__slots__ = ("next_page_token", "total_size")
|
|
111
|
+
NEXT_PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
|
|
112
|
+
TOTAL_SIZE_FIELD_NUMBER: _ClassVar[int]
|
|
113
|
+
next_page_token: str
|
|
114
|
+
total_size: int
|
|
115
|
+
def __init__(self, next_page_token: _Optional[str] = ..., total_size: _Optional[int] = ...) -> None: ...
|