diff --git a/SOURCE.txt b/SOURCE.txt index ae41a64..d1ca265 100644 --- a/SOURCE.txt +++ b/SOURCE.txt @@ -1,8 +1,10 @@ -src/saas_sdk/_gen generated from codefly-dev/module-saas-starter@69ef9d19675d94f3a828c4fb4ffd8f80d0bc6272 +src/saas_sdk/_gen generated from codefly-dev/module-saas-starter@2637cbb4557e912a009456b80c3f26a83287c6e6 (accounts public proto: module/services/accounts/proto) services: saas.accounts.v1.DatasourceService (datasource.proto) saas.accounts.v1.WorkContextService (work_contexts.proto) +messages: + saas.jobs.v1 (jobs.proto, as saas_sdk/_gen/jobs.proto: datasource.proto's sync state) custom options + shared descriptors stripped — see scripts/generate.sh module version: 0.1.0 (module/module.package.codefly.yaml) diff --git a/scripts/generate.sh b/scripts/generate.sh index 63cb26d..a0b55d9 100755 --- a/scripts/generate.sh +++ b/scripts/generate.sh @@ -15,7 +15,11 @@ repo_root="$(cd "$(dirname "$0")/.." && pwd)" tmp="$(mktemp -d)" trap 'rm -rf "$tmp"' EXIT +# datasource.proto reads its sync state from saas.jobs.v1 (JobState, +# JobExecutionReference), so that file is a real message dependency and is +# generated alongside, not stripped. protos=( + saas/jobs/v1/jobs.proto saas/accounts/v1/datasource.proto saas/accounts/v1/work_contexts.proto ) @@ -30,7 +34,10 @@ buf generate --template "$repo_root/buf.gen.yaml" "$tmp/stripped.binpb" -o "$tmp for proto in "${protos[@]}"; do base="$(basename "$proto" .proto)" - cp "$tmp/out/saas/accounts/v1/${base}_pb2.py" "$repo_root/src/saas_sdk/_gen/${base}_pb2.py" - cp "$tmp/out/saas/accounts/v1/${base}_pb2.pyi" "$repo_root/src/saas_sdk/_gen/${base}_pb2.pyi" + # strip_options.py moves a proto another proto imports under saas_sdk/_gen/. + dir="$(dirname "$proto")" + [ -f "$tmp/out/${dir}/${base}_pb2.py" ] || dir="saas_sdk/_gen" + cp "$tmp/out/${dir}/${base}_pb2.py" "$repo_root/src/saas_sdk/_gen/${base}_pb2.py" + cp "$tmp/out/${dir}/${base}_pb2.pyi" "$repo_root/src/saas_sdk/_gen/${base}_pb2.pyi" done echo "regenerated src/saas_sdk/_gen from ${#protos[@]} proto(s)" diff --git a/scripts/strip_options.py b/scripts/strip_options.py index 3406c16..69e22f2 100644 --- a/scripts/strip_options.py +++ b/scripts/strip_options.py @@ -9,8 +9,17 @@ Each is a file kept in the output with its options and shared-proto dependencies stripped; the google.protobuf well-known types those files still reference are carried through as-is. + +A that another imports (saas/jobs/v1/jobs.proto, which +datasource.proto reads its sync state from) is renamed into this SDK's own +package path, saas_sdk/_gen/.proto, and its importers follow. The python +plugin writes an import from the file path, so this is what makes the +generated `from saas_sdk._gen import jobs_pb2` resolve inside this package +rather than naming a top-level `saas` package this SDK does not own. """ +import os + import sys from google.protobuf import descriptor_pb2 @@ -46,6 +55,10 @@ def strip(file_proto): targets = set(sys.argv[3:]) + +def local_name(name): + return "saas_sdk/_gen/" + os.path.basename(name) + source = descriptor_pb2.FileDescriptorSet() source.ParseFromString(open(sys.argv[1], "rb").read()) @@ -68,5 +81,15 @@ def strip(file_proto): elif file_proto.name in needed_wkt: out.file.append(file_proto) +# A target another target imports is SDK-local: rename it and its importers' +# references, after the order above is fixed from the original names. +imported = {d for f in stripped.values() for d in f.dependency if d in targets} +for file_proto in out.file: + deps = [local_name(d) if d in imported else d for d in file_proto.dependency] + del file_proto.dependency[:] + file_proto.dependency.extend(deps) + if file_proto.name in imported: + file_proto.name = local_name(file_proto.name) + open(sys.argv[2], "wb").write(out.SerializeToString()) print("kept:", [f.name for f in out.file], file=sys.stderr) diff --git a/src/saas_sdk/_gen/datasource_pb2.py b/src/saas_sdk/_gen/datasource_pb2.py index 6d01e2b..26ff7ed 100644 --- a/src/saas_sdk/_gen/datasource_pb2.py +++ b/src/saas_sdk/_gen/datasource_pb2.py @@ -23,9 +23,10 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 +from saas_sdk._gen import jobs_pb2 as saas__sdk_dot___gen_dot_jobs__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!saas/accounts/v1/datasource.proto\x12\x10saas.accounts.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"Z\n\x16GitHubDatasourceConfig\x12\x12\n\x04repo\x18\x01 \x01(\tR\x04repo\x12\x14\n\x05paths\x18\x02 \x03(\tR\x05paths\x12\x16\n\x06\x62ranch\x18\x03 \x01(\tR\x06\x62ranch\"\x87\x04\n\nDatasource\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06org_id\x18\x02 \x01(\tR\x05orgId\x12@\n\x08provider\x18\x03 \x01(\x0e\x32$.saas.accounts.v1.DatasourceProviderR\x08provider\x12+\n\x11target_collection\x18\x04 \x01(\tR\x10targetCollection\x12@\n\x06github\x18\x05 \x01(\x0b\x32(.saas.accounts.v1.GitHubDatasourceConfigR\x06github\x12:\n\x06status\x18\x06 \x01(\x0e\x32\".saas.accounts.v1.DatasourceStatusR\x06status\x12-\n\x12webhook_configured\x18\x07 \x01(\x08R\x11webhookConfigured\x12\x39\n\ncreated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12@\n\x0elast_synced_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0clastSyncedAt\"\xe8\x01\n\x16\x41\x64\x64GitHubSourceRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x12\n\x04repo\x18\x02 \x01(\tR\x04repo\x12\x14\n\x05paths\x18\x03 \x03(\tR\x05paths\x12\x16\n\x06\x62ranch\x18\x04 \x01(\tR\x06\x62ranch\x12+\n\x11target_collection\x18\x05 \x01(\tR\x10targetCollection\x12!\n\x0c\x61\x63\x63\x65ss_token\x18\x06 \x01(\tR\x0b\x61\x63\x63\x65ssToken\x12%\n\x0ewebhook_secret\x18\x07 \x01(\tR\rwebhookSecret\"W\n\x17\x41\x64\x64GitHubSourceResponse\x12<\n\ndatasource\x18\x01 \x01(\x0b\x32\x1c.saas.accounts.v1.DatasourceR\ndatasource\"+\n\x12ListSourcesRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\"U\n\x13ListSourcesResponse\x12>\n\x0b\x64\x61tasources\x18\x01 \x03(\x0b\x32\x1c.saas.accounts.v1.DatasourceR\x0b\x64\x61tasources\"9\n\x10GetSourceRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x0e\n\x02id\x18\x02 \x01(\tR\x02id\"Q\n\x11GetSourceResponse\x12<\n\ndatasource\x18\x01 \x01(\x0b\x32\x1c.saas.accounts.v1.DatasourceR\ndatasource\":\n\x11SyncSourceRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x0e\n\x02id\x18\x02 \x01(\tR\x02id\"+\n\x12SyncSourceResponse\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\"<\n\x13\x44\x65leteSourceRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x0e\n\x02id\x18\x02 \x01(\tR\x02id\"\x16\n\x14\x44\x65leteSourceResponse*Y\n\x12\x44\x61tasourceProvider\x12#\n\x1f\x44\x41TASOURCE_PROVIDER_UNSPECIFIED\x10\x00\x12\x1e\n\x1a\x44\x41TASOURCE_PROVIDER_GITHUB\x10\x01*q\n\x10\x44\x61tasourceStatus\x12!\n\x1d\x44\x41TASOURCE_STATUS_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x44\x41TASOURCE_STATUS_ACTIVE\x10\x01\x12\x1c\n\x18\x44\x41TASOURCE_STATUS_PAUSED\x10\x02\x32\xe5\x03\n\x11\x44\x61tasourceService\x12\x66\n\x0f\x41\x64\x64GitHubSource\x12(.saas.accounts.v1.AddGitHubSourceRequest\x1a).saas.accounts.v1.AddGitHubSourceResponse\x12Z\n\x0bListSources\x12$.saas.accounts.v1.ListSourcesRequest\x1a%.saas.accounts.v1.ListSourcesResponse\x12T\n\tGetSource\x12\".saas.accounts.v1.GetSourceRequest\x1a#.saas.accounts.v1.GetSourceResponse\x12W\n\nSyncSource\x12#.saas.accounts.v1.SyncSourceRequest\x1a$.saas.accounts.v1.SyncSourceResponse\x12]\n\x0c\x44\x65leteSource\x12%.saas.accounts.v1.DeleteSourceRequest\x1a&.saas.accounts.v1.DeleteSourceResponseB\x89\x01\n\x14\x63om.saas.accounts.v1B\x0f\x44\x61tasourceProtoP\x01\xa2\x02\x03SAX\xaa\x02\x10Saas.Accounts.V1\xca\x02\x10Saas\\Accounts\\V1\xe2\x02\x1cSaas\\Accounts\\V1\\GPBMetadata\xea\x02\x12Saas::Accounts::V1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!saas/accounts/v1/datasource.proto\x12\x10saas.accounts.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x18saas_sdk/_gen/jobs.proto\"\x83\x01\n\x16GitHubDatasourceConfig\x12\x12\n\x04repo\x18\x01 \x01(\tR\x04repo\x12\x14\n\x05paths\x18\x02 \x03(\tR\x05paths\x12\x16\n\x06\x62ranch\x18\x03 \x01(\tR\x06\x62ranch\x12\'\n\x0f\x66ile_extensions\x18\x04 \x03(\tR\x0e\x66ileExtensions\"c\n\x0f\x41piOAuth2Config\x12\x1b\n\ttoken_url\x18\x01 \x01(\tR\x08tokenUrl\x12\x1b\n\tclient_id\x18\x02 \x01(\tR\x08\x63lientId\x12\x16\n\x06scopes\x18\x03 \x03(\tR\x06scopes\"\xc1\x02\n\x13\x41piDatasourceConfig\x12\x19\n\x08\x62\x61se_url\x18\x01 \x01(\tR\x07\x62\x61seUrl\x12#\n\rresource_path\x18\x02 \x01(\tR\x0cresourcePath\x12L\n\x0f\x63redential_kind\x18\x03 \x01(\x0e\x32#.saas.accounts.v1.ApiCredentialKindR\x0e\x63redentialKind\x12+\n\x11\x63redential_header\x18\x04 \x01(\tR\x10\x63redentialHeader\x12\x34\n\x16\x63redential_query_param\x18\x05 \x01(\tR\x14\x63redentialQueryParam\x12\x39\n\x06oauth2\x18\x06 \x01(\x0b\x32!.saas.accounts.v1.ApiOAuth2ConfigR\x06oauth2\"W\n\x17\x43rawlerDatasourceConfig\x12\x1f\n\x0bsitemap_url\x18\x01 \x01(\tR\nsitemapUrl\x12\x1b\n\tmax_pages\x18\x02 \x01(\rR\x08maxPages\"\xc1\x01\n\x16UploadDatasourceConfig\x12\x1a\n\x08\x65ndpoint\x18\x01 \x01(\tR\x08\x65ndpoint\x12\x16\n\x06region\x18\x02 \x01(\tR\x06region\x12\x16\n\x06\x62ucket\x18\x03 \x01(\tR\x06\x62ucket\x12\x16\n\x06prefix\x18\x04 \x01(\tR\x06prefix\x12\"\n\raccess_key_id\x18\x05 \x01(\tR\x0b\x61\x63\x63\x65ssKeyId\x12\x1f\n\x0bmax_objects\x18\x06 \x01(\rR\nmaxObjects\"\xea\x07\n\nDatasource\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06org_id\x18\x02 \x01(\tR\x05orgId\x12@\n\x08provider\x18\x03 \x01(\x0e\x32$.saas.accounts.v1.DatasourceProviderR\x08provider\x12@\n\x06github\x18\x05 \x01(\x0b\x32(.saas.accounts.v1.GitHubDatasourceConfigR\x06github\x12:\n\x06status\x18\x06 \x01(\x0e\x32\".saas.accounts.v1.DatasourceStatusR\x06status\x12-\n\x12webhook_configured\x18\x07 \x01(\x08R\x11webhookConfigured\x12\x39\n\ncreated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12@\n\x0elast_synced_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0clastSyncedAt\x12\x37\n\x03\x61pi\x18\x0b \x01(\x0b\x32%.saas.accounts.v1.ApiDatasourceConfigR\x03\x61pi\x12\x43\n\x07\x63rawler\x18\x0c \x01(\x0b\x32).saas.accounts.v1.CrawlerDatasourceConfigR\x07\x63rawler\x12@\n\x06upload\x18\r \x01(\x0b\x32(.saas.accounts.v1.UploadDatasourceConfigR\x06upload\x12(\n\x10\x62oundary_node_id\x18\x0e \x01(\tR\x0e\x62oundaryNodeId\x12\x44\n\x10last_ingested_at\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0elastIngestedAt\x12\x30\n\x14last_ingested_commit\x18\x10 \x01(\tR\x12lastIngestedCommit\x12#\n\rstatus_reason\x18\x11 \x01(\tR\x0cstatusReason\x12%\n\x0e\x62oundary_label\x18\x12 \x01(\tR\rboundaryLabel\x12\x1e\n\nconformant\x18\x13 \x01(\x08R\nconformant\x12\'\n\x0f\x63onformance_gap\x18\x14 \x01(\tR\x0e\x63onformanceGapJ\x04\x08\x04\x10\x05R\x11target_collection\"\xe9\x02\n\x16\x41\x64\x64GitHubSourceRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x12\n\x04repo\x18\x02 \x01(\tR\x04repo\x12\x14\n\x05paths\x18\x03 \x03(\tR\x05paths\x12\x16\n\x06\x62ranch\x18\x04 \x01(\tR\x06\x62ranch\x12*\n\x10\x62oundary_node_id\x18\x08 \x01(\tH\x00R\x0e\x62oundaryNodeId\x12+\n\x10\x63ollection_label\x18\t \x01(\tH\x00R\x0f\x63ollectionLabel\x12!\n\x0c\x61\x63\x63\x65ss_token\x18\x06 \x01(\tR\x0b\x61\x63\x63\x65ssToken\x12%\n\x0ewebhook_secret\x18\x07 \x01(\tR\rwebhookSecret\x12\'\n\x0f\x66ile_extensions\x18\n \x03(\tR\x0e\x66ileExtensionsB\x11\n\x08\x62oundary\x12\x05\xbaH\x02\x08\x01J\x04\x08\x05\x10\x06R\x11target_collection\"W\n\x17\x41\x64\x64GitHubSourceResponse\x12<\n\ndatasource\x18\x01 \x01(\x0b\x32\x1c.saas.accounts.v1.DatasourceR\ndatasource\"\xfd\x04\n\x10\x41\x64\x64SourceRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12@\n\x08provider\x18\x02 \x01(\x0e\x32$.saas.accounts.v1.DatasourceProviderR\x08provider\x12\x42\n\x06github\x18\x04 \x01(\x0b\x32(.saas.accounts.v1.GitHubDatasourceConfigH\x00R\x06github\x12\x39\n\x03\x61pi\x18\x05 \x01(\x0b\x32%.saas.accounts.v1.ApiDatasourceConfigH\x00R\x03\x61pi\x12\x45\n\x07\x63rawler\x18\x08 \x01(\x0b\x32).saas.accounts.v1.CrawlerDatasourceConfigH\x00R\x07\x63rawler\x12\x42\n\x06upload\x18\t \x01(\x0b\x32(.saas.accounts.v1.UploadDatasourceConfigH\x00R\x06upload\x12*\n\x10\x62oundary_node_id\x18\x0c \x01(\tH\x01R\x0e\x62oundaryNodeId\x12+\n\x10\x63ollection_label\x18\r \x01(\tH\x01R\x0f\x63ollectionLabel\x12\x1e\n\ncredential\x18\x06 \x01(\tR\ncredential\x12%\n\x0ewebhook_secret\x18\x07 \x01(\tR\rwebhookSecret\x12\x30\n\x14oauth2_client_secret\x18\n \x01(\tR\x12oauth2ClientSecretB\x08\n\x06\x63onfigB\x11\n\x08\x62oundary\x12\x05\xbaH\x02\x08\x01J\x04\x08\x03\x10\x04R\x11target_collection\"Q\n\x11\x41\x64\x64SourceResponse\x12<\n\ndatasource\x18\x01 \x01(\x0b\x32\x1c.saas.accounts.v1.DatasourceR\ndatasource\"|\n\x15\x44\x61tasourceConfigField\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12!\n\x0c\x64isplay_name\x18\x02 \x01(\tR\x0b\x64isplayName\x12\x12\n\x04help\x18\x03 \x01(\tR\x04help\x12\x1a\n\x08required\x18\x04 \x01(\x08R\x08required\"\xb0\x02\n\x19\x44\x61tasourceConnectorBudget\x12+\n\x12max_items_per_call\x18\x01 \x01(\rR\x0fmaxItemsPerCall\x12+\n\x12max_bytes_per_call\x18\x02 \x01(\x03R\x0fmaxBytesPerCall\x12$\n\x0emax_item_bytes\x18\x03 \x01(\x03R\x0cmaxItemBytes\x12\x32\n\x15operations_per_window\x18\x04 \x01(\rR\x13operationsPerWindow\x12%\n\x0ewindow_seconds\x18\x05 \x01(\x03R\rwindowSeconds\x12\x38\n\x18\x62\x61\x63kground_share_percent\x18\x06 \x01(\rR\x16\x62\x61\x63kgroundSharePercent\"\xd1\x06\n\x1c\x44\x61tasourceProviderDescriptor\x12@\n\x08provider\x18\x01 \x01(\x0e\x32$.saas.accounts.v1.DatasourceProviderR\x08provider\x12!\n\x0c\x64isplay_name\x18\x02 \x01(\tR\x0b\x64isplayName\x12 \n\x0b\x64\x65scription\x18\x03 \x01(\tR\x0b\x64\x65scription\x12L\n\rconfig_fields\x18\x04 \x03(\x0b\x32\'.saas.accounts.v1.DatasourceConfigFieldR\x0c\x63onfigFields\x12)\n\x10supports_webhook\x18\x05 \x01(\x08R\x0fsupportsWebhook\x12\x61\n\x1asupported_credential_kinds\x18\x06 \x03(\x0e\x32#.saas.accounts.v1.ApiCredentialKindR\x18supportedCredentialKinds\x12\x1c\n\tconnector\x18\x07 \x01(\tR\tconnector\x12L\n\tinterface\x18\x08 \x01(\x0e\x32..saas.accounts.v1.DatasourceConnectorInterfaceR\tinterface\x12U\n\x10\x63redential_modes\x18\t \x03(\x0e\x32*.saas.accounts.v1.DatasourceCredentialModeR\x0f\x63redentialModes\x12M\n\rreaders_model\x18\n \x01(\x0e\x32(.saas.accounts.v1.DatasourceReadersModelR\x0creadersModel\x12\x43\n\x06\x62udget\x18\x0b \x01(\x0b\x32+.saas.accounts.v1.DatasourceConnectorBudgetR\x06\x62udget\x12\x1e\n\nconformant\x18\x0c \x01(\x08R\nconformant\x12\'\n\x0f\x63onformance_gap\x18\r \x01(\tR\x0e\x63onformanceGap\x12.\n\x13\x61\x63\x63\x65pts_new_sources\x18\x0e \x01(\x08R\x11\x61\x63\x63\x65ptsNewSources\"\x1d\n\x1bGetDatasourceCatalogRequest\"l\n\x1cGetDatasourceCatalogResponse\x12L\n\tproviders\x18\x01 \x03(\x0b\x32..saas.accounts.v1.DatasourceProviderDescriptorR\tproviders\"+\n\x12ListSourcesRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\"U\n\x13ListSourcesResponse\x12>\n\x0b\x64\x61tasources\x18\x01 \x03(\x0b\x32\x1c.saas.accounts.v1.DatasourceR\x0b\x64\x61tasources\"9\n\x10GetSourceRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x0e\n\x02id\x18\x02 \x01(\tR\x02id\"Q\n\x11GetSourceResponse\x12<\n\ndatasource\x18\x01 \x01(\x0b\x32\x1c.saas.accounts.v1.DatasourceR\ndatasource\"]\n\x11SyncSourceRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x0e\n\x02id\x18\x02 \x01(\tR\x02id\x12!\n\x0c\x61\x63\x63\x65ss_token\x18\x03 \x01(\tR\x0b\x61\x63\x63\x65ssToken\"+\n\x12SyncSourceResponse\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\"a\n\x14GetSourceSyncRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x1b\n\tsource_id\x18\x02 \x01(\tR\x08sourceId\x12\x15\n\x06job_id\x18\x03 \x01(\tR\x05jobId\"\x9c\x01\n\x12SourceSyncDelivery\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\x12,\n\x05state\x18\x02 \x01(\x0e\x32\x16.saas.jobs.v1.JobStateR\x05state\x12\x41\n\texecution\x18\x03 \x01(\x0b\x32#.saas.jobs.v1.JobExecutionReferenceR\texecution\"\xca\x01\n\x11SourceSyncChanges\x12\x14\n\x05\x66iles\x18\x01 \x01(\rR\x05\x66iles\x12\x14\n\x05\x61\x64\x64\x65\x64\x18\x02 \x01(\rR\x05\x61\x64\x64\x65\x64\x12\x1a\n\x08modified\x18\x03 \x01(\rR\x08modified\x12\x18\n\x07\x64\x65leted\x18\x04 \x01(\rR\x07\x64\x65leted\x12\x1f\n\x0bsplit_known\x18\x05 \x01(\x08R\nsplitKnown\x12\x1a\n\x08snapshot\x18\x06 \x01(\x08R\x08snapshot\x12\x16\n\x06\x63ommit\x18\x07 \x01(\tR\x06\x63ommit\"\xd7\x01\n\x11SourceSyncFailure\x12\x41\n\x06reason\x18\x01 \x01(\x0e\x32).saas.accounts.v1.SourceSyncFailureReasonR\x06reason\x12\x12\n\x04\x63ode\x18\x02 \x01(\tR\x04\x63ode\x12\x18\n\x07message\x18\x03 \x01(\tR\x07message\x12\x1a\n\x08retrying\x18\x04 \x01(\x08R\x08retrying\x12\x35\n\x08retry_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07retryAt\"\xf7\x04\n\x12SourceSyncProgress\x12\x37\n\x05phase\x18\x01 \x01(\x0e\x32!.saas.accounts.v1.SourceSyncPhaseR\x05phase\x12=\n\x07trigger\x18\x02 \x01(\x0e\x32#.saas.accounts.v1.SourceSyncTriggerR\x07trigger\x12\x37\n\tqueued_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08queuedAt\x12;\n\x0b\x66\x65tching_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nfetchingAt\x12;\n\x0b\x63ompiled_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ncompiledAt\x12>\n\rhanded_off_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bhandedOffAt\x12;\n\x0b\x66inished_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nfinishedAt\x12=\n\x07\x63hanges\x18\x08 \x01(\x0b\x32#.saas.accounts.v1.SourceSyncChangesR\x07\x63hanges\x12=\n\x07\x66\x61ilure\x18\t \x01(\x0b\x32#.saas.accounts.v1.SourceSyncFailureR\x07\x66\x61ilure\x12\x18\n\x07\x61ttempt\x18\n \x01(\rR\x07\x61ttempt\x12!\n\x0cmax_attempts\x18\x0b \x01(\rR\x0bmaxAttempts\"\xe4\x01\n\x15GetSourceSyncResponse\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\x12,\n\x05state\x18\x02 \x01(\x0e\x32\x16.saas.jobs.v1.JobStateR\x05state\x12\x44\n\ndeliveries\x18\x03 \x03(\x0b\x32$.saas.accounts.v1.SourceSyncDeliveryR\ndeliveries\x12@\n\x08progress\x18\x04 \x01(\x0b\x32$.saas.accounts.v1.SourceSyncProgressR\x08progress\"<\n\x13\x44\x65leteSourceRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x0e\n\x02id\x18\x02 \x01(\tR\x02id\"\x16\n\x14\x44\x65leteSourceResponse\"}\n\x13GitHubAppRepository\x12\x12\n\x04repo\x18\x01 \x01(\tR\x04repo\x12%\n\x0e\x64\x65\x66\x61ult_branch\x18\x02 \x01(\tR\rdefaultBranch\x12+\n\x11\x61lready_connected\x18\x03 \x01(\x08R\x10\x61lreadyConnected\"3\n\x1a\x42\x65ginGitHubAppSetupRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\"\x8f\x01\n\x1b\x42\x65ginGitHubAppSetupResponse\x12\x1f\n\x0binstall_url\x18\x01 \x01(\tR\ninstallUrl\x12\x14\n\x05state\x18\x02 \x01(\tR\x05state\x12\x39\n\nexpires_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\"\x89\x01\n\x1d\x43ompleteGitHubAppSetupRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x14\n\x05state\x18\x02 \x01(\tR\x05state\x12\'\n\x0finstallation_id\x18\x03 \x01(\tR\x0einstallationId\x12\x12\n\x04\x63ode\x18\x04 \x01(\tR\x04\x63ode\"\x94\x01\n\x1e\x43ompleteGitHubAppSetupResponse\x12\'\n\x0finstallation_id\x18\x01 \x01(\tR\x0einstallationId\x12I\n\x0crepositories\x18\x02 \x03(\x0b\x32%.saas.accounts.v1.GitHubAppRepositoryR\x0crepositories\"H\n\x1fMigrateGitHubSourceToAppRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x0e\n\x02id\x18\x02 \x01(\tR\x02id\"`\n MigrateGitHubSourceToAppResponse\x12<\n\ndatasource\x18\x01 \x01(\x0b\x32\x1c.saas.accounts.v1.DatasourceR\ndatasource\"\x96\x02\n\x15\x44\x61tasourceAccountLink\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06org_id\x18\x02 \x01(\tR\x05orgId\x12\x17\n\x07user_id\x18\x03 \x01(\tR\x06userId\x12\x1c\n\tconnector\x18\x04 \x01(\tR\tconnector\x12.\n\x13provider_account_id\x18\x05 \x01(\tR\x11providerAccountId\x12\x34\n\x16provider_account_login\x18\x06 \x01(\tR\x14providerAccountLogin\x12\x39\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\"\xfc\x01\n\x16\x44\x61tasourceGroupBinding\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06org_id\x18\x02 \x01(\tR\x05orgId\x12\x1c\n\tconnector\x18\x03 \x01(\tR\tconnector\x12*\n\x11provider_group_id\x18\x04 \x01(\tR\x0fproviderGroupId\x12\x17\n\x07team_id\x18\x05 \x01(\tR\x06teamId\x12\x1d\n\ncreated_by\x18\x06 \x01(\tR\tcreatedBy\x12\x39\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\"\xe5\x02\n\x18\x44\x61tasourceVerifiedDomain\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06org_id\x18\x02 \x01(\tR\x05orgId\x12\x16\n\x06\x64omain\x18\x03 \x01(\tR\x06\x64omain\x12@\n\x06status\x18\x04 \x01(\x0e\x32(.saas.accounts.v1.DatasourceDomainStatusR\x06status\x12&\n\x0ftxt_record_name\x18\x05 \x01(\tR\rtxtRecordName\x12(\n\x10txt_record_value\x18\x06 \x01(\tR\x0etxtRecordValue\x12;\n\x0bverified_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nverifiedAt\x12\x39\n\ncreated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\"=\n\x17\x44\x61tasourceDirectoryTeam\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\"{\n!BeginDatasourceAccountLinkRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x1c\n\tconnector\x18\x02 \x01(\tR\tconnector\x12!\n\x0credirect_uri\x18\x03 \x01(\tR\x0bredirectUri\"\x9a\x01\n\"BeginDatasourceAccountLinkResponse\x12#\n\rauthorize_url\x18\x01 \x01(\tR\x0c\x61uthorizeUrl\x12\x14\n\x05state\x18\x02 \x01(\tR\x05state\x12\x39\n\nexpires_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\"g\n$CompleteDatasourceAccountLinkRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x14\n\x05state\x18\x02 \x01(\tR\x05state\x12\x12\n\x04\x63ode\x18\x03 \x01(\tR\x04\x63ode\"d\n%CompleteDatasourceAccountLinkResponse\x12;\n\x04link\x18\x01 \x01(\x0b\x32\'.saas.accounts.v1.DatasourceAccountLinkR\x04link\"<\n#ListMyDatasourceAccountLinksRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\"e\n$ListMyDatasourceAccountLinksResponse\x12=\n\x05links\x18\x01 \x03(\x0b\x32\'.saas.accounts.v1.DatasourceAccountLinkR\x05links\"K\n\"DeleteDatasourceAccountLinkRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x0e\n\x02id\x18\x02 \x01(\tR\x02id\"%\n#DeleteDatasourceAccountLinkResponse\"6\n\x1dGetDatasourceDirectoryRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\"\xac\x02\n\x1eGetDatasourceDirectoryResponse\x12=\n\x05links\x18\x01 \x03(\x0b\x32\'.saas.accounts.v1.DatasourceAccountLinkR\x05links\x12\x44\n\x08\x62indings\x18\x02 \x03(\x0b\x32(.saas.accounts.v1.DatasourceGroupBindingR\x08\x62indings\x12\x44\n\x07\x64omains\x18\x03 \x03(\x0b\x32*.saas.accounts.v1.DatasourceVerifiedDomainR\x07\x64omains\x12?\n\x05teams\x18\x04 \x03(\x0b\x32).saas.accounts.v1.DatasourceDirectoryTeamR\x05teams\"\x96\x01\n\x1a\x42indDatasourceGroupRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x1c\n\tconnector\x18\x02 \x01(\tR\tconnector\x12*\n\x11provider_group_id\x18\x03 \x01(\tR\x0fproviderGroupId\x12\x17\n\x07team_id\x18\x04 \x01(\tR\x06teamId\"a\n\x1b\x42indDatasourceGroupResponse\x12\x42\n\x07\x62inding\x18\x01 \x01(\x0b\x32(.saas.accounts.v1.DatasourceGroupBindingR\x07\x62inding\"E\n\x1cUnbindDatasourceGroupRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x0e\n\x02id\x18\x02 \x01(\tR\x02id\"\x1f\n\x1dUnbindDatasourceGroupResponse\"M\n\x1c\x43laimDatasourceDomainRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x16\n\x06\x64omain\x18\x02 \x01(\tR\x06\x64omain\"c\n\x1d\x43laimDatasourceDomainResponse\x12\x42\n\x06\x64omain\x18\x01 \x01(\x0b\x32*.saas.accounts.v1.DatasourceVerifiedDomainR\x06\x64omain\"F\n\x1dVerifyDatasourceDomainRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x0e\n\x02id\x18\x02 \x01(\tR\x02id\"d\n\x1eVerifyDatasourceDomainResponse\x12\x42\n\x06\x64omain\x18\x01 \x01(\x0b\x32*.saas.accounts.v1.DatasourceVerifiedDomainR\x06\x64omain\"F\n\x1d\x44\x65leteDatasourceDomainRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x0e\n\x02id\x18\x02 \x01(\tR\x02id\" \n\x1e\x44\x65leteDatasourceDomainResponse*\xb7\x01\n\x12\x44\x61tasourceProvider\x12#\n\x1f\x44\x41TASOURCE_PROVIDER_UNSPECIFIED\x10\x00\x12\x1e\n\x1a\x44\x41TASOURCE_PROVIDER_GITHUB\x10\x01\x12\x1b\n\x17\x44\x41TASOURCE_PROVIDER_API\x10\x02\x12\x1f\n\x1b\x44\x41TASOURCE_PROVIDER_CRAWLER\x10\x03\x12\x1e\n\x1a\x44\x41TASOURCE_PROVIDER_UPLOAD\x10\x04*\x91\x01\n\x10\x44\x61tasourceStatus\x12!\n\x1d\x44\x41TASOURCE_STATUS_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x44\x41TASOURCE_STATUS_ACTIVE\x10\x01\x12\x1c\n\x18\x44\x41TASOURCE_STATUS_PAUSED\x10\x02\x12\x1e\n\x1a\x44\x41TASOURCE_STATUS_DEGRADED\x10\x03*\xd6\x01\n\x11\x41piCredentialKind\x12#\n\x1f\x41PI_CREDENTIAL_KIND_UNSPECIFIED\x10\x00\x12\x1e\n\x1a\x41PI_CREDENTIAL_KIND_BEARER\x10\x01\x12\x1d\n\x19\x41PI_CREDENTIAL_KIND_BASIC\x10\x02\x12\x1e\n\x1a\x41PI_CREDENTIAL_KIND_HEADER\x10\x03\x12\x1d\n\x19\x41PI_CREDENTIAL_KIND_QUERY\x10\x04\x12\x1e\n\x1a\x41PI_CREDENTIAL_KIND_OAUTH2\x10\x05*\xa6\x02\n\x1c\x44\x61tasourceConnectorInterface\x12.\n*DATASOURCE_CONNECTOR_INTERFACE_UNSPECIFIED\x10\x00\x12(\n$DATASOURCE_CONNECTOR_INTERFACE_FILES\x10\x01\x12(\n$DATASOURCE_CONNECTOR_INTERFACE_PAGES\x10\x02\x12*\n&DATASOURCE_CONNECTOR_INTERFACE_RECORDS\x10\x03\x12+\n\'DATASOURCE_CONNECTOR_INTERFACE_MESSAGES\x10\x04\x12)\n%DATASOURCE_CONNECTOR_INTERFACE_EVENTS\x10\x05*\xec\x01\n\x18\x44\x61tasourceCredentialMode\x12*\n&DATASOURCE_CREDENTIAL_MODE_UNSPECIFIED\x10\x00\x12#\n\x1f\x44\x41TASOURCE_CREDENTIAL_MODE_NONE\x10\x01\x12&\n\"DATASOURCE_CREDENTIAL_MODE_ORG_APP\x10\x02\x12)\n%DATASOURCE_CREDENTIAL_MODE_USER_OAUTH\x10\x03\x12,\n(DATASOURCE_CREDENTIAL_MODE_STATIC_SECRET\x10\x04*\x97\x01\n\x16\x44\x61tasourceReadersModel\x12(\n$DATASOURCE_READERS_MODEL_UNSPECIFIED\x10\x00\x12*\n&DATASOURCE_READERS_MODEL_SOURCE_SCOPED\x10\x01\x12\'\n#DATASOURCE_READERS_MODEL_TRANSLATED\x10\x02*\xee\x01\n\x0fSourceSyncPhase\x12!\n\x1dSOURCE_SYNC_PHASE_UNSPECIFIED\x10\x00\x12\x1c\n\x18SOURCE_SYNC_PHASE_QUEUED\x10\x01\x12\x1e\n\x1aSOURCE_SYNC_PHASE_FETCHING\x10\x02\x12\x1e\n\x1aSOURCE_SYNC_PHASE_COMPILED\x10\x03\x12 \n\x1cSOURCE_SYNC_PHASE_HANDED_OFF\x10\x04\x12\x1a\n\x16SOURCE_SYNC_PHASE_DONE\x10\x05\x12\x1c\n\x18SOURCE_SYNC_PHASE_FAILED\x10\x06*\xa6\x03\n\x17SourceSyncFailureReason\x12*\n&SOURCE_SYNC_FAILURE_REASON_UNSPECIFIED\x10\x00\x12+\n\'SOURCE_SYNC_FAILURE_REASON_RATE_LIMITED\x10\x01\x12)\n%SOURCE_SYNC_FAILURE_REASON_CREDENTIAL\x10\x02\x12,\n(SOURCE_SYNC_FAILURE_REASON_ACCESS_DENIED\x10\x03\x12(\n$SOURCE_SYNC_FAILURE_REASON_NOT_FOUND\x10\x04\x12(\n$SOURCE_SYNC_FAILURE_REASON_TOO_LARGE\x10\x05\x12/\n+SOURCE_SYNC_FAILURE_REASON_HOST_UNAVAILABLE\x10\x06\x12$\n SOURCE_SYNC_FAILURE_REASON_OTHER\x10\x07\x12.\n*SOURCE_SYNC_FAILURE_REASON_DELIVERY_FAILED\x10\x08*\x9c\x01\n\x11SourceSyncTrigger\x12#\n\x1fSOURCE_SYNC_TRIGGER_UNSPECIFIED\x10\x00\x12\x1e\n\x1aSOURCE_SYNC_TRIGGER_MANUAL\x10\x01\x12!\n\x1dSOURCE_SYNC_TRIGGER_SCHEDULED\x10\x02\x12\x1f\n\x1bSOURCE_SYNC_TRIGGER_WEBHOOK\x10\x03*\x8f\x01\n\x16\x44\x61tasourceDomainStatus\x12(\n$DATASOURCE_DOMAIN_STATUS_UNSPECIFIED\x10\x00\x12$\n DATASOURCE_DOMAIN_STATUS_PENDING\x10\x01\x12%\n!DATASOURCE_DOMAIN_STATUS_VERIFIED\x10\x02\x32\xa2\x13\n\x11\x44\x61tasourceService\x12\x66\n\x0f\x41\x64\x64GitHubSource\x12(.saas.accounts.v1.AddGitHubSourceRequest\x1a).saas.accounts.v1.AddGitHubSourceResponse\x12T\n\tAddSource\x12\".saas.accounts.v1.AddSourceRequest\x1a#.saas.accounts.v1.AddSourceResponse\x12u\n\x14GetDatasourceCatalog\x12-.saas.accounts.v1.GetDatasourceCatalogRequest\x1a..saas.accounts.v1.GetDatasourceCatalogResponse\x12Z\n\x0bListSources\x12$.saas.accounts.v1.ListSourcesRequest\x1a%.saas.accounts.v1.ListSourcesResponse\x12T\n\tGetSource\x12\".saas.accounts.v1.GetSourceRequest\x1a#.saas.accounts.v1.GetSourceResponse\x12W\n\nSyncSource\x12#.saas.accounts.v1.SyncSourceRequest\x1a$.saas.accounts.v1.SyncSourceResponse\x12`\n\rGetSourceSync\x12&.saas.accounts.v1.GetSourceSyncRequest\x1a\'.saas.accounts.v1.GetSourceSyncResponse\x12]\n\x0c\x44\x65leteSource\x12%.saas.accounts.v1.DeleteSourceRequest\x1a&.saas.accounts.v1.DeleteSourceResponse\x12r\n\x13\x42\x65ginGitHubAppSetup\x12,.saas.accounts.v1.BeginGitHubAppSetupRequest\x1a-.saas.accounts.v1.BeginGitHubAppSetupResponse\x12{\n\x16\x43ompleteGitHubAppSetup\x12/.saas.accounts.v1.CompleteGitHubAppSetupRequest\x1a\x30.saas.accounts.v1.CompleteGitHubAppSetupResponse\x12\x81\x01\n\x18MigrateGitHubSourceToApp\x12\x31.saas.accounts.v1.MigrateGitHubSourceToAppRequest\x1a\x32.saas.accounts.v1.MigrateGitHubSourceToAppResponse\x12\x87\x01\n\x1a\x42\x65ginDatasourceAccountLink\x12\x33.saas.accounts.v1.BeginDatasourceAccountLinkRequest\x1a\x34.saas.accounts.v1.BeginDatasourceAccountLinkResponse\x12\x90\x01\n\x1d\x43ompleteDatasourceAccountLink\x12\x36.saas.accounts.v1.CompleteDatasourceAccountLinkRequest\x1a\x37.saas.accounts.v1.CompleteDatasourceAccountLinkResponse\x12\x8d\x01\n\x1cListMyDatasourceAccountLinks\x12\x35.saas.accounts.v1.ListMyDatasourceAccountLinksRequest\x1a\x36.saas.accounts.v1.ListMyDatasourceAccountLinksResponse\x12\x8a\x01\n\x1b\x44\x65leteDatasourceAccountLink\x12\x34.saas.accounts.v1.DeleteDatasourceAccountLinkRequest\x1a\x35.saas.accounts.v1.DeleteDatasourceAccountLinkResponse\x12{\n\x16GetDatasourceDirectory\x12/.saas.accounts.v1.GetDatasourceDirectoryRequest\x1a\x30.saas.accounts.v1.GetDatasourceDirectoryResponse\x12r\n\x13\x42indDatasourceGroup\x12,.saas.accounts.v1.BindDatasourceGroupRequest\x1a-.saas.accounts.v1.BindDatasourceGroupResponse\x12x\n\x15UnbindDatasourceGroup\x12..saas.accounts.v1.UnbindDatasourceGroupRequest\x1a/.saas.accounts.v1.UnbindDatasourceGroupResponse\x12x\n\x15\x43laimDatasourceDomain\x12..saas.accounts.v1.ClaimDatasourceDomainRequest\x1a/.saas.accounts.v1.ClaimDatasourceDomainResponse\x12{\n\x16VerifyDatasourceDomain\x12/.saas.accounts.v1.VerifyDatasourceDomainRequest\x1a\x30.saas.accounts.v1.VerifyDatasourceDomainResponse\x12{\n\x16\x44\x65leteDatasourceDomain\x12/.saas.accounts.v1.DeleteDatasourceDomainRequest\x1a\x30.saas.accounts.v1.DeleteDatasourceDomainResponseB\x89\x01\n\x14\x63om.saas.accounts.v1B\x0f\x44\x61tasourceProtoP\x01\xa2\x02\x03SAX\xaa\x02\x10Saas.Accounts.V1\xca\x02\x10Saas\\Accounts\\V1\xe2\x02\x1cSaas\\Accounts\\V1\\GPBMetadata\xea\x02\x12Saas::Accounts::V1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -33,34 +34,150 @@ if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\024com.saas.accounts.v1B\017DatasourceProtoP\001\242\002\003SAX\252\002\020Saas.Accounts.V1\312\002\020Saas\\Accounts\\V1\342\002\034Saas\\Accounts\\V1\\GPBMetadata\352\002\022Saas::Accounts::V1' - _globals['_DATASOURCEPROVIDER']._serialized_start=1491 - _globals['_DATASOURCEPROVIDER']._serialized_end=1580 - _globals['_DATASOURCESTATUS']._serialized_start=1582 - _globals['_DATASOURCESTATUS']._serialized_end=1695 - _globals['_GITHUBDATASOURCECONFIG']._serialized_start=88 - _globals['_GITHUBDATASOURCECONFIG']._serialized_end=178 - _globals['_DATASOURCE']._serialized_start=181 - _globals['_DATASOURCE']._serialized_end=700 - _globals['_ADDGITHUBSOURCEREQUEST']._serialized_start=703 - _globals['_ADDGITHUBSOURCEREQUEST']._serialized_end=935 - _globals['_ADDGITHUBSOURCERESPONSE']._serialized_start=937 - _globals['_ADDGITHUBSOURCERESPONSE']._serialized_end=1024 - _globals['_LISTSOURCESREQUEST']._serialized_start=1026 - _globals['_LISTSOURCESREQUEST']._serialized_end=1069 - _globals['_LISTSOURCESRESPONSE']._serialized_start=1071 - _globals['_LISTSOURCESRESPONSE']._serialized_end=1156 - _globals['_GETSOURCEREQUEST']._serialized_start=1158 - _globals['_GETSOURCEREQUEST']._serialized_end=1215 - _globals['_GETSOURCERESPONSE']._serialized_start=1217 - _globals['_GETSOURCERESPONSE']._serialized_end=1298 - _globals['_SYNCSOURCEREQUEST']._serialized_start=1300 - _globals['_SYNCSOURCEREQUEST']._serialized_end=1358 - _globals['_SYNCSOURCERESPONSE']._serialized_start=1360 - _globals['_SYNCSOURCERESPONSE']._serialized_end=1403 - _globals['_DELETESOURCEREQUEST']._serialized_start=1405 - _globals['_DELETESOURCEREQUEST']._serialized_end=1465 - _globals['_DELETESOURCERESPONSE']._serialized_start=1467 - _globals['_DELETESOURCERESPONSE']._serialized_end=1489 - _globals['_DATASOURCESERVICE']._serialized_start=1698 - _globals['_DATASOURCESERVICE']._serialized_end=2183 + _globals['_ADDGITHUBSOURCEREQUEST'].oneofs_by_name['boundary']._loaded_options = None + _globals['_ADDGITHUBSOURCEREQUEST'].oneofs_by_name['boundary']._serialized_options = b'\272H\002\010\001' + _globals['_ADDSOURCEREQUEST'].oneofs_by_name['boundary']._loaded_options = None + _globals['_ADDSOURCEREQUEST'].oneofs_by_name['boundary']._serialized_options = b'\272H\002\010\001' + _globals['_DATASOURCEPROVIDER']._serialized_start=10305 + _globals['_DATASOURCEPROVIDER']._serialized_end=10488 + _globals['_DATASOURCESTATUS']._serialized_start=10491 + _globals['_DATASOURCESTATUS']._serialized_end=10636 + _globals['_APICREDENTIALKIND']._serialized_start=10639 + _globals['_APICREDENTIALKIND']._serialized_end=10853 + _globals['_DATASOURCECONNECTORINTERFACE']._serialized_start=10856 + _globals['_DATASOURCECONNECTORINTERFACE']._serialized_end=11150 + _globals['_DATASOURCECREDENTIALMODE']._serialized_start=11153 + _globals['_DATASOURCECREDENTIALMODE']._serialized_end=11389 + _globals['_DATASOURCEREADERSMODEL']._serialized_start=11392 + _globals['_DATASOURCEREADERSMODEL']._serialized_end=11543 + _globals['_SOURCESYNCPHASE']._serialized_start=11546 + _globals['_SOURCESYNCPHASE']._serialized_end=11784 + _globals['_SOURCESYNCFAILUREREASON']._serialized_start=11787 + _globals['_SOURCESYNCFAILUREREASON']._serialized_end=12209 + _globals['_SOURCESYNCTRIGGER']._serialized_start=12212 + _globals['_SOURCESYNCTRIGGER']._serialized_end=12368 + _globals['_DATASOURCEDOMAINSTATUS']._serialized_start=12371 + _globals['_DATASOURCEDOMAINSTATUS']._serialized_end=12514 + _globals['_GITHUBDATASOURCECONFIG']._serialized_start=115 + _globals['_GITHUBDATASOURCECONFIG']._serialized_end=246 + _globals['_APIOAUTH2CONFIG']._serialized_start=248 + _globals['_APIOAUTH2CONFIG']._serialized_end=347 + _globals['_APIDATASOURCECONFIG']._serialized_start=350 + _globals['_APIDATASOURCECONFIG']._serialized_end=671 + _globals['_CRAWLERDATASOURCECONFIG']._serialized_start=673 + _globals['_CRAWLERDATASOURCECONFIG']._serialized_end=760 + _globals['_UPLOADDATASOURCECONFIG']._serialized_start=763 + _globals['_UPLOADDATASOURCECONFIG']._serialized_end=956 + _globals['_DATASOURCE']._serialized_start=959 + _globals['_DATASOURCE']._serialized_end=1961 + _globals['_ADDGITHUBSOURCEREQUEST']._serialized_start=1964 + _globals['_ADDGITHUBSOURCEREQUEST']._serialized_end=2325 + _globals['_ADDGITHUBSOURCERESPONSE']._serialized_start=2327 + _globals['_ADDGITHUBSOURCERESPONSE']._serialized_end=2414 + _globals['_ADDSOURCEREQUEST']._serialized_start=2417 + _globals['_ADDSOURCEREQUEST']._serialized_end=3054 + _globals['_ADDSOURCERESPONSE']._serialized_start=3056 + _globals['_ADDSOURCERESPONSE']._serialized_end=3137 + _globals['_DATASOURCECONFIGFIELD']._serialized_start=3139 + _globals['_DATASOURCECONFIGFIELD']._serialized_end=3263 + _globals['_DATASOURCECONNECTORBUDGET']._serialized_start=3266 + _globals['_DATASOURCECONNECTORBUDGET']._serialized_end=3570 + _globals['_DATASOURCEPROVIDERDESCRIPTOR']._serialized_start=3573 + _globals['_DATASOURCEPROVIDERDESCRIPTOR']._serialized_end=4422 + _globals['_GETDATASOURCECATALOGREQUEST']._serialized_start=4424 + _globals['_GETDATASOURCECATALOGREQUEST']._serialized_end=4453 + _globals['_GETDATASOURCECATALOGRESPONSE']._serialized_start=4455 + _globals['_GETDATASOURCECATALOGRESPONSE']._serialized_end=4563 + _globals['_LISTSOURCESREQUEST']._serialized_start=4565 + _globals['_LISTSOURCESREQUEST']._serialized_end=4608 + _globals['_LISTSOURCESRESPONSE']._serialized_start=4610 + _globals['_LISTSOURCESRESPONSE']._serialized_end=4695 + _globals['_GETSOURCEREQUEST']._serialized_start=4697 + _globals['_GETSOURCEREQUEST']._serialized_end=4754 + _globals['_GETSOURCERESPONSE']._serialized_start=4756 + _globals['_GETSOURCERESPONSE']._serialized_end=4837 + _globals['_SYNCSOURCEREQUEST']._serialized_start=4839 + _globals['_SYNCSOURCEREQUEST']._serialized_end=4932 + _globals['_SYNCSOURCERESPONSE']._serialized_start=4934 + _globals['_SYNCSOURCERESPONSE']._serialized_end=4977 + _globals['_GETSOURCESYNCREQUEST']._serialized_start=4979 + _globals['_GETSOURCESYNCREQUEST']._serialized_end=5076 + _globals['_SOURCESYNCDELIVERY']._serialized_start=5079 + _globals['_SOURCESYNCDELIVERY']._serialized_end=5235 + _globals['_SOURCESYNCCHANGES']._serialized_start=5238 + _globals['_SOURCESYNCCHANGES']._serialized_end=5440 + _globals['_SOURCESYNCFAILURE']._serialized_start=5443 + _globals['_SOURCESYNCFAILURE']._serialized_end=5658 + _globals['_SOURCESYNCPROGRESS']._serialized_start=5661 + _globals['_SOURCESYNCPROGRESS']._serialized_end=6292 + _globals['_GETSOURCESYNCRESPONSE']._serialized_start=6295 + _globals['_GETSOURCESYNCRESPONSE']._serialized_end=6523 + _globals['_DELETESOURCEREQUEST']._serialized_start=6525 + _globals['_DELETESOURCEREQUEST']._serialized_end=6585 + _globals['_DELETESOURCERESPONSE']._serialized_start=6587 + _globals['_DELETESOURCERESPONSE']._serialized_end=6609 + _globals['_GITHUBAPPREPOSITORY']._serialized_start=6611 + _globals['_GITHUBAPPREPOSITORY']._serialized_end=6736 + _globals['_BEGINGITHUBAPPSETUPREQUEST']._serialized_start=6738 + _globals['_BEGINGITHUBAPPSETUPREQUEST']._serialized_end=6789 + _globals['_BEGINGITHUBAPPSETUPRESPONSE']._serialized_start=6792 + _globals['_BEGINGITHUBAPPSETUPRESPONSE']._serialized_end=6935 + _globals['_COMPLETEGITHUBAPPSETUPREQUEST']._serialized_start=6938 + _globals['_COMPLETEGITHUBAPPSETUPREQUEST']._serialized_end=7075 + _globals['_COMPLETEGITHUBAPPSETUPRESPONSE']._serialized_start=7078 + _globals['_COMPLETEGITHUBAPPSETUPRESPONSE']._serialized_end=7226 + _globals['_MIGRATEGITHUBSOURCETOAPPREQUEST']._serialized_start=7228 + _globals['_MIGRATEGITHUBSOURCETOAPPREQUEST']._serialized_end=7300 + _globals['_MIGRATEGITHUBSOURCETOAPPRESPONSE']._serialized_start=7302 + _globals['_MIGRATEGITHUBSOURCETOAPPRESPONSE']._serialized_end=7398 + _globals['_DATASOURCEACCOUNTLINK']._serialized_start=7401 + _globals['_DATASOURCEACCOUNTLINK']._serialized_end=7679 + _globals['_DATASOURCEGROUPBINDING']._serialized_start=7682 + _globals['_DATASOURCEGROUPBINDING']._serialized_end=7934 + _globals['_DATASOURCEVERIFIEDDOMAIN']._serialized_start=7937 + _globals['_DATASOURCEVERIFIEDDOMAIN']._serialized_end=8294 + _globals['_DATASOURCEDIRECTORYTEAM']._serialized_start=8296 + _globals['_DATASOURCEDIRECTORYTEAM']._serialized_end=8357 + _globals['_BEGINDATASOURCEACCOUNTLINKREQUEST']._serialized_start=8359 + _globals['_BEGINDATASOURCEACCOUNTLINKREQUEST']._serialized_end=8482 + _globals['_BEGINDATASOURCEACCOUNTLINKRESPONSE']._serialized_start=8485 + _globals['_BEGINDATASOURCEACCOUNTLINKRESPONSE']._serialized_end=8639 + _globals['_COMPLETEDATASOURCEACCOUNTLINKREQUEST']._serialized_start=8641 + _globals['_COMPLETEDATASOURCEACCOUNTLINKREQUEST']._serialized_end=8744 + _globals['_COMPLETEDATASOURCEACCOUNTLINKRESPONSE']._serialized_start=8746 + _globals['_COMPLETEDATASOURCEACCOUNTLINKRESPONSE']._serialized_end=8846 + _globals['_LISTMYDATASOURCEACCOUNTLINKSREQUEST']._serialized_start=8848 + _globals['_LISTMYDATASOURCEACCOUNTLINKSREQUEST']._serialized_end=8908 + _globals['_LISTMYDATASOURCEACCOUNTLINKSRESPONSE']._serialized_start=8910 + _globals['_LISTMYDATASOURCEACCOUNTLINKSRESPONSE']._serialized_end=9011 + _globals['_DELETEDATASOURCEACCOUNTLINKREQUEST']._serialized_start=9013 + _globals['_DELETEDATASOURCEACCOUNTLINKREQUEST']._serialized_end=9088 + _globals['_DELETEDATASOURCEACCOUNTLINKRESPONSE']._serialized_start=9090 + _globals['_DELETEDATASOURCEACCOUNTLINKRESPONSE']._serialized_end=9127 + _globals['_GETDATASOURCEDIRECTORYREQUEST']._serialized_start=9129 + _globals['_GETDATASOURCEDIRECTORYREQUEST']._serialized_end=9183 + _globals['_GETDATASOURCEDIRECTORYRESPONSE']._serialized_start=9186 + _globals['_GETDATASOURCEDIRECTORYRESPONSE']._serialized_end=9486 + _globals['_BINDDATASOURCEGROUPREQUEST']._serialized_start=9489 + _globals['_BINDDATASOURCEGROUPREQUEST']._serialized_end=9639 + _globals['_BINDDATASOURCEGROUPRESPONSE']._serialized_start=9641 + _globals['_BINDDATASOURCEGROUPRESPONSE']._serialized_end=9738 + _globals['_UNBINDDATASOURCEGROUPREQUEST']._serialized_start=9740 + _globals['_UNBINDDATASOURCEGROUPREQUEST']._serialized_end=9809 + _globals['_UNBINDDATASOURCEGROUPRESPONSE']._serialized_start=9811 + _globals['_UNBINDDATASOURCEGROUPRESPONSE']._serialized_end=9842 + _globals['_CLAIMDATASOURCEDOMAINREQUEST']._serialized_start=9844 + _globals['_CLAIMDATASOURCEDOMAINREQUEST']._serialized_end=9921 + _globals['_CLAIMDATASOURCEDOMAINRESPONSE']._serialized_start=9923 + _globals['_CLAIMDATASOURCEDOMAINRESPONSE']._serialized_end=10022 + _globals['_VERIFYDATASOURCEDOMAINREQUEST']._serialized_start=10024 + _globals['_VERIFYDATASOURCEDOMAINREQUEST']._serialized_end=10094 + _globals['_VERIFYDATASOURCEDOMAINRESPONSE']._serialized_start=10096 + _globals['_VERIFYDATASOURCEDOMAINRESPONSE']._serialized_end=10196 + _globals['_DELETEDATASOURCEDOMAINREQUEST']._serialized_start=10198 + _globals['_DELETEDATASOURCEDOMAINREQUEST']._serialized_end=10268 + _globals['_DELETEDATASOURCEDOMAINRESPONSE']._serialized_start=10270 + _globals['_DELETEDATASOURCEDOMAINRESPONSE']._serialized_end=10302 + _globals['_DATASOURCESERVICE']._serialized_start=12517 + _globals['_DATASOURCESERVICE']._serialized_end=14983 # @@protoc_insertion_point(module_scope) diff --git a/src/saas_sdk/_gen/datasource_pb2.pyi b/src/saas_sdk/_gen/datasource_pb2.pyi index 187fc9d..1f1191c 100644 --- a/src/saas_sdk/_gen/datasource_pb2.pyi +++ b/src/saas_sdk/_gen/datasource_pb2.pyi @@ -1,4 +1,5 @@ from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from saas_sdk._gen import jobs_pb2 as _jobs_pb2 from google.protobuf.internal import containers as _containers from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper from google.protobuf import descriptor as _descriptor @@ -11,69 +12,261 @@ class DatasourceProvider(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = () DATASOURCE_PROVIDER_UNSPECIFIED: _ClassVar[DatasourceProvider] DATASOURCE_PROVIDER_GITHUB: _ClassVar[DatasourceProvider] + DATASOURCE_PROVIDER_API: _ClassVar[DatasourceProvider] + DATASOURCE_PROVIDER_CRAWLER: _ClassVar[DatasourceProvider] + DATASOURCE_PROVIDER_UPLOAD: _ClassVar[DatasourceProvider] class DatasourceStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = () DATASOURCE_STATUS_UNSPECIFIED: _ClassVar[DatasourceStatus] DATASOURCE_STATUS_ACTIVE: _ClassVar[DatasourceStatus] DATASOURCE_STATUS_PAUSED: _ClassVar[DatasourceStatus] + DATASOURCE_STATUS_DEGRADED: _ClassVar[DatasourceStatus] + +class ApiCredentialKind(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + API_CREDENTIAL_KIND_UNSPECIFIED: _ClassVar[ApiCredentialKind] + API_CREDENTIAL_KIND_BEARER: _ClassVar[ApiCredentialKind] + API_CREDENTIAL_KIND_BASIC: _ClassVar[ApiCredentialKind] + API_CREDENTIAL_KIND_HEADER: _ClassVar[ApiCredentialKind] + API_CREDENTIAL_KIND_QUERY: _ClassVar[ApiCredentialKind] + API_CREDENTIAL_KIND_OAUTH2: _ClassVar[ApiCredentialKind] + +class DatasourceConnectorInterface(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + DATASOURCE_CONNECTOR_INTERFACE_UNSPECIFIED: _ClassVar[DatasourceConnectorInterface] + DATASOURCE_CONNECTOR_INTERFACE_FILES: _ClassVar[DatasourceConnectorInterface] + DATASOURCE_CONNECTOR_INTERFACE_PAGES: _ClassVar[DatasourceConnectorInterface] + DATASOURCE_CONNECTOR_INTERFACE_RECORDS: _ClassVar[DatasourceConnectorInterface] + DATASOURCE_CONNECTOR_INTERFACE_MESSAGES: _ClassVar[DatasourceConnectorInterface] + DATASOURCE_CONNECTOR_INTERFACE_EVENTS: _ClassVar[DatasourceConnectorInterface] + +class DatasourceCredentialMode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + DATASOURCE_CREDENTIAL_MODE_UNSPECIFIED: _ClassVar[DatasourceCredentialMode] + DATASOURCE_CREDENTIAL_MODE_NONE: _ClassVar[DatasourceCredentialMode] + DATASOURCE_CREDENTIAL_MODE_ORG_APP: _ClassVar[DatasourceCredentialMode] + DATASOURCE_CREDENTIAL_MODE_USER_OAUTH: _ClassVar[DatasourceCredentialMode] + DATASOURCE_CREDENTIAL_MODE_STATIC_SECRET: _ClassVar[DatasourceCredentialMode] + +class DatasourceReadersModel(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + DATASOURCE_READERS_MODEL_UNSPECIFIED: _ClassVar[DatasourceReadersModel] + DATASOURCE_READERS_MODEL_SOURCE_SCOPED: _ClassVar[DatasourceReadersModel] + DATASOURCE_READERS_MODEL_TRANSLATED: _ClassVar[DatasourceReadersModel] + +class SourceSyncPhase(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + SOURCE_SYNC_PHASE_UNSPECIFIED: _ClassVar[SourceSyncPhase] + SOURCE_SYNC_PHASE_QUEUED: _ClassVar[SourceSyncPhase] + SOURCE_SYNC_PHASE_FETCHING: _ClassVar[SourceSyncPhase] + SOURCE_SYNC_PHASE_COMPILED: _ClassVar[SourceSyncPhase] + SOURCE_SYNC_PHASE_HANDED_OFF: _ClassVar[SourceSyncPhase] + SOURCE_SYNC_PHASE_DONE: _ClassVar[SourceSyncPhase] + SOURCE_SYNC_PHASE_FAILED: _ClassVar[SourceSyncPhase] + +class SourceSyncFailureReason(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + SOURCE_SYNC_FAILURE_REASON_UNSPECIFIED: _ClassVar[SourceSyncFailureReason] + SOURCE_SYNC_FAILURE_REASON_RATE_LIMITED: _ClassVar[SourceSyncFailureReason] + SOURCE_SYNC_FAILURE_REASON_CREDENTIAL: _ClassVar[SourceSyncFailureReason] + SOURCE_SYNC_FAILURE_REASON_ACCESS_DENIED: _ClassVar[SourceSyncFailureReason] + SOURCE_SYNC_FAILURE_REASON_NOT_FOUND: _ClassVar[SourceSyncFailureReason] + SOURCE_SYNC_FAILURE_REASON_TOO_LARGE: _ClassVar[SourceSyncFailureReason] + SOURCE_SYNC_FAILURE_REASON_HOST_UNAVAILABLE: _ClassVar[SourceSyncFailureReason] + SOURCE_SYNC_FAILURE_REASON_OTHER: _ClassVar[SourceSyncFailureReason] + SOURCE_SYNC_FAILURE_REASON_DELIVERY_FAILED: _ClassVar[SourceSyncFailureReason] + +class SourceSyncTrigger(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + SOURCE_SYNC_TRIGGER_UNSPECIFIED: _ClassVar[SourceSyncTrigger] + SOURCE_SYNC_TRIGGER_MANUAL: _ClassVar[SourceSyncTrigger] + SOURCE_SYNC_TRIGGER_SCHEDULED: _ClassVar[SourceSyncTrigger] + SOURCE_SYNC_TRIGGER_WEBHOOK: _ClassVar[SourceSyncTrigger] + +class DatasourceDomainStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + DATASOURCE_DOMAIN_STATUS_UNSPECIFIED: _ClassVar[DatasourceDomainStatus] + DATASOURCE_DOMAIN_STATUS_PENDING: _ClassVar[DatasourceDomainStatus] + DATASOURCE_DOMAIN_STATUS_VERIFIED: _ClassVar[DatasourceDomainStatus] DATASOURCE_PROVIDER_UNSPECIFIED: DatasourceProvider DATASOURCE_PROVIDER_GITHUB: DatasourceProvider +DATASOURCE_PROVIDER_API: DatasourceProvider +DATASOURCE_PROVIDER_CRAWLER: DatasourceProvider +DATASOURCE_PROVIDER_UPLOAD: DatasourceProvider DATASOURCE_STATUS_UNSPECIFIED: DatasourceStatus DATASOURCE_STATUS_ACTIVE: DatasourceStatus DATASOURCE_STATUS_PAUSED: DatasourceStatus +DATASOURCE_STATUS_DEGRADED: DatasourceStatus +API_CREDENTIAL_KIND_UNSPECIFIED: ApiCredentialKind +API_CREDENTIAL_KIND_BEARER: ApiCredentialKind +API_CREDENTIAL_KIND_BASIC: ApiCredentialKind +API_CREDENTIAL_KIND_HEADER: ApiCredentialKind +API_CREDENTIAL_KIND_QUERY: ApiCredentialKind +API_CREDENTIAL_KIND_OAUTH2: ApiCredentialKind +DATASOURCE_CONNECTOR_INTERFACE_UNSPECIFIED: DatasourceConnectorInterface +DATASOURCE_CONNECTOR_INTERFACE_FILES: DatasourceConnectorInterface +DATASOURCE_CONNECTOR_INTERFACE_PAGES: DatasourceConnectorInterface +DATASOURCE_CONNECTOR_INTERFACE_RECORDS: DatasourceConnectorInterface +DATASOURCE_CONNECTOR_INTERFACE_MESSAGES: DatasourceConnectorInterface +DATASOURCE_CONNECTOR_INTERFACE_EVENTS: DatasourceConnectorInterface +DATASOURCE_CREDENTIAL_MODE_UNSPECIFIED: DatasourceCredentialMode +DATASOURCE_CREDENTIAL_MODE_NONE: DatasourceCredentialMode +DATASOURCE_CREDENTIAL_MODE_ORG_APP: DatasourceCredentialMode +DATASOURCE_CREDENTIAL_MODE_USER_OAUTH: DatasourceCredentialMode +DATASOURCE_CREDENTIAL_MODE_STATIC_SECRET: DatasourceCredentialMode +DATASOURCE_READERS_MODEL_UNSPECIFIED: DatasourceReadersModel +DATASOURCE_READERS_MODEL_SOURCE_SCOPED: DatasourceReadersModel +DATASOURCE_READERS_MODEL_TRANSLATED: DatasourceReadersModel +SOURCE_SYNC_PHASE_UNSPECIFIED: SourceSyncPhase +SOURCE_SYNC_PHASE_QUEUED: SourceSyncPhase +SOURCE_SYNC_PHASE_FETCHING: SourceSyncPhase +SOURCE_SYNC_PHASE_COMPILED: SourceSyncPhase +SOURCE_SYNC_PHASE_HANDED_OFF: SourceSyncPhase +SOURCE_SYNC_PHASE_DONE: SourceSyncPhase +SOURCE_SYNC_PHASE_FAILED: SourceSyncPhase +SOURCE_SYNC_FAILURE_REASON_UNSPECIFIED: SourceSyncFailureReason +SOURCE_SYNC_FAILURE_REASON_RATE_LIMITED: SourceSyncFailureReason +SOURCE_SYNC_FAILURE_REASON_CREDENTIAL: SourceSyncFailureReason +SOURCE_SYNC_FAILURE_REASON_ACCESS_DENIED: SourceSyncFailureReason +SOURCE_SYNC_FAILURE_REASON_NOT_FOUND: SourceSyncFailureReason +SOURCE_SYNC_FAILURE_REASON_TOO_LARGE: SourceSyncFailureReason +SOURCE_SYNC_FAILURE_REASON_HOST_UNAVAILABLE: SourceSyncFailureReason +SOURCE_SYNC_FAILURE_REASON_OTHER: SourceSyncFailureReason +SOURCE_SYNC_FAILURE_REASON_DELIVERY_FAILED: SourceSyncFailureReason +SOURCE_SYNC_TRIGGER_UNSPECIFIED: SourceSyncTrigger +SOURCE_SYNC_TRIGGER_MANUAL: SourceSyncTrigger +SOURCE_SYNC_TRIGGER_SCHEDULED: SourceSyncTrigger +SOURCE_SYNC_TRIGGER_WEBHOOK: SourceSyncTrigger +DATASOURCE_DOMAIN_STATUS_UNSPECIFIED: DatasourceDomainStatus +DATASOURCE_DOMAIN_STATUS_PENDING: DatasourceDomainStatus +DATASOURCE_DOMAIN_STATUS_VERIFIED: DatasourceDomainStatus class GitHubDatasourceConfig(_message.Message): - __slots__ = ("repo", "paths", "branch") + __slots__ = ("repo", "paths", "branch", "file_extensions") REPO_FIELD_NUMBER: _ClassVar[int] PATHS_FIELD_NUMBER: _ClassVar[int] BRANCH_FIELD_NUMBER: _ClassVar[int] + FILE_EXTENSIONS_FIELD_NUMBER: _ClassVar[int] repo: str paths: _containers.RepeatedScalarFieldContainer[str] branch: str - def __init__(self, repo: _Optional[str] = ..., paths: _Optional[_Iterable[str]] = ..., branch: _Optional[str] = ...) -> None: ... + file_extensions: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, repo: _Optional[str] = ..., paths: _Optional[_Iterable[str]] = ..., branch: _Optional[str] = ..., file_extensions: _Optional[_Iterable[str]] = ...) -> None: ... + +class ApiOAuth2Config(_message.Message): + __slots__ = ("token_url", "client_id", "scopes") + TOKEN_URL_FIELD_NUMBER: _ClassVar[int] + CLIENT_ID_FIELD_NUMBER: _ClassVar[int] + SCOPES_FIELD_NUMBER: _ClassVar[int] + token_url: str + client_id: str + scopes: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, token_url: _Optional[str] = ..., client_id: _Optional[str] = ..., scopes: _Optional[_Iterable[str]] = ...) -> None: ... + +class ApiDatasourceConfig(_message.Message): + __slots__ = ("base_url", "resource_path", "credential_kind", "credential_header", "credential_query_param", "oauth2") + BASE_URL_FIELD_NUMBER: _ClassVar[int] + RESOURCE_PATH_FIELD_NUMBER: _ClassVar[int] + CREDENTIAL_KIND_FIELD_NUMBER: _ClassVar[int] + CREDENTIAL_HEADER_FIELD_NUMBER: _ClassVar[int] + CREDENTIAL_QUERY_PARAM_FIELD_NUMBER: _ClassVar[int] + OAUTH2_FIELD_NUMBER: _ClassVar[int] + base_url: str + resource_path: str + credential_kind: ApiCredentialKind + credential_header: str + credential_query_param: str + oauth2: ApiOAuth2Config + def __init__(self, base_url: _Optional[str] = ..., resource_path: _Optional[str] = ..., credential_kind: _Optional[_Union[ApiCredentialKind, str]] = ..., credential_header: _Optional[str] = ..., credential_query_param: _Optional[str] = ..., oauth2: _Optional[_Union[ApiOAuth2Config, _Mapping]] = ...) -> None: ... + +class CrawlerDatasourceConfig(_message.Message): + __slots__ = ("sitemap_url", "max_pages") + SITEMAP_URL_FIELD_NUMBER: _ClassVar[int] + MAX_PAGES_FIELD_NUMBER: _ClassVar[int] + sitemap_url: str + max_pages: int + def __init__(self, sitemap_url: _Optional[str] = ..., max_pages: _Optional[int] = ...) -> None: ... + +class UploadDatasourceConfig(_message.Message): + __slots__ = ("endpoint", "region", "bucket", "prefix", "access_key_id", "max_objects") + ENDPOINT_FIELD_NUMBER: _ClassVar[int] + REGION_FIELD_NUMBER: _ClassVar[int] + BUCKET_FIELD_NUMBER: _ClassVar[int] + PREFIX_FIELD_NUMBER: _ClassVar[int] + ACCESS_KEY_ID_FIELD_NUMBER: _ClassVar[int] + MAX_OBJECTS_FIELD_NUMBER: _ClassVar[int] + endpoint: str + region: str + bucket: str + prefix: str + access_key_id: str + max_objects: int + def __init__(self, endpoint: _Optional[str] = ..., region: _Optional[str] = ..., bucket: _Optional[str] = ..., prefix: _Optional[str] = ..., access_key_id: _Optional[str] = ..., max_objects: _Optional[int] = ...) -> None: ... class Datasource(_message.Message): - __slots__ = ("id", "org_id", "provider", "target_collection", "github", "status", "webhook_configured", "created_at", "updated_at", "last_synced_at") + __slots__ = ("id", "org_id", "provider", "github", "status", "webhook_configured", "created_at", "updated_at", "last_synced_at", "api", "crawler", "upload", "boundary_node_id", "last_ingested_at", "last_ingested_commit", "status_reason", "boundary_label", "conformant", "conformance_gap") ID_FIELD_NUMBER: _ClassVar[int] ORG_ID_FIELD_NUMBER: _ClassVar[int] PROVIDER_FIELD_NUMBER: _ClassVar[int] - TARGET_COLLECTION_FIELD_NUMBER: _ClassVar[int] GITHUB_FIELD_NUMBER: _ClassVar[int] STATUS_FIELD_NUMBER: _ClassVar[int] WEBHOOK_CONFIGURED_FIELD_NUMBER: _ClassVar[int] CREATED_AT_FIELD_NUMBER: _ClassVar[int] UPDATED_AT_FIELD_NUMBER: _ClassVar[int] LAST_SYNCED_AT_FIELD_NUMBER: _ClassVar[int] + API_FIELD_NUMBER: _ClassVar[int] + CRAWLER_FIELD_NUMBER: _ClassVar[int] + UPLOAD_FIELD_NUMBER: _ClassVar[int] + BOUNDARY_NODE_ID_FIELD_NUMBER: _ClassVar[int] + LAST_INGESTED_AT_FIELD_NUMBER: _ClassVar[int] + LAST_INGESTED_COMMIT_FIELD_NUMBER: _ClassVar[int] + STATUS_REASON_FIELD_NUMBER: _ClassVar[int] + BOUNDARY_LABEL_FIELD_NUMBER: _ClassVar[int] + CONFORMANT_FIELD_NUMBER: _ClassVar[int] + CONFORMANCE_GAP_FIELD_NUMBER: _ClassVar[int] id: str org_id: str provider: DatasourceProvider - target_collection: str github: GitHubDatasourceConfig status: DatasourceStatus webhook_configured: bool created_at: _timestamp_pb2.Timestamp updated_at: _timestamp_pb2.Timestamp last_synced_at: _timestamp_pb2.Timestamp - def __init__(self, id: _Optional[str] = ..., org_id: _Optional[str] = ..., provider: _Optional[_Union[DatasourceProvider, str]] = ..., target_collection: _Optional[str] = ..., github: _Optional[_Union[GitHubDatasourceConfig, _Mapping]] = ..., status: _Optional[_Union[DatasourceStatus, str]] = ..., webhook_configured: bool = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., last_synced_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + api: ApiDatasourceConfig + crawler: CrawlerDatasourceConfig + upload: UploadDatasourceConfig + boundary_node_id: str + last_ingested_at: _timestamp_pb2.Timestamp + last_ingested_commit: str + status_reason: str + boundary_label: str + conformant: bool + conformance_gap: str + def __init__(self, id: _Optional[str] = ..., org_id: _Optional[str] = ..., provider: _Optional[_Union[DatasourceProvider, str]] = ..., github: _Optional[_Union[GitHubDatasourceConfig, _Mapping]] = ..., status: _Optional[_Union[DatasourceStatus, str]] = ..., webhook_configured: bool = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., last_synced_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., api: _Optional[_Union[ApiDatasourceConfig, _Mapping]] = ..., crawler: _Optional[_Union[CrawlerDatasourceConfig, _Mapping]] = ..., upload: _Optional[_Union[UploadDatasourceConfig, _Mapping]] = ..., boundary_node_id: _Optional[str] = ..., last_ingested_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., last_ingested_commit: _Optional[str] = ..., status_reason: _Optional[str] = ..., boundary_label: _Optional[str] = ..., conformant: bool = ..., conformance_gap: _Optional[str] = ...) -> None: ... class AddGitHubSourceRequest(_message.Message): - __slots__ = ("org_id", "repo", "paths", "branch", "target_collection", "access_token", "webhook_secret") + __slots__ = ("org_id", "repo", "paths", "branch", "boundary_node_id", "collection_label", "access_token", "webhook_secret", "file_extensions") ORG_ID_FIELD_NUMBER: _ClassVar[int] REPO_FIELD_NUMBER: _ClassVar[int] PATHS_FIELD_NUMBER: _ClassVar[int] BRANCH_FIELD_NUMBER: _ClassVar[int] - TARGET_COLLECTION_FIELD_NUMBER: _ClassVar[int] + BOUNDARY_NODE_ID_FIELD_NUMBER: _ClassVar[int] + COLLECTION_LABEL_FIELD_NUMBER: _ClassVar[int] ACCESS_TOKEN_FIELD_NUMBER: _ClassVar[int] WEBHOOK_SECRET_FIELD_NUMBER: _ClassVar[int] + FILE_EXTENSIONS_FIELD_NUMBER: _ClassVar[int] org_id: str repo: str paths: _containers.RepeatedScalarFieldContainer[str] branch: str - target_collection: str + boundary_node_id: str + collection_label: str access_token: str webhook_secret: str - def __init__(self, org_id: _Optional[str] = ..., repo: _Optional[str] = ..., paths: _Optional[_Iterable[str]] = ..., branch: _Optional[str] = ..., target_collection: _Optional[str] = ..., access_token: _Optional[str] = ..., webhook_secret: _Optional[str] = ...) -> None: ... + file_extensions: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, org_id: _Optional[str] = ..., repo: _Optional[str] = ..., paths: _Optional[_Iterable[str]] = ..., branch: _Optional[str] = ..., boundary_node_id: _Optional[str] = ..., collection_label: _Optional[str] = ..., access_token: _Optional[str] = ..., webhook_secret: _Optional[str] = ..., file_extensions: _Optional[_Iterable[str]] = ...) -> None: ... class AddGitHubSourceResponse(_message.Message): __slots__ = ("datasource",) @@ -81,6 +274,108 @@ class AddGitHubSourceResponse(_message.Message): datasource: Datasource def __init__(self, datasource: _Optional[_Union[Datasource, _Mapping]] = ...) -> None: ... +class AddSourceRequest(_message.Message): + __slots__ = ("org_id", "provider", "github", "api", "crawler", "upload", "boundary_node_id", "collection_label", "credential", "webhook_secret", "oauth2_client_secret") + ORG_ID_FIELD_NUMBER: _ClassVar[int] + PROVIDER_FIELD_NUMBER: _ClassVar[int] + GITHUB_FIELD_NUMBER: _ClassVar[int] + API_FIELD_NUMBER: _ClassVar[int] + CRAWLER_FIELD_NUMBER: _ClassVar[int] + UPLOAD_FIELD_NUMBER: _ClassVar[int] + BOUNDARY_NODE_ID_FIELD_NUMBER: _ClassVar[int] + COLLECTION_LABEL_FIELD_NUMBER: _ClassVar[int] + CREDENTIAL_FIELD_NUMBER: _ClassVar[int] + WEBHOOK_SECRET_FIELD_NUMBER: _ClassVar[int] + OAUTH2_CLIENT_SECRET_FIELD_NUMBER: _ClassVar[int] + org_id: str + provider: DatasourceProvider + github: GitHubDatasourceConfig + api: ApiDatasourceConfig + crawler: CrawlerDatasourceConfig + upload: UploadDatasourceConfig + boundary_node_id: str + collection_label: str + credential: str + webhook_secret: str + oauth2_client_secret: str + def __init__(self, org_id: _Optional[str] = ..., provider: _Optional[_Union[DatasourceProvider, str]] = ..., github: _Optional[_Union[GitHubDatasourceConfig, _Mapping]] = ..., api: _Optional[_Union[ApiDatasourceConfig, _Mapping]] = ..., crawler: _Optional[_Union[CrawlerDatasourceConfig, _Mapping]] = ..., upload: _Optional[_Union[UploadDatasourceConfig, _Mapping]] = ..., boundary_node_id: _Optional[str] = ..., collection_label: _Optional[str] = ..., credential: _Optional[str] = ..., webhook_secret: _Optional[str] = ..., oauth2_client_secret: _Optional[str] = ...) -> None: ... + +class AddSourceResponse(_message.Message): + __slots__ = ("datasource",) + DATASOURCE_FIELD_NUMBER: _ClassVar[int] + datasource: Datasource + def __init__(self, datasource: _Optional[_Union[Datasource, _Mapping]] = ...) -> None: ... + +class DatasourceConfigField(_message.Message): + __slots__ = ("key", "display_name", "help", "required") + KEY_FIELD_NUMBER: _ClassVar[int] + DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int] + HELP_FIELD_NUMBER: _ClassVar[int] + REQUIRED_FIELD_NUMBER: _ClassVar[int] + key: str + display_name: str + help: str + required: bool + def __init__(self, key: _Optional[str] = ..., display_name: _Optional[str] = ..., help: _Optional[str] = ..., required: bool = ...) -> None: ... + +class DatasourceConnectorBudget(_message.Message): + __slots__ = ("max_items_per_call", "max_bytes_per_call", "max_item_bytes", "operations_per_window", "window_seconds", "background_share_percent") + MAX_ITEMS_PER_CALL_FIELD_NUMBER: _ClassVar[int] + MAX_BYTES_PER_CALL_FIELD_NUMBER: _ClassVar[int] + MAX_ITEM_BYTES_FIELD_NUMBER: _ClassVar[int] + OPERATIONS_PER_WINDOW_FIELD_NUMBER: _ClassVar[int] + WINDOW_SECONDS_FIELD_NUMBER: _ClassVar[int] + BACKGROUND_SHARE_PERCENT_FIELD_NUMBER: _ClassVar[int] + max_items_per_call: int + max_bytes_per_call: int + max_item_bytes: int + operations_per_window: int + window_seconds: int + background_share_percent: int + def __init__(self, max_items_per_call: _Optional[int] = ..., max_bytes_per_call: _Optional[int] = ..., max_item_bytes: _Optional[int] = ..., operations_per_window: _Optional[int] = ..., window_seconds: _Optional[int] = ..., background_share_percent: _Optional[int] = ...) -> None: ... + +class DatasourceProviderDescriptor(_message.Message): + __slots__ = ("provider", "display_name", "description", "config_fields", "supports_webhook", "supported_credential_kinds", "connector", "interface", "credential_modes", "readers_model", "budget", "conformant", "conformance_gap", "accepts_new_sources") + PROVIDER_FIELD_NUMBER: _ClassVar[int] + DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + CONFIG_FIELDS_FIELD_NUMBER: _ClassVar[int] + SUPPORTS_WEBHOOK_FIELD_NUMBER: _ClassVar[int] + SUPPORTED_CREDENTIAL_KINDS_FIELD_NUMBER: _ClassVar[int] + CONNECTOR_FIELD_NUMBER: _ClassVar[int] + INTERFACE_FIELD_NUMBER: _ClassVar[int] + CREDENTIAL_MODES_FIELD_NUMBER: _ClassVar[int] + READERS_MODEL_FIELD_NUMBER: _ClassVar[int] + BUDGET_FIELD_NUMBER: _ClassVar[int] + CONFORMANT_FIELD_NUMBER: _ClassVar[int] + CONFORMANCE_GAP_FIELD_NUMBER: _ClassVar[int] + ACCEPTS_NEW_SOURCES_FIELD_NUMBER: _ClassVar[int] + provider: DatasourceProvider + display_name: str + description: str + config_fields: _containers.RepeatedCompositeFieldContainer[DatasourceConfigField] + supports_webhook: bool + supported_credential_kinds: _containers.RepeatedScalarFieldContainer[ApiCredentialKind] + connector: str + interface: DatasourceConnectorInterface + credential_modes: _containers.RepeatedScalarFieldContainer[DatasourceCredentialMode] + readers_model: DatasourceReadersModel + budget: DatasourceConnectorBudget + conformant: bool + conformance_gap: str + accepts_new_sources: bool + def __init__(self, provider: _Optional[_Union[DatasourceProvider, str]] = ..., display_name: _Optional[str] = ..., description: _Optional[str] = ..., config_fields: _Optional[_Iterable[_Union[DatasourceConfigField, _Mapping]]] = ..., supports_webhook: bool = ..., supported_credential_kinds: _Optional[_Iterable[_Union[ApiCredentialKind, str]]] = ..., connector: _Optional[str] = ..., interface: _Optional[_Union[DatasourceConnectorInterface, str]] = ..., credential_modes: _Optional[_Iterable[_Union[DatasourceCredentialMode, str]]] = ..., readers_model: _Optional[_Union[DatasourceReadersModel, str]] = ..., budget: _Optional[_Union[DatasourceConnectorBudget, _Mapping]] = ..., conformant: bool = ..., conformance_gap: _Optional[str] = ..., accepts_new_sources: bool = ...) -> None: ... + +class GetDatasourceCatalogRequest(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class GetDatasourceCatalogResponse(_message.Message): + __slots__ = ("providers",) + PROVIDERS_FIELD_NUMBER: _ClassVar[int] + providers: _containers.RepeatedCompositeFieldContainer[DatasourceProviderDescriptor] + def __init__(self, providers: _Optional[_Iterable[_Union[DatasourceProviderDescriptor, _Mapping]]] = ...) -> None: ... + class ListSourcesRequest(_message.Message): __slots__ = ("org_id",) ORG_ID_FIELD_NUMBER: _ClassVar[int] @@ -108,12 +403,14 @@ class GetSourceResponse(_message.Message): def __init__(self, datasource: _Optional[_Union[Datasource, _Mapping]] = ...) -> None: ... class SyncSourceRequest(_message.Message): - __slots__ = ("org_id", "id") + __slots__ = ("org_id", "id", "access_token") ORG_ID_FIELD_NUMBER: _ClassVar[int] ID_FIELD_NUMBER: _ClassVar[int] + ACCESS_TOKEN_FIELD_NUMBER: _ClassVar[int] org_id: str id: str - def __init__(self, org_id: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ... + access_token: str + def __init__(self, org_id: _Optional[str] = ..., id: _Optional[str] = ..., access_token: _Optional[str] = ...) -> None: ... class SyncSourceResponse(_message.Message): __slots__ = ("job_id",) @@ -121,6 +418,96 @@ class SyncSourceResponse(_message.Message): job_id: str def __init__(self, job_id: _Optional[str] = ...) -> None: ... +class GetSourceSyncRequest(_message.Message): + __slots__ = ("org_id", "source_id", "job_id") + ORG_ID_FIELD_NUMBER: _ClassVar[int] + SOURCE_ID_FIELD_NUMBER: _ClassVar[int] + JOB_ID_FIELD_NUMBER: _ClassVar[int] + org_id: str + source_id: str + job_id: str + def __init__(self, org_id: _Optional[str] = ..., source_id: _Optional[str] = ..., job_id: _Optional[str] = ...) -> None: ... + +class SourceSyncDelivery(_message.Message): + __slots__ = ("job_id", "state", "execution") + JOB_ID_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] + EXECUTION_FIELD_NUMBER: _ClassVar[int] + job_id: str + state: _jobs_pb2.JobState + execution: _jobs_pb2.JobExecutionReference + def __init__(self, job_id: _Optional[str] = ..., state: _Optional[_Union[_jobs_pb2.JobState, str]] = ..., execution: _Optional[_Union[_jobs_pb2.JobExecutionReference, _Mapping]] = ...) -> None: ... + +class SourceSyncChanges(_message.Message): + __slots__ = ("files", "added", "modified", "deleted", "split_known", "snapshot", "commit") + FILES_FIELD_NUMBER: _ClassVar[int] + ADDED_FIELD_NUMBER: _ClassVar[int] + MODIFIED_FIELD_NUMBER: _ClassVar[int] + DELETED_FIELD_NUMBER: _ClassVar[int] + SPLIT_KNOWN_FIELD_NUMBER: _ClassVar[int] + SNAPSHOT_FIELD_NUMBER: _ClassVar[int] + COMMIT_FIELD_NUMBER: _ClassVar[int] + files: int + added: int + modified: int + deleted: int + split_known: bool + snapshot: bool + commit: str + def __init__(self, files: _Optional[int] = ..., added: _Optional[int] = ..., modified: _Optional[int] = ..., deleted: _Optional[int] = ..., split_known: bool = ..., snapshot: bool = ..., commit: _Optional[str] = ...) -> None: ... + +class SourceSyncFailure(_message.Message): + __slots__ = ("reason", "code", "message", "retrying", "retry_at") + REASON_FIELD_NUMBER: _ClassVar[int] + CODE_FIELD_NUMBER: _ClassVar[int] + MESSAGE_FIELD_NUMBER: _ClassVar[int] + RETRYING_FIELD_NUMBER: _ClassVar[int] + RETRY_AT_FIELD_NUMBER: _ClassVar[int] + reason: SourceSyncFailureReason + code: str + message: str + retrying: bool + retry_at: _timestamp_pb2.Timestamp + def __init__(self, reason: _Optional[_Union[SourceSyncFailureReason, str]] = ..., code: _Optional[str] = ..., message: _Optional[str] = ..., retrying: bool = ..., retry_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class SourceSyncProgress(_message.Message): + __slots__ = ("phase", "trigger", "queued_at", "fetching_at", "compiled_at", "handed_off_at", "finished_at", "changes", "failure", "attempt", "max_attempts") + PHASE_FIELD_NUMBER: _ClassVar[int] + TRIGGER_FIELD_NUMBER: _ClassVar[int] + QUEUED_AT_FIELD_NUMBER: _ClassVar[int] + FETCHING_AT_FIELD_NUMBER: _ClassVar[int] + COMPILED_AT_FIELD_NUMBER: _ClassVar[int] + HANDED_OFF_AT_FIELD_NUMBER: _ClassVar[int] + FINISHED_AT_FIELD_NUMBER: _ClassVar[int] + CHANGES_FIELD_NUMBER: _ClassVar[int] + FAILURE_FIELD_NUMBER: _ClassVar[int] + ATTEMPT_FIELD_NUMBER: _ClassVar[int] + MAX_ATTEMPTS_FIELD_NUMBER: _ClassVar[int] + phase: SourceSyncPhase + trigger: SourceSyncTrigger + queued_at: _timestamp_pb2.Timestamp + fetching_at: _timestamp_pb2.Timestamp + compiled_at: _timestamp_pb2.Timestamp + handed_off_at: _timestamp_pb2.Timestamp + finished_at: _timestamp_pb2.Timestamp + changes: SourceSyncChanges + failure: SourceSyncFailure + attempt: int + max_attempts: int + def __init__(self, phase: _Optional[_Union[SourceSyncPhase, str]] = ..., trigger: _Optional[_Union[SourceSyncTrigger, str]] = ..., queued_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., fetching_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., compiled_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., handed_off_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., finished_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., changes: _Optional[_Union[SourceSyncChanges, _Mapping]] = ..., failure: _Optional[_Union[SourceSyncFailure, _Mapping]] = ..., attempt: _Optional[int] = ..., max_attempts: _Optional[int] = ...) -> None: ... + +class GetSourceSyncResponse(_message.Message): + __slots__ = ("job_id", "state", "deliveries", "progress") + JOB_ID_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] + DELIVERIES_FIELD_NUMBER: _ClassVar[int] + PROGRESS_FIELD_NUMBER: _ClassVar[int] + job_id: str + state: _jobs_pb2.JobState + deliveries: _containers.RepeatedCompositeFieldContainer[SourceSyncDelivery] + progress: SourceSyncProgress + def __init__(self, job_id: _Optional[str] = ..., state: _Optional[_Union[_jobs_pb2.JobState, str]] = ..., deliveries: _Optional[_Iterable[_Union[SourceSyncDelivery, _Mapping]]] = ..., progress: _Optional[_Union[SourceSyncProgress, _Mapping]] = ...) -> None: ... + class DeleteSourceRequest(_message.Message): __slots__ = ("org_id", "id") ORG_ID_FIELD_NUMBER: _ClassVar[int] @@ -132,3 +519,275 @@ class DeleteSourceRequest(_message.Message): class DeleteSourceResponse(_message.Message): __slots__ = () def __init__(self) -> None: ... + +class GitHubAppRepository(_message.Message): + __slots__ = ("repo", "default_branch", "already_connected") + REPO_FIELD_NUMBER: _ClassVar[int] + DEFAULT_BRANCH_FIELD_NUMBER: _ClassVar[int] + ALREADY_CONNECTED_FIELD_NUMBER: _ClassVar[int] + repo: str + default_branch: str + already_connected: bool + def __init__(self, repo: _Optional[str] = ..., default_branch: _Optional[str] = ..., already_connected: bool = ...) -> None: ... + +class BeginGitHubAppSetupRequest(_message.Message): + __slots__ = ("org_id",) + ORG_ID_FIELD_NUMBER: _ClassVar[int] + org_id: str + def __init__(self, org_id: _Optional[str] = ...) -> None: ... + +class BeginGitHubAppSetupResponse(_message.Message): + __slots__ = ("install_url", "state", "expires_at") + INSTALL_URL_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] + EXPIRES_AT_FIELD_NUMBER: _ClassVar[int] + install_url: str + state: str + expires_at: _timestamp_pb2.Timestamp + def __init__(self, install_url: _Optional[str] = ..., state: _Optional[str] = ..., expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class CompleteGitHubAppSetupRequest(_message.Message): + __slots__ = ("org_id", "state", "installation_id", "code") + ORG_ID_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] + INSTALLATION_ID_FIELD_NUMBER: _ClassVar[int] + CODE_FIELD_NUMBER: _ClassVar[int] + org_id: str + state: str + installation_id: str + code: str + def __init__(self, org_id: _Optional[str] = ..., state: _Optional[str] = ..., installation_id: _Optional[str] = ..., code: _Optional[str] = ...) -> None: ... + +class CompleteGitHubAppSetupResponse(_message.Message): + __slots__ = ("installation_id", "repositories") + INSTALLATION_ID_FIELD_NUMBER: _ClassVar[int] + REPOSITORIES_FIELD_NUMBER: _ClassVar[int] + installation_id: str + repositories: _containers.RepeatedCompositeFieldContainer[GitHubAppRepository] + def __init__(self, installation_id: _Optional[str] = ..., repositories: _Optional[_Iterable[_Union[GitHubAppRepository, _Mapping]]] = ...) -> None: ... + +class MigrateGitHubSourceToAppRequest(_message.Message): + __slots__ = ("org_id", "id") + ORG_ID_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + org_id: str + id: str + def __init__(self, org_id: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ... + +class MigrateGitHubSourceToAppResponse(_message.Message): + __slots__ = ("datasource",) + DATASOURCE_FIELD_NUMBER: _ClassVar[int] + datasource: Datasource + def __init__(self, datasource: _Optional[_Union[Datasource, _Mapping]] = ...) -> None: ... + +class DatasourceAccountLink(_message.Message): + __slots__ = ("id", "org_id", "user_id", "connector", "provider_account_id", "provider_account_login", "created_at") + ID_FIELD_NUMBER: _ClassVar[int] + ORG_ID_FIELD_NUMBER: _ClassVar[int] + USER_ID_FIELD_NUMBER: _ClassVar[int] + CONNECTOR_FIELD_NUMBER: _ClassVar[int] + PROVIDER_ACCOUNT_ID_FIELD_NUMBER: _ClassVar[int] + PROVIDER_ACCOUNT_LOGIN_FIELD_NUMBER: _ClassVar[int] + CREATED_AT_FIELD_NUMBER: _ClassVar[int] + id: str + org_id: str + user_id: str + connector: str + provider_account_id: str + provider_account_login: str + created_at: _timestamp_pb2.Timestamp + def __init__(self, id: _Optional[str] = ..., org_id: _Optional[str] = ..., user_id: _Optional[str] = ..., connector: _Optional[str] = ..., provider_account_id: _Optional[str] = ..., provider_account_login: _Optional[str] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class DatasourceGroupBinding(_message.Message): + __slots__ = ("id", "org_id", "connector", "provider_group_id", "team_id", "created_by", "created_at") + ID_FIELD_NUMBER: _ClassVar[int] + ORG_ID_FIELD_NUMBER: _ClassVar[int] + CONNECTOR_FIELD_NUMBER: _ClassVar[int] + PROVIDER_GROUP_ID_FIELD_NUMBER: _ClassVar[int] + TEAM_ID_FIELD_NUMBER: _ClassVar[int] + CREATED_BY_FIELD_NUMBER: _ClassVar[int] + CREATED_AT_FIELD_NUMBER: _ClassVar[int] + id: str + org_id: str + connector: str + provider_group_id: str + team_id: str + created_by: str + created_at: _timestamp_pb2.Timestamp + def __init__(self, id: _Optional[str] = ..., org_id: _Optional[str] = ..., connector: _Optional[str] = ..., provider_group_id: _Optional[str] = ..., team_id: _Optional[str] = ..., created_by: _Optional[str] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class DatasourceVerifiedDomain(_message.Message): + __slots__ = ("id", "org_id", "domain", "status", "txt_record_name", "txt_record_value", "verified_at", "created_at") + ID_FIELD_NUMBER: _ClassVar[int] + ORG_ID_FIELD_NUMBER: _ClassVar[int] + DOMAIN_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + TXT_RECORD_NAME_FIELD_NUMBER: _ClassVar[int] + TXT_RECORD_VALUE_FIELD_NUMBER: _ClassVar[int] + VERIFIED_AT_FIELD_NUMBER: _ClassVar[int] + CREATED_AT_FIELD_NUMBER: _ClassVar[int] + id: str + org_id: str + domain: str + status: DatasourceDomainStatus + txt_record_name: str + txt_record_value: str + verified_at: _timestamp_pb2.Timestamp + created_at: _timestamp_pb2.Timestamp + def __init__(self, id: _Optional[str] = ..., org_id: _Optional[str] = ..., domain: _Optional[str] = ..., status: _Optional[_Union[DatasourceDomainStatus, str]] = ..., txt_record_name: _Optional[str] = ..., txt_record_value: _Optional[str] = ..., verified_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class DatasourceDirectoryTeam(_message.Message): + __slots__ = ("id", "name") + ID_FIELD_NUMBER: _ClassVar[int] + NAME_FIELD_NUMBER: _ClassVar[int] + id: str + name: str + def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ...) -> None: ... + +class BeginDatasourceAccountLinkRequest(_message.Message): + __slots__ = ("org_id", "connector", "redirect_uri") + ORG_ID_FIELD_NUMBER: _ClassVar[int] + CONNECTOR_FIELD_NUMBER: _ClassVar[int] + REDIRECT_URI_FIELD_NUMBER: _ClassVar[int] + org_id: str + connector: str + redirect_uri: str + def __init__(self, org_id: _Optional[str] = ..., connector: _Optional[str] = ..., redirect_uri: _Optional[str] = ...) -> None: ... + +class BeginDatasourceAccountLinkResponse(_message.Message): + __slots__ = ("authorize_url", "state", "expires_at") + AUTHORIZE_URL_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] + EXPIRES_AT_FIELD_NUMBER: _ClassVar[int] + authorize_url: str + state: str + expires_at: _timestamp_pb2.Timestamp + def __init__(self, authorize_url: _Optional[str] = ..., state: _Optional[str] = ..., expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class CompleteDatasourceAccountLinkRequest(_message.Message): + __slots__ = ("org_id", "state", "code") + ORG_ID_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] + CODE_FIELD_NUMBER: _ClassVar[int] + org_id: str + state: str + code: str + def __init__(self, org_id: _Optional[str] = ..., state: _Optional[str] = ..., code: _Optional[str] = ...) -> None: ... + +class CompleteDatasourceAccountLinkResponse(_message.Message): + __slots__ = ("link",) + LINK_FIELD_NUMBER: _ClassVar[int] + link: DatasourceAccountLink + def __init__(self, link: _Optional[_Union[DatasourceAccountLink, _Mapping]] = ...) -> None: ... + +class ListMyDatasourceAccountLinksRequest(_message.Message): + __slots__ = ("org_id",) + ORG_ID_FIELD_NUMBER: _ClassVar[int] + org_id: str + def __init__(self, org_id: _Optional[str] = ...) -> None: ... + +class ListMyDatasourceAccountLinksResponse(_message.Message): + __slots__ = ("links",) + LINKS_FIELD_NUMBER: _ClassVar[int] + links: _containers.RepeatedCompositeFieldContainer[DatasourceAccountLink] + def __init__(self, links: _Optional[_Iterable[_Union[DatasourceAccountLink, _Mapping]]] = ...) -> None: ... + +class DeleteDatasourceAccountLinkRequest(_message.Message): + __slots__ = ("org_id", "id") + ORG_ID_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + org_id: str + id: str + def __init__(self, org_id: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ... + +class DeleteDatasourceAccountLinkResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class GetDatasourceDirectoryRequest(_message.Message): + __slots__ = ("org_id",) + ORG_ID_FIELD_NUMBER: _ClassVar[int] + org_id: str + def __init__(self, org_id: _Optional[str] = ...) -> None: ... + +class GetDatasourceDirectoryResponse(_message.Message): + __slots__ = ("links", "bindings", "domains", "teams") + LINKS_FIELD_NUMBER: _ClassVar[int] + BINDINGS_FIELD_NUMBER: _ClassVar[int] + DOMAINS_FIELD_NUMBER: _ClassVar[int] + TEAMS_FIELD_NUMBER: _ClassVar[int] + links: _containers.RepeatedCompositeFieldContainer[DatasourceAccountLink] + bindings: _containers.RepeatedCompositeFieldContainer[DatasourceGroupBinding] + domains: _containers.RepeatedCompositeFieldContainer[DatasourceVerifiedDomain] + teams: _containers.RepeatedCompositeFieldContainer[DatasourceDirectoryTeam] + def __init__(self, links: _Optional[_Iterable[_Union[DatasourceAccountLink, _Mapping]]] = ..., bindings: _Optional[_Iterable[_Union[DatasourceGroupBinding, _Mapping]]] = ..., domains: _Optional[_Iterable[_Union[DatasourceVerifiedDomain, _Mapping]]] = ..., teams: _Optional[_Iterable[_Union[DatasourceDirectoryTeam, _Mapping]]] = ...) -> None: ... + +class BindDatasourceGroupRequest(_message.Message): + __slots__ = ("org_id", "connector", "provider_group_id", "team_id") + ORG_ID_FIELD_NUMBER: _ClassVar[int] + CONNECTOR_FIELD_NUMBER: _ClassVar[int] + PROVIDER_GROUP_ID_FIELD_NUMBER: _ClassVar[int] + TEAM_ID_FIELD_NUMBER: _ClassVar[int] + org_id: str + connector: str + provider_group_id: str + team_id: str + def __init__(self, org_id: _Optional[str] = ..., connector: _Optional[str] = ..., provider_group_id: _Optional[str] = ..., team_id: _Optional[str] = ...) -> None: ... + +class BindDatasourceGroupResponse(_message.Message): + __slots__ = ("binding",) + BINDING_FIELD_NUMBER: _ClassVar[int] + binding: DatasourceGroupBinding + def __init__(self, binding: _Optional[_Union[DatasourceGroupBinding, _Mapping]] = ...) -> None: ... + +class UnbindDatasourceGroupRequest(_message.Message): + __slots__ = ("org_id", "id") + ORG_ID_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + org_id: str + id: str + def __init__(self, org_id: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ... + +class UnbindDatasourceGroupResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + +class ClaimDatasourceDomainRequest(_message.Message): + __slots__ = ("org_id", "domain") + ORG_ID_FIELD_NUMBER: _ClassVar[int] + DOMAIN_FIELD_NUMBER: _ClassVar[int] + org_id: str + domain: str + def __init__(self, org_id: _Optional[str] = ..., domain: _Optional[str] = ...) -> None: ... + +class ClaimDatasourceDomainResponse(_message.Message): + __slots__ = ("domain",) + DOMAIN_FIELD_NUMBER: _ClassVar[int] + domain: DatasourceVerifiedDomain + def __init__(self, domain: _Optional[_Union[DatasourceVerifiedDomain, _Mapping]] = ...) -> None: ... + +class VerifyDatasourceDomainRequest(_message.Message): + __slots__ = ("org_id", "id") + ORG_ID_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + org_id: str + id: str + def __init__(self, org_id: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ... + +class VerifyDatasourceDomainResponse(_message.Message): + __slots__ = ("domain",) + DOMAIN_FIELD_NUMBER: _ClassVar[int] + domain: DatasourceVerifiedDomain + def __init__(self, domain: _Optional[_Union[DatasourceVerifiedDomain, _Mapping]] = ...) -> None: ... + +class DeleteDatasourceDomainRequest(_message.Message): + __slots__ = ("org_id", "id") + ORG_ID_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + org_id: str + id: str + def __init__(self, org_id: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ... + +class DeleteDatasourceDomainResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... diff --git a/src/saas_sdk/_gen/jobs_pb2.py b/src/saas_sdk/_gen/jobs_pb2.py new file mode 100644 index 0000000..d524538 --- /dev/null +++ b/src/saas_sdk/_gen/jobs_pb2.py @@ -0,0 +1,113 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: saas_sdk/_gen/jobs.proto +# Protobuf Python Version: 5.29.3 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 29, + 3, + '', + 'saas_sdk/_gen/jobs.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18saas_sdk/_gen/jobs.proto\x12\x0csaas.jobs.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x80\x01\n\x08JobScope\x12)\n\x0forganization_id\x18\x01 \x01(\tH\x00R\x0eorganizationId\x12\x1f\n\nsubject_id\x18\x02 \x01(\tH\x00R\tsubjectId\x12\x18\n\x06global\x18\x03 \x01(\x08H\x00R\x06globalB\x0e\n\x05value\x12\x05\xbaH\x02\x08\x01\"\xb0\x01\n\x08JobLease\x12\x14\n\x05owner\x18\x01 \x01(\tR\x05owner\x12\x14\n\x05token\x18\x02 \x01(\tR\x05token\x12\x39\n\nexpires_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12=\n\x0cheartbeat_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bheartbeatAt\":\n\nJobFailure\x12\x12\n\x04\x63ode\x18\x01 \x01(\tR\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\"Q\n\x15JobExecutionReference\x12\x14\n\x05owner\x18\x01 \x01(\tR\x05owner\x12\x12\n\x04kind\x18\x02 \x01(\tR\x04kind\x12\x0e\n\x02id\x18\x03 \x01(\tR\x02id\"\xbc\t\n\x0bJobEnvelope\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x38\n\tdirection\x18\x02 \x01(\x0e\x32\x1a.saas.jobs.v1.JobDirectionR\tdirection\x12,\n\x05scope\x18\x03 \x01(\x0b\x32\x16.saas.jobs.v1.JobScopeR\x05scope\x12\x14\n\x05queue\x18\x04 \x01(\tR\x05queue\x12\x14\n\x05topic\x18\x05 \x01(\tR\x05topic\x12\x16\n\x06source\x18\x06 \x01(\tR\x06source\x12\'\n\x0fidempotency_key\x18\x07 \x01(\tR\x0eidempotencyKey\x12!\n\x0cordering_key\x18\x08 \x01(\tR\x0borderingKey\x12%\n\x0eschema_version\x18\t \x01(\rR\rschemaVersion\x12\x18\n\x07payload\x18\n \x01(\x0cR\x07payload\x12!\n\x0c\x63ontent_type\x18\x0b \x01(\tR\x0b\x63ontentType\x12I\n\nattributes\x18\x0c \x03(\x0b\x32).saas.jobs.v1.JobEnvelope.AttributesEntryR\nattributes\x12,\n\x05state\x18\r \x01(\x0e\x32\x16.saas.jobs.v1.JobStateR\x05state\x12\x1a\n\x08priority\x18\x0e \x01(\x05R\x08priority\x12#\n\rattempt_count\x18\x0f \x01(\rR\x0c\x61ttemptCount\x12!\n\x0cmax_attempts\x18\x10 \x01(\rR\x0bmaxAttempts\x12,\n\x05lease\x18\x11 \x01(\x0b\x32\x16.saas.jobs.v1.JobLeaseR\x05lease\x12;\n\x0clast_failure\x18\x12 \x01(\x0b\x32\x18.saas.jobs.v1.JobFailureR\x0blastFailure\x12=\n\x0c\x61vailable_at\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0b\x61vailableAt\x12\x42\n\x0flast_attempt_at\x18\x14 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\rlastAttemptAt\x12=\n\x0c\x63ompleted_at\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0b\x63ompletedAt\x12\x44\n\x10\x64\x65\x61\x64_lettered_at\x18\x16 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0e\x64\x65\x61\x64LetteredAt\x12\x39\n\ncreated_at\x18\x17 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x18 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12#\n\rstate_version\x18\x19 \x01(\x04R\x0cstateVersion\x12\x1b\n\treplay_of\x18\x1a \x01(\tR\x08replayOf\x1a\x39\n\x0f\x41ttributesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\"N\n\x0eJobOrderingKey\x12\x1c\n\tnamespace\x18\x01 \x01(\tR\tnamespace\x12\x1e\n\ncomponents\x18\x02 \x03(\tR\ncomponents\"\xfa\x04\n\x06NewJob\x12\x38\n\tdirection\x18\x01 \x01(\x0e\x32\x1a.saas.jobs.v1.JobDirectionR\tdirection\x12,\n\x05scope\x18\x02 \x01(\x0b\x32\x16.saas.jobs.v1.JobScopeR\x05scope\x12\x14\n\x05queue\x18\x03 \x01(\tR\x05queue\x12\x14\n\x05topic\x18\x04 \x01(\tR\x05topic\x12\x16\n\x06source\x18\x05 \x01(\tR\x06source\x12\'\n\x0fidempotency_key\x18\x06 \x01(\tR\x0eidempotencyKey\x12\x38\n\x08ordering\x18\x07 \x01(\x0b\x32\x1c.saas.jobs.v1.JobOrderingKeyR\x08ordering\x12%\n\x0eschema_version\x18\x08 \x01(\rR\rschemaVersion\x12\x18\n\x07payload\x18\t \x01(\x0cR\x07payload\x12!\n\x0c\x63ontent_type\x18\n \x01(\tR\x0b\x63ontentType\x12\x44\n\nattributes\x18\x0b \x03(\x0b\x32$.saas.jobs.v1.NewJob.AttributesEntryR\nattributes\x12\x1a\n\x08priority\x18\x0c \x01(\x05R\x08priority\x12!\n\x0cmax_attempts\x18\r \x01(\rR\x0bmaxAttempts\x12=\n\x0c\x61vailable_at\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0b\x61vailableAt\x1a\x39\n\x0f\x41ttributesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\";\n\x11\x45nqueueJobRequest\x12&\n\x03job\x18\x01 \x01(\x0b\x32\x14.saas.jobs.v1.NewJobR\x03job\"r\n\x12\x45nqueueJobResponse\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\x12\x45\n\x0b\x64isposition\x18\x02 \x01(\x0e\x32#.saas.jobs.v1.JobEnqueueDispositionR\x0b\x64isposition\"\xde\x08\n\nJobSummary\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x38\n\tdirection\x18\x02 \x01(\x0e\x32\x1a.saas.jobs.v1.JobDirectionR\tdirection\x12,\n\x05scope\x18\x03 \x01(\x0b\x32\x16.saas.jobs.v1.JobScopeR\x05scope\x12\x14\n\x05queue\x18\x04 \x01(\tR\x05queue\x12\x14\n\x05topic\x18\x05 \x01(\tR\x05topic\x12\x16\n\x06source\x18\x06 \x01(\tR\x06source\x12\'\n\x0fidempotency_key\x18\x07 \x01(\tR\x0eidempotencyKey\x12!\n\x0cordering_key\x18\x08 \x01(\tR\x0borderingKey\x12%\n\x0eschema_version\x18\t \x01(\rR\rschemaVersion\x12!\n\x0c\x63ontent_type\x18\n \x01(\tR\x0b\x63ontentType\x12,\n\x05state\x18\x0b \x01(\x0e\x32\x16.saas.jobs.v1.JobStateR\x05state\x12\x1a\n\x08priority\x18\x0c \x01(\x05R\x08priority\x12#\n\rattempt_count\x18\r \x01(\rR\x0c\x61ttemptCount\x12!\n\x0cmax_attempts\x18\x0e \x01(\rR\x0bmaxAttempts\x12,\n\x05lease\x18\x0f \x01(\x0b\x32\x16.saas.jobs.v1.JobLeaseR\x05lease\x12;\n\x0clast_failure\x18\x10 \x01(\x0b\x32\x18.saas.jobs.v1.JobFailureR\x0blastFailure\x12=\n\x0c\x61vailable_at\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0b\x61vailableAt\x12\x42\n\x0flast_attempt_at\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\rlastAttemptAt\x12=\n\x0c\x63ompleted_at\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0b\x63ompletedAt\x12\x44\n\x10\x64\x65\x61\x64_lettered_at\x18\x14 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0e\x64\x65\x61\x64LetteredAt\x12\x39\n\ncreated_at\x18\x15 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x16 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12#\n\rstate_version\x18\x17 \x01(\x04R\x0cstateVersion\x12\x1b\n\treplay_of\x18\x18 \x01(\tR\x08replayOf\x12\x41\n\texecution\x18\x19 \x01(\x0b\x32#.saas.jobs.v1.JobExecutionReferenceR\texecution\"\xf8\x02\n\x10JobQueueSnapshot\x12\x14\n\x05queue\x18\x01 \x01(\tR\x05queue\x12\x18\n\x07pending\x18\x02 \x01(\x04R\x07pending\x12\x1e\n\nprocessing\x18\x03 \x01(\x04R\nprocessing\x12\x1a\n\x08retrying\x18\x04 \x01(\x04R\x08retrying\x12\x1c\n\tsucceeded\x18\x05 \x01(\x04R\tsucceeded\x12\x1f\n\x0b\x64\x65\x61\x64_letter\x18\x06 \x01(\x04R\ndeadLetter\x12\x1a\n\x08\x63\x61nceled\x18\x07 \x01(\x04R\x08\x63\x61nceled\x12\x14\n\x05ready\x18\x08 \x01(\x04R\x05ready\x12\x1c\n\tscheduled\x18\t \x01(\x04R\tscheduled\x12%\n\x0e\x65xpired_leases\x18\n \x01(\x04R\rexpiredLeases\x12\x42\n\x0foldest_ready_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampR\roldestReadyAt\"/\n\x17GetJobOperationsRequest\x12\x14\n\x05queue\x18\x01 \x01(\tR\x05queue\"\x8f\x01\n\x18GetJobOperationsResponse\x12\x36\n\x06queues\x18\x01 \x03(\x0b\x32\x1e.saas.jobs.v1.JobQueueSnapshotR\x06queues\x12;\n\x0bobserved_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nobservedAt\"\xe8\x01\n\x0fListJobsRequest\x12\x14\n\x05queue\x18\x01 \x01(\tR\x05queue\x12.\n\x06states\x18\x02 \x03(\x0e\x32\x16.saas.jobs.v1.JobStateR\x06states\x12)\n\x0forganization_id\x18\x03 \x01(\tH\x00R\x0eorganizationId\x12\x1f\n\nsubject_id\x18\x04 \x01(\tH\x00R\tsubjectId\x12\x1b\n\tpage_size\x18\x05 \x01(\rR\x08pageSize\x12\x1d\n\npage_token\x18\x06 \x01(\tR\tpageTokenB\x07\n\x05scope\"h\n\x10ListJobsResponse\x12,\n\x04jobs\x18\x01 \x03(\x0b\x32\x18.saas.jobs.v1.JobSummaryR\x04jobs\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"&\n\rGetJobRequest\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\"\xb6\x01\n\x0eGetJobResponse\x12*\n\x03job\x18\x01 \x01(\x0b\x32\x18.saas.jobs.v1.JobSummaryR\x03job\x12\x34\n\x08\x61ttempts\x18\x02 \x03(\x0b\x32\x18.saas.jobs.v1.JobAttemptR\x08\x61ttempts\x12\x42\n\x0btransitions\x18\x03 \x03(\x0b\x32 .saas.jobs.v1.JobStateTransitionR\x0btransitions\"\x9e\x01\n\x10ReplayJobRequest\x12\"\n\rsource_job_id\x18\x01 \x01(\tR\x0bsourceJobId\x12\'\n\x0fidempotency_key\x18\x02 \x01(\tR\x0eidempotencyKey\x12=\n\x0c\x61vailable_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0b\x61vailableAt\"q\n\x11ReplayJobResponse\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\x12\x45\n\x0b\x64isposition\x18\x02 \x01(\x0e\x32#.saas.jobs.v1.JobEnqueueDispositionR\x0b\x64isposition\"\xc0\x02\n\x10JobWorkerMetrics\x12\x14\n\x05queue\x18\x01 \x01(\tR\x05queue\x12\x1e\n\niterations\x18\x02 \x01(\x04R\niterations\x12!\n\x0c\x63laim_errors\x18\x03 \x01(\x04R\x0b\x63laimErrors\x12\x18\n\x07\x63laimed\x18\x04 \x01(\x04R\x07\x63laimed\x12\x1c\n\tsucceeded\x18\x05 \x01(\x04R\tsucceeded\x12\x18\n\x07retried\x18\x06 \x01(\x04R\x07retried\x12#\n\rdead_lettered\x18\x07 \x01(\x04R\x0c\x64\x65\x61\x64Lettered\x12%\n\x0ehandler_panics\x18\x08 \x01(\x04R\rhandlerPanics\x12\x1d\n\nlease_lost\x18\t \x01(\x04R\tleaseLost\x12\x16\n\x06\x61\x63tive\x18\n \x01(\x03R\x06\x61\x63tive\"\xaf\x03\n\nJobAttempt\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06job_id\x18\x02 \x01(\tR\x05jobId\x12\x16\n\x06number\x18\x03 \x01(\rR\x06number\x12\x1b\n\tworker_id\x18\x04 \x01(\tR\x08workerId\x12\x1f\n\x0blease_token\x18\x05 \x01(\tR\nleaseToken\x12\x39\n\x07outcome\x18\x06 \x01(\x0e\x32\x1f.saas.jobs.v1.JobAttemptOutcomeR\x07outcome\x12\x32\n\x07\x66\x61ilure\x18\x07 \x01(\x0b\x32\x18.saas.jobs.v1.JobFailureR\x07\x66\x61ilure\x12\x39\n\nstarted_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12=\n\x0cheartbeat_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bheartbeatAt\x12;\n\x0b\x66inished_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nfinishedAt\"\x82\x03\n\x12JobStateTransition\x12\x1a\n\x08sequence\x18\x01 \x01(\x03R\x08sequence\x12\x15\n\x06job_id\x18\x02 \x01(\tR\x05jobId\x12\x35\n\nfrom_state\x18\x03 \x01(\x0e\x32\x16.saas.jobs.v1.JobStateR\tfromState\x12\x31\n\x08to_state\x18\x04 \x01(\x0e\x32\x16.saas.jobs.v1.JobStateR\x07toState\x12#\n\rstate_version\x18\x05 \x01(\x04R\x0cstateVersion\x12#\n\rattempt_count\x18\x06 \x01(\rR\x0c\x61ttemptCount\x12\x14\n\x05\x61\x63tor\x18\x07 \x01(\tR\x05\x61\x63tor\x12\x32\n\x07\x66\x61ilure\x18\x08 \x01(\x0b\x32\x18.saas.jobs.v1.JobFailureR\x07\x66\x61ilure\x12;\n\x0boccurred_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\noccurredAt\"\x9d\x01\n\x10\x43laimJobsRequest\x12\x14\n\x05queue\x18\x01 \x01(\tR\x05queue\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\x12\x14\n\x05limit\x18\x03 \x01(\rR\x05limit\x12@\n\x0elease_duration\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\rleaseDuration\"B\n\x11\x43laimJobsResponse\x12-\n\x04jobs\x18\x01 \x03(\x0b\x32\x19.saas.jobs.v1.JobEnvelopeR\x04jobs\"h\n\x11JobLeaseReference\x12\x15\n\x06job_id\x18\x01 \x01(\tR\x05jobId\x12\x1b\n\tworker_id\x18\x02 \x01(\tR\x08workerId\x12\x1f\n\x0blease_token\x18\x03 \x01(\tR\nleaseToken\"\x85\x01\n\x13HeartbeatJobRequest\x12\x35\n\x05lease\x18\x01 \x01(\x0b\x32\x1f.saas.jobs.v1.JobLeaseReferenceR\x05lease\x12\x37\n\textension\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationR\textension\"D\n\x14HeartbeatJobResponse\x12,\n\x05lease\x18\x01 \x01(\x0b\x32\x16.saas.jobs.v1.JobLeaseR\x05lease\"\x8e\x01\n\x12\x43ompleteJobRequest\x12\x35\n\x05lease\x18\x01 \x01(\x0b\x32\x1f.saas.jobs.v1.JobLeaseReferenceR\x05lease\x12\x41\n\texecution\x18\x02 \x01(\x0b\x32#.saas.jobs.v1.JobExecutionReferenceR\texecution\"\xb3\x01\n\x0fRetryJobRequest\x12\x35\n\x05lease\x18\x01 \x01(\x0b\x32\x1f.saas.jobs.v1.JobLeaseReferenceR\x05lease\x12\x32\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32\x18.saas.jobs.v1.JobFailureR\x07\x66\x61ilure\x12\x35\n\x08retry_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07retryAt\"@\n\x10RetryJobResponse\x12,\n\x05state\x18\x01 \x01(\x0e\x32\x16.saas.jobs.v1.JobStateR\x05state\"\x81\x01\n\x14\x44\x65\x61\x64LetterJobRequest\x12\x35\n\x05lease\x18\x01 \x01(\x0b\x32\x1f.saas.jobs.v1.JobLeaseReferenceR\x05lease\x12\x32\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32\x18.saas.jobs.v1.JobFailureR\x07\x66\x61ilure*`\n\x0cJobDirection\x12\x1d\n\x19JOB_DIRECTION_UNSPECIFIED\x10\x00\x12\x17\n\x13JOB_DIRECTION_INBOX\x10\x01\x12\x18\n\x14JOB_DIRECTION_OUTBOX\x10\x02*\xba\x01\n\x08JobState\x12\x19\n\x15JOB_STATE_UNSPECIFIED\x10\x00\x12\x15\n\x11JOB_STATE_PENDING\x10\x01\x12\x18\n\x14JOB_STATE_PROCESSING\x10\x02\x12\x16\n\x12JOB_STATE_RETRYING\x10\x03\x12\x17\n\x13JOB_STATE_SUCCEEDED\x10\x04\x12\x19\n\x15JOB_STATE_DEAD_LETTER\x10\x05\x12\x16\n\x12JOB_STATE_CANCELED\x10\x06*\xfa\x01\n\x11JobAttemptOutcome\x12#\n\x1fJOB_ATTEMPT_OUTCOME_UNSPECIFIED\x10\x00\x12!\n\x1dJOB_ATTEMPT_OUTCOME_SUCCEEDED\x10\x01\x12)\n%JOB_ATTEMPT_OUTCOME_RETRYABLE_FAILURE\x10\x02\x12)\n%JOB_ATTEMPT_OUTCOME_PERMANENT_FAILURE\x10\x03\x12%\n!JOB_ATTEMPT_OUTCOME_LEASE_EXPIRED\x10\x04\x12 \n\x1cJOB_ATTEMPT_OUTCOME_CANCELED\x10\x05*\x8d\x01\n\x15JobEnqueueDisposition\x12\'\n#JOB_ENQUEUE_DISPOSITION_UNSPECIFIED\x10\x00\x12$\n JOB_ENQUEUE_DISPOSITION_INSERTED\x10\x01\x12%\n!JOB_ENQUEUE_DISPOSITION_DUPLICATE\x10\x02\x42o\n\x10\x63om.saas.jobs.v1B\tJobsProtoP\x01\xa2\x02\x03SJX\xaa\x02\x0cSaas.Jobs.V1\xca\x02\x0cSaas\\Jobs\\V1\xe2\x02\x18Saas\\Jobs\\V1\\GPBMetadata\xea\x02\x0eSaas::Jobs::V1b\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'saas_sdk._gen.jobs_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\020com.saas.jobs.v1B\tJobsProtoP\001\242\002\003SJX\252\002\014Saas.Jobs.V1\312\002\014Saas\\Jobs\\V1\342\002\030Saas\\Jobs\\V1\\GPBMetadata\352\002\016Saas::Jobs::V1' + _globals['_JOBSCOPE'].oneofs_by_name['value']._loaded_options = None + _globals['_JOBSCOPE'].oneofs_by_name['value']._serialized_options = b'\272H\002\010\001' + _globals['_JOBDIRECTION']._serialized_start=7417 + _globals['_JOBDIRECTION']._serialized_end=7513 + _globals['_JOBSTATE']._serialized_start=7516 + _globals['_JOBSTATE']._serialized_end=7702 + _globals['_JOBATTEMPTOUTCOME']._serialized_start=7705 + _globals['_JOBATTEMPTOUTCOME']._serialized_end=7955 + _globals['_JOBENQUEUEDISPOSITION']._serialized_start=7958 + _globals['_JOBENQUEUEDISPOSITION']._serialized_end=8099 + _globals['_JOBSCOPE']._serialized_start=108 + _globals['_JOBSCOPE']._serialized_end=236 + _globals['_JOBLEASE']._serialized_start=239 + _globals['_JOBLEASE']._serialized_end=415 + _globals['_JOBFAILURE']._serialized_start=417 + _globals['_JOBFAILURE']._serialized_end=475 + _globals['_JOBEXECUTIONREFERENCE']._serialized_start=477 + _globals['_JOBEXECUTIONREFERENCE']._serialized_end=558 + _globals['_JOBENVELOPE']._serialized_start=561 + _globals['_JOBENVELOPE']._serialized_end=1773 + _globals['_JOBENVELOPE_ATTRIBUTESENTRY']._serialized_start=1716 + _globals['_JOBENVELOPE_ATTRIBUTESENTRY']._serialized_end=1773 + _globals['_JOBORDERINGKEY']._serialized_start=1775 + _globals['_JOBORDERINGKEY']._serialized_end=1853 + _globals['_NEWJOB']._serialized_start=1856 + _globals['_NEWJOB']._serialized_end=2490 + _globals['_NEWJOB_ATTRIBUTESENTRY']._serialized_start=1716 + _globals['_NEWJOB_ATTRIBUTESENTRY']._serialized_end=1773 + _globals['_ENQUEUEJOBREQUEST']._serialized_start=2492 + _globals['_ENQUEUEJOBREQUEST']._serialized_end=2551 + _globals['_ENQUEUEJOBRESPONSE']._serialized_start=2553 + _globals['_ENQUEUEJOBRESPONSE']._serialized_end=2667 + _globals['_JOBSUMMARY']._serialized_start=2670 + _globals['_JOBSUMMARY']._serialized_end=3788 + _globals['_JOBQUEUESNAPSHOT']._serialized_start=3791 + _globals['_JOBQUEUESNAPSHOT']._serialized_end=4167 + _globals['_GETJOBOPERATIONSREQUEST']._serialized_start=4169 + _globals['_GETJOBOPERATIONSREQUEST']._serialized_end=4216 + _globals['_GETJOBOPERATIONSRESPONSE']._serialized_start=4219 + _globals['_GETJOBOPERATIONSRESPONSE']._serialized_end=4362 + _globals['_LISTJOBSREQUEST']._serialized_start=4365 + _globals['_LISTJOBSREQUEST']._serialized_end=4597 + _globals['_LISTJOBSRESPONSE']._serialized_start=4599 + _globals['_LISTJOBSRESPONSE']._serialized_end=4703 + _globals['_GETJOBREQUEST']._serialized_start=4705 + _globals['_GETJOBREQUEST']._serialized_end=4743 + _globals['_GETJOBRESPONSE']._serialized_start=4746 + _globals['_GETJOBRESPONSE']._serialized_end=4928 + _globals['_REPLAYJOBREQUEST']._serialized_start=4931 + _globals['_REPLAYJOBREQUEST']._serialized_end=5089 + _globals['_REPLAYJOBRESPONSE']._serialized_start=5091 + _globals['_REPLAYJOBRESPONSE']._serialized_end=5204 + _globals['_JOBWORKERMETRICS']._serialized_start=5207 + _globals['_JOBWORKERMETRICS']._serialized_end=5527 + _globals['_JOBATTEMPT']._serialized_start=5530 + _globals['_JOBATTEMPT']._serialized_end=5961 + _globals['_JOBSTATETRANSITION']._serialized_start=5964 + _globals['_JOBSTATETRANSITION']._serialized_end=6350 + _globals['_CLAIMJOBSREQUEST']._serialized_start=6353 + _globals['_CLAIMJOBSREQUEST']._serialized_end=6510 + _globals['_CLAIMJOBSRESPONSE']._serialized_start=6512 + _globals['_CLAIMJOBSRESPONSE']._serialized_end=6578 + _globals['_JOBLEASEREFERENCE']._serialized_start=6580 + _globals['_JOBLEASEREFERENCE']._serialized_end=6684 + _globals['_HEARTBEATJOBREQUEST']._serialized_start=6687 + _globals['_HEARTBEATJOBREQUEST']._serialized_end=6820 + _globals['_HEARTBEATJOBRESPONSE']._serialized_start=6822 + _globals['_HEARTBEATJOBRESPONSE']._serialized_end=6890 + _globals['_COMPLETEJOBREQUEST']._serialized_start=6893 + _globals['_COMPLETEJOBREQUEST']._serialized_end=7035 + _globals['_RETRYJOBREQUEST']._serialized_start=7038 + _globals['_RETRYJOBREQUEST']._serialized_end=7217 + _globals['_RETRYJOBRESPONSE']._serialized_start=7219 + _globals['_RETRYJOBRESPONSE']._serialized_end=7283 + _globals['_DEADLETTERJOBREQUEST']._serialized_start=7286 + _globals['_DEADLETTERJOBREQUEST']._serialized_end=7415 +# @@protoc_insertion_point(module_scope) diff --git a/src/saas_sdk/_gen/jobs_pb2.pyi b/src/saas_sdk/_gen/jobs_pb2.pyi new file mode 100644 index 0000000..ae4b915 --- /dev/null +++ b/src/saas_sdk/_gen/jobs_pb2.pyi @@ -0,0 +1,518 @@ +from google.protobuf import duration_pb2 as _duration_pb2 +from google.protobuf import timestamp_pb2 as _timestamp_pb2 +from google.protobuf.internal import containers as _containers +from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union + +DESCRIPTOR: _descriptor.FileDescriptor + +class JobDirection(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + JOB_DIRECTION_UNSPECIFIED: _ClassVar[JobDirection] + JOB_DIRECTION_INBOX: _ClassVar[JobDirection] + JOB_DIRECTION_OUTBOX: _ClassVar[JobDirection] + +class JobState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + JOB_STATE_UNSPECIFIED: _ClassVar[JobState] + JOB_STATE_PENDING: _ClassVar[JobState] + JOB_STATE_PROCESSING: _ClassVar[JobState] + JOB_STATE_RETRYING: _ClassVar[JobState] + JOB_STATE_SUCCEEDED: _ClassVar[JobState] + JOB_STATE_DEAD_LETTER: _ClassVar[JobState] + JOB_STATE_CANCELED: _ClassVar[JobState] + +class JobAttemptOutcome(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + JOB_ATTEMPT_OUTCOME_UNSPECIFIED: _ClassVar[JobAttemptOutcome] + JOB_ATTEMPT_OUTCOME_SUCCEEDED: _ClassVar[JobAttemptOutcome] + JOB_ATTEMPT_OUTCOME_RETRYABLE_FAILURE: _ClassVar[JobAttemptOutcome] + JOB_ATTEMPT_OUTCOME_PERMANENT_FAILURE: _ClassVar[JobAttemptOutcome] + JOB_ATTEMPT_OUTCOME_LEASE_EXPIRED: _ClassVar[JobAttemptOutcome] + JOB_ATTEMPT_OUTCOME_CANCELED: _ClassVar[JobAttemptOutcome] + +class JobEnqueueDisposition(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + JOB_ENQUEUE_DISPOSITION_UNSPECIFIED: _ClassVar[JobEnqueueDisposition] + JOB_ENQUEUE_DISPOSITION_INSERTED: _ClassVar[JobEnqueueDisposition] + JOB_ENQUEUE_DISPOSITION_DUPLICATE: _ClassVar[JobEnqueueDisposition] +JOB_DIRECTION_UNSPECIFIED: JobDirection +JOB_DIRECTION_INBOX: JobDirection +JOB_DIRECTION_OUTBOX: JobDirection +JOB_STATE_UNSPECIFIED: JobState +JOB_STATE_PENDING: JobState +JOB_STATE_PROCESSING: JobState +JOB_STATE_RETRYING: JobState +JOB_STATE_SUCCEEDED: JobState +JOB_STATE_DEAD_LETTER: JobState +JOB_STATE_CANCELED: JobState +JOB_ATTEMPT_OUTCOME_UNSPECIFIED: JobAttemptOutcome +JOB_ATTEMPT_OUTCOME_SUCCEEDED: JobAttemptOutcome +JOB_ATTEMPT_OUTCOME_RETRYABLE_FAILURE: JobAttemptOutcome +JOB_ATTEMPT_OUTCOME_PERMANENT_FAILURE: JobAttemptOutcome +JOB_ATTEMPT_OUTCOME_LEASE_EXPIRED: JobAttemptOutcome +JOB_ATTEMPT_OUTCOME_CANCELED: JobAttemptOutcome +JOB_ENQUEUE_DISPOSITION_UNSPECIFIED: JobEnqueueDisposition +JOB_ENQUEUE_DISPOSITION_INSERTED: JobEnqueueDisposition +JOB_ENQUEUE_DISPOSITION_DUPLICATE: JobEnqueueDisposition + +class JobScope(_message.Message): + __slots__ = ("organization_id", "subject_id") + ORGANIZATION_ID_FIELD_NUMBER: _ClassVar[int] + SUBJECT_ID_FIELD_NUMBER: _ClassVar[int] + GLOBAL_FIELD_NUMBER: _ClassVar[int] + organization_id: str + subject_id: str + def __init__(self, organization_id: _Optional[str] = ..., subject_id: _Optional[str] = ..., **kwargs) -> None: ... + +class JobLease(_message.Message): + __slots__ = ("owner", "token", "expires_at", "heartbeat_at") + OWNER_FIELD_NUMBER: _ClassVar[int] + TOKEN_FIELD_NUMBER: _ClassVar[int] + EXPIRES_AT_FIELD_NUMBER: _ClassVar[int] + HEARTBEAT_AT_FIELD_NUMBER: _ClassVar[int] + owner: str + token: str + expires_at: _timestamp_pb2.Timestamp + heartbeat_at: _timestamp_pb2.Timestamp + def __init__(self, owner: _Optional[str] = ..., token: _Optional[str] = ..., expires_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., heartbeat_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class JobFailure(_message.Message): + __slots__ = ("code", "message") + CODE_FIELD_NUMBER: _ClassVar[int] + MESSAGE_FIELD_NUMBER: _ClassVar[int] + code: str + message: str + def __init__(self, code: _Optional[str] = ..., message: _Optional[str] = ...) -> None: ... + +class JobExecutionReference(_message.Message): + __slots__ = ("owner", "kind", "id") + OWNER_FIELD_NUMBER: _ClassVar[int] + KIND_FIELD_NUMBER: _ClassVar[int] + ID_FIELD_NUMBER: _ClassVar[int] + owner: str + kind: str + id: str + def __init__(self, owner: _Optional[str] = ..., kind: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ... + +class JobEnvelope(_message.Message): + __slots__ = ("id", "direction", "scope", "queue", "topic", "source", "idempotency_key", "ordering_key", "schema_version", "payload", "content_type", "attributes", "state", "priority", "attempt_count", "max_attempts", "lease", "last_failure", "available_at", "last_attempt_at", "completed_at", "dead_lettered_at", "created_at", "updated_at", "state_version", "replay_of") + class AttributesEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... + ID_FIELD_NUMBER: _ClassVar[int] + DIRECTION_FIELD_NUMBER: _ClassVar[int] + SCOPE_FIELD_NUMBER: _ClassVar[int] + QUEUE_FIELD_NUMBER: _ClassVar[int] + TOPIC_FIELD_NUMBER: _ClassVar[int] + SOURCE_FIELD_NUMBER: _ClassVar[int] + IDEMPOTENCY_KEY_FIELD_NUMBER: _ClassVar[int] + ORDERING_KEY_FIELD_NUMBER: _ClassVar[int] + SCHEMA_VERSION_FIELD_NUMBER: _ClassVar[int] + PAYLOAD_FIELD_NUMBER: _ClassVar[int] + CONTENT_TYPE_FIELD_NUMBER: _ClassVar[int] + ATTRIBUTES_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] + PRIORITY_FIELD_NUMBER: _ClassVar[int] + ATTEMPT_COUNT_FIELD_NUMBER: _ClassVar[int] + MAX_ATTEMPTS_FIELD_NUMBER: _ClassVar[int] + LEASE_FIELD_NUMBER: _ClassVar[int] + LAST_FAILURE_FIELD_NUMBER: _ClassVar[int] + AVAILABLE_AT_FIELD_NUMBER: _ClassVar[int] + LAST_ATTEMPT_AT_FIELD_NUMBER: _ClassVar[int] + COMPLETED_AT_FIELD_NUMBER: _ClassVar[int] + DEAD_LETTERED_AT_FIELD_NUMBER: _ClassVar[int] + CREATED_AT_FIELD_NUMBER: _ClassVar[int] + UPDATED_AT_FIELD_NUMBER: _ClassVar[int] + STATE_VERSION_FIELD_NUMBER: _ClassVar[int] + REPLAY_OF_FIELD_NUMBER: _ClassVar[int] + id: str + direction: JobDirection + scope: JobScope + queue: str + topic: str + source: str + idempotency_key: str + ordering_key: str + schema_version: int + payload: bytes + content_type: str + attributes: _containers.RepeatedCompositeFieldContainer[JobEnvelope.AttributesEntry] + state: JobState + priority: int + attempt_count: int + max_attempts: int + lease: JobLease + last_failure: JobFailure + available_at: _timestamp_pb2.Timestamp + last_attempt_at: _timestamp_pb2.Timestamp + completed_at: _timestamp_pb2.Timestamp + dead_lettered_at: _timestamp_pb2.Timestamp + created_at: _timestamp_pb2.Timestamp + updated_at: _timestamp_pb2.Timestamp + state_version: int + replay_of: str + def __init__(self, id: _Optional[str] = ..., direction: _Optional[_Union[JobDirection, str]] = ..., scope: _Optional[_Union[JobScope, _Mapping]] = ..., queue: _Optional[str] = ..., topic: _Optional[str] = ..., source: _Optional[str] = ..., idempotency_key: _Optional[str] = ..., ordering_key: _Optional[str] = ..., schema_version: _Optional[int] = ..., payload: _Optional[bytes] = ..., content_type: _Optional[str] = ..., attributes: _Optional[_Iterable[_Union[JobEnvelope.AttributesEntry, _Mapping]]] = ..., state: _Optional[_Union[JobState, str]] = ..., priority: _Optional[int] = ..., attempt_count: _Optional[int] = ..., max_attempts: _Optional[int] = ..., lease: _Optional[_Union[JobLease, _Mapping]] = ..., last_failure: _Optional[_Union[JobFailure, _Mapping]] = ..., available_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., last_attempt_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., completed_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., dead_lettered_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., state_version: _Optional[int] = ..., replay_of: _Optional[str] = ...) -> None: ... + +class JobOrderingKey(_message.Message): + __slots__ = ("namespace", "components") + NAMESPACE_FIELD_NUMBER: _ClassVar[int] + COMPONENTS_FIELD_NUMBER: _ClassVar[int] + namespace: str + components: _containers.RepeatedScalarFieldContainer[str] + def __init__(self, namespace: _Optional[str] = ..., components: _Optional[_Iterable[str]] = ...) -> None: ... + +class NewJob(_message.Message): + __slots__ = ("direction", "scope", "queue", "topic", "source", "idempotency_key", "ordering", "schema_version", "payload", "content_type", "attributes", "priority", "max_attempts", "available_at") + class AttributesEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: str + def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ... + DIRECTION_FIELD_NUMBER: _ClassVar[int] + SCOPE_FIELD_NUMBER: _ClassVar[int] + QUEUE_FIELD_NUMBER: _ClassVar[int] + TOPIC_FIELD_NUMBER: _ClassVar[int] + SOURCE_FIELD_NUMBER: _ClassVar[int] + IDEMPOTENCY_KEY_FIELD_NUMBER: _ClassVar[int] + ORDERING_FIELD_NUMBER: _ClassVar[int] + SCHEMA_VERSION_FIELD_NUMBER: _ClassVar[int] + PAYLOAD_FIELD_NUMBER: _ClassVar[int] + CONTENT_TYPE_FIELD_NUMBER: _ClassVar[int] + ATTRIBUTES_FIELD_NUMBER: _ClassVar[int] + PRIORITY_FIELD_NUMBER: _ClassVar[int] + MAX_ATTEMPTS_FIELD_NUMBER: _ClassVar[int] + AVAILABLE_AT_FIELD_NUMBER: _ClassVar[int] + direction: JobDirection + scope: JobScope + queue: str + topic: str + source: str + idempotency_key: str + ordering: JobOrderingKey + schema_version: int + payload: bytes + content_type: str + attributes: _containers.RepeatedCompositeFieldContainer[NewJob.AttributesEntry] + priority: int + max_attempts: int + available_at: _timestamp_pb2.Timestamp + def __init__(self, direction: _Optional[_Union[JobDirection, str]] = ..., scope: _Optional[_Union[JobScope, _Mapping]] = ..., queue: _Optional[str] = ..., topic: _Optional[str] = ..., source: _Optional[str] = ..., idempotency_key: _Optional[str] = ..., ordering: _Optional[_Union[JobOrderingKey, _Mapping]] = ..., schema_version: _Optional[int] = ..., payload: _Optional[bytes] = ..., content_type: _Optional[str] = ..., attributes: _Optional[_Iterable[_Union[NewJob.AttributesEntry, _Mapping]]] = ..., priority: _Optional[int] = ..., max_attempts: _Optional[int] = ..., available_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class EnqueueJobRequest(_message.Message): + __slots__ = ("job",) + JOB_FIELD_NUMBER: _ClassVar[int] + job: NewJob + def __init__(self, job: _Optional[_Union[NewJob, _Mapping]] = ...) -> None: ... + +class EnqueueJobResponse(_message.Message): + __slots__ = ("job_id", "disposition") + JOB_ID_FIELD_NUMBER: _ClassVar[int] + DISPOSITION_FIELD_NUMBER: _ClassVar[int] + job_id: str + disposition: JobEnqueueDisposition + def __init__(self, job_id: _Optional[str] = ..., disposition: _Optional[_Union[JobEnqueueDisposition, str]] = ...) -> None: ... + +class JobSummary(_message.Message): + __slots__ = ("id", "direction", "scope", "queue", "topic", "source", "idempotency_key", "ordering_key", "schema_version", "content_type", "state", "priority", "attempt_count", "max_attempts", "lease", "last_failure", "available_at", "last_attempt_at", "completed_at", "dead_lettered_at", "created_at", "updated_at", "state_version", "replay_of", "execution") + ID_FIELD_NUMBER: _ClassVar[int] + DIRECTION_FIELD_NUMBER: _ClassVar[int] + SCOPE_FIELD_NUMBER: _ClassVar[int] + QUEUE_FIELD_NUMBER: _ClassVar[int] + TOPIC_FIELD_NUMBER: _ClassVar[int] + SOURCE_FIELD_NUMBER: _ClassVar[int] + IDEMPOTENCY_KEY_FIELD_NUMBER: _ClassVar[int] + ORDERING_KEY_FIELD_NUMBER: _ClassVar[int] + SCHEMA_VERSION_FIELD_NUMBER: _ClassVar[int] + CONTENT_TYPE_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] + PRIORITY_FIELD_NUMBER: _ClassVar[int] + ATTEMPT_COUNT_FIELD_NUMBER: _ClassVar[int] + MAX_ATTEMPTS_FIELD_NUMBER: _ClassVar[int] + LEASE_FIELD_NUMBER: _ClassVar[int] + LAST_FAILURE_FIELD_NUMBER: _ClassVar[int] + AVAILABLE_AT_FIELD_NUMBER: _ClassVar[int] + LAST_ATTEMPT_AT_FIELD_NUMBER: _ClassVar[int] + COMPLETED_AT_FIELD_NUMBER: _ClassVar[int] + DEAD_LETTERED_AT_FIELD_NUMBER: _ClassVar[int] + CREATED_AT_FIELD_NUMBER: _ClassVar[int] + UPDATED_AT_FIELD_NUMBER: _ClassVar[int] + STATE_VERSION_FIELD_NUMBER: _ClassVar[int] + REPLAY_OF_FIELD_NUMBER: _ClassVar[int] + EXECUTION_FIELD_NUMBER: _ClassVar[int] + id: str + direction: JobDirection + scope: JobScope + queue: str + topic: str + source: str + idempotency_key: str + ordering_key: str + schema_version: int + content_type: str + state: JobState + priority: int + attempt_count: int + max_attempts: int + lease: JobLease + last_failure: JobFailure + available_at: _timestamp_pb2.Timestamp + last_attempt_at: _timestamp_pb2.Timestamp + completed_at: _timestamp_pb2.Timestamp + dead_lettered_at: _timestamp_pb2.Timestamp + created_at: _timestamp_pb2.Timestamp + updated_at: _timestamp_pb2.Timestamp + state_version: int + replay_of: str + execution: JobExecutionReference + def __init__(self, id: _Optional[str] = ..., direction: _Optional[_Union[JobDirection, str]] = ..., scope: _Optional[_Union[JobScope, _Mapping]] = ..., queue: _Optional[str] = ..., topic: _Optional[str] = ..., source: _Optional[str] = ..., idempotency_key: _Optional[str] = ..., ordering_key: _Optional[str] = ..., schema_version: _Optional[int] = ..., content_type: _Optional[str] = ..., state: _Optional[_Union[JobState, str]] = ..., priority: _Optional[int] = ..., attempt_count: _Optional[int] = ..., max_attempts: _Optional[int] = ..., lease: _Optional[_Union[JobLease, _Mapping]] = ..., last_failure: _Optional[_Union[JobFailure, _Mapping]] = ..., available_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., last_attempt_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., completed_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., dead_lettered_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., state_version: _Optional[int] = ..., replay_of: _Optional[str] = ..., execution: _Optional[_Union[JobExecutionReference, _Mapping]] = ...) -> None: ... + +class JobQueueSnapshot(_message.Message): + __slots__ = ("queue", "pending", "processing", "retrying", "succeeded", "dead_letter", "canceled", "ready", "scheduled", "expired_leases", "oldest_ready_at") + QUEUE_FIELD_NUMBER: _ClassVar[int] + PENDING_FIELD_NUMBER: _ClassVar[int] + PROCESSING_FIELD_NUMBER: _ClassVar[int] + RETRYING_FIELD_NUMBER: _ClassVar[int] + SUCCEEDED_FIELD_NUMBER: _ClassVar[int] + DEAD_LETTER_FIELD_NUMBER: _ClassVar[int] + CANCELED_FIELD_NUMBER: _ClassVar[int] + READY_FIELD_NUMBER: _ClassVar[int] + SCHEDULED_FIELD_NUMBER: _ClassVar[int] + EXPIRED_LEASES_FIELD_NUMBER: _ClassVar[int] + OLDEST_READY_AT_FIELD_NUMBER: _ClassVar[int] + queue: str + pending: int + processing: int + retrying: int + succeeded: int + dead_letter: int + canceled: int + ready: int + scheduled: int + expired_leases: int + oldest_ready_at: _timestamp_pb2.Timestamp + def __init__(self, queue: _Optional[str] = ..., pending: _Optional[int] = ..., processing: _Optional[int] = ..., retrying: _Optional[int] = ..., succeeded: _Optional[int] = ..., dead_letter: _Optional[int] = ..., canceled: _Optional[int] = ..., ready: _Optional[int] = ..., scheduled: _Optional[int] = ..., expired_leases: _Optional[int] = ..., oldest_ready_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class GetJobOperationsRequest(_message.Message): + __slots__ = ("queue",) + QUEUE_FIELD_NUMBER: _ClassVar[int] + queue: str + def __init__(self, queue: _Optional[str] = ...) -> None: ... + +class GetJobOperationsResponse(_message.Message): + __slots__ = ("queues", "observed_at") + QUEUES_FIELD_NUMBER: _ClassVar[int] + OBSERVED_AT_FIELD_NUMBER: _ClassVar[int] + queues: _containers.RepeatedCompositeFieldContainer[JobQueueSnapshot] + observed_at: _timestamp_pb2.Timestamp + def __init__(self, queues: _Optional[_Iterable[_Union[JobQueueSnapshot, _Mapping]]] = ..., observed_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class ListJobsRequest(_message.Message): + __slots__ = ("queue", "states", "organization_id", "subject_id", "page_size", "page_token") + QUEUE_FIELD_NUMBER: _ClassVar[int] + STATES_FIELD_NUMBER: _ClassVar[int] + ORGANIZATION_ID_FIELD_NUMBER: _ClassVar[int] + SUBJECT_ID_FIELD_NUMBER: _ClassVar[int] + PAGE_SIZE_FIELD_NUMBER: _ClassVar[int] + PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int] + queue: str + states: _containers.RepeatedScalarFieldContainer[JobState] + organization_id: str + subject_id: str + page_size: int + page_token: str + def __init__(self, queue: _Optional[str] = ..., states: _Optional[_Iterable[_Union[JobState, str]]] = ..., organization_id: _Optional[str] = ..., subject_id: _Optional[str] = ..., page_size: _Optional[int] = ..., page_token: _Optional[str] = ...) -> None: ... + +class ListJobsResponse(_message.Message): + __slots__ = ("jobs", "next_page_token") + JOBS_FIELD_NUMBER: _ClassVar[int] + NEXT_PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int] + jobs: _containers.RepeatedCompositeFieldContainer[JobSummary] + next_page_token: str + def __init__(self, jobs: _Optional[_Iterable[_Union[JobSummary, _Mapping]]] = ..., next_page_token: _Optional[str] = ...) -> None: ... + +class GetJobRequest(_message.Message): + __slots__ = ("job_id",) + JOB_ID_FIELD_NUMBER: _ClassVar[int] + job_id: str + def __init__(self, job_id: _Optional[str] = ...) -> None: ... + +class GetJobResponse(_message.Message): + __slots__ = ("job", "attempts", "transitions") + JOB_FIELD_NUMBER: _ClassVar[int] + ATTEMPTS_FIELD_NUMBER: _ClassVar[int] + TRANSITIONS_FIELD_NUMBER: _ClassVar[int] + job: JobSummary + attempts: _containers.RepeatedCompositeFieldContainer[JobAttempt] + transitions: _containers.RepeatedCompositeFieldContainer[JobStateTransition] + def __init__(self, job: _Optional[_Union[JobSummary, _Mapping]] = ..., attempts: _Optional[_Iterable[_Union[JobAttempt, _Mapping]]] = ..., transitions: _Optional[_Iterable[_Union[JobStateTransition, _Mapping]]] = ...) -> None: ... + +class ReplayJobRequest(_message.Message): + __slots__ = ("source_job_id", "idempotency_key", "available_at") + SOURCE_JOB_ID_FIELD_NUMBER: _ClassVar[int] + IDEMPOTENCY_KEY_FIELD_NUMBER: _ClassVar[int] + AVAILABLE_AT_FIELD_NUMBER: _ClassVar[int] + source_job_id: str + idempotency_key: str + available_at: _timestamp_pb2.Timestamp + def __init__(self, source_job_id: _Optional[str] = ..., idempotency_key: _Optional[str] = ..., available_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class ReplayJobResponse(_message.Message): + __slots__ = ("job_id", "disposition") + JOB_ID_FIELD_NUMBER: _ClassVar[int] + DISPOSITION_FIELD_NUMBER: _ClassVar[int] + job_id: str + disposition: JobEnqueueDisposition + def __init__(self, job_id: _Optional[str] = ..., disposition: _Optional[_Union[JobEnqueueDisposition, str]] = ...) -> None: ... + +class JobWorkerMetrics(_message.Message): + __slots__ = ("queue", "iterations", "claim_errors", "claimed", "succeeded", "retried", "dead_lettered", "handler_panics", "lease_lost", "active") + QUEUE_FIELD_NUMBER: _ClassVar[int] + ITERATIONS_FIELD_NUMBER: _ClassVar[int] + CLAIM_ERRORS_FIELD_NUMBER: _ClassVar[int] + CLAIMED_FIELD_NUMBER: _ClassVar[int] + SUCCEEDED_FIELD_NUMBER: _ClassVar[int] + RETRIED_FIELD_NUMBER: _ClassVar[int] + DEAD_LETTERED_FIELD_NUMBER: _ClassVar[int] + HANDLER_PANICS_FIELD_NUMBER: _ClassVar[int] + LEASE_LOST_FIELD_NUMBER: _ClassVar[int] + ACTIVE_FIELD_NUMBER: _ClassVar[int] + queue: str + iterations: int + claim_errors: int + claimed: int + succeeded: int + retried: int + dead_lettered: int + handler_panics: int + lease_lost: int + active: int + def __init__(self, queue: _Optional[str] = ..., iterations: _Optional[int] = ..., claim_errors: _Optional[int] = ..., claimed: _Optional[int] = ..., succeeded: _Optional[int] = ..., retried: _Optional[int] = ..., dead_lettered: _Optional[int] = ..., handler_panics: _Optional[int] = ..., lease_lost: _Optional[int] = ..., active: _Optional[int] = ...) -> None: ... + +class JobAttempt(_message.Message): + __slots__ = ("id", "job_id", "number", "worker_id", "lease_token", "outcome", "failure", "started_at", "heartbeat_at", "finished_at") + ID_FIELD_NUMBER: _ClassVar[int] + JOB_ID_FIELD_NUMBER: _ClassVar[int] + NUMBER_FIELD_NUMBER: _ClassVar[int] + WORKER_ID_FIELD_NUMBER: _ClassVar[int] + LEASE_TOKEN_FIELD_NUMBER: _ClassVar[int] + OUTCOME_FIELD_NUMBER: _ClassVar[int] + FAILURE_FIELD_NUMBER: _ClassVar[int] + STARTED_AT_FIELD_NUMBER: _ClassVar[int] + HEARTBEAT_AT_FIELD_NUMBER: _ClassVar[int] + FINISHED_AT_FIELD_NUMBER: _ClassVar[int] + id: str + job_id: str + number: int + worker_id: str + lease_token: str + outcome: JobAttemptOutcome + failure: JobFailure + started_at: _timestamp_pb2.Timestamp + heartbeat_at: _timestamp_pb2.Timestamp + finished_at: _timestamp_pb2.Timestamp + def __init__(self, id: _Optional[str] = ..., job_id: _Optional[str] = ..., number: _Optional[int] = ..., worker_id: _Optional[str] = ..., lease_token: _Optional[str] = ..., outcome: _Optional[_Union[JobAttemptOutcome, str]] = ..., failure: _Optional[_Union[JobFailure, _Mapping]] = ..., started_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., heartbeat_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., finished_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class JobStateTransition(_message.Message): + __slots__ = ("sequence", "job_id", "from_state", "to_state", "state_version", "attempt_count", "actor", "failure", "occurred_at") + SEQUENCE_FIELD_NUMBER: _ClassVar[int] + JOB_ID_FIELD_NUMBER: _ClassVar[int] + FROM_STATE_FIELD_NUMBER: _ClassVar[int] + TO_STATE_FIELD_NUMBER: _ClassVar[int] + STATE_VERSION_FIELD_NUMBER: _ClassVar[int] + ATTEMPT_COUNT_FIELD_NUMBER: _ClassVar[int] + ACTOR_FIELD_NUMBER: _ClassVar[int] + FAILURE_FIELD_NUMBER: _ClassVar[int] + OCCURRED_AT_FIELD_NUMBER: _ClassVar[int] + sequence: int + job_id: str + from_state: JobState + to_state: JobState + state_version: int + attempt_count: int + actor: str + failure: JobFailure + occurred_at: _timestamp_pb2.Timestamp + def __init__(self, sequence: _Optional[int] = ..., job_id: _Optional[str] = ..., from_state: _Optional[_Union[JobState, str]] = ..., to_state: _Optional[_Union[JobState, str]] = ..., state_version: _Optional[int] = ..., attempt_count: _Optional[int] = ..., actor: _Optional[str] = ..., failure: _Optional[_Union[JobFailure, _Mapping]] = ..., occurred_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class ClaimJobsRequest(_message.Message): + __slots__ = ("queue", "worker_id", "limit", "lease_duration") + QUEUE_FIELD_NUMBER: _ClassVar[int] + WORKER_ID_FIELD_NUMBER: _ClassVar[int] + LIMIT_FIELD_NUMBER: _ClassVar[int] + LEASE_DURATION_FIELD_NUMBER: _ClassVar[int] + queue: str + worker_id: str + limit: int + lease_duration: _duration_pb2.Duration + def __init__(self, queue: _Optional[str] = ..., worker_id: _Optional[str] = ..., limit: _Optional[int] = ..., lease_duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...) -> None: ... + +class ClaimJobsResponse(_message.Message): + __slots__ = ("jobs",) + JOBS_FIELD_NUMBER: _ClassVar[int] + jobs: _containers.RepeatedCompositeFieldContainer[JobEnvelope] + def __init__(self, jobs: _Optional[_Iterable[_Union[JobEnvelope, _Mapping]]] = ...) -> None: ... + +class JobLeaseReference(_message.Message): + __slots__ = ("job_id", "worker_id", "lease_token") + JOB_ID_FIELD_NUMBER: _ClassVar[int] + WORKER_ID_FIELD_NUMBER: _ClassVar[int] + LEASE_TOKEN_FIELD_NUMBER: _ClassVar[int] + job_id: str + worker_id: str + lease_token: str + def __init__(self, job_id: _Optional[str] = ..., worker_id: _Optional[str] = ..., lease_token: _Optional[str] = ...) -> None: ... + +class HeartbeatJobRequest(_message.Message): + __slots__ = ("lease", "extension") + LEASE_FIELD_NUMBER: _ClassVar[int] + EXTENSION_FIELD_NUMBER: _ClassVar[int] + lease: JobLeaseReference + extension: _duration_pb2.Duration + def __init__(self, lease: _Optional[_Union[JobLeaseReference, _Mapping]] = ..., extension: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...) -> None: ... + +class HeartbeatJobResponse(_message.Message): + __slots__ = ("lease",) + LEASE_FIELD_NUMBER: _ClassVar[int] + lease: JobLease + def __init__(self, lease: _Optional[_Union[JobLease, _Mapping]] = ...) -> None: ... + +class CompleteJobRequest(_message.Message): + __slots__ = ("lease", "execution") + LEASE_FIELD_NUMBER: _ClassVar[int] + EXECUTION_FIELD_NUMBER: _ClassVar[int] + lease: JobLeaseReference + execution: JobExecutionReference + def __init__(self, lease: _Optional[_Union[JobLeaseReference, _Mapping]] = ..., execution: _Optional[_Union[JobExecutionReference, _Mapping]] = ...) -> None: ... + +class RetryJobRequest(_message.Message): + __slots__ = ("lease", "failure", "retry_at") + LEASE_FIELD_NUMBER: _ClassVar[int] + FAILURE_FIELD_NUMBER: _ClassVar[int] + RETRY_AT_FIELD_NUMBER: _ClassVar[int] + lease: JobLeaseReference + failure: JobFailure + retry_at: _timestamp_pb2.Timestamp + def __init__(self, lease: _Optional[_Union[JobLeaseReference, _Mapping]] = ..., failure: _Optional[_Union[JobFailure, _Mapping]] = ..., retry_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ... + +class RetryJobResponse(_message.Message): + __slots__ = ("state",) + STATE_FIELD_NUMBER: _ClassVar[int] + state: JobState + def __init__(self, state: _Optional[_Union[JobState, str]] = ...) -> None: ... + +class DeadLetterJobRequest(_message.Message): + __slots__ = ("lease", "failure") + LEASE_FIELD_NUMBER: _ClassVar[int] + FAILURE_FIELD_NUMBER: _ClassVar[int] + lease: JobLeaseReference + failure: JobFailure + def __init__(self, lease: _Optional[_Union[JobLeaseReference, _Mapping]] = ..., failure: _Optional[_Union[JobFailure, _Mapping]] = ...) -> None: ... diff --git a/src/saas_sdk/_gen/work_contexts_pb2.py b/src/saas_sdk/_gen/work_contexts_pb2.py index 11a3cde..81b396d 100644 --- a/src/saas_sdk/_gen/work_contexts_pb2.py +++ b/src/saas_sdk/_gen/work_contexts_pb2.py @@ -26,7 +26,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$saas/accounts/v1/work_contexts.proto\x12\x10saas.accounts.v1\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"t\n\x10WorkContextScope\x12#\n\rresource_kind\x18\x01 \x01(\tR\x0cresourceKind\x12\x18\n\x07\x61\x63tions\x18\x02 \x03(\tR\x07\x61\x63tions\x12!\n\x0cresource_ids\x18\x03 \x03(\tR\x0bresourceIds\"\xe2\x03\n\x1bStartTaskWorkContextRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x17\n\x07task_id\x18\x02 \x01(\tR\x06taskId\x12\x1d\n\nsession_id\x18\x03 \x01(\tR\tsessionId\x12,\n\x12\x61\x63tor_principal_id\x18\x04 \x01(\tR\x10\x61\x63torPrincipalId\x12M\n\x10\x61uthority_scopes\x18\x05 \x03(\x0b\x32\".saas.accounts.v1.WorkContextScopeR\x0f\x61uthorityScopes\x12\x1a\n\x08\x61udience\x18\x06 \x01(\tR\x08\x61udience\x12N\n\rreplay_policy\x18\x07 \x01(\x0e\x32).saas.accounts.v1.WorkContextReplayPolicyR\x0creplayPolicy\x12\x1f\n\x0bttl_seconds\x18\x08 \x01(\x05R\nttlSeconds\x12&\n\x0cworkspace_id\x18\t \x01(\tH\x00R\x0bworkspaceId\x88\x01\x01\x12\"\n\nproject_id\x18\n \x01(\tH\x01R\tprojectId\x88\x01\x01\x42\x0f\n\r_workspace_idB\r\n\x0b_project_id\"\xa2\x02\n\"StartRootSessionWorkContextRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x39\n\x19parent_work_context_token\x18\x02 \x01(\tR\x16parentWorkContextToken\x12\x1d\n\nsession_id\x18\x03 \x01(\tR\tsessionId\x12\x1a\n\x08\x61udience\x18\x04 \x01(\tR\x08\x61udience\x12N\n\rreplay_policy\x18\x05 \x01(\x0e\x32).saas.accounts.v1.WorkContextReplayPolicyR\x0creplayPolicy\x12\x1f\n\x0bttl_seconds\x18\x06 \x01(\x05R\nttlSeconds\"\xd4\x02\n\"ExchangeWorkContextAudienceRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x39\n\x19parent_work_context_token\x18\x02 \x01(\tR\x16parentWorkContextToken\x12\x1a\n\x08\x61udience\x18\x03 \x01(\tR\x08\x61udience\x12O\n\x11\x61ttenuated_scopes\x18\x04 \x03(\x0b\x32\".saas.accounts.v1.WorkContextScopeR\x10\x61ttenuatedScopes\x12N\n\rreplay_policy\x18\x05 \x01(\x0e\x32).saas.accounts.v1.WorkContextReplayPolicyR\x0creplayPolicy\x12\x1f\n\x0bttl_seconds\x18\x06 \x01(\x05R\nttlSeconds\"\x9c\x03\n#StartChildSessionWorkContextRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x39\n\x19parent_work_context_token\x18\x02 \x01(\tR\x16parentWorkContextToken\x12\x1d\n\nsession_id\x18\x03 \x01(\tR\tsessionId\x12,\n\x12\x61\x63tor_principal_id\x18\x04 \x01(\tR\x10\x61\x63torPrincipalId\x12I\n\x0egranted_scopes\x18\x05 \x03(\x0b\x32\".saas.accounts.v1.WorkContextScopeR\rgrantedScopes\x12\x1a\n\x08\x61udience\x18\x06 \x01(\tR\x08\x61udience\x12N\n\rreplay_policy\x18\x07 \x01(\x0e\x32).saas.accounts.v1.WorkContextReplayPolicyR\x0creplayPolicy\x12\x1f\n\x0bttl_seconds\x18\x08 \x01(\x05R\nttlSeconds\"\xdb\x02\n\x17RenewWorkContextRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x39\n\x19parent_work_context_token\x18\x02 \x01(\tR\x16parentWorkContextToken\x12\x1f\n\x08\x61udience\x18\x03 \x01(\tH\x00R\x08\x61udience\x88\x01\x01\x12O\n\x11\x61ttenuated_scopes\x18\x04 \x03(\x0b\x32\".saas.accounts.v1.WorkContextScopeR\x10\x61ttenuatedScopes\x12N\n\rreplay_policy\x18\x05 \x01(\x0e\x32).saas.accounts.v1.WorkContextReplayPolicyR\x0creplayPolicy\x12\x1f\n\x0bttl_seconds\x18\x06 \x01(\x05R\nttlSecondsB\x0b\n\t_audience\"\x88\x04\n\x11IssuedWorkContext\x12\x14\n\x05token\x18\x01 \x01(\tR\x05token\x12\x15\n\x06org_id\x18\x02 \x01(\tR\x05orgId\x12,\n\x12owner_principal_id\x18\x03 \x01(\tR\x10ownerPrincipalId\x12\x17\n\x07task_id\x18\x04 \x01(\tR\x06taskId\x12\x1d\n\nsession_id\x18\x05 \x01(\tR\tsessionId\x12/\n\x11parent_session_id\x18\x06 \x01(\tH\x00R\x0fparentSessionId\x88\x01\x01\x12;\n\x1a\x63urrent_actor_principal_id\x18\x07 \x01(\tR\x17\x63urrentActorPrincipalId\x12\x35\n\x16\x61uthorization_revision\x18\x08 \x01(\x04R\x15\x61uthorizationRevision\x12\x39\n\nexpires_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12&\n\x0cworkspace_id\x18\n \x01(\tH\x01R\x0bworkspaceId\x88\x01\x01\x12\"\n\nproject_id\x18\x0b \x01(\tH\x02R\tprojectId\x88\x01\x01\x42\x14\n\x12_parent_session_idB\x0f\n\r_workspace_idB\r\n\x0b_project_id\"{\n\x1aWorkContextRevisionSubject\x12!\n\x0cprincipal_id\x18\x01 \x01(\tR\x0bprincipalId\x12:\n\x06scopes\x18\x02 \x03(\x0b\x32\".saas.accounts.v1.WorkContextScopeR\x06scopes\"\xe9\x01\n!CheckAuthorizationRevisionRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12,\n\x12owner_principal_id\x18\x02 \x01(\tR\x10ownerPrincipalId\x12\x35\n\x16\x61uthorization_revision\x18\x03 \x01(\x04R\x15\x61uthorizationRevision\x12H\n\x08subjects\x18\x04 \x03(\x0b\x32,.saas.accounts.v1.WorkContextRevisionSubjectR\x08subjects\"\x8c\x02\n\x1c\x41uthorizeEvidenceReadRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12.\n\x13\x63\x61ller_principal_id\x18\x02 \x01(\tR\x11\x63\x61llerPrincipalId\x12\x31\n\x12owner_principal_id\x18\x03 \x01(\tH\x00R\x10ownerPrincipalId\x88\x01\x01\x12\x1c\n\x07task_id\x18\x04 \x01(\tH\x01R\x06taskId\x88\x01\x01\x12\"\n\nsession_id\x18\x05 \x01(\tH\x02R\tsessionId\x88\x01\x01\x42\x15\n\x13_owner_principal_idB\n\n\x08_task_idB\r\n\x0b_session_id\"\x95\x01\n\"ConsumeSingleUseWorkContextRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x1d\n\ncontext_id\x18\x02 \x01(\tR\tcontextId\x12\x39\n\nexpires_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt*\x9b\x01\n\x17WorkContextReplayPolicy\x12*\n&WORK_CONTEXT_REPLAY_POLICY_UNSPECIFIED\x10\x00\x12)\n%WORK_CONTEXT_REPLAY_POLICY_IDEMPOTENT\x10\x01\x12)\n%WORK_CONTEXT_REPLAY_POLICY_SINGLE_USE\x10\x02\x32\xd6\x06\n\x12WorkContextService\x12i\n\x1a\x43heckAuthorizationRevision\x12\x33.saas.accounts.v1.CheckAuthorizationRevisionRequest\x1a\x16.google.protobuf.Empty\x12_\n\x15\x41uthorizeEvidenceRead\x12..saas.accounts.v1.AuthorizeEvidenceReadRequest\x1a\x16.google.protobuf.Empty\x12`\n\x10\x43onsumeSingleUse\x12\x34.saas.accounts.v1.ConsumeSingleUseWorkContextRequest\x1a\x16.google.protobuf.Empty\x12_\n\tStartTask\x12-.saas.accounts.v1.StartTaskWorkContextRequest\x1a#.saas.accounts.v1.IssuedWorkContext\x12m\n\x10StartRootSession\x12\x34.saas.accounts.v1.StartRootSessionWorkContextRequest\x1a#.saas.accounts.v1.IssuedWorkContext\x12m\n\x10\x45xchangeAudience\x12\x34.saas.accounts.v1.ExchangeWorkContextAudienceRequest\x1a#.saas.accounts.v1.IssuedWorkContext\x12o\n\x11StartChildSession\x12\x35.saas.accounts.v1.StartChildSessionWorkContextRequest\x1a#.saas.accounts.v1.IssuedWorkContext\x12\x62\n\x10RenewWorkContext\x12).saas.accounts.v1.RenewWorkContextRequest\x1a#.saas.accounts.v1.IssuedWorkContextB\x8b\x01\n\x14\x63om.saas.accounts.v1B\x11WorkContextsProtoP\x01\xa2\x02\x03SAX\xaa\x02\x10Saas.Accounts.V1\xca\x02\x10Saas\\Accounts\\V1\xe2\x02\x1cSaas\\Accounts\\V1\\GPBMetadata\xea\x02\x12Saas::Accounts::V1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$saas/accounts/v1/work_contexts.proto\x12\x10saas.accounts.v1\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"t\n\x10WorkContextScope\x12#\n\rresource_kind\x18\x01 \x01(\tR\x0cresourceKind\x12\x18\n\x07\x61\x63tions\x18\x02 \x03(\tR\x07\x61\x63tions\x12!\n\x0cresource_ids\x18\x03 \x03(\tR\x0bresourceIds\"\xe2\x03\n\x1bStartTaskWorkContextRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x17\n\x07task_id\x18\x02 \x01(\tR\x06taskId\x12\x1d\n\nsession_id\x18\x03 \x01(\tR\tsessionId\x12,\n\x12\x61\x63tor_principal_id\x18\x04 \x01(\tR\x10\x61\x63torPrincipalId\x12M\n\x10\x61uthority_scopes\x18\x05 \x03(\x0b\x32\".saas.accounts.v1.WorkContextScopeR\x0f\x61uthorityScopes\x12\x1a\n\x08\x61udience\x18\x06 \x01(\tR\x08\x61udience\x12N\n\rreplay_policy\x18\x07 \x01(\x0e\x32).saas.accounts.v1.WorkContextReplayPolicyR\x0creplayPolicy\x12\x1f\n\x0bttl_seconds\x18\x08 \x01(\x05R\nttlSeconds\x12&\n\x0cworkspace_id\x18\t \x01(\tH\x00R\x0bworkspaceId\x88\x01\x01\x12\"\n\nproject_id\x18\n \x01(\tH\x01R\tprojectId\x88\x01\x01\x42\x0f\n\r_workspace_idB\r\n\x0b_project_id\"\xde\x03\n\x1cStartInstallationTaskRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\'\n\x0finstallation_id\x18\x02 \x01(\tR\x0einstallationId\x12\x17\n\x07task_id\x18\x03 \x01(\tR\x06taskId\x12\x1d\n\nsession_id\x18\x04 \x01(\tR\tsessionId\x12M\n\x10\x61uthority_scopes\x18\x05 \x03(\x0b\x32\".saas.accounts.v1.WorkContextScopeR\x0f\x61uthorityScopes\x12\x1a\n\x08\x61udience\x18\x06 \x01(\tR\x08\x61udience\x12N\n\rreplay_policy\x18\x07 \x01(\x0e\x32).saas.accounts.v1.WorkContextReplayPolicyR\x0creplayPolicy\x12\x1f\n\x0bttl_seconds\x18\x08 \x01(\x05R\nttlSeconds\x12&\n\x0cworkspace_id\x18\t \x01(\tH\x00R\x0bworkspaceId\x88\x01\x01\x12\"\n\nproject_id\x18\n \x01(\tH\x01R\tprojectId\x88\x01\x01\x42\x0f\n\r_workspace_idB\r\n\x0b_project_id\"\xa2\x02\n\"StartRootSessionWorkContextRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x39\n\x19parent_work_context_token\x18\x02 \x01(\tR\x16parentWorkContextToken\x12\x1d\n\nsession_id\x18\x03 \x01(\tR\tsessionId\x12\x1a\n\x08\x61udience\x18\x04 \x01(\tR\x08\x61udience\x12N\n\rreplay_policy\x18\x05 \x01(\x0e\x32).saas.accounts.v1.WorkContextReplayPolicyR\x0creplayPolicy\x12\x1f\n\x0bttl_seconds\x18\x06 \x01(\x05R\nttlSeconds\"\xd4\x02\n\"ExchangeWorkContextAudienceRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x39\n\x19parent_work_context_token\x18\x02 \x01(\tR\x16parentWorkContextToken\x12\x1a\n\x08\x61udience\x18\x03 \x01(\tR\x08\x61udience\x12O\n\x11\x61ttenuated_scopes\x18\x04 \x03(\x0b\x32\".saas.accounts.v1.WorkContextScopeR\x10\x61ttenuatedScopes\x12N\n\rreplay_policy\x18\x05 \x01(\x0e\x32).saas.accounts.v1.WorkContextReplayPolicyR\x0creplayPolicy\x12\x1f\n\x0bttl_seconds\x18\x06 \x01(\x05R\nttlSeconds\"\x9c\x03\n#StartChildSessionWorkContextRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x39\n\x19parent_work_context_token\x18\x02 \x01(\tR\x16parentWorkContextToken\x12\x1d\n\nsession_id\x18\x03 \x01(\tR\tsessionId\x12,\n\x12\x61\x63tor_principal_id\x18\x04 \x01(\tR\x10\x61\x63torPrincipalId\x12I\n\x0egranted_scopes\x18\x05 \x03(\x0b\x32\".saas.accounts.v1.WorkContextScopeR\rgrantedScopes\x12\x1a\n\x08\x61udience\x18\x06 \x01(\tR\x08\x61udience\x12N\n\rreplay_policy\x18\x07 \x01(\x0e\x32).saas.accounts.v1.WorkContextReplayPolicyR\x0creplayPolicy\x12\x1f\n\x0bttl_seconds\x18\x08 \x01(\x05R\nttlSeconds\"\xdb\x02\n\x17RenewWorkContextRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x39\n\x19parent_work_context_token\x18\x02 \x01(\tR\x16parentWorkContextToken\x12\x1f\n\x08\x61udience\x18\x03 \x01(\tH\x00R\x08\x61udience\x88\x01\x01\x12O\n\x11\x61ttenuated_scopes\x18\x04 \x03(\x0b\x32\".saas.accounts.v1.WorkContextScopeR\x10\x61ttenuatedScopes\x12N\n\rreplay_policy\x18\x05 \x01(\x0e\x32).saas.accounts.v1.WorkContextReplayPolicyR\x0creplayPolicy\x12\x1f\n\x0bttl_seconds\x18\x06 \x01(\x05R\nttlSecondsB\x0b\n\t_audience\"\x88\x04\n\x11IssuedWorkContext\x12\x14\n\x05token\x18\x01 \x01(\tR\x05token\x12\x15\n\x06org_id\x18\x02 \x01(\tR\x05orgId\x12,\n\x12owner_principal_id\x18\x03 \x01(\tR\x10ownerPrincipalId\x12\x17\n\x07task_id\x18\x04 \x01(\tR\x06taskId\x12\x1d\n\nsession_id\x18\x05 \x01(\tR\tsessionId\x12/\n\x11parent_session_id\x18\x06 \x01(\tH\x00R\x0fparentSessionId\x88\x01\x01\x12;\n\x1a\x63urrent_actor_principal_id\x18\x07 \x01(\tR\x17\x63urrentActorPrincipalId\x12\x35\n\x16\x61uthorization_revision\x18\x08 \x01(\x04R\x15\x61uthorizationRevision\x12\x39\n\nexpires_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12&\n\x0cworkspace_id\x18\n \x01(\tH\x01R\x0bworkspaceId\x88\x01\x01\x12\"\n\nproject_id\x18\x0b \x01(\tH\x02R\tprojectId\x88\x01\x01\x42\x14\n\x12_parent_session_idB\x0f\n\r_workspace_idB\r\n\x0b_project_id\"{\n\x1aWorkContextRevisionSubject\x12!\n\x0cprincipal_id\x18\x01 \x01(\tR\x0bprincipalId\x12:\n\x06scopes\x18\x02 \x03(\x0b\x32\".saas.accounts.v1.WorkContextScopeR\x06scopes\"\xe9\x01\n!CheckAuthorizationRevisionRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12,\n\x12owner_principal_id\x18\x02 \x01(\tR\x10ownerPrincipalId\x12\x35\n\x16\x61uthorization_revision\x18\x03 \x01(\x04R\x15\x61uthorizationRevision\x12H\n\x08subjects\x18\x04 \x03(\x0b\x32,.saas.accounts.v1.WorkContextRevisionSubjectR\x08subjects\"\x8c\x02\n\x1c\x41uthorizeEvidenceReadRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12.\n\x13\x63\x61ller_principal_id\x18\x02 \x01(\tR\x11\x63\x61llerPrincipalId\x12\x31\n\x12owner_principal_id\x18\x03 \x01(\tH\x00R\x10ownerPrincipalId\x88\x01\x01\x12\x1c\n\x07task_id\x18\x04 \x01(\tH\x01R\x06taskId\x88\x01\x01\x12\"\n\nsession_id\x18\x05 \x01(\tH\x02R\tsessionId\x88\x01\x01\x42\x15\n\x13_owner_principal_idB\n\n\x08_task_idB\r\n\x0b_session_id\"\x95\x01\n\"ConsumeSingleUseWorkContextRequest\x12\x15\n\x06org_id\x18\x01 \x01(\tR\x05orgId\x12\x1d\n\ncontext_id\x18\x02 \x01(\tR\tcontextId\x12\x39\n\nexpires_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt*\x9b\x01\n\x17WorkContextReplayPolicy\x12*\n&WORK_CONTEXT_REPLAY_POLICY_UNSPECIFIED\x10\x00\x12)\n%WORK_CONTEXT_REPLAY_POLICY_IDEMPOTENT\x10\x01\x12)\n%WORK_CONTEXT_REPLAY_POLICY_SINGLE_USE\x10\x02\x32\xc4\x07\n\x12WorkContextService\x12i\n\x1a\x43heckAuthorizationRevision\x12\x33.saas.accounts.v1.CheckAuthorizationRevisionRequest\x1a\x16.google.protobuf.Empty\x12_\n\x15\x41uthorizeEvidenceRead\x12..saas.accounts.v1.AuthorizeEvidenceReadRequest\x1a\x16.google.protobuf.Empty\x12`\n\x10\x43onsumeSingleUse\x12\x34.saas.accounts.v1.ConsumeSingleUseWorkContextRequest\x1a\x16.google.protobuf.Empty\x12_\n\tStartTask\x12-.saas.accounts.v1.StartTaskWorkContextRequest\x1a#.saas.accounts.v1.IssuedWorkContext\x12l\n\x15StartInstallationTask\x12..saas.accounts.v1.StartInstallationTaskRequest\x1a#.saas.accounts.v1.IssuedWorkContext\x12m\n\x10StartRootSession\x12\x34.saas.accounts.v1.StartRootSessionWorkContextRequest\x1a#.saas.accounts.v1.IssuedWorkContext\x12m\n\x10\x45xchangeAudience\x12\x34.saas.accounts.v1.ExchangeWorkContextAudienceRequest\x1a#.saas.accounts.v1.IssuedWorkContext\x12o\n\x11StartChildSession\x12\x35.saas.accounts.v1.StartChildSessionWorkContextRequest\x1a#.saas.accounts.v1.IssuedWorkContext\x12\x62\n\x10RenewWorkContext\x12).saas.accounts.v1.RenewWorkContextRequest\x1a#.saas.accounts.v1.IssuedWorkContextB\x8b\x01\n\x14\x63om.saas.accounts.v1B\x11WorkContextsProtoP\x01\xa2\x02\x03SAX\xaa\x02\x10Saas.Accounts.V1\xca\x02\x10Saas\\Accounts\\V1\xe2\x02\x1cSaas\\Accounts\\V1\\GPBMetadata\xea\x02\x12Saas::Accounts::V1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -34,30 +34,32 @@ if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\024com.saas.accounts.v1B\021WorkContextsProtoP\001\242\002\003SAX\252\002\020Saas.Accounts.V1\312\002\020Saas\\Accounts\\V1\342\002\034Saas\\Accounts\\V1\\GPBMetadata\352\002\022Saas::Accounts::V1' - _globals['_WORKCONTEXTREPLAYPOLICY']._serialized_start=3432 - _globals['_WORKCONTEXTREPLAYPOLICY']._serialized_end=3587 + _globals['_WORKCONTEXTREPLAYPOLICY']._serialized_start=3913 + _globals['_WORKCONTEXTREPLAYPOLICY']._serialized_end=4068 _globals['_WORKCONTEXTSCOPE']._serialized_start=120 _globals['_WORKCONTEXTSCOPE']._serialized_end=236 _globals['_STARTTASKWORKCONTEXTREQUEST']._serialized_start=239 _globals['_STARTTASKWORKCONTEXTREQUEST']._serialized_end=721 - _globals['_STARTROOTSESSIONWORKCONTEXTREQUEST']._serialized_start=724 - _globals['_STARTROOTSESSIONWORKCONTEXTREQUEST']._serialized_end=1014 - _globals['_EXCHANGEWORKCONTEXTAUDIENCEREQUEST']._serialized_start=1017 - _globals['_EXCHANGEWORKCONTEXTAUDIENCEREQUEST']._serialized_end=1357 - _globals['_STARTCHILDSESSIONWORKCONTEXTREQUEST']._serialized_start=1360 - _globals['_STARTCHILDSESSIONWORKCONTEXTREQUEST']._serialized_end=1772 - _globals['_RENEWWORKCONTEXTREQUEST']._serialized_start=1775 - _globals['_RENEWWORKCONTEXTREQUEST']._serialized_end=2122 - _globals['_ISSUEDWORKCONTEXT']._serialized_start=2125 - _globals['_ISSUEDWORKCONTEXT']._serialized_end=2645 - _globals['_WORKCONTEXTREVISIONSUBJECT']._serialized_start=2647 - _globals['_WORKCONTEXTREVISIONSUBJECT']._serialized_end=2770 - _globals['_CHECKAUTHORIZATIONREVISIONREQUEST']._serialized_start=2773 - _globals['_CHECKAUTHORIZATIONREVISIONREQUEST']._serialized_end=3006 - _globals['_AUTHORIZEEVIDENCEREADREQUEST']._serialized_start=3009 - _globals['_AUTHORIZEEVIDENCEREADREQUEST']._serialized_end=3277 - _globals['_CONSUMESINGLEUSEWORKCONTEXTREQUEST']._serialized_start=3280 - _globals['_CONSUMESINGLEUSEWORKCONTEXTREQUEST']._serialized_end=3429 - _globals['_WORKCONTEXTSERVICE']._serialized_start=3590 - _globals['_WORKCONTEXTSERVICE']._serialized_end=4444 + _globals['_STARTINSTALLATIONTASKREQUEST']._serialized_start=724 + _globals['_STARTINSTALLATIONTASKREQUEST']._serialized_end=1202 + _globals['_STARTROOTSESSIONWORKCONTEXTREQUEST']._serialized_start=1205 + _globals['_STARTROOTSESSIONWORKCONTEXTREQUEST']._serialized_end=1495 + _globals['_EXCHANGEWORKCONTEXTAUDIENCEREQUEST']._serialized_start=1498 + _globals['_EXCHANGEWORKCONTEXTAUDIENCEREQUEST']._serialized_end=1838 + _globals['_STARTCHILDSESSIONWORKCONTEXTREQUEST']._serialized_start=1841 + _globals['_STARTCHILDSESSIONWORKCONTEXTREQUEST']._serialized_end=2253 + _globals['_RENEWWORKCONTEXTREQUEST']._serialized_start=2256 + _globals['_RENEWWORKCONTEXTREQUEST']._serialized_end=2603 + _globals['_ISSUEDWORKCONTEXT']._serialized_start=2606 + _globals['_ISSUEDWORKCONTEXT']._serialized_end=3126 + _globals['_WORKCONTEXTREVISIONSUBJECT']._serialized_start=3128 + _globals['_WORKCONTEXTREVISIONSUBJECT']._serialized_end=3251 + _globals['_CHECKAUTHORIZATIONREVISIONREQUEST']._serialized_start=3254 + _globals['_CHECKAUTHORIZATIONREVISIONREQUEST']._serialized_end=3487 + _globals['_AUTHORIZEEVIDENCEREADREQUEST']._serialized_start=3490 + _globals['_AUTHORIZEEVIDENCEREADREQUEST']._serialized_end=3758 + _globals['_CONSUMESINGLEUSEWORKCONTEXTREQUEST']._serialized_start=3761 + _globals['_CONSUMESINGLEUSEWORKCONTEXTREQUEST']._serialized_end=3910 + _globals['_WORKCONTEXTSERVICE']._serialized_start=4071 + _globals['_WORKCONTEXTSERVICE']._serialized_end=5035 # @@protoc_insertion_point(module_scope) diff --git a/src/saas_sdk/_gen/work_contexts_pb2.pyi b/src/saas_sdk/_gen/work_contexts_pb2.pyi index 07a600f..54e0de4 100644 --- a/src/saas_sdk/_gen/work_contexts_pb2.pyi +++ b/src/saas_sdk/_gen/work_contexts_pb2.pyi @@ -51,6 +51,30 @@ class StartTaskWorkContextRequest(_message.Message): project_id: str def __init__(self, org_id: _Optional[str] = ..., task_id: _Optional[str] = ..., session_id: _Optional[str] = ..., actor_principal_id: _Optional[str] = ..., authority_scopes: _Optional[_Iterable[_Union[WorkContextScope, _Mapping]]] = ..., audience: _Optional[str] = ..., replay_policy: _Optional[_Union[WorkContextReplayPolicy, str]] = ..., ttl_seconds: _Optional[int] = ..., workspace_id: _Optional[str] = ..., project_id: _Optional[str] = ...) -> None: ... +class StartInstallationTaskRequest(_message.Message): + __slots__ = ("org_id", "installation_id", "task_id", "session_id", "authority_scopes", "audience", "replay_policy", "ttl_seconds", "workspace_id", "project_id") + ORG_ID_FIELD_NUMBER: _ClassVar[int] + INSTALLATION_ID_FIELD_NUMBER: _ClassVar[int] + TASK_ID_FIELD_NUMBER: _ClassVar[int] + SESSION_ID_FIELD_NUMBER: _ClassVar[int] + AUTHORITY_SCOPES_FIELD_NUMBER: _ClassVar[int] + AUDIENCE_FIELD_NUMBER: _ClassVar[int] + REPLAY_POLICY_FIELD_NUMBER: _ClassVar[int] + TTL_SECONDS_FIELD_NUMBER: _ClassVar[int] + WORKSPACE_ID_FIELD_NUMBER: _ClassVar[int] + PROJECT_ID_FIELD_NUMBER: _ClassVar[int] + org_id: str + installation_id: str + task_id: str + session_id: str + authority_scopes: _containers.RepeatedCompositeFieldContainer[WorkContextScope] + audience: str + replay_policy: WorkContextReplayPolicy + ttl_seconds: int + workspace_id: str + project_id: str + def __init__(self, org_id: _Optional[str] = ..., installation_id: _Optional[str] = ..., task_id: _Optional[str] = ..., session_id: _Optional[str] = ..., authority_scopes: _Optional[_Iterable[_Union[WorkContextScope, _Mapping]]] = ..., audience: _Optional[str] = ..., replay_policy: _Optional[_Union[WorkContextReplayPolicy, str]] = ..., ttl_seconds: _Optional[int] = ..., workspace_id: _Optional[str] = ..., project_id: _Optional[str] = ...) -> None: ... + class StartRootSessionWorkContextRequest(_message.Message): __slots__ = ("org_id", "parent_work_context_token", "session_id", "audience", "replay_policy", "ttl_seconds") ORG_ID_FIELD_NUMBER: _ClassVar[int] diff --git a/src/saas_sdk/datasource.py b/src/saas_sdk/datasource.py index 0cdc84b..aa425aa 100644 --- a/src/saas_sdk/datasource.py +++ b/src/saas_sdk/datasource.py @@ -60,22 +60,35 @@ def add_github_source( *, org_id: str, repo: str, - collection: str, - access_token: str, + collection: str = "", + boundary_node_id: str = "", + access_token: str = "", paths: Sequence[str] = (), branch: str = "", webhook_secret: str = "", ) -> pb.Datasource: """Register a GitHub repository as a datasource and return the non-secret - projection the server stored.""" + projection the server stored. + + The pulled entries land in exactly one data boundary: ``collection`` is + a label the host resolves to (or mints as) a collection node, and + ``boundary_node_id`` names an existing scope node. An empty + ``access_token`` connects through the deployment's GitHub App instead + of a pasted token. + """ + if bool(collection) == bool(boundary_node_id): + raise ValueError("pass exactly one of collection or boundary_node_id") + boundary = ( + {"collection_label": collection} if collection else {"boundary_node_id": boundary_node_id} + ) request = pb.AddGitHubSourceRequest( org_id=org_id, repo=repo, paths=list(paths), branch=branch, - target_collection=collection, access_token=access_token, webhook_secret=webhook_secret, + **boundary, ) response = self._gateway.unary( _SERVICE + "AddGitHubSource", request, pb.AddGitHubSourceResponse diff --git a/tests/test_client.py b/tests/test_client.py index ba118c0..48492c1 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -50,7 +50,7 @@ def unary(self, procedure, request, response_type): "/saas.accounts.v1.DatasourceService/AddGitHubSource": ( pb.AddGitHubSourceRequest, lambda req: pb.AddGitHubSourceResponse( - datasource=pb.Datasource(id="ds-1", target_collection=req.target_collection) + datasource=pb.Datasource(id="ds-1", boundary_label=req.collection_label) ), ), "/saas.accounts.v1.DatasourceService/ListSources": ( @@ -117,14 +117,38 @@ def test_add_github_source_maps_fields_and_unwraps(server): path, request = received[0] assert path == "/saas.accounts.v1.DatasourceService/AddGitHubSource" assert request.repo == "codefly-dev/module-saas-starter" - assert request.target_collection == "handbook" + assert request.collection_label == "handbook" + assert request.WhichOneof("boundary") == "collection_label" assert request.access_token == "ghp_secret" assert request.webhook_secret == "whsec" assert list(request.paths) == ["docs", "handbook"] assert request.branch == "main" # Response envelope unwrapped to the bare Datasource. assert source.id == "ds-1" - assert source.target_collection == "handbook" + assert source.boundary_label == "handbook" + + +def test_add_github_source_into_an_existing_boundary(server): + client, received = server + + client.add_github_source( + org_id="11111111-1111-1111-1111-111111111111", + repo="codefly-dev/module-saas-starter", + boundary_node_id="22222222-2222-2222-2222-222222222222", + ) + + _, request = received[0] + assert request.WhichOneof("boundary") == "boundary_node_id" + assert request.boundary_node_id == "22222222-2222-2222-2222-222222222222" + assert request.access_token == "" + + +def test_add_github_source_needs_exactly_one_boundary(server): + client, received = server + for kwargs in ({}, {"collection": "handbook", "boundary_node_id": "22222222-2222-2222-2222-222222222222"}): + with pytest.raises(ValueError): + client.add_github_source(org_id="org", repo="acme/widgets", **kwargs) + assert received == [] def test_list_sources_returns_bare_list(server): diff --git a/tests/test_generated_bindings.py b/tests/test_generated_bindings.py new file mode 100644 index 0000000..7399a97 --- /dev/null +++ b/tests/test_generated_bindings.py @@ -0,0 +1,29 @@ +"""The generated bindings load together and resolve every cross-file reference. + +datasource.proto reads its sync state from saas.jobs.v1, which the generator +renames into this package (saas_sdk/_gen/jobs.proto) so the generated import +resolves here instead of naming a top-level `saas` package this SDK does not +own. A binding that imported an unresolvable module, or referenced a type the +pool never loaded, fails at import time; these tests pin both. +""" + +from saas_sdk._gen import datasource_pb2, jobs_pb2, work_contexts_pb2 + + +def test_sync_state_resolves_to_the_jobs_enum(): + field = datasource_pb2.GetSourceSyncResponse.DESCRIPTOR.fields_by_name["state"] + assert field.enum_type.full_name == "saas.jobs.v1.JobState" + assert field.enum_type.file.name == "saas_sdk/_gen/jobs.proto" + + +def test_sync_state_round_trips_through_the_wire(): + state = jobs_pb2.JobState.Value(jobs_pb2.JobState.Name(1)) + response = datasource_pb2.GetSourceSyncResponse(state=state) + decoded = datasource_pb2.GetSourceSyncResponse.FromString(response.SerializeToString()) + assert decoded.state == state + + +def test_the_generated_files_register_no_shared_option_protos(): + for module in (datasource_pb2, jobs_pb2, work_contexts_pb2): + deps = [d.name for d in module.DESCRIPTOR.dependencies] + assert not any(d.startswith(("buf/validate/", "saas/policy/", "google/api/")) for d in deps), deps