@vibexp/api-client 0.42.0 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -935,6 +935,300 @@ export type ValidateModelProviderResponse = {
935
935
  error_details?: string;
936
936
  };
937
937
  };
938
+ /**
939
+ * A team's own GitHub App registration. Never carries secret values.
940
+ */
941
+ export type GitHubAppConfig = {
942
+ id: string;
943
+ /**
944
+ * Team that owns this App registration.
945
+ */
946
+ team_id: string;
947
+ /**
948
+ * Who registered the App. Informational only — the team is the tenancy boundary, and no read is scoped by this field.
949
+ */
950
+ user_id?: string | null;
951
+ /**
952
+ * GitHub's numeric App id, carried as a string.
953
+ */
954
+ app_id: string;
955
+ /**
956
+ * The App's slug, which builds its install URL (https://github.com/apps/{app_slug}/installations/new).
957
+ */
958
+ app_slug: string;
959
+ /**
960
+ * The App's OAuth client id. Not a secret — GitHub shows it on the App settings page, and it is echoed back so an operator can confirm which App is wired up.
961
+ */
962
+ client_id: string;
963
+ created_at: string;
964
+ updated_at: string;
965
+ /**
966
+ * Optimistic-concurrency version counter, incremented on each update.
967
+ */
968
+ version: number;
969
+ };
970
+ /**
971
+ * The App registration as returned by every read. Secrets are replaced by has_* booleans; webhook_url is the URL to paste into the App's settings.
972
+ */
973
+ export type GitHubAppConfigResponse = GitHubAppConfig & {
974
+ /**
975
+ * Whether a private key is stored. The key itself is never returned.
976
+ */
977
+ has_private_key: boolean;
978
+ /**
979
+ * Whether a client secret is stored. The secret itself is never returned.
980
+ */
981
+ has_client_secret: boolean;
982
+ /**
983
+ * Whether a webhook secret is stored. The secret is disclosed only once, when it is generated; recovering a lost one means rotating it.
984
+ */
985
+ has_webhook_secret: boolean;
986
+ /**
987
+ * The webhook URL for this App, carrying its opaque routing token. Paste it into the App's settings on GitHub. Empty when the instance has no public base URL configured.
988
+ */
989
+ webhook_url: string;
990
+ };
991
+ /**
992
+ * The one and only payload that carries a plaintext webhook secret. Returned by create and by webhook-secret rotation; every subsequent read returns GitHubAppConfigResponse, which cannot carry it.
993
+ */
994
+ export type CreateGitHubAppConfigResponse = GitHubAppConfigResponse & {
995
+ /**
996
+ * The generated webhook secret, shown exactly once. Paste it into the App's settings alongside the webhook URL; it cannot be read back.
997
+ */
998
+ webhook_secret: string;
999
+ };
1000
+ /**
1001
+ * Registers a team's GitHub App. There is deliberately no webhook_secret field — the server generates it and returns it once.
1002
+ */
1003
+ export type CreateGitHubAppConfigRequest = {
1004
+ /**
1005
+ * GitHub's numeric App id.
1006
+ */
1007
+ app_id: string;
1008
+ /**
1009
+ * The App's slug, used to build its install URL.
1010
+ */
1011
+ app_slug: string;
1012
+ /**
1013
+ * The App's OAuth client id.
1014
+ */
1015
+ client_id: string;
1016
+ /**
1017
+ * The App's RSA private key, as raw PEM or base64-encoded PEM. Encrypted at rest and never returned.
1018
+ */
1019
+ private_key: string;
1020
+ /**
1021
+ * The App's OAuth client secret. Encrypted at rest and never returned.
1022
+ */
1023
+ client_secret: string;
1024
+ };
1025
+ /**
1026
+ * Edits the team's App registration. Every field is optional; an omitted field keeps the stored value. An explicitly EMPTY value is rejected rather than treated as a clear — a GitHub App with no private key is not a meaningful state, so a blank value is far more likely a client bug than an intent. webhook_secret is absent for the same reason it is absent from create: it is server-generated, and replaced through the rotation endpoint.
1027
+ */
1028
+ export type UpdateGitHubAppConfigRequest = {
1029
+ app_id?: string;
1030
+ app_slug?: string;
1031
+ client_id?: string;
1032
+ /**
1033
+ * Replacement RSA private key (raw PEM or base64-encoded PEM).
1034
+ */
1035
+ private_key?: string;
1036
+ /**
1037
+ * Replacement OAuth client secret.
1038
+ */
1039
+ client_secret?: string;
1040
+ };
1041
+ /**
1042
+ * Result of probing GitHub with the stored credentials. A failed probe is reported here with is_valid=false, not as an HTTP error — a wrong key is user-correctable, not a server fault. error_details is always one of a fixed set of categories so the response cannot become an oracle for what the server could reach; the real upstream error is logged server-side only.
1043
+ */
1044
+ export type ValidateGitHubAppConfigResponse = {
1045
+ is_valid: boolean;
1046
+ /**
1047
+ * Human-readable summary of the outcome.
1048
+ */
1049
+ message: string;
1050
+ /**
1051
+ * The slug GitHub reports for the authenticated App, echoed so a mismatch with the stored value is visible rather than silently producing a broken install URL later.
1052
+ */
1053
+ app_slug?: string;
1054
+ /**
1055
+ * The App's granted permissions, so a missing contents/metadata read can be surfaced before it breaks an import.
1056
+ */
1057
+ permissions?: {
1058
+ [key: string]: string;
1059
+ };
1060
+ details?: ValidateGitHubAppConfigDetails;
1061
+ };
1062
+ /**
1063
+ * Fixed-category diagnostics for a validation probe.
1064
+ */
1065
+ export type ValidateGitHubAppConfigDetails = {
1066
+ response_time_ms?: number;
1067
+ /**
1068
+ * HTTP status GitHub returned, when the probe got that far.
1069
+ */
1070
+ status_code?: number;
1071
+ /**
1072
+ * Fixed failure category. Never carries upstream error text, which would reveal what the server could and could not reach.
1073
+ */
1074
+ error_details?: 'invalid_credentials' | 'app_not_found' | 'slug_mismatch' | 'insufficient_permissions' | 'connection_failed';
1075
+ };
1076
+ /**
1077
+ * Non-secret SMTP settings. The password is the provider's secret.
1078
+ */
1079
+ export type SmtpProviderSettings = {
1080
+ /**
1081
+ * SMTP server hostname.
1082
+ */
1083
+ host: string;
1084
+ /**
1085
+ * SMTP port, as a string. Must parse to 1-65535.
1086
+ */
1087
+ port: string;
1088
+ /**
1089
+ * SMTP username, when the server requires authentication.
1090
+ */
1091
+ username?: string;
1092
+ };
1093
+ /**
1094
+ * Non-secret Mailgun settings. The sending key is the provider's secret.
1095
+ */
1096
+ export type MailgunProviderSettings = {
1097
+ /**
1098
+ * The Mailgun sending domain. Must be a bare domain, not a URL.
1099
+ */
1100
+ domain: string;
1101
+ /**
1102
+ * Optional API base URL, to select a non-US region (for example https://api.eu.mailgun.net/v3). A missing /v2|/v3|/v4 suffix is normalised to /v3.
1103
+ */
1104
+ base_url?: string;
1105
+ };
1106
+ /**
1107
+ * Non-secret Postmark settings. The server token is the provider's secret.
1108
+ */
1109
+ export type PostmarkProviderSettings = {
1110
+ /**
1111
+ * Postmark message stream to send on. Defaults to "outbound", the default transactional stream.
1112
+ */
1113
+ message_stream?: string;
1114
+ };
1115
+ /**
1116
+ * Per-type non-secret settings. Exactly the block matching `provider_type` may be present; a block belonging to another type is rejected rather than ignored. SendGrid has no block — its only configuration is its API key, which is the secret.
1117
+ */
1118
+ export type TeamEmailProviderSettings = {
1119
+ smtp?: SmtpProviderSettings;
1120
+ mailgun?: MailgunProviderSettings;
1121
+ postmark?: PostmarkProviderSettings;
1122
+ };
1123
+ /**
1124
+ * The team's email provider configuration. This is an upsert, so the same body creates or replaces.
1125
+ */
1126
+ export type UpsertTeamEmailProviderRequest = {
1127
+ /**
1128
+ * Which provider to send through. Matched case-insensitively.
1129
+ */
1130
+ provider_type: 'smtp' | 'mailgun' | 'postmark' | 'sendgrid';
1131
+ settings?: TeamEmailProviderSettings;
1132
+ /**
1133
+ * The provider's single credential (SMTP password, Mailgun sending key, Postmark server token, or SendGrid API key). Required when configuring a provider for the first time.
1134
+ * On a team that already has a provider, OMIT this field to keep the stored credential — it is never returned, so a client cannot resend it. An explicitly empty string is rejected: a provider with no credential cannot send, so clearing it would silently disable the team's mail.
1135
+ */
1136
+ secret?: string;
1137
+ /**
1138
+ * The address the team's mail is sent from.
1139
+ */
1140
+ from_address: string;
1141
+ /**
1142
+ * Optional display name shown beside the from address.
1143
+ */
1144
+ from_name?: string | null;
1145
+ /**
1146
+ * Optional Reply-To address.
1147
+ */
1148
+ reply_to?: string | null;
1149
+ };
1150
+ /**
1151
+ * The email configuration in force for a team — its own provider, or the instance provider it inherits. This is never a 404: a team without its own provider is inheriting one, which is a state the caller needs described.
1152
+ * No field here can carry the credential; `has_credential` reports only that one is stored.
1153
+ */
1154
+ export type TeamEmailProviderResponse = {
1155
+ /**
1156
+ * Whether the team has its own provider configured.
1157
+ */
1158
+ configured: boolean;
1159
+ /**
1160
+ * Which provider will actually send: the team's own, or the instance provider from the deployment configuration.
1161
+ */
1162
+ source: 'team' | 'instance';
1163
+ /**
1164
+ * The address mail will actually be sent from — the team's when configured, otherwise the instance's.
1165
+ */
1166
+ effective_from_address: string;
1167
+ /**
1168
+ * The team's provider type, or null when the team inherits the instance provider.
1169
+ */
1170
+ provider_type: 'smtp' | 'mailgun' | 'postmark' | 'sendgrid' | null;
1171
+ /**
1172
+ * Whether a credential is stored for the team's provider. The credential itself is never returned.
1173
+ */
1174
+ has_credential: boolean;
1175
+ /**
1176
+ * The team's configured from address. Absent when inheriting the instance provider.
1177
+ */
1178
+ from_address?: string;
1179
+ /**
1180
+ * The team's configured display name.
1181
+ */
1182
+ from_name?: string | null;
1183
+ /**
1184
+ * The team's configured Reply-To address.
1185
+ */
1186
+ reply_to?: string | null;
1187
+ settings?: TeamEmailProviderSettings;
1188
+ /**
1189
+ * Whether the last observed send succeeded. Derived by comparing last_success_at with last_error_at, so a recovered provider is healthy even though last_error is still populated.
1190
+ */
1191
+ is_healthy?: boolean;
1192
+ /**
1193
+ * When a send through the team's provider last succeeded.
1194
+ */
1195
+ last_success_at?: string | null;
1196
+ /**
1197
+ * The last delivery error. Deliberately retained after recovery for diagnosis, so its presence alone does not mean the provider is broken — use is_healthy.
1198
+ */
1199
+ last_error?: string | null;
1200
+ /**
1201
+ * When the last delivery error occurred.
1202
+ */
1203
+ last_error_at?: string | null;
1204
+ };
1205
+ /**
1206
+ * Fixed-category detail for a failed test send. The real upstream error is logged server-side only.
1207
+ */
1208
+ export type TeamEmailProviderTestDetails = {
1209
+ /**
1210
+ * Why the test failed: `configuration_invalid` when the provider could not be built at all (nothing was dialled), `send_failed` when it was built but delivery failed. Absent on success.
1211
+ */
1212
+ error_details?: 'configuration_invalid' | 'send_failed';
1213
+ };
1214
+ /**
1215
+ * Outcome of a test send. A failed send is reported here with `is_valid: false`, not as an HTTP error — the caller asked whether the configuration works, and "no, because X" is a successful answer.
1216
+ */
1217
+ export type TeamEmailProviderTestResponse = {
1218
+ /**
1219
+ * Whether the test message was accepted by the provider.
1220
+ */
1221
+ is_valid: boolean;
1222
+ /**
1223
+ * Human-readable outcome, safe to show to an admin.
1224
+ */
1225
+ message: string;
1226
+ /**
1227
+ * Where the test message was sent. Always the acting user's own account email — this endpoint never accepts a caller-supplied recipient, so it cannot be used to send mail to third parties.
1228
+ */
1229
+ recipient: string;
1230
+ details: TeamEmailProviderTestDetails;
1231
+ };
938
1232
  export type ResourceUsageItem = {
939
1233
  /**
940
1234
  * Type of resource (e.g., prompt, memory, artifact)
@@ -3885,6 +4179,26 @@ export type RelationListResponse = {
3885
4179
  */
3886
4180
  total_pages: number;
3887
4181
  };
4182
+ export type MetadataKeysResponse = {
4183
+ /**
4184
+ * Distinct metadata keys present on the caller's rows of the requested resource type, in ascending order.
4185
+ */
4186
+ keys: Array<string>;
4187
+ /**
4188
+ * True when more distinct keys exist than the requested limit returned.
4189
+ */
4190
+ truncated: boolean;
4191
+ };
4192
+ export type MetadataValuesResponse = {
4193
+ /**
4194
+ * Distinct values stored under the requested key, in ascending order. Values held in an array are flattened, and non-string scalars are rendered in their text form. Keys whose value is a JSON object are skipped, since they have no meaningful value list.
4195
+ */
4196
+ values: Array<string>;
4197
+ /**
4198
+ * True when more distinct values exist than the requested limit returned.
4199
+ */
4200
+ truncated: boolean;
4201
+ };
3888
4202
  /**
3889
4203
  * The search ranking settings in effect for a team, with enough context for a client to render the whole settings surface from this one response: the effective values, where they came from, the instance defaults to preview a reset against, and the instance-owned candidate cap.
3890
4204
  *
@@ -5337,6 +5651,10 @@ export type ListArtifactsData = {
5337
5651
  * Search in title, description, and content
5338
5652
  */
5339
5653
  search?: string;
5654
+ /**
5655
+ * Filter by metadata as a JSON object of key to array of string values. Keys are combined with AND, values within a key with OR, and an empty array means "the key exists". Values match metadata stored as a scalar or as an array, and numeric/boolean values are matched by their string form. At most 10 keys, 25 values per key, key length 255, value length 512. Example: {"env":["prod","staging"],"team":["core"]}
5656
+ */
5657
+ metadata?: string;
5340
5658
  /**
5341
5659
  * Sort field
5342
5660
  */
@@ -5357,6 +5675,10 @@ export type ListArtifactsData = {
5357
5675
  url: '/api/v1/{team_id}/artifacts';
5358
5676
  };
5359
5677
  export type ListArtifactsErrors = {
5678
+ /**
5679
+ * Invalid query parameter (for example a malformed `metadata` filter)
5680
+ */
5681
+ 400: ErrorResponse;
5360
5682
  /**
5361
5683
  * Unauthorized
5362
5684
  */
@@ -5465,6 +5787,10 @@ export type ListArtifactsByProjectData = {
5465
5787
  * Search in title, description, and content
5466
5788
  */
5467
5789
  search?: string;
5790
+ /**
5791
+ * Filter by metadata as a JSON object of key to array of string values. Keys are combined with AND, values within a key with OR, and an empty array means "the key exists". Values match metadata stored as a scalar or as an array, and numeric/boolean values are matched by their string form. At most 10 keys, 25 values per key, key length 255, value length 512. Example: {"env":["prod","staging"],"team":["core"]}
5792
+ */
5793
+ metadata?: string;
5468
5794
  /**
5469
5795
  * Sort field
5470
5796
  */
@@ -5485,6 +5811,10 @@ export type ListArtifactsByProjectData = {
5485
5811
  url: '/api/v1/{team_id}/artifacts/{project_id}';
5486
5812
  };
5487
5813
  export type ListArtifactsByProjectErrors = {
5814
+ /**
5815
+ * Invalid query parameter (for example a malformed `metadata` filter)
5816
+ */
5817
+ 400: ErrorResponse;
5488
5818
  /**
5489
5819
  * Unauthorized
5490
5820
  */
@@ -6240,13 +6570,9 @@ export type ListMemoriesData = {
6240
6570
  */
6241
6571
  search?: string;
6242
6572
  /**
6243
- * Filter by metadata key
6244
- */
6245
- metadata_key?: string;
6246
- /**
6247
- * Filter by metadata value (requires metadata_key)
6573
+ * Filter by metadata as a JSON object of key to array of string values. Keys are combined with AND, values within a key with OR, and an empty array means "the key exists". Values match metadata stored as a scalar or as an array, and numeric/boolean values are matched by their string form. At most 10 keys, 25 values per key, key length 255, value length 512. Example: {"env":["prod","staging"],"team":["core"]}
6248
6574
  */
6249
- metadata_value?: string;
6575
+ metadata?: string;
6250
6576
  /**
6251
6577
  * Filter by lifecycle status. When omitted, archived memories are hidden (active and draft are returned); an explicit value returns only that status. Returns 400 for unknown values.
6252
6578
  */
@@ -6271,6 +6597,10 @@ export type ListMemoriesData = {
6271
6597
  url: '/api/v1/{team_id}/memories';
6272
6598
  };
6273
6599
  export type ListMemoriesErrors = {
6600
+ /**
6601
+ * Invalid query parameter (for example an unknown `status` or `sort_by` value, or a malformed `metadata` filter)
6602
+ */
6603
+ 400: ErrorResponse;
6274
6604
  /**
6275
6605
  * Unauthorized
6276
6606
  */
@@ -6313,64 +6643,6 @@ export type CreateMemoryResponses = {
6313
6643
  201: Memory;
6314
6644
  };
6315
6645
  export type CreateMemoryResponse = CreateMemoryResponses[keyof CreateMemoryResponses];
6316
- export type SearchMemoriesByMetadataData = {
6317
- body?: never;
6318
- path: {
6319
- /**
6320
- * Team ID
6321
- */
6322
- team_id: string;
6323
- };
6324
- query: {
6325
- /**
6326
- * Filter memories by project ID
6327
- */
6328
- project_id?: string;
6329
- /**
6330
- * Metadata key to search for
6331
- */
6332
- metadata_key: string;
6333
- /**
6334
- * Metadata value to search for
6335
- */
6336
- metadata_value: string;
6337
- /**
6338
- * Additional text search in memory content
6339
- */
6340
- search?: string;
6341
- /**
6342
- * Filter by lifecycle status. When omitted, archived memories are hidden (active and draft are returned); an explicit value returns only that status. Returns 400 for unknown values.
6343
- */
6344
- status?: 'active' | 'draft' | 'archived';
6345
- /**
6346
- * Page number
6347
- */
6348
- page?: number;
6349
- /**
6350
- * Items per page
6351
- */
6352
- limit?: number;
6353
- };
6354
- url: '/api/v1/{team_id}/memories/search';
6355
- };
6356
- export type SearchMemoriesByMetadataErrors = {
6357
- /**
6358
- * Missing required parameters
6359
- */
6360
- 400: ErrorResponse;
6361
- /**
6362
- * Unauthorized
6363
- */
6364
- 401: ErrorResponse;
6365
- };
6366
- export type SearchMemoriesByMetadataError = SearchMemoriesByMetadataErrors[keyof SearchMemoriesByMetadataErrors];
6367
- export type SearchMemoriesByMetadataResponses = {
6368
- /**
6369
- * Memories found successfully
6370
- */
6371
- 200: MemoryListResponse;
6372
- };
6373
- export type SearchMemoriesByMetadataResponse = SearchMemoriesByMetadataResponses[keyof SearchMemoriesByMetadataResponses];
6374
6646
  export type DeleteMemoryData = {
6375
6647
  body?: never;
6376
6648
  path: {
@@ -6704,7 +6976,7 @@ export type ListSpecLibrariesData = {
6704
6976
  /**
6705
6977
  * Filter by type
6706
6978
  */
6707
- type?: 'general';
6979
+ type?: 'general' | 'claude-code' | 'claude' | 'cursor' | 'codex';
6708
6980
  /**
6709
6981
  * Filter by subtype category
6710
6982
  */
@@ -6713,6 +6985,10 @@ export type ListSpecLibrariesData = {
6713
6985
  * Search in title, description, and content
6714
6986
  */
6715
6987
  search?: string;
6988
+ /**
6989
+ * Filter by metadata as a JSON object of key to array of string values. Keys are combined with AND, values within a key with OR, and an empty array means "the key exists". Values match metadata stored as a scalar or as an array, and numeric/boolean values are matched by their string form. At most 10 keys, 25 values per key, key length 255, value length 512. Example: {"env":["prod","staging"],"team":["core"]}
6990
+ */
6991
+ metadata?: string;
6716
6992
  /**
6717
6993
  * Sort field
6718
6994
  */
@@ -6733,6 +7009,10 @@ export type ListSpecLibrariesData = {
6733
7009
  url: '/api/v1/{team_id}/blueprints';
6734
7010
  };
6735
7011
  export type ListSpecLibrariesErrors = {
7012
+ /**
7013
+ * Invalid query parameter (for example a malformed `metadata` filter)
7014
+ */
7015
+ 400: ErrorResponse;
6736
7016
  /**
6737
7017
  * Unauthorized
6738
7018
  */
@@ -6836,7 +7116,7 @@ export type ListSpecLibrariesByProjectData = {
6836
7116
  /**
6837
7117
  * Filter by type
6838
7118
  */
6839
- type?: 'general';
7119
+ type?: 'general' | 'claude-code' | 'claude' | 'cursor' | 'codex';
6840
7120
  /**
6841
7121
  * Filter by subtype category
6842
7122
  */
@@ -6845,6 +7125,10 @@ export type ListSpecLibrariesByProjectData = {
6845
7125
  * Search in title, description, and content
6846
7126
  */
6847
7127
  search?: string;
7128
+ /**
7129
+ * Filter by metadata as a JSON object of key to array of string values. Keys are combined with AND, values within a key with OR, and an empty array means "the key exists". Values match metadata stored as a scalar or as an array, and numeric/boolean values are matched by their string form. At most 10 keys, 25 values per key, key length 255, value length 512. Example: {"env":["prod","staging"],"team":["core"]}
7130
+ */
7131
+ metadata?: string;
6848
7132
  /**
6849
7133
  * Sort field
6850
7134
  */
@@ -8106,6 +8390,10 @@ export type GetGitHubInstallUrlErrors = {
8106
8390
  * Forbidden - user does not have access to this team, or is not a team owner/admin
8107
8391
  */
8108
8392
  403: ErrorResponse;
8393
+ /**
8394
+ * Conflict - the team has no GitHub App configured, so there is no App slug to build an install URL from. Register the team's App first.
8395
+ */
8396
+ 409: ErrorResponse;
8109
8397
  /**
8110
8398
  * Internal server error
8111
8399
  */
@@ -8130,7 +8418,7 @@ export type HandleGitHubCallbackData = {
8130
8418
  */
8131
8419
  setup_action?: string;
8132
8420
  /**
8133
- * HMAC-signed state parameter from the install URL (CSRF protection)
8421
+ * HMAC-signed state parameter from the install URL (CSRF protection). It is bound to the team's GitHub App config, so a state minted before the team replaced or rotated its App is no longer redeemable.
8134
8422
  */
8135
8423
  state: string;
8136
8424
  /**
@@ -8149,7 +8437,7 @@ export type HandleGitHubCallbackData = {
8149
8437
  };
8150
8438
  export type HandleGitHubCallbackErrors = {
8151
8439
  /**
8152
- * Invalid request body, missing required fields, or invalid/expired state parameter
8440
+ * Invalid request body, missing required fields, an invalid/expired state parameter, or a state bound to a different installation or GitHub App than the team's current one
8153
8441
  */
8154
8442
  400: ErrorResponse;
8155
8443
  /**
@@ -8161,7 +8449,7 @@ export type HandleGitHubCallbackErrors = {
8161
8449
  */
8162
8450
  403: ErrorResponse;
8163
8451
  /**
8164
- * Conflict - this GitHub organization is already connected to another team
8452
+ * Conflict - this GitHub organization is already connected to another team, or the team has no GitHub App configured to complete the installation against
8165
8453
  */
8166
8454
  409: ErrorResponse;
8167
8455
  /**
@@ -8375,32 +8663,59 @@ export type HandleGitHubWebhookData = {
8375
8663
  };
8376
8664
  export type HandleGitHubWebhookErrors = {
8377
8665
  /**
8378
- * Invalid payload or missing required headers
8379
- */
8380
- 400: ErrorResponse;
8381
- /**
8382
- * Invalid webhook signature
8666
+ * Endpoint retired; use the team's per-App webhook URL
8383
8667
  */
8384
- 401: ErrorResponse;
8385
- /**
8386
- * Internal server error
8387
- */
8388
- 500: ErrorResponse;
8668
+ 410: ErrorResponse;
8389
8669
  };
8390
8670
  export type HandleGitHubWebhookError = HandleGitHubWebhookErrors[keyof HandleGitHubWebhookErrors];
8391
- export type HandleGitHubWebhookResponses = {
8671
+ export type HandleGitHubWebhookByTokenData = {
8392
8672
  /**
8393
- * Webhook received and processed successfully
8673
+ * GitHub webhook event payload (varies by event type)
8394
8674
  */
8395
- 200: unknown;
8396
- };
8397
- export type ListFeedsData = {
8398
- body?: never;
8675
+ body: {
8676
+ [key: string]: unknown;
8677
+ };
8399
8678
  path: {
8400
8679
  /**
8401
- * Team identifier
8680
+ * Opaque routing token identifying which team's GitHub App this delivery belongs to. Minted as unpadded URL-safe base64, so it needs no percent-encoding. Treat it as a secret: it selects the secret the signature is verified against, and it is redacted from access logs.
8402
8681
  */
8403
- team_id: string;
8682
+ token: string;
8683
+ };
8684
+ query?: never;
8685
+ url: '/api/v1/webhooks/github/{token}';
8686
+ };
8687
+ export type HandleGitHubWebhookByTokenErrors = {
8688
+ /**
8689
+ * Unreadable body, unparseable payload, or missing installation reference
8690
+ */
8691
+ 400: ErrorResponse;
8692
+ /**
8693
+ * Missing or invalid `X-Hub-Signature-256`
8694
+ */
8695
+ 401: ErrorResponse;
8696
+ /**
8697
+ * Unknown or malformed routing token (deliberately indistinguishable)
8698
+ */
8699
+ 404: ErrorResponse;
8700
+ /**
8701
+ * Internal server error
8702
+ */
8703
+ 500: ErrorResponse;
8704
+ };
8705
+ export type HandleGitHubWebhookByTokenError = HandleGitHubWebhookByTokenErrors[keyof HandleGitHubWebhookByTokenErrors];
8706
+ export type HandleGitHubWebhookByTokenResponses = {
8707
+ /**
8708
+ * Delivery accepted (or already processed — dedup by delivery id)
8709
+ */
8710
+ 200: unknown;
8711
+ };
8712
+ export type ListFeedsData = {
8713
+ body?: never;
8714
+ path: {
8715
+ /**
8716
+ * Team identifier
8717
+ */
8718
+ team_id: string;
8404
8719
  };
8405
8720
  query?: {
8406
8721
  /**
@@ -12710,6 +13025,114 @@ export type ValidateEmbeddingProviderResponses = {
12710
13025
  200: ValidateEmbeddingProviderResponse;
12711
13026
  };
12712
13027
  export type ValidateEmbeddingProviderResponse2 = ValidateEmbeddingProviderResponses[keyof ValidateEmbeddingProviderResponses];
13028
+ export type GetMetadataKeysData = {
13029
+ body?: never;
13030
+ path: {
13031
+ /**
13032
+ * Team identifier
13033
+ */
13034
+ team_id: string;
13035
+ };
13036
+ query: {
13037
+ /**
13038
+ * Which resource type's metadata to enumerate
13039
+ */
13040
+ resource_type: 'artifacts' | 'blueprints' | 'memories';
13041
+ /**
13042
+ * Narrow the catalog to a single project
13043
+ */
13044
+ project_id?: string;
13045
+ /**
13046
+ * Maximum number of keys to return
13047
+ */
13048
+ limit?: number;
13049
+ };
13050
+ url: '/api/v1/{team_id}/metadata/keys';
13051
+ };
13052
+ export type GetMetadataKeysErrors = {
13053
+ /**
13054
+ * Invalid or missing query parameter
13055
+ */
13056
+ 400: ErrorResponse;
13057
+ /**
13058
+ * Unauthorized
13059
+ */
13060
+ 401: ErrorResponse;
13061
+ /**
13062
+ * Caller is not a member of the team
13063
+ */
13064
+ 403: ErrorResponse;
13065
+ /**
13066
+ * Internal server error
13067
+ */
13068
+ 500: ErrorResponse;
13069
+ };
13070
+ export type GetMetadataKeysError = GetMetadataKeysErrors[keyof GetMetadataKeysErrors];
13071
+ export type GetMetadataKeysResponses = {
13072
+ /**
13073
+ * Metadata keys retrieved successfully
13074
+ */
13075
+ 200: MetadataKeysResponse;
13076
+ };
13077
+ export type GetMetadataKeysResponse = GetMetadataKeysResponses[keyof GetMetadataKeysResponses];
13078
+ export type GetMetadataValuesData = {
13079
+ body?: never;
13080
+ path: {
13081
+ /**
13082
+ * Team identifier
13083
+ */
13084
+ team_id: string;
13085
+ };
13086
+ query: {
13087
+ /**
13088
+ * Which resource type's metadata to enumerate
13089
+ */
13090
+ resource_type: 'artifacts' | 'blueprints' | 'memories';
13091
+ /**
13092
+ * The metadata key whose values to enumerate
13093
+ */
13094
+ key: string;
13095
+ /**
13096
+ * Narrow the catalog to a single project
13097
+ */
13098
+ project_id?: string;
13099
+ /**
13100
+ * Case-insensitive substring filter for typeahead
13101
+ */
13102
+ q?: string;
13103
+ /**
13104
+ * Maximum number of values to return
13105
+ */
13106
+ limit?: number;
13107
+ };
13108
+ url: '/api/v1/{team_id}/metadata/values';
13109
+ };
13110
+ export type GetMetadataValuesErrors = {
13111
+ /**
13112
+ * Invalid or missing query parameter
13113
+ */
13114
+ 400: ErrorResponse;
13115
+ /**
13116
+ * Unauthorized
13117
+ */
13118
+ 401: ErrorResponse;
13119
+ /**
13120
+ * Caller is not a member of the team
13121
+ */
13122
+ 403: ErrorResponse;
13123
+ /**
13124
+ * Internal server error
13125
+ */
13126
+ 500: ErrorResponse;
13127
+ };
13128
+ export type GetMetadataValuesError = GetMetadataValuesErrors[keyof GetMetadataValuesErrors];
13129
+ export type GetMetadataValuesResponses = {
13130
+ /**
13131
+ * Metadata values retrieved successfully
13132
+ */
13133
+ 200: MetadataValuesResponse;
13134
+ };
13135
+ export type GetMetadataValuesResponse = GetMetadataValuesResponses[keyof GetMetadataValuesResponses];
12713
13136
  export type ResetTeamSearchSettingsData = {
12714
13137
  body?: never;
12715
13138
  path: {
@@ -13159,6 +13582,658 @@ export type ClearEmbeddingsSettingsResponses = {
13159
13582
  200: ClearEmbeddingsResponse;
13160
13583
  };
13161
13584
  export type ClearEmbeddingsSettingsResponse = ClearEmbeddingsSettingsResponses[keyof ClearEmbeddingsSettingsResponses];
13585
+ export type DeleteGitHubAppConfigData = {
13586
+ body?: never;
13587
+ path: {
13588
+ /**
13589
+ * Team that owns the GitHub App registration.
13590
+ */
13591
+ team_id: string;
13592
+ };
13593
+ query?: never;
13594
+ url: '/api/v1/{team_id}/integrations/github/app';
13595
+ };
13596
+ export type DeleteGitHubAppConfigErrors = {
13597
+ /**
13598
+ * Unauthorized
13599
+ */
13600
+ 401: ErrorResponse;
13601
+ /**
13602
+ * Forbidden - managing the GitHub App requires team owner/admin (`FORBIDDEN`)
13603
+ */
13604
+ 403: ErrorResponse;
13605
+ /**
13606
+ * The team has no GitHub App configured (`GITHUB_APP_NOT_CONFIGURED`)
13607
+ */
13608
+ 409: ErrorResponse;
13609
+ };
13610
+ export type DeleteGitHubAppConfigError = DeleteGitHubAppConfigErrors[keyof DeleteGitHubAppConfigErrors];
13611
+ export type DeleteGitHubAppConfigResponses = {
13612
+ /**
13613
+ * GitHub App configuration deleted
13614
+ */
13615
+ 204: void;
13616
+ };
13617
+ export type DeleteGitHubAppConfigResponse = DeleteGitHubAppConfigResponses[keyof DeleteGitHubAppConfigResponses];
13618
+ export type GetGitHubAppConfigData = {
13619
+ body?: never;
13620
+ path: {
13621
+ /**
13622
+ * Team that owns the GitHub App registration.
13623
+ */
13624
+ team_id: string;
13625
+ };
13626
+ query?: never;
13627
+ url: '/api/v1/{team_id}/integrations/github/app';
13628
+ };
13629
+ export type GetGitHubAppConfigErrors = {
13630
+ /**
13631
+ * Unauthorized
13632
+ */
13633
+ 401: ErrorResponse;
13634
+ /**
13635
+ * The team has no GitHub App configured (`GITHUB_APP_NOT_CONFIGURED`)
13636
+ */
13637
+ 409: ErrorResponse;
13638
+ };
13639
+ export type GetGitHubAppConfigError = GetGitHubAppConfigErrors[keyof GetGitHubAppConfigErrors];
13640
+ export type GetGitHubAppConfigResponses = {
13641
+ /**
13642
+ * The team's GitHub App configuration
13643
+ */
13644
+ 200: GitHubAppConfigResponse;
13645
+ };
13646
+ export type GetGitHubAppConfigResponse = GetGitHubAppConfigResponses[keyof GetGitHubAppConfigResponses];
13647
+ export type CreateGitHubAppConfigData = {
13648
+ body: CreateGitHubAppConfigRequest;
13649
+ path: {
13650
+ /**
13651
+ * Team that owns the GitHub App registration.
13652
+ */
13653
+ team_id: string;
13654
+ };
13655
+ query?: never;
13656
+ url: '/api/v1/{team_id}/integrations/github/app';
13657
+ };
13658
+ export type CreateGitHubAppConfigErrors = {
13659
+ /**
13660
+ * Malformed JSON body (`BAD_REQUEST`), missing required fields, or an unparseable private key (`VALIDATION_FAILED` with `validation_errors`)
13661
+ */
13662
+ 400: ErrorResponse;
13663
+ /**
13664
+ * Unauthorized
13665
+ */
13666
+ 401: ErrorResponse;
13667
+ /**
13668
+ * Forbidden - managing the GitHub App requires team owner/admin (`FORBIDDEN`)
13669
+ */
13670
+ 403: ErrorResponse;
13671
+ /**
13672
+ * The team already has an App configured (`GITHUB_APP_CONFIG_EXISTS`), or another team already registered this `app_id` (`GITHUB_APP_ALREADY_REGISTERED`) — a GitHub App has a single webhook URL, so it cannot be shared across teams
13673
+ */
13674
+ 409: ErrorResponse;
13675
+ };
13676
+ export type CreateGitHubAppConfigError = CreateGitHubAppConfigErrors[keyof CreateGitHubAppConfigErrors];
13677
+ export type CreateGitHubAppConfigResponses = {
13678
+ /**
13679
+ * GitHub App registered. This is the only response that carries the plaintext `webhook_secret`.
13680
+ */
13681
+ 200: CreateGitHubAppConfigResponse;
13682
+ };
13683
+ export type CreateGitHubAppConfigResponse2 = CreateGitHubAppConfigResponses[keyof CreateGitHubAppConfigResponses];
13684
+ export type UpdateGitHubAppConfigData = {
13685
+ body: UpdateGitHubAppConfigRequest;
13686
+ path: {
13687
+ /**
13688
+ * Team that owns the GitHub App registration.
13689
+ */
13690
+ team_id: string;
13691
+ };
13692
+ query?: never;
13693
+ url: '/api/v1/{team_id}/integrations/github/app';
13694
+ };
13695
+ export type UpdateGitHubAppConfigErrors = {
13696
+ /**
13697
+ * Malformed JSON body (`BAD_REQUEST`), an explicitly empty field, or an unparseable private key (`VALIDATION_FAILED` with `validation_errors`)
13698
+ */
13699
+ 400: ErrorResponse;
13700
+ /**
13701
+ * Unauthorized
13702
+ */
13703
+ 401: ErrorResponse;
13704
+ /**
13705
+ * Forbidden - managing the GitHub App requires team owner/admin (`FORBIDDEN`)
13706
+ */
13707
+ 403: ErrorResponse;
13708
+ /**
13709
+ * The team has no GitHub App configured (`GITHUB_APP_NOT_CONFIGURED`), another team already registered this `app_id` (`GITHUB_APP_ALREADY_REGISTERED`), or the configuration was modified concurrently (`GITHUB_APP_CONFIG_CONFLICT`)
13710
+ */
13711
+ 409: ErrorResponse;
13712
+ };
13713
+ export type UpdateGitHubAppConfigError = UpdateGitHubAppConfigErrors[keyof UpdateGitHubAppConfigErrors];
13714
+ export type UpdateGitHubAppConfigResponses = {
13715
+ /**
13716
+ * GitHub App configuration updated
13717
+ */
13718
+ 200: GitHubAppConfigResponse;
13719
+ };
13720
+ export type UpdateGitHubAppConfigResponse = UpdateGitHubAppConfigResponses[keyof UpdateGitHubAppConfigResponses];
13721
+ export type ValidateGitHubAppConfigData = {
13722
+ body?: never;
13723
+ path: {
13724
+ /**
13725
+ * Team that owns the GitHub App registration.
13726
+ */
13727
+ team_id: string;
13728
+ };
13729
+ query?: never;
13730
+ url: '/api/v1/{team_id}/integrations/github/app/validate';
13731
+ };
13732
+ export type ValidateGitHubAppConfigErrors = {
13733
+ /**
13734
+ * Unauthorized
13735
+ */
13736
+ 401: ErrorResponse;
13737
+ /**
13738
+ * Forbidden - managing the GitHub App requires team owner/admin (`FORBIDDEN`)
13739
+ */
13740
+ 403: ErrorResponse;
13741
+ /**
13742
+ * The team has no GitHub App configured (`GITHUB_APP_NOT_CONFIGURED`)
13743
+ */
13744
+ 409: ErrorResponse;
13745
+ };
13746
+ export type ValidateGitHubAppConfigError = ValidateGitHubAppConfigErrors[keyof ValidateGitHubAppConfigErrors];
13747
+ export type ValidateGitHubAppConfigResponses = {
13748
+ /**
13749
+ * Validation result (successful or not)
13750
+ */
13751
+ 200: ValidateGitHubAppConfigResponse;
13752
+ };
13753
+ export type ValidateGitHubAppConfigResponse2 = ValidateGitHubAppConfigResponses[keyof ValidateGitHubAppConfigResponses];
13754
+ export type RotateGitHubAppWebhookTokenData = {
13755
+ body?: never;
13756
+ path: {
13757
+ /**
13758
+ * Team that owns the GitHub App registration.
13759
+ */
13760
+ team_id: string;
13761
+ };
13762
+ query?: never;
13763
+ url: '/api/v1/{team_id}/integrations/github/app/rotate-webhook-token';
13764
+ };
13765
+ export type RotateGitHubAppWebhookTokenErrors = {
13766
+ /**
13767
+ * Unauthorized
13768
+ */
13769
+ 401: ErrorResponse;
13770
+ /**
13771
+ * Forbidden - managing the GitHub App requires team owner/admin (`FORBIDDEN`)
13772
+ */
13773
+ 403: ErrorResponse;
13774
+ /**
13775
+ * The team has no GitHub App configured (`GITHUB_APP_NOT_CONFIGURED`)
13776
+ */
13777
+ 409: ErrorResponse;
13778
+ };
13779
+ export type RotateGitHubAppWebhookTokenError = RotateGitHubAppWebhookTokenErrors[keyof RotateGitHubAppWebhookTokenErrors];
13780
+ export type RotateGitHubAppWebhookTokenResponses = {
13781
+ /**
13782
+ * Token rotated; the response carries the new `webhook_url`
13783
+ */
13784
+ 200: GitHubAppConfigResponse;
13785
+ };
13786
+ export type RotateGitHubAppWebhookTokenResponse = RotateGitHubAppWebhookTokenResponses[keyof RotateGitHubAppWebhookTokenResponses];
13787
+ export type DeleteGitHubAppConfigSettingsData = {
13788
+ body?: never;
13789
+ path: {
13790
+ /**
13791
+ * Team that owns the GitHub App registration.
13792
+ */
13793
+ team_id: string;
13794
+ };
13795
+ query?: never;
13796
+ url: '/api/v1/{team_id}/settings/github-app';
13797
+ };
13798
+ export type DeleteGitHubAppConfigSettingsErrors = {
13799
+ /**
13800
+ * Unauthorized
13801
+ */
13802
+ 401: ErrorResponse;
13803
+ /**
13804
+ * Forbidden - managing the GitHub App requires team owner/admin (`FORBIDDEN`)
13805
+ */
13806
+ 403: ErrorResponse;
13807
+ /**
13808
+ * The team has no GitHub App configured (`GITHUB_APP_NOT_CONFIGURED`)
13809
+ */
13810
+ 409: ErrorResponse;
13811
+ };
13812
+ export type DeleteGitHubAppConfigSettingsError = DeleteGitHubAppConfigSettingsErrors[keyof DeleteGitHubAppConfigSettingsErrors];
13813
+ export type DeleteGitHubAppConfigSettingsResponses = {
13814
+ /**
13815
+ * GitHub App configuration deleted
13816
+ */
13817
+ 204: void;
13818
+ };
13819
+ export type DeleteGitHubAppConfigSettingsResponse = DeleteGitHubAppConfigSettingsResponses[keyof DeleteGitHubAppConfigSettingsResponses];
13820
+ export type GetGitHubAppConfigSettingsData = {
13821
+ body?: never;
13822
+ path: {
13823
+ /**
13824
+ * Team that owns the GitHub App registration.
13825
+ */
13826
+ team_id: string;
13827
+ };
13828
+ query?: never;
13829
+ url: '/api/v1/{team_id}/settings/github-app';
13830
+ };
13831
+ export type GetGitHubAppConfigSettingsErrors = {
13832
+ /**
13833
+ * Unauthorized
13834
+ */
13835
+ 401: ErrorResponse;
13836
+ /**
13837
+ * The team has no GitHub App configured (`GITHUB_APP_NOT_CONFIGURED`)
13838
+ */
13839
+ 409: ErrorResponse;
13840
+ };
13841
+ export type GetGitHubAppConfigSettingsError = GetGitHubAppConfigSettingsErrors[keyof GetGitHubAppConfigSettingsErrors];
13842
+ export type GetGitHubAppConfigSettingsResponses = {
13843
+ /**
13844
+ * The team's GitHub App configuration
13845
+ */
13846
+ 200: GitHubAppConfigResponse;
13847
+ };
13848
+ export type GetGitHubAppConfigSettingsResponse = GetGitHubAppConfigSettingsResponses[keyof GetGitHubAppConfigSettingsResponses];
13849
+ export type CreateGitHubAppConfigSettingsData = {
13850
+ body: CreateGitHubAppConfigRequest;
13851
+ path: {
13852
+ /**
13853
+ * Team that owns the GitHub App registration.
13854
+ */
13855
+ team_id: string;
13856
+ };
13857
+ query?: never;
13858
+ url: '/api/v1/{team_id}/settings/github-app';
13859
+ };
13860
+ export type CreateGitHubAppConfigSettingsErrors = {
13861
+ /**
13862
+ * Malformed JSON body (`BAD_REQUEST`), missing required fields, or an unparseable private key (`VALIDATION_FAILED` with `validation_errors`)
13863
+ */
13864
+ 400: ErrorResponse;
13865
+ /**
13866
+ * Unauthorized
13867
+ */
13868
+ 401: ErrorResponse;
13869
+ /**
13870
+ * Forbidden - managing the GitHub App requires team owner/admin (`FORBIDDEN`)
13871
+ */
13872
+ 403: ErrorResponse;
13873
+ /**
13874
+ * The team already has an App configured (`GITHUB_APP_CONFIG_EXISTS`), or another team already registered this `app_id` (`GITHUB_APP_ALREADY_REGISTERED`) — a GitHub App has a single webhook URL, so it cannot be shared across teams
13875
+ */
13876
+ 409: ErrorResponse;
13877
+ };
13878
+ export type CreateGitHubAppConfigSettingsError = CreateGitHubAppConfigSettingsErrors[keyof CreateGitHubAppConfigSettingsErrors];
13879
+ export type CreateGitHubAppConfigSettingsResponses = {
13880
+ /**
13881
+ * GitHub App registered. This is the only response that carries the plaintext `webhook_secret`.
13882
+ */
13883
+ 200: CreateGitHubAppConfigResponse;
13884
+ };
13885
+ export type CreateGitHubAppConfigSettingsResponse = CreateGitHubAppConfigSettingsResponses[keyof CreateGitHubAppConfigSettingsResponses];
13886
+ export type UpdateGitHubAppConfigSettingsData = {
13887
+ body: UpdateGitHubAppConfigRequest;
13888
+ path: {
13889
+ /**
13890
+ * Team that owns the GitHub App registration.
13891
+ */
13892
+ team_id: string;
13893
+ };
13894
+ query?: never;
13895
+ url: '/api/v1/{team_id}/settings/github-app';
13896
+ };
13897
+ export type UpdateGitHubAppConfigSettingsErrors = {
13898
+ /**
13899
+ * Malformed JSON body (`BAD_REQUEST`), an explicitly empty field, or an unparseable private key (`VALIDATION_FAILED` with `validation_errors`)
13900
+ */
13901
+ 400: ErrorResponse;
13902
+ /**
13903
+ * Unauthorized
13904
+ */
13905
+ 401: ErrorResponse;
13906
+ /**
13907
+ * Forbidden - managing the GitHub App requires team owner/admin (`FORBIDDEN`)
13908
+ */
13909
+ 403: ErrorResponse;
13910
+ /**
13911
+ * The team has no GitHub App configured (`GITHUB_APP_NOT_CONFIGURED`), another team already registered this `app_id` (`GITHUB_APP_ALREADY_REGISTERED`), or the configuration was modified concurrently (`GITHUB_APP_CONFIG_CONFLICT`)
13912
+ */
13913
+ 409: ErrorResponse;
13914
+ };
13915
+ export type UpdateGitHubAppConfigSettingsError = UpdateGitHubAppConfigSettingsErrors[keyof UpdateGitHubAppConfigSettingsErrors];
13916
+ export type UpdateGitHubAppConfigSettingsResponses = {
13917
+ /**
13918
+ * GitHub App configuration updated
13919
+ */
13920
+ 200: GitHubAppConfigResponse;
13921
+ };
13922
+ export type UpdateGitHubAppConfigSettingsResponse = UpdateGitHubAppConfigSettingsResponses[keyof UpdateGitHubAppConfigSettingsResponses];
13923
+ export type ValidateGitHubAppConfigSettingsData = {
13924
+ body?: never;
13925
+ path: {
13926
+ /**
13927
+ * Team that owns the GitHub App registration.
13928
+ */
13929
+ team_id: string;
13930
+ };
13931
+ query?: never;
13932
+ url: '/api/v1/{team_id}/settings/github-app/validate';
13933
+ };
13934
+ export type ValidateGitHubAppConfigSettingsErrors = {
13935
+ /**
13936
+ * Unauthorized
13937
+ */
13938
+ 401: ErrorResponse;
13939
+ /**
13940
+ * Forbidden - managing the GitHub App requires team owner/admin (`FORBIDDEN`)
13941
+ */
13942
+ 403: ErrorResponse;
13943
+ /**
13944
+ * The team has no GitHub App configured (`GITHUB_APP_NOT_CONFIGURED`)
13945
+ */
13946
+ 409: ErrorResponse;
13947
+ };
13948
+ export type ValidateGitHubAppConfigSettingsError = ValidateGitHubAppConfigSettingsErrors[keyof ValidateGitHubAppConfigSettingsErrors];
13949
+ export type ValidateGitHubAppConfigSettingsResponses = {
13950
+ /**
13951
+ * Validation result (successful or not)
13952
+ */
13953
+ 200: ValidateGitHubAppConfigResponse;
13954
+ };
13955
+ export type ValidateGitHubAppConfigSettingsResponse = ValidateGitHubAppConfigSettingsResponses[keyof ValidateGitHubAppConfigSettingsResponses];
13956
+ export type RotateGitHubAppWebhookTokenSettingsData = {
13957
+ body?: never;
13958
+ path: {
13959
+ /**
13960
+ * Team that owns the GitHub App registration.
13961
+ */
13962
+ team_id: string;
13963
+ };
13964
+ query?: never;
13965
+ url: '/api/v1/{team_id}/settings/github-app/rotate-webhook-token';
13966
+ };
13967
+ export type RotateGitHubAppWebhookTokenSettingsErrors = {
13968
+ /**
13969
+ * Unauthorized
13970
+ */
13971
+ 401: ErrorResponse;
13972
+ /**
13973
+ * Forbidden - managing the GitHub App requires team owner/admin (`FORBIDDEN`)
13974
+ */
13975
+ 403: ErrorResponse;
13976
+ /**
13977
+ * The team has no GitHub App configured (`GITHUB_APP_NOT_CONFIGURED`)
13978
+ */
13979
+ 409: ErrorResponse;
13980
+ };
13981
+ export type RotateGitHubAppWebhookTokenSettingsError = RotateGitHubAppWebhookTokenSettingsErrors[keyof RotateGitHubAppWebhookTokenSettingsErrors];
13982
+ export type RotateGitHubAppWebhookTokenSettingsResponses = {
13983
+ /**
13984
+ * Token rotated; the response carries the new `webhook_url`
13985
+ */
13986
+ 200: GitHubAppConfigResponse;
13987
+ };
13988
+ export type RotateGitHubAppWebhookTokenSettingsResponse = RotateGitHubAppWebhookTokenSettingsResponses[keyof RotateGitHubAppWebhookTokenSettingsResponses];
13989
+ export type DeleteTeamEmailProviderData = {
13990
+ body?: never;
13991
+ path: {
13992
+ /**
13993
+ * Team that owns the email provider configuration.
13994
+ */
13995
+ team_id: string;
13996
+ };
13997
+ query?: never;
13998
+ url: '/api/v1/{team_id}/email-provider';
13999
+ };
14000
+ export type DeleteTeamEmailProviderErrors = {
14001
+ /**
14002
+ * Unauthorized
14003
+ */
14004
+ 401: ErrorResponse;
14005
+ /**
14006
+ * Forbidden - configuring the team's email provider requires team owner/admin (`FORBIDDEN`)
14007
+ */
14008
+ 403: ErrorResponse;
14009
+ /**
14010
+ * The team has no email provider of its own (`TEAM_EMAIL_PROVIDER_NOT_CONFIGURED`)
14011
+ */
14012
+ 409: ErrorResponse;
14013
+ };
14014
+ export type DeleteTeamEmailProviderError = DeleteTeamEmailProviderErrors[keyof DeleteTeamEmailProviderErrors];
14015
+ export type DeleteTeamEmailProviderResponses = {
14016
+ /**
14017
+ * Provider removed; the team now uses the instance provider
14018
+ */
14019
+ 204: void;
14020
+ };
14021
+ export type DeleteTeamEmailProviderResponse = DeleteTeamEmailProviderResponses[keyof DeleteTeamEmailProviderResponses];
14022
+ export type GetTeamEmailProviderData = {
14023
+ body?: never;
14024
+ path: {
14025
+ /**
14026
+ * Team that owns the email provider configuration.
14027
+ */
14028
+ team_id: string;
14029
+ };
14030
+ query?: never;
14031
+ url: '/api/v1/{team_id}/email-provider';
14032
+ };
14033
+ export type GetTeamEmailProviderErrors = {
14034
+ /**
14035
+ * Unauthorized
14036
+ */
14037
+ 401: ErrorResponse;
14038
+ };
14039
+ export type GetTeamEmailProviderError = GetTeamEmailProviderErrors[keyof GetTeamEmailProviderErrors];
14040
+ export type GetTeamEmailProviderResponses = {
14041
+ /**
14042
+ * The email configuration in force for the team
14043
+ */
14044
+ 200: TeamEmailProviderResponse;
14045
+ };
14046
+ export type GetTeamEmailProviderResponse = GetTeamEmailProviderResponses[keyof GetTeamEmailProviderResponses];
14047
+ export type UpsertTeamEmailProviderData = {
14048
+ body: UpsertTeamEmailProviderRequest;
14049
+ path: {
14050
+ /**
14051
+ * Team that owns the email provider configuration.
14052
+ */
14053
+ team_id: string;
14054
+ };
14055
+ query?: never;
14056
+ url: '/api/v1/{team_id}/email-provider';
14057
+ };
14058
+ export type UpsertTeamEmailProviderErrors = {
14059
+ /**
14060
+ * Malformed JSON body (`BAD_REQUEST`), or an invalid configuration (`TEAM_EMAIL_PROVIDER_VALIDATION_FAILED` with `validation_errors`) — an unknown provider type, a missing or mismatched settings block, an empty `secret`, a malformed address, or a destination that is not allowed
14061
+ */
14062
+ 400: ErrorResponse;
14063
+ /**
14064
+ * Unauthorized
14065
+ */
14066
+ 401: ErrorResponse;
14067
+ /**
14068
+ * Forbidden - configuring the team's email provider requires team owner/admin (`FORBIDDEN`)
14069
+ */
14070
+ 403: ErrorResponse;
14071
+ };
14072
+ export type UpsertTeamEmailProviderError = UpsertTeamEmailProviderErrors[keyof UpsertTeamEmailProviderErrors];
14073
+ export type UpsertTeamEmailProviderResponses = {
14074
+ /**
14075
+ * The stored configuration
14076
+ */
14077
+ 200: TeamEmailProviderResponse;
14078
+ };
14079
+ export type UpsertTeamEmailProviderResponse = UpsertTeamEmailProviderResponses[keyof UpsertTeamEmailProviderResponses];
14080
+ export type TestTeamEmailProviderData = {
14081
+ body: UpsertTeamEmailProviderRequest;
14082
+ path: {
14083
+ /**
14084
+ * Team that owns the email provider configuration.
14085
+ */
14086
+ team_id: string;
14087
+ };
14088
+ query?: never;
14089
+ url: '/api/v1/{team_id}/email-provider/test';
14090
+ };
14091
+ export type TestTeamEmailProviderErrors = {
14092
+ /**
14093
+ * Malformed JSON body (`BAD_REQUEST`), or an invalid configuration (`TEAM_EMAIL_PROVIDER_VALIDATION_FAILED` with `validation_errors`). `secret` is always required here, since there is no stored credential to fall back on
14094
+ */
14095
+ 400: ErrorResponse;
14096
+ /**
14097
+ * Unauthorized
14098
+ */
14099
+ 401: ErrorResponse;
14100
+ /**
14101
+ * Forbidden - testing the team's email provider requires team owner/admin (`FORBIDDEN`)
14102
+ */
14103
+ 403: ErrorResponse;
14104
+ };
14105
+ export type TestTeamEmailProviderError = TestTeamEmailProviderErrors[keyof TestTeamEmailProviderErrors];
14106
+ export type TestTeamEmailProviderResponses = {
14107
+ /**
14108
+ * Test outcome (successful or not)
14109
+ */
14110
+ 200: TeamEmailProviderTestResponse;
14111
+ };
14112
+ export type TestTeamEmailProviderResponse = TestTeamEmailProviderResponses[keyof TestTeamEmailProviderResponses];
14113
+ export type DeleteTeamEmailProviderSettingsData = {
14114
+ body?: never;
14115
+ path: {
14116
+ /**
14117
+ * Team that owns the email provider configuration.
14118
+ */
14119
+ team_id: string;
14120
+ };
14121
+ query?: never;
14122
+ url: '/api/v1/{team_id}/settings/email-provider';
14123
+ };
14124
+ export type DeleteTeamEmailProviderSettingsErrors = {
14125
+ /**
14126
+ * Unauthorized
14127
+ */
14128
+ 401: ErrorResponse;
14129
+ /**
14130
+ * Forbidden - configuring the team's email provider requires team owner/admin (`FORBIDDEN`)
14131
+ */
14132
+ 403: ErrorResponse;
14133
+ /**
14134
+ * The team has no email provider of its own (`TEAM_EMAIL_PROVIDER_NOT_CONFIGURED`)
14135
+ */
14136
+ 409: ErrorResponse;
14137
+ };
14138
+ export type DeleteTeamEmailProviderSettingsError = DeleteTeamEmailProviderSettingsErrors[keyof DeleteTeamEmailProviderSettingsErrors];
14139
+ export type DeleteTeamEmailProviderSettingsResponses = {
14140
+ /**
14141
+ * Provider removed; the team now uses the instance provider
14142
+ */
14143
+ 204: void;
14144
+ };
14145
+ export type DeleteTeamEmailProviderSettingsResponse = DeleteTeamEmailProviderSettingsResponses[keyof DeleteTeamEmailProviderSettingsResponses];
14146
+ export type GetTeamEmailProviderSettingsData = {
14147
+ body?: never;
14148
+ path: {
14149
+ /**
14150
+ * Team that owns the email provider configuration.
14151
+ */
14152
+ team_id: string;
14153
+ };
14154
+ query?: never;
14155
+ url: '/api/v1/{team_id}/settings/email-provider';
14156
+ };
14157
+ export type GetTeamEmailProviderSettingsErrors = {
14158
+ /**
14159
+ * Unauthorized
14160
+ */
14161
+ 401: ErrorResponse;
14162
+ };
14163
+ export type GetTeamEmailProviderSettingsError = GetTeamEmailProviderSettingsErrors[keyof GetTeamEmailProviderSettingsErrors];
14164
+ export type GetTeamEmailProviderSettingsResponses = {
14165
+ /**
14166
+ * The email configuration in force for the team
14167
+ */
14168
+ 200: TeamEmailProviderResponse;
14169
+ };
14170
+ export type GetTeamEmailProviderSettingsResponse = GetTeamEmailProviderSettingsResponses[keyof GetTeamEmailProviderSettingsResponses];
14171
+ export type UpsertTeamEmailProviderSettingsData = {
14172
+ body: UpsertTeamEmailProviderRequest;
14173
+ path: {
14174
+ /**
14175
+ * Team that owns the email provider configuration.
14176
+ */
14177
+ team_id: string;
14178
+ };
14179
+ query?: never;
14180
+ url: '/api/v1/{team_id}/settings/email-provider';
14181
+ };
14182
+ export type UpsertTeamEmailProviderSettingsErrors = {
14183
+ /**
14184
+ * Malformed JSON body (`BAD_REQUEST`), or an invalid configuration (`TEAM_EMAIL_PROVIDER_VALIDATION_FAILED` with `validation_errors`) — an unknown provider type, a missing or mismatched settings block, an empty `secret`, a malformed address, or a destination that is not allowed
14185
+ */
14186
+ 400: ErrorResponse;
14187
+ /**
14188
+ * Unauthorized
14189
+ */
14190
+ 401: ErrorResponse;
14191
+ /**
14192
+ * Forbidden - configuring the team's email provider requires team owner/admin (`FORBIDDEN`)
14193
+ */
14194
+ 403: ErrorResponse;
14195
+ };
14196
+ export type UpsertTeamEmailProviderSettingsError = UpsertTeamEmailProviderSettingsErrors[keyof UpsertTeamEmailProviderSettingsErrors];
14197
+ export type UpsertTeamEmailProviderSettingsResponses = {
14198
+ /**
14199
+ * The stored configuration
14200
+ */
14201
+ 200: TeamEmailProviderResponse;
14202
+ };
14203
+ export type UpsertTeamEmailProviderSettingsResponse = UpsertTeamEmailProviderSettingsResponses[keyof UpsertTeamEmailProviderSettingsResponses];
14204
+ export type TestTeamEmailProviderSettingsData = {
14205
+ body: UpsertTeamEmailProviderRequest;
14206
+ path: {
14207
+ /**
14208
+ * Team that owns the email provider configuration.
14209
+ */
14210
+ team_id: string;
14211
+ };
14212
+ query?: never;
14213
+ url: '/api/v1/{team_id}/settings/email-provider/test';
14214
+ };
14215
+ export type TestTeamEmailProviderSettingsErrors = {
14216
+ /**
14217
+ * Malformed JSON body (`BAD_REQUEST`), or an invalid configuration (`TEAM_EMAIL_PROVIDER_VALIDATION_FAILED` with `validation_errors`). `secret` is always required here, since there is no stored credential to fall back on
14218
+ */
14219
+ 400: ErrorResponse;
14220
+ /**
14221
+ * Unauthorized
14222
+ */
14223
+ 401: ErrorResponse;
14224
+ /**
14225
+ * Forbidden - testing the team's email provider requires team owner/admin (`FORBIDDEN`)
14226
+ */
14227
+ 403: ErrorResponse;
14228
+ };
14229
+ export type TestTeamEmailProviderSettingsError = TestTeamEmailProviderSettingsErrors[keyof TestTeamEmailProviderSettingsErrors];
14230
+ export type TestTeamEmailProviderSettingsResponses = {
14231
+ /**
14232
+ * Test outcome (successful or not)
14233
+ */
14234
+ 200: TeamEmailProviderTestResponse;
14235
+ };
14236
+ export type TestTeamEmailProviderSettingsResponse = TestTeamEmailProviderSettingsResponses[keyof TestTeamEmailProviderSettingsResponses];
13162
14237
  export type ListModelProvidersData = {
13163
14238
  body?: never;
13164
14239
  path: {