@artifact-keeper/sdk 1.2.5 → 1.4.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.
package/src/types.gen.ts CHANGED
@@ -52,6 +52,32 @@ export type AdvancedSearchResponse = {
52
52
  pagination: PaginationInfo;
53
53
  };
54
54
 
55
+ export type AgeGateConfigResponse = {
56
+ enabled: boolean;
57
+ min_age_days: number;
58
+ repository_key: string;
59
+ };
60
+
61
+ export type AgeGateReviewListResponse = {
62
+ items: Array<AgeGateReviewResponse>;
63
+ pagination: Pagination;
64
+ };
65
+
66
+ export type AgeGateReviewResponse = {
67
+ id: string;
68
+ last_requested_at: string;
69
+ package_name: string;
70
+ package_version: string;
71
+ repository_key: string;
72
+ request_count: number;
73
+ requested_at: string;
74
+ review_reason?: string | null;
75
+ reviewed_at?: string | null;
76
+ reviewed_by?: string | null;
77
+ status: string;
78
+ upstream_published_at?: string | null;
79
+ };
80
+
55
81
  /**
56
82
  * Alert state for a service.
57
83
  */
@@ -218,6 +244,19 @@ export type ArtifactMetadataResponse = {
218
244
  };
219
245
 
220
246
  export type ArtifactResponse = {
247
+ /**
248
+ * Whether this artifact can have an SBOM generated or a security scan
249
+ * run against it. `false` for proxy-cached (Remote) objects: those are
250
+ * listed with a synthetic, SHA-256-derived id (see
251
+ * [`cached_artifact_id`]) and have no row in the `artifacts` table
252
+ * (#1280/#1278), so SBOM/scan lookups by `artifacts.id` cannot resolve
253
+ * them and `sbom_documents`/`scan_results` cannot reference them.
254
+ * `true` for hosted artifacts, which carry a real DB id. The web UI
255
+ * uses this to hide/disable the "Generate SBOM" / "Scan" actions where
256
+ * they cannot work; clients that predate the field should treat an
257
+ * absent value as `true` so hosted artifacts are never hidden. (#2227)
258
+ */
259
+ analyzable: boolean;
221
260
  /**
222
261
  * When the proxy cache entry for this artifact was last written.
223
262
  * Only populated for Remote (proxy) repositories whose proxy service is
@@ -552,6 +591,67 @@ export type ChunkResponse = {
552
591
  chunks_remaining: number;
553
592
  };
554
593
 
594
+ export type CiOidcMappingResponse = {
595
+ allowed_repo_ids?: Array<string> | null;
596
+ claim_filters: unknown;
597
+ created_at: string;
598
+ id: string;
599
+ is_enabled: boolean;
600
+ name: string;
601
+ priority: number;
602
+ provider_id: string;
603
+ updated_at: string;
604
+ };
605
+
606
+ export type CiOidcProviderResponse = {
607
+ audience: string;
608
+ created_at: string;
609
+ id: string;
610
+ is_enabled: boolean;
611
+ issuer_url: string;
612
+ mapping_count: number;
613
+ name: string;
614
+ provider_type: string;
615
+ updated_at: string;
616
+ };
617
+
618
+ /**
619
+ * Body for toggle endpoint.
620
+ */
621
+ export type CiOidcToggleRequest = {
622
+ enabled: boolean;
623
+ };
624
+
625
+ export type CiTokenRequest = {
626
+ /**
627
+ * UUID of the `ci_oidc_providers` row to use for validation.
628
+ */
629
+ provider_id: string;
630
+ };
631
+
632
+ export type CiTokenResponse = {
633
+ /**
634
+ * Short-lived Artifact Keeper access token.
635
+ */
636
+ access_token: string;
637
+ /**
638
+ * Lifetime in seconds (default 900 = 15 min).
639
+ *
640
+ * Docker caches credentials and does not auto-refresh. Re-exchange the
641
+ * CI JWT before each `docker push` step if the pipeline runs longer
642
+ * than this window.
643
+ */
644
+ expires_in: number;
645
+ token_type: string;
646
+ /**
647
+ * The provisioned CI service-account username.
648
+ *
649
+ * Use this directly as `docker login --username` — no separate
650
+ * `GET /api/v1/auth/me` call is needed.
651
+ */
652
+ username: string;
653
+ };
654
+
555
655
  export type CleanupRequest = {
556
656
  cleanup_audit_logs?: boolean | null;
557
657
  cleanup_old_backups?: boolean | null;
@@ -689,6 +789,22 @@ export type CreateBuildRequest = {
689
789
  vcs_url?: string | null;
690
790
  };
691
791
 
792
+ export type CreateCiOidcMappingRequest = {
793
+ allowed_repo_ids?: Array<string> | null;
794
+ claim_filters: unknown;
795
+ is_enabled?: boolean | null;
796
+ name: string;
797
+ priority?: number | null;
798
+ };
799
+
800
+ export type CreateCiOidcProviderRequest = {
801
+ audience?: string | null;
802
+ is_enabled?: boolean | null;
803
+ issuer_url: string;
804
+ name: string;
805
+ provider_type?: string | null;
806
+ };
807
+
692
808
  export type CreateConnectionRequest = {
693
809
  auth_type: string;
694
810
  credentials: ConnectionCredentials;
@@ -778,6 +894,14 @@ export type CreateMigrationRequest = {
778
894
  };
779
895
 
780
896
  export type CreateOidcConfigRequest = {
897
+ /**
898
+ * Opt-in compatibility flag (migration 144): when `true` the provider
899
+ * accepts ID tokens signed with RSA keys shorter than 2048 bits via a
900
+ * restricted RS256/384/512 PKCS#1 v1.5 fallback path. Defaults to
901
+ * `false`. Below the OWASP ASVS 4.0 baseline; only enable for legacy
902
+ * IdPs such as Lark AnyCross.
903
+ */
904
+ allow_legacy_rsa_keys?: boolean | null;
781
905
  attribute_mapping?: {
782
906
  [key: string]: unknown;
783
907
  } | null;
@@ -891,6 +1015,19 @@ export type CreateRepositoryRequest = {
891
1015
  * Defaults to false (no behavior change for existing repositories).
892
1016
  */
893
1017
  promotion_only?: boolean | null;
1018
+ /**
1019
+ * Override the PyPI simple-index prefix for upstreams that do not follow
1020
+ * the standard PEP 503 `/simple/` layout (issue #1546).
1021
+ *
1022
+ * - Omit or `"simple"` — standard PEP 503 (pypi.org, devpi, Nexus). Default.
1023
+ * - `""` (empty) — flat CDN (e.g. `https://download.pytorch.org/whl/cpu`):
1024
+ * package files are served directly under the upstream root with no prefix.
1025
+ * - Any other non-empty string — custom index prefix.
1026
+ *
1027
+ * Stored in `repository_config` under `pypi_upstream_index_path`.
1028
+ * Only meaningful for PyPI / Poetry / Conda Remote repositories.
1029
+ */
1030
+ pypi_upstream_index_path?: string | null;
894
1031
  quota_bytes?: number | null;
895
1032
  repo_type: string;
896
1033
  /**
@@ -2441,6 +2578,13 @@ export type OciBlobRepoFootprint = {
2441
2578
  };
2442
2579
 
2443
2580
  export type OidcConfigResponse = {
2581
+ /**
2582
+ * Opt-in compatibility flag (migration 144): when true the OIDC
2583
+ * provider accepts ID tokens signed with RSA keys shorter than
2584
+ * 2048 bits via a restricted RS256/384/512 PKCS#1 v1.5 path.
2585
+ * Below the OWASP ASVS 4.0 baseline; only enable for legacy IdPs.
2586
+ */
2587
+ allow_legacy_rsa_keys: boolean;
2444
2588
  attribute_mapping: {
2445
2589
  [key: string]: unknown;
2446
2590
  };
@@ -3227,6 +3371,17 @@ export type RestoreResponse = {
3227
3371
  tables_restored: Array<string>;
3228
3372
  };
3229
3373
 
3374
+ export type ReviewActionRequest = {
3375
+ reason?: string | null;
3376
+ };
3377
+
3378
+ export type ReviewListQuery = {
3379
+ page?: number | null;
3380
+ per_page?: number | null;
3381
+ repository_key?: string | null;
3382
+ status?: string | null;
3383
+ };
3384
+
3230
3385
  export type ReviewRequest = {
3231
3386
  /**
3232
3387
  * Optional reviewer notes
@@ -3448,6 +3603,14 @@ export type ScoreResponse = {
3448
3603
  calculated_at: string;
3449
3604
  critical_count: number;
3450
3605
  grade: string;
3606
+ /**
3607
+ * True when the latest applicable scan for this repo errored (#2167).
3608
+ * The `grade` is floored to `F` while this holds, so clients and the
3609
+ * release-gate must treat the repo as NOT clean regardless of the numeric
3610
+ * finding counts. Cleared automatically once a `completed` rescan
3611
+ * supersedes the failed scan.
3612
+ */
3613
+ has_failed_scan: boolean;
3451
3614
  high_count: number;
3452
3615
  id: string;
3453
3616
  last_scan_at?: string | null;
@@ -4112,6 +4275,11 @@ export type UninstallQuery = {
4112
4275
  force?: boolean | null;
4113
4276
  };
4114
4277
 
4278
+ export type UpdateAgeGateConfigRequest = {
4279
+ enabled: boolean;
4280
+ min_age_days: number;
4281
+ };
4282
+
4115
4283
  export type UpdateAnalysisBody = {
4116
4284
  component_uuid: string;
4117
4285
  details?: string | null;
@@ -4132,6 +4300,22 @@ export type UpdateChunkAvailabilityBody = {
4132
4300
  total_chunks: number;
4133
4301
  };
4134
4302
 
4303
+ export type UpdateCiOidcMappingRequest = {
4304
+ allowed_repo_ids?: Array<string> | null;
4305
+ claim_filters?: unknown;
4306
+ is_enabled?: boolean | null;
4307
+ name?: string | null;
4308
+ priority?: number | null;
4309
+ };
4310
+
4311
+ export type UpdateCiOidcProviderRequest = {
4312
+ audience?: string | null;
4313
+ is_enabled?: boolean | null;
4314
+ issuer_url?: string | null;
4315
+ name?: string | null;
4316
+ provider_type?: string | null;
4317
+ };
4318
+
4135
4319
  export type UpdateCveStatusRequest = {
4136
4320
  reason?: string | null;
4137
4321
  status: string;
@@ -4174,6 +4358,7 @@ export type UpdateLdapConfigRequest = {
4174
4358
  };
4175
4359
 
4176
4360
  export type UpdateOidcConfigRequest = {
4361
+ allow_legacy_rsa_keys?: boolean | null;
4177
4362
  /**
4178
4363
  * Partial update for `attribute_mapping`. Keys present in this object
4179
4364
  * overwrite the matching keys in the stored mapping. Keys not present
@@ -4259,6 +4444,13 @@ export type UpdateRepositoryRequest = {
4259
4444
  * repository (admin-only). When omitted, the flag is left unchanged.
4260
4445
  */
4261
4446
  promotion_only?: boolean | null;
4447
+ /**
4448
+ * Update the PyPI simple-index prefix (stored in `repository_config` under
4449
+ * `pypi_upstream_index_path`). Pass `""` for flat CDN layout, `"simple"` to
4450
+ * restore the PEP 503 default, or any other non-empty string for a custom prefix.
4451
+ * Only meaningful for PyPI / Poetry / Conda Remote repositories.
4452
+ */
4453
+ pypi_upstream_index_path?: string | null;
4262
4454
  /**
4263
4455
  * Quarantine hold duration in minutes for this repository.
4264
4456
  * Stored in `repository_config` under `quarantine_duration_minutes`.
@@ -4465,7 +4657,7 @@ export type WasmPluginResponse = {
4465
4657
  /**
4466
4658
  * Webhook event types
4467
4659
  */
4468
- export type WebhookEvent = 'artifact_uploaded' | 'artifact_deleted' | 'repository_created' | 'repository_deleted' | 'user_created' | 'user_deleted' | 'build_started' | 'build_completed' | 'build_failed';
4660
+ export type WebhookEvent = 'artifact_uploaded' | 'artifact_deleted' | 'repository_created' | 'repository_deleted' | 'user_created' | 'user_deleted' | 'build_started' | 'build_completed' | 'build_failed' | 'age_gate_queued' | 'age_gate_approved' | 'age_gate_rejected';
4469
4661
 
4470
4662
  export type WebhookListResponse = {
4471
4663
  items: Array<WebhookResponse>;
@@ -4524,6 +4716,69 @@ export type WebhookSecretCreatedResponse = WebhookResponse & {
4524
4716
  secret?: string | null;
4525
4717
  };
4526
4718
 
4719
+ export type ListReviewsData = {
4720
+ body?: never;
4721
+ path?: never;
4722
+ query?: {
4723
+ repository_key?: string;
4724
+ status?: string;
4725
+ page?: number;
4726
+ per_page?: number;
4727
+ };
4728
+ url: '/api/v1/admin/age-gate/reviews';
4729
+ };
4730
+
4731
+ export type ListReviewsResponses = {
4732
+ 200: AgeGateReviewListResponse;
4733
+ };
4734
+
4735
+ export type ListReviewsResponse = ListReviewsResponses[keyof ListReviewsResponses];
4736
+
4737
+ export type GetReviewData = {
4738
+ body?: never;
4739
+ path: {
4740
+ id: string;
4741
+ };
4742
+ query?: never;
4743
+ url: '/api/v1/admin/age-gate/reviews/{id}';
4744
+ };
4745
+
4746
+ export type GetReviewResponses = {
4747
+ 200: AgeGateReviewResponse;
4748
+ };
4749
+
4750
+ export type GetReviewResponse = GetReviewResponses[keyof GetReviewResponses];
4751
+
4752
+ export type ApproveReviewData = {
4753
+ body: ReviewActionRequest;
4754
+ path: {
4755
+ id: string;
4756
+ };
4757
+ query?: never;
4758
+ url: '/api/v1/admin/age-gate/reviews/{id}/approve';
4759
+ };
4760
+
4761
+ export type ApproveReviewResponses = {
4762
+ 200: AgeGateReviewResponse;
4763
+ };
4764
+
4765
+ export type ApproveReviewResponse = ApproveReviewResponses[keyof ApproveReviewResponses];
4766
+
4767
+ export type RejectReviewData = {
4768
+ body: ReviewActionRequest;
4769
+ path: {
4770
+ id: string;
4771
+ };
4772
+ query?: never;
4773
+ url: '/api/v1/admin/age-gate/reviews/{id}/reject';
4774
+ };
4775
+
4776
+ export type RejectReviewResponses = {
4777
+ 200: AgeGateReviewResponse;
4778
+ };
4779
+
4780
+ export type RejectReviewResponse = RejectReviewResponses[keyof RejectReviewResponses];
4781
+
4527
4782
  export type GetStaleArtifactsData = {
4528
4783
  body?: never;
4529
4784
  path?: never;
@@ -4705,167 +4960,641 @@ export type CreateBackupResponses = {
4705
4960
  200: BackupResponse;
4706
4961
  };
4707
4962
 
4708
- export type CreateBackupResponse = CreateBackupResponses[keyof CreateBackupResponses];
4963
+ export type CreateBackupResponse = CreateBackupResponses[keyof CreateBackupResponses];
4964
+
4965
+ export type DeleteBackupData = {
4966
+ body?: never;
4967
+ path: {
4968
+ /**
4969
+ * Backup ID
4970
+ */
4971
+ id: string;
4972
+ };
4973
+ query?: never;
4974
+ url: '/api/v1/admin/backups/{id}';
4975
+ };
4976
+
4977
+ export type DeleteBackupErrors = {
4978
+ /**
4979
+ * Backup not found
4980
+ */
4981
+ 404: unknown;
4982
+ /**
4983
+ * Internal server error
4984
+ */
4985
+ 500: unknown;
4986
+ };
4987
+
4988
+ export type DeleteBackupResponses = {
4989
+ /**
4990
+ * Backup deleted
4991
+ */
4992
+ 200: unknown;
4993
+ };
4994
+
4995
+ export type GetBackupData = {
4996
+ body?: never;
4997
+ path: {
4998
+ /**
4999
+ * Backup ID
5000
+ */
5001
+ id: string;
5002
+ };
5003
+ query?: never;
5004
+ url: '/api/v1/admin/backups/{id}';
5005
+ };
5006
+
5007
+ export type GetBackupErrors = {
5008
+ /**
5009
+ * Backup not found
5010
+ */
5011
+ 404: unknown;
5012
+ /**
5013
+ * Internal server error
5014
+ */
5015
+ 500: unknown;
5016
+ };
5017
+
5018
+ export type GetBackupResponses = {
5019
+ /**
5020
+ * Backup details
5021
+ */
5022
+ 200: BackupResponse;
5023
+ };
5024
+
5025
+ export type GetBackupResponse = GetBackupResponses[keyof GetBackupResponses];
5026
+
5027
+ export type CancelBackupData = {
5028
+ body?: never;
5029
+ path: {
5030
+ /**
5031
+ * Backup ID
5032
+ */
5033
+ id: string;
5034
+ };
5035
+ query?: never;
5036
+ url: '/api/v1/admin/backups/{id}/cancel';
5037
+ };
5038
+
5039
+ export type CancelBackupErrors = {
5040
+ /**
5041
+ * Backup not found
5042
+ */
5043
+ 404: unknown;
5044
+ /**
5045
+ * Backup is not in a cancellable state
5046
+ */
5047
+ 409: unknown;
5048
+ /**
5049
+ * Internal server error
5050
+ */
5051
+ 500: unknown;
5052
+ };
5053
+
5054
+ export type CancelBackupResponses = {
5055
+ /**
5056
+ * Backup cancelled
5057
+ */
5058
+ 200: unknown;
5059
+ };
5060
+
5061
+ export type ExecuteBackupData = {
5062
+ body?: never;
5063
+ path: {
5064
+ /**
5065
+ * Backup ID
5066
+ */
5067
+ id: string;
5068
+ };
5069
+ query?: never;
5070
+ url: '/api/v1/admin/backups/{id}/execute';
5071
+ };
5072
+
5073
+ export type ExecuteBackupErrors = {
5074
+ /**
5075
+ * Backup not found
5076
+ */
5077
+ 404: unknown;
5078
+ /**
5079
+ * Internal server error
5080
+ */
5081
+ 500: unknown;
5082
+ };
5083
+
5084
+ export type ExecuteBackupResponses = {
5085
+ /**
5086
+ * Backup executed
5087
+ */
5088
+ 200: BackupResponse;
5089
+ };
5090
+
5091
+ export type ExecuteBackupResponse = ExecuteBackupResponses[keyof ExecuteBackupResponses];
5092
+
5093
+ export type RestoreBackupData = {
5094
+ body: RestoreRequest;
5095
+ path: {
5096
+ /**
5097
+ * Backup ID
5098
+ */
5099
+ id: string;
5100
+ };
5101
+ query?: never;
5102
+ url: '/api/v1/admin/backups/{id}/restore';
5103
+ };
5104
+
5105
+ export type RestoreBackupErrors = {
5106
+ /**
5107
+ * Backup not found
5108
+ */
5109
+ 404: unknown;
5110
+ /**
5111
+ * Internal server error
5112
+ */
5113
+ 500: unknown;
5114
+ };
5115
+
5116
+ export type RestoreBackupResponses = {
5117
+ /**
5118
+ * Backup restored
5119
+ */
5120
+ 200: RestoreResponse;
5121
+ };
5122
+
5123
+ export type RestoreBackupResponse = RestoreBackupResponses[keyof RestoreBackupResponses];
5124
+
5125
+ export type CiOidcListProvidersData = {
5126
+ body?: never;
5127
+ path?: never;
5128
+ query?: never;
5129
+ url: '/api/v1/admin/ci-oidc/';
5130
+ };
5131
+
5132
+ export type CiOidcListProvidersErrors = {
5133
+ /**
5134
+ * Unauthorized
5135
+ */
5136
+ 401: ErrorResponse;
5137
+ /**
5138
+ * Admin required
5139
+ */
5140
+ 403: ErrorResponse;
5141
+ };
5142
+
5143
+ export type CiOidcListProvidersError = CiOidcListProvidersErrors[keyof CiOidcListProvidersErrors];
5144
+
5145
+ export type CiOidcListProvidersResponses = {
5146
+ /**
5147
+ * List CI OIDC providers
5148
+ */
5149
+ 200: Array<CiOidcProviderResponse>;
5150
+ };
5151
+
5152
+ export type CiOidcListProvidersResponse = CiOidcListProvidersResponses[keyof CiOidcListProvidersResponses];
5153
+
5154
+ export type CreateProviderData = {
5155
+ body: CreateCiOidcProviderRequest;
5156
+ path?: never;
5157
+ query?: never;
5158
+ url: '/api/v1/admin/ci-oidc/';
5159
+ };
5160
+
5161
+ export type CreateProviderErrors = {
5162
+ /**
5163
+ * Invalid request
5164
+ */
5165
+ 400: ErrorResponse;
5166
+ /**
5167
+ * Unauthorized
5168
+ */
5169
+ 401: ErrorResponse;
5170
+ /**
5171
+ * Admin required
5172
+ */
5173
+ 403: ErrorResponse;
5174
+ };
5175
+
5176
+ export type CreateProviderError = CreateProviderErrors[keyof CreateProviderErrors];
5177
+
5178
+ export type CreateProviderResponses = {
5179
+ /**
5180
+ * Create CI OIDC provider
5181
+ */
5182
+ 200: CiOidcProviderResponse;
5183
+ };
5184
+
5185
+ export type CreateProviderResponse = CreateProviderResponses[keyof CreateProviderResponses];
5186
+
5187
+ export type DeleteProviderData = {
5188
+ body?: never;
5189
+ path: {
5190
+ /**
5191
+ * CI OIDC provider ID
5192
+ */
5193
+ id: string;
5194
+ };
5195
+ query?: never;
5196
+ url: '/api/v1/admin/ci-oidc/{id}';
5197
+ };
5198
+
5199
+ export type DeleteProviderErrors = {
5200
+ /**
5201
+ * Unauthorized
5202
+ */
5203
+ 401: ErrorResponse;
5204
+ /**
5205
+ * Admin required
5206
+ */
5207
+ 403: ErrorResponse;
5208
+ /**
5209
+ * Provider not found
5210
+ */
5211
+ 404: ErrorResponse;
5212
+ };
5213
+
5214
+ export type DeleteProviderError = DeleteProviderErrors[keyof DeleteProviderErrors];
5215
+
5216
+ export type DeleteProviderResponses = {
5217
+ /**
5218
+ * Delete CI OIDC provider
5219
+ */
5220
+ 200: unknown;
5221
+ };
5222
+
5223
+ export type GetProviderData = {
5224
+ body?: never;
5225
+ path: {
5226
+ /**
5227
+ * CI OIDC provider ID
5228
+ */
5229
+ id: string;
5230
+ };
5231
+ query?: never;
5232
+ url: '/api/v1/admin/ci-oidc/{id}';
5233
+ };
5234
+
5235
+ export type GetProviderErrors = {
5236
+ /**
5237
+ * Unauthorized
5238
+ */
5239
+ 401: ErrorResponse;
5240
+ /**
5241
+ * Admin required
5242
+ */
5243
+ 403: ErrorResponse;
5244
+ /**
5245
+ * Provider not found
5246
+ */
5247
+ 404: ErrorResponse;
5248
+ };
5249
+
5250
+ export type GetProviderError = GetProviderErrors[keyof GetProviderErrors];
5251
+
5252
+ export type GetProviderResponses = {
5253
+ /**
5254
+ * Get CI OIDC provider
5255
+ */
5256
+ 200: CiOidcProviderResponse;
5257
+ };
5258
+
5259
+ export type GetProviderResponse = GetProviderResponses[keyof GetProviderResponses];
5260
+
5261
+ export type UpdateProviderData = {
5262
+ body: UpdateCiOidcProviderRequest;
5263
+ path: {
5264
+ /**
5265
+ * CI OIDC provider ID
5266
+ */
5267
+ id: string;
5268
+ };
5269
+ query?: never;
5270
+ url: '/api/v1/admin/ci-oidc/{id}';
5271
+ };
5272
+
5273
+ export type UpdateProviderErrors = {
5274
+ /**
5275
+ * Invalid request
5276
+ */
5277
+ 400: ErrorResponse;
5278
+ /**
5279
+ * Unauthorized
5280
+ */
5281
+ 401: ErrorResponse;
5282
+ /**
5283
+ * Admin required
5284
+ */
5285
+ 403: ErrorResponse;
5286
+ /**
5287
+ * Provider not found
5288
+ */
5289
+ 404: ErrorResponse;
5290
+ };
5291
+
5292
+ export type UpdateProviderError = UpdateProviderErrors[keyof UpdateProviderErrors];
5293
+
5294
+ export type UpdateProviderResponses = {
5295
+ /**
5296
+ * Update CI OIDC provider
5297
+ */
5298
+ 200: CiOidcProviderResponse;
5299
+ };
5300
+
5301
+ export type UpdateProviderResponse = UpdateProviderResponses[keyof UpdateProviderResponses];
5302
+
5303
+ export type ListMappingsData = {
5304
+ body?: never;
5305
+ path: {
5306
+ /**
5307
+ * CI OIDC provider ID
5308
+ */
5309
+ id: string;
5310
+ };
5311
+ query?: never;
5312
+ url: '/api/v1/admin/ci-oidc/{id}/mappings';
5313
+ };
5314
+
5315
+ export type ListMappingsErrors = {
5316
+ /**
5317
+ * Unauthorized
5318
+ */
5319
+ 401: ErrorResponse;
5320
+ /**
5321
+ * Admin required
5322
+ */
5323
+ 403: ErrorResponse;
5324
+ /**
5325
+ * Provider not found
5326
+ */
5327
+ 404: ErrorResponse;
5328
+ };
5329
+
5330
+ export type ListMappingsError = ListMappingsErrors[keyof ListMappingsErrors];
5331
+
5332
+ export type ListMappingsResponses = {
5333
+ /**
5334
+ * List identity mappings for provider
5335
+ */
5336
+ 200: Array<CiOidcMappingResponse>;
5337
+ };
5338
+
5339
+ export type ListMappingsResponse = ListMappingsResponses[keyof ListMappingsResponses];
5340
+
5341
+ export type CreateMappingData = {
5342
+ body: CreateCiOidcMappingRequest;
5343
+ path: {
5344
+ /**
5345
+ * CI OIDC provider ID
5346
+ */
5347
+ id: string;
5348
+ };
5349
+ query?: never;
5350
+ url: '/api/v1/admin/ci-oidc/{id}/mappings';
5351
+ };
5352
+
5353
+ export type CreateMappingErrors = {
5354
+ /**
5355
+ * Invalid request
5356
+ */
5357
+ 400: ErrorResponse;
5358
+ /**
5359
+ * Unauthorized
5360
+ */
5361
+ 401: ErrorResponse;
5362
+ /**
5363
+ * Admin required
5364
+ */
5365
+ 403: ErrorResponse;
5366
+ /**
5367
+ * Provider not found
5368
+ */
5369
+ 404: ErrorResponse;
5370
+ };
5371
+
5372
+ export type CreateMappingError = CreateMappingErrors[keyof CreateMappingErrors];
5373
+
5374
+ export type CreateMappingResponses = {
5375
+ /**
5376
+ * Create identity mapping
5377
+ */
5378
+ 200: CiOidcMappingResponse;
5379
+ };
5380
+
5381
+ export type CreateMappingResponse = CreateMappingResponses[keyof CreateMappingResponses];
4709
5382
 
4710
- export type DeleteBackupData = {
5383
+ export type DeleteMappingData = {
4711
5384
  body?: never;
4712
5385
  path: {
4713
5386
  /**
4714
- * Backup ID
5387
+ * CI OIDC provider ID
4715
5388
  */
4716
5389
  id: string;
5390
+ /**
5391
+ * Identity mapping ID
5392
+ */
5393
+ mid: string;
4717
5394
  };
4718
5395
  query?: never;
4719
- url: '/api/v1/admin/backups/{id}';
5396
+ url: '/api/v1/admin/ci-oidc/{id}/mappings/{mid}';
4720
5397
  };
4721
5398
 
4722
- export type DeleteBackupErrors = {
5399
+ export type DeleteMappingErrors = {
4723
5400
  /**
4724
- * Backup not found
5401
+ * Unauthorized
4725
5402
  */
4726
- 404: unknown;
5403
+ 401: ErrorResponse;
4727
5404
  /**
4728
- * Internal server error
5405
+ * Admin required
4729
5406
  */
4730
- 500: unknown;
5407
+ 403: ErrorResponse;
5408
+ /**
5409
+ * Mapping not found
5410
+ */
5411
+ 404: ErrorResponse;
4731
5412
  };
4732
5413
 
4733
- export type DeleteBackupResponses = {
5414
+ export type DeleteMappingError = DeleteMappingErrors[keyof DeleteMappingErrors];
5415
+
5416
+ export type DeleteMappingResponses = {
4734
5417
  /**
4735
- * Backup deleted
5418
+ * Delete identity mapping
4736
5419
  */
4737
5420
  200: unknown;
4738
5421
  };
4739
5422
 
4740
- export type GetBackupData = {
5423
+ export type GetMappingData = {
4741
5424
  body?: never;
4742
5425
  path: {
4743
5426
  /**
4744
- * Backup ID
5427
+ * CI OIDC provider ID
4745
5428
  */
4746
5429
  id: string;
5430
+ /**
5431
+ * Identity mapping ID
5432
+ */
5433
+ mid: string;
4747
5434
  };
4748
5435
  query?: never;
4749
- url: '/api/v1/admin/backups/{id}';
5436
+ url: '/api/v1/admin/ci-oidc/{id}/mappings/{mid}';
4750
5437
  };
4751
5438
 
4752
- export type GetBackupErrors = {
5439
+ export type GetMappingErrors = {
4753
5440
  /**
4754
- * Backup not found
5441
+ * Unauthorized
4755
5442
  */
4756
- 404: unknown;
5443
+ 401: ErrorResponse;
4757
5444
  /**
4758
- * Internal server error
5445
+ * Admin required
4759
5446
  */
4760
- 500: unknown;
5447
+ 403: ErrorResponse;
5448
+ /**
5449
+ * Mapping not found
5450
+ */
5451
+ 404: ErrorResponse;
4761
5452
  };
4762
5453
 
4763
- export type GetBackupResponses = {
5454
+ export type GetMappingError = GetMappingErrors[keyof GetMappingErrors];
5455
+
5456
+ export type GetMappingResponses = {
4764
5457
  /**
4765
- * Backup details
5458
+ * Get identity mapping
4766
5459
  */
4767
- 200: BackupResponse;
5460
+ 200: CiOidcMappingResponse;
4768
5461
  };
4769
5462
 
4770
- export type GetBackupResponse = GetBackupResponses[keyof GetBackupResponses];
5463
+ export type GetMappingResponse = GetMappingResponses[keyof GetMappingResponses];
4771
5464
 
4772
- export type CancelBackupData = {
4773
- body?: never;
5465
+ export type UpdateMappingData = {
5466
+ body: UpdateCiOidcMappingRequest;
4774
5467
  path: {
4775
5468
  /**
4776
- * Backup ID
5469
+ * CI OIDC provider ID
4777
5470
  */
4778
5471
  id: string;
5472
+ /**
5473
+ * Identity mapping ID
5474
+ */
5475
+ mid: string;
4779
5476
  };
4780
5477
  query?: never;
4781
- url: '/api/v1/admin/backups/{id}/cancel';
5478
+ url: '/api/v1/admin/ci-oidc/{id}/mappings/{mid}';
4782
5479
  };
4783
5480
 
4784
- export type CancelBackupErrors = {
5481
+ export type UpdateMappingErrors = {
4785
5482
  /**
4786
- * Backup not found
5483
+ * Invalid request
4787
5484
  */
4788
- 404: unknown;
5485
+ 400: ErrorResponse;
4789
5486
  /**
4790
- * Backup is not in a cancellable state
5487
+ * Unauthorized
4791
5488
  */
4792
- 409: unknown;
5489
+ 401: ErrorResponse;
4793
5490
  /**
4794
- * Internal server error
5491
+ * Admin required
4795
5492
  */
4796
- 500: unknown;
5493
+ 403: ErrorResponse;
5494
+ /**
5495
+ * Mapping not found
5496
+ */
5497
+ 404: ErrorResponse;
4797
5498
  };
4798
5499
 
4799
- export type CancelBackupResponses = {
5500
+ export type UpdateMappingError = UpdateMappingErrors[keyof UpdateMappingErrors];
5501
+
5502
+ export type UpdateMappingResponses = {
4800
5503
  /**
4801
- * Backup cancelled
5504
+ * Update identity mapping
4802
5505
  */
4803
- 200: unknown;
5506
+ 200: CiOidcMappingResponse;
4804
5507
  };
4805
5508
 
4806
- export type ExecuteBackupData = {
4807
- body?: never;
5509
+ export type UpdateMappingResponse = UpdateMappingResponses[keyof UpdateMappingResponses];
5510
+
5511
+ export type ToggleMappingData = {
5512
+ body: CiOidcToggleRequest;
4808
5513
  path: {
4809
5514
  /**
4810
- * Backup ID
5515
+ * CI OIDC provider ID
4811
5516
  */
4812
5517
  id: string;
5518
+ /**
5519
+ * Identity mapping ID
5520
+ */
5521
+ mid: string;
4813
5522
  };
4814
5523
  query?: never;
4815
- url: '/api/v1/admin/backups/{id}/execute';
5524
+ url: '/api/v1/admin/ci-oidc/{id}/mappings/{mid}/toggle';
4816
5525
  };
4817
5526
 
4818
- export type ExecuteBackupErrors = {
5527
+ export type ToggleMappingErrors = {
4819
5528
  /**
4820
- * Backup not found
5529
+ * Invalid request
4821
5530
  */
4822
- 404: unknown;
5531
+ 400: ErrorResponse;
4823
5532
  /**
4824
- * Internal server error
5533
+ * Unauthorized
4825
5534
  */
4826
- 500: unknown;
5535
+ 401: ErrorResponse;
5536
+ /**
5537
+ * Admin required
5538
+ */
5539
+ 403: ErrorResponse;
5540
+ /**
5541
+ * Mapping not found
5542
+ */
5543
+ 404: ErrorResponse;
4827
5544
  };
4828
5545
 
4829
- export type ExecuteBackupResponses = {
5546
+ export type ToggleMappingError = ToggleMappingErrors[keyof ToggleMappingErrors];
5547
+
5548
+ export type ToggleMappingResponses = {
4830
5549
  /**
4831
- * Backup executed
5550
+ * Toggle identity mapping
4832
5551
  */
4833
- 200: BackupResponse;
5552
+ 200: CiOidcMappingResponse;
4834
5553
  };
4835
5554
 
4836
- export type ExecuteBackupResponse = ExecuteBackupResponses[keyof ExecuteBackupResponses];
5555
+ export type ToggleMappingResponse = ToggleMappingResponses[keyof ToggleMappingResponses];
4837
5556
 
4838
- export type RestoreBackupData = {
4839
- body: RestoreRequest;
5557
+ export type ToggleProviderData = {
5558
+ body: CiOidcToggleRequest;
4840
5559
  path: {
4841
5560
  /**
4842
- * Backup ID
5561
+ * CI OIDC provider ID
4843
5562
  */
4844
5563
  id: string;
4845
5564
  };
4846
5565
  query?: never;
4847
- url: '/api/v1/admin/backups/{id}/restore';
5566
+ url: '/api/v1/admin/ci-oidc/{id}/toggle';
4848
5567
  };
4849
5568
 
4850
- export type RestoreBackupErrors = {
5569
+ export type ToggleProviderErrors = {
4851
5570
  /**
4852
- * Backup not found
5571
+ * Invalid request
4853
5572
  */
4854
- 404: unknown;
5573
+ 400: ErrorResponse;
4855
5574
  /**
4856
- * Internal server error
5575
+ * Unauthorized
4857
5576
  */
4858
- 500: unknown;
5577
+ 401: ErrorResponse;
5578
+ /**
5579
+ * Admin required
5580
+ */
5581
+ 403: ErrorResponse;
5582
+ /**
5583
+ * Provider not found
5584
+ */
5585
+ 404: ErrorResponse;
4859
5586
  };
4860
5587
 
4861
- export type RestoreBackupResponses = {
5588
+ export type ToggleProviderError = ToggleProviderErrors[keyof ToggleProviderErrors];
5589
+
5590
+ export type ToggleProviderResponses = {
4862
5591
  /**
4863
- * Backup restored
5592
+ * Toggle CI OIDC provider
4864
5593
  */
4865
- 200: RestoreResponse;
5594
+ 200: CiOidcProviderResponse;
4866
5595
  };
4867
5596
 
4868
- export type RestoreBackupResponse = RestoreBackupResponses[keyof RestoreBackupResponses];
5597
+ export type ToggleProviderResponse = ToggleProviderResponses[keyof ToggleProviderResponses];
4869
5598
 
4870
5599
  export type RunCleanupData = {
4871
5600
  body: CleanupRequest;
@@ -6502,6 +7231,35 @@ export type GetArtifactStatsResponses = {
6502
7231
 
6503
7232
  export type GetArtifactStatsResponse = GetArtifactStatsResponses[keyof GetArtifactStatsResponses];
6504
7233
 
7234
+ export type ExchangeCiTokenData = {
7235
+ body: CiTokenRequest;
7236
+ path?: never;
7237
+ query?: never;
7238
+ url: '/api/v1/auth/ci/token';
7239
+ };
7240
+
7241
+ export type ExchangeCiTokenErrors = {
7242
+ /**
7243
+ * Invalid CI token or provider configuration
7244
+ */
7245
+ 401: ErrorResponse;
7246
+ /**
7247
+ * CI OIDC provider not found
7248
+ */
7249
+ 404: ErrorResponse;
7250
+ };
7251
+
7252
+ export type ExchangeCiTokenError = ExchangeCiTokenErrors[keyof ExchangeCiTokenErrors];
7253
+
7254
+ export type ExchangeCiTokenResponses = {
7255
+ /**
7256
+ * CI token exchange successful
7257
+ */
7258
+ 200: CiTokenResponse;
7259
+ };
7260
+
7261
+ export type ExchangeCiTokenResponse = ExchangeCiTokenResponses[keyof ExchangeCiTokenResponses];
7262
+
6505
7263
  export type LoginData = {
6506
7264
  body: LoginRequest;
6507
7265
  path?: never;
@@ -6960,6 +7718,13 @@ export type ListBuildsData = {
6960
7718
  url: '/api/v1/builds';
6961
7719
  };
6962
7720
 
7721
+ export type ListBuildsErrors = {
7722
+ /**
7723
+ * Authentication required
7724
+ */
7725
+ 401: unknown;
7726
+ };
7727
+
6963
7728
  export type ListBuildsResponses = {
6964
7729
  /**
6965
7730
  * List of builds
@@ -7002,6 +7767,13 @@ export type GetBuildDiffData = {
7002
7767
  url: '/api/v1/builds/diff';
7003
7768
  };
7004
7769
 
7770
+ export type GetBuildDiffErrors = {
7771
+ /**
7772
+ * Authentication required
7773
+ */
7774
+ 401: unknown;
7775
+ };
7776
+
7005
7777
  export type GetBuildDiffResponses = {
7006
7778
  /**
7007
7779
  * Diff between two builds
@@ -7024,6 +7796,10 @@ export type GetBuildData = {
7024
7796
  };
7025
7797
 
7026
7798
  export type GetBuildErrors = {
7799
+ /**
7800
+ * Authentication required
7801
+ */
7802
+ 401: unknown;
7027
7803
  /**
7028
7804
  * Build not found
7029
7805
  */
@@ -11270,6 +12046,36 @@ export type UpdateRepositoryResponses = {
11270
12046
 
11271
12047
  export type UpdateRepositoryResponse = UpdateRepositoryResponses[keyof UpdateRepositoryResponses];
11272
12048
 
12049
+ export type GetRepoAgeGateData = {
12050
+ body?: never;
12051
+ path: {
12052
+ key: string;
12053
+ };
12054
+ query?: never;
12055
+ url: '/api/v1/repositories/{key}/age-gate';
12056
+ };
12057
+
12058
+ export type GetRepoAgeGateResponses = {
12059
+ 200: AgeGateConfigResponse;
12060
+ };
12061
+
12062
+ export type GetRepoAgeGateResponse = GetRepoAgeGateResponses[keyof GetRepoAgeGateResponses];
12063
+
12064
+ export type UpdateRepoAgeGateData = {
12065
+ body: UpdateAgeGateConfigRequest;
12066
+ path: {
12067
+ key: string;
12068
+ };
12069
+ query?: never;
12070
+ url: '/api/v1/repositories/{key}/age-gate';
12071
+ };
12072
+
12073
+ export type UpdateRepoAgeGateResponses = {
12074
+ 200: AgeGateConfigResponse;
12075
+ };
12076
+
12077
+ export type UpdateRepoAgeGateResponse = UpdateRepoAgeGateResponses[keyof UpdateRepoAgeGateResponses];
12078
+
11273
12079
  export type ListArtifactsData = {
11274
12080
  body?: never;
11275
12081
  path: {
@@ -14693,6 +15499,116 @@ export type CreateUserResponses = {
14693
15499
 
14694
15500
  export type CreateUserResponse2 = CreateUserResponses[keyof CreateUserResponses];
14695
15501
 
15502
+ export type GetCurrentUserRecordData = {
15503
+ body?: never;
15504
+ path?: never;
15505
+ query?: never;
15506
+ url: '/api/v1/users/me';
15507
+ };
15508
+
15509
+ export type GetCurrentUserRecordErrors = {
15510
+ /**
15511
+ * User not found
15512
+ */
15513
+ 404: unknown;
15514
+ };
15515
+
15516
+ export type GetCurrentUserRecordResponses = {
15517
+ /**
15518
+ * The authenticated caller's user record
15519
+ */
15520
+ 200: AdminUserResponse;
15521
+ };
15522
+
15523
+ export type GetCurrentUserRecordResponse = GetCurrentUserRecordResponses[keyof GetCurrentUserRecordResponses];
15524
+
15525
+ export type ChangeCurrentUserPasswordData = {
15526
+ body: ChangePasswordRequest;
15527
+ path?: never;
15528
+ query?: never;
15529
+ url: '/api/v1/users/me/password';
15530
+ };
15531
+
15532
+ export type ChangeCurrentUserPasswordErrors = {
15533
+ /**
15534
+ * Current password is incorrect
15535
+ */
15536
+ 401: unknown;
15537
+ /**
15538
+ * User not found
15539
+ */
15540
+ 404: unknown;
15541
+ /**
15542
+ * Validation error
15543
+ */
15544
+ 422: unknown;
15545
+ };
15546
+
15547
+ export type ChangeCurrentUserPasswordResponses = {
15548
+ /**
15549
+ * Password changed successfully
15550
+ */
15551
+ 200: unknown;
15552
+ };
15553
+
15554
+ export type ListCurrentUserTokensData = {
15555
+ body?: never;
15556
+ path?: never;
15557
+ query?: never;
15558
+ url: '/api/v1/users/me/tokens';
15559
+ };
15560
+
15561
+ export type ListCurrentUserTokensResponses = {
15562
+ /**
15563
+ * List of the caller's API tokens
15564
+ */
15565
+ 200: ApiTokenListResponse;
15566
+ };
15567
+
15568
+ export type ListCurrentUserTokensResponse = ListCurrentUserTokensResponses[keyof ListCurrentUserTokensResponses];
15569
+
15570
+ export type CreateCurrentUserApiTokenData = {
15571
+ body: CreateApiTokenRequest;
15572
+ path?: never;
15573
+ query?: never;
15574
+ url: '/api/v1/users/me/tokens';
15575
+ };
15576
+
15577
+ export type CreateCurrentUserApiTokenErrors = {
15578
+ /**
15579
+ * Requested scopes require administrator privileges
15580
+ */
15581
+ 403: unknown;
15582
+ };
15583
+
15584
+ export type CreateCurrentUserApiTokenResponses = {
15585
+ /**
15586
+ * API token created successfully
15587
+ */
15588
+ 200: ApiTokenCreatedResponse;
15589
+ };
15590
+
15591
+ export type CreateCurrentUserApiTokenResponse = CreateCurrentUserApiTokenResponses[keyof CreateCurrentUserApiTokenResponses];
15592
+
15593
+ export type RevokeCurrentUserApiTokenData = {
15594
+ body?: never;
15595
+ path: {
15596
+ /**
15597
+ * API token ID
15598
+ */
15599
+ token_id: string;
15600
+ };
15601
+ query?: never;
15602
+ url: '/api/v1/users/me/tokens/{token_id}';
15603
+ };
15604
+
15605
+ export type RevokeCurrentUserApiTokenResponses = {
15606
+ /**
15607
+ * API token revoked successfully
15608
+ */
15609
+ 200: unknown;
15610
+ };
15611
+
14696
15612
  export type DeleteUserData = {
14697
15613
  body?: never;
14698
15614
  path: {