@artifact-keeper/sdk 1.5.7 → 1.6.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/package.json +1 -1
- package/src/index.ts +2 -2
- package/src/sdk.gen.ts +167 -3
- package/src/types.gen.ts +1114 -15
package/src/types.gen.ts
CHANGED
|
@@ -4,6 +4,50 @@ export type ClientOptions = {
|
|
|
4
4
|
baseUrl: `${string}://${string}` | (string & {});
|
|
5
5
|
};
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* One principal that can read an affected artifact but has not downloaded it.
|
|
9
|
+
*/
|
|
10
|
+
export type AccessibleUser = {
|
|
11
|
+
/**
|
|
12
|
+
* Always `has-access` for this endpoint (accessible minus downloaded).
|
|
13
|
+
*/
|
|
14
|
+
reason: string;
|
|
15
|
+
user_id: string;
|
|
16
|
+
username: string;
|
|
17
|
+
/**
|
|
18
|
+
* How access is granted: `admin` (global), `permission` (fine-grained
|
|
19
|
+
* direct **or** group grant, repo or owning project), or `role`
|
|
20
|
+
* (role_assignment only). Direct and group grants both surface as
|
|
21
|
+
* `permission` because they share one read fragment.
|
|
22
|
+
*/
|
|
23
|
+
via: string;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Full accessible-but-not-downloaded report for a CVE or artifact, scoped to
|
|
28
|
+
* one restricted repository.
|
|
29
|
+
*/
|
|
30
|
+
export type AccessibleUsersResponse = {
|
|
31
|
+
/**
|
|
32
|
+
* The page of accessible-but-not-downloaded principals. Empty when
|
|
33
|
+
* `exposure != "enumerable"`.
|
|
34
|
+
*/
|
|
35
|
+
accessible_not_downloaded: Array<AccessibleUser>;
|
|
36
|
+
/**
|
|
37
|
+
* `enumerable` | `everyone` | `effectively-everyone`.
|
|
38
|
+
*/
|
|
39
|
+
exposure: string;
|
|
40
|
+
page: number;
|
|
41
|
+
per_page: number;
|
|
42
|
+
repository: RepoExposure;
|
|
43
|
+
target: BlastRadiusTargetInfo;
|
|
44
|
+
/**
|
|
45
|
+
* Total accessible-not-downloaded principals (the pagination total).
|
|
46
|
+
* `null` for `public` repos (never enumerated).
|
|
47
|
+
*/
|
|
48
|
+
total?: number | null;
|
|
49
|
+
};
|
|
50
|
+
|
|
7
51
|
export type AcknowledgeRequest = {
|
|
8
52
|
reason: string;
|
|
9
53
|
};
|
|
@@ -28,6 +72,19 @@ export type AddPeerLabelRequest = {
|
|
|
28
72
|
value?: string;
|
|
29
73
|
};
|
|
30
74
|
|
|
75
|
+
export type AddProjectMemberRequest = {
|
|
76
|
+
/**
|
|
77
|
+
* Actions granted on every repository in the project (e.g. ["read"],
|
|
78
|
+
* ["read", "write"]).
|
|
79
|
+
*/
|
|
80
|
+
actions: Array<string>;
|
|
81
|
+
principal_id: string;
|
|
82
|
+
/**
|
|
83
|
+
* "user" or "group".
|
|
84
|
+
*/
|
|
85
|
+
principal_type: string;
|
|
86
|
+
};
|
|
87
|
+
|
|
31
88
|
export type AddVirtualMemberRequest = {
|
|
32
89
|
member_key: string;
|
|
33
90
|
priority?: number | null;
|
|
@@ -1153,6 +1210,16 @@ export type CreatePolicyRequest = {
|
|
|
1153
1210
|
require_signature?: boolean;
|
|
1154
1211
|
};
|
|
1155
1212
|
|
|
1213
|
+
export type CreateProjectRequest = {
|
|
1214
|
+
description?: string | null;
|
|
1215
|
+
key: string;
|
|
1216
|
+
name: string;
|
|
1217
|
+
/**
|
|
1218
|
+
* P1: stored only, NOT enforced (quota enforcement is P3).
|
|
1219
|
+
*/
|
|
1220
|
+
quota_bytes?: number | null;
|
|
1221
|
+
};
|
|
1222
|
+
|
|
1156
1223
|
/**
|
|
1157
1224
|
* Request to create an access token scoped to a repository.
|
|
1158
1225
|
*/
|
|
@@ -1198,6 +1265,32 @@ export type CreateRepositoryRequest = {
|
|
|
1198
1265
|
* `allow_anonymous_access` takes precedence.
|
|
1199
1266
|
*/
|
|
1200
1267
|
allow_anonymous_access?: boolean | null;
|
|
1268
|
+
/**
|
|
1269
|
+
* Custom Description field for Debian/APT Release files.
|
|
1270
|
+
* Stored in `repository_config` under `apt_description`.
|
|
1271
|
+
*/
|
|
1272
|
+
apt_description?: string | null;
|
|
1273
|
+
/**
|
|
1274
|
+
* Custom Label field for Debian/APT Release files.
|
|
1275
|
+
* Stored in `repository_config` under `apt_label`.
|
|
1276
|
+
*/
|
|
1277
|
+
apt_label?: string | null;
|
|
1278
|
+
/**
|
|
1279
|
+
* Custom Origin field for Debian/APT Release files.
|
|
1280
|
+
* Stored in `repository_config` under `apt_origin`.
|
|
1281
|
+
*/
|
|
1282
|
+
apt_origin?: string | null;
|
|
1283
|
+
/**
|
|
1284
|
+
* Custom Version field for Debian/APT Release files.
|
|
1285
|
+
* Stored in `repository_config` under `apt_release_version`.
|
|
1286
|
+
*/
|
|
1287
|
+
apt_release_version?: string | null;
|
|
1288
|
+
/**
|
|
1289
|
+
* Custom User-Agent sent on outbound HTTP requests to the upstream for
|
|
1290
|
+
* this repository. Only valid for remote repositories. Max 256 characters.
|
|
1291
|
+
*/
|
|
1292
|
+
custom_user_agent?: string | null;
|
|
1293
|
+
debian?: null | DebianRepositoryConfig;
|
|
1201
1294
|
description?: string | null;
|
|
1202
1295
|
format: string;
|
|
1203
1296
|
/**
|
|
@@ -1219,6 +1312,31 @@ export type CreateRepositoryRequest = {
|
|
|
1219
1312
|
*/
|
|
1220
1313
|
member_repos?: Array<CreateVirtualMemberInput> | null;
|
|
1221
1314
|
name: string;
|
|
1315
|
+
/**
|
|
1316
|
+
* Whether unscoped npm package names may resolve through this npm Remote
|
|
1317
|
+
* repository (#2424). Stored under `npm_allow_unscoped`.
|
|
1318
|
+
*/
|
|
1319
|
+
npm_allow_unscoped?: boolean | null;
|
|
1320
|
+
/**
|
|
1321
|
+
* Allowed npm full-name glob patterns (`*`/`?`) for this npm Remote
|
|
1322
|
+
* repository (#2424). Additive to `npm_allowed_scopes`; stored under
|
|
1323
|
+
* `npm_allowed_name_patterns`. A name is allowed if its scope is allowed
|
|
1324
|
+
* OR any glob matches (e.g. `@acme*`, `internal-*`).
|
|
1325
|
+
*/
|
|
1326
|
+
npm_allowed_name_patterns?: Array<string> | null;
|
|
1327
|
+
/**
|
|
1328
|
+
* Allowed npm `@scope` literals for this npm Remote repository (#2424).
|
|
1329
|
+
* Only meaningful for npm-format Remote repositories; validated and stored
|
|
1330
|
+
* in `repository_config` under `npm_allowed_scopes`. Omit to leave the
|
|
1331
|
+
* repository unrestricted by scope.
|
|
1332
|
+
*/
|
|
1333
|
+
npm_allowed_scopes?: Array<string> | null;
|
|
1334
|
+
/**
|
|
1335
|
+
* Optional project to assign this repository to (#2472). Grants on the
|
|
1336
|
+
* project (permissions with `target_type = 'project'`) are inherited by
|
|
1337
|
+
* the repository. Omit to leave the repository unassigned.
|
|
1338
|
+
*/
|
|
1339
|
+
project_id?: string | null;
|
|
1222
1340
|
/**
|
|
1223
1341
|
* When true, direct user uploads to this repository are rejected:
|
|
1224
1342
|
* artifacts must arrive via the promotion path. Admin-only to set.
|
|
@@ -1246,6 +1364,16 @@ export type CreateRepositoryRequest = {
|
|
|
1246
1364
|
* Non-admin users may only use the default backend.
|
|
1247
1365
|
*/
|
|
1248
1366
|
storage_backend?: string | null;
|
|
1367
|
+
/**
|
|
1368
|
+
* ASCII-armored OpenPGP *public* key trusted to sign this RPM curation
|
|
1369
|
+
* remote's `repodata/repomd.xml` (#2568, RPM curation Phase 3). When set,
|
|
1370
|
+
* the curation sync fetches `repomd.xml.asc` and verifies the detached
|
|
1371
|
+
* signature before ingesting upstream metadata (#2567 reads this column).
|
|
1372
|
+
* Must be a PUBLIC key block; a private-key block is rejected. Write-only:
|
|
1373
|
+
* the response exposes only the boolean `has_trusted_gpg_key`, never the
|
|
1374
|
+
* key material.
|
|
1375
|
+
*/
|
|
1376
|
+
trusted_gpg_key?: string | null;
|
|
1249
1377
|
/**
|
|
1250
1378
|
* Upstream auth type: "basic" or "bearer". Only valid for remote repos.
|
|
1251
1379
|
*/
|
|
@@ -1289,6 +1417,12 @@ export type CreateSamlConfigRequest = {
|
|
|
1289
1417
|
certificate: string;
|
|
1290
1418
|
entity_id: string;
|
|
1291
1419
|
is_enabled?: boolean | null;
|
|
1420
|
+
/**
|
|
1421
|
+
* Opt-in flag (see migration 157, #2333): when true, SAML assertion
|
|
1422
|
+
* group values are reflected as Artifact Keeper group memberships.
|
|
1423
|
+
* Defaults to false.
|
|
1424
|
+
*/
|
|
1425
|
+
map_groups_to_groups?: boolean | null;
|
|
1292
1426
|
name: string;
|
|
1293
1427
|
name_id_format?: string | null;
|
|
1294
1428
|
require_signed_assertions?: boolean | null;
|
|
@@ -1666,6 +1800,102 @@ export type DbPoolStats = {
|
|
|
1666
1800
|
size: number;
|
|
1667
1801
|
};
|
|
1668
1802
|
|
|
1803
|
+
/**
|
|
1804
|
+
* Partial-update patch for [`DebianRepositoryConfig`]. Fields left absent are
|
|
1805
|
+
* preserved; provided fields (including an explicit empty list) replace the
|
|
1806
|
+
* stored value. Applied on top of the currently stored config, or on top of
|
|
1807
|
+
* the default when none exists yet.
|
|
1808
|
+
*/
|
|
1809
|
+
export type DebianConfigPatch = {
|
|
1810
|
+
architectures?: Array<string> | null;
|
|
1811
|
+
components?: Array<string> | null;
|
|
1812
|
+
distribution_paths?: Array<string> | null;
|
|
1813
|
+
flat_repository?: boolean | null;
|
|
1814
|
+
include_source_packages?: boolean | null;
|
|
1815
|
+
metadata_strategy?: null | DebianMetadataStrategy;
|
|
1816
|
+
package_fetch_strategy?: null | DebianPackageFetchStrategy;
|
|
1817
|
+
package_queries?: Array<string> | null;
|
|
1818
|
+
upstream_gpg_key_id?: string | null;
|
|
1819
|
+
verify_upstream_metadata?: boolean | null;
|
|
1820
|
+
};
|
|
1821
|
+
|
|
1822
|
+
/**
|
|
1823
|
+
* How metadata (`Packages`/`Release`) is produced for a Debian remote.
|
|
1824
|
+
*
|
|
1825
|
+
* Only [`DebianMetadataStrategy::UpstreamPassthrough`] is implemented in
|
|
1826
|
+
* 1.6.0; the other variants are reserved for P3 (filtered generation) / P4
|
|
1827
|
+
* (local re-signing) and are rejected with 422 until then. The enum lands now
|
|
1828
|
+
* so those phases can flip it on without a schema/config-shape change.
|
|
1829
|
+
*/
|
|
1830
|
+
export type DebianMetadataStrategy = 'upstream_passthrough' | 'filter_and_generate' | 'filter_generate_and_sign' | 'hosted_generate';
|
|
1831
|
+
|
|
1832
|
+
/**
|
|
1833
|
+
* How package bodies are fetched for a Debian remote.
|
|
1834
|
+
*
|
|
1835
|
+
* Only [`DebianPackageFetchStrategy::UpstreamPassthrough`] is implemented in
|
|
1836
|
+
* 1.6.0.
|
|
1837
|
+
*/
|
|
1838
|
+
export type DebianPackageFetchStrategy = 'upstream_passthrough' | 'eager';
|
|
1839
|
+
|
|
1840
|
+
/**
|
|
1841
|
+
* P2 Debian remote proxy filter config (dist/component/arch allowlists).
|
|
1842
|
+
*
|
|
1843
|
+
* Semantics for each allowlist: an empty list OR a list containing `"*"`
|
|
1844
|
+
* selects everything (today's full-proxy behaviour); otherwise only exact
|
|
1845
|
+
* matches are selected. Architecture-independent (`all`) packages are always
|
|
1846
|
+
* permitted regardless of the `architectures` allowlist.
|
|
1847
|
+
*/
|
|
1848
|
+
export type DebianRepositoryConfig = {
|
|
1849
|
+
/**
|
|
1850
|
+
* Architectures (e.g. `amd64`, `arm64`) to proxy. Empty/`["*"]` = all.
|
|
1851
|
+
* `all` (arch-independent) is always permitted.
|
|
1852
|
+
*/
|
|
1853
|
+
architectures?: Array<string>;
|
|
1854
|
+
/**
|
|
1855
|
+
* Components (e.g. `main`, `contrib`, `non-free`) to proxy. Empty/`["*"]` = all.
|
|
1856
|
+
*/
|
|
1857
|
+
components?: Array<string>;
|
|
1858
|
+
/**
|
|
1859
|
+
* Distributions (a.k.a. suites/codenames, e.g. `bookworm`) to proxy.
|
|
1860
|
+
* Empty or `["*"]` = all.
|
|
1861
|
+
*/
|
|
1862
|
+
distribution_paths?: Array<string>;
|
|
1863
|
+
/**
|
|
1864
|
+
* Flat (non-`dists/`) repository layout flag. Accepted but does NOT weaken
|
|
1865
|
+
* P1's flat/redirect abuse posture in passthrough.
|
|
1866
|
+
*/
|
|
1867
|
+
flat_repository?: boolean;
|
|
1868
|
+
/**
|
|
1869
|
+
* Whether source packages (`Sources`, `.dsc`) are included. Advisory in
|
|
1870
|
+
* passthrough (upstream metadata is unchanged); honored under P3.
|
|
1871
|
+
*/
|
|
1872
|
+
include_source_packages?: boolean;
|
|
1873
|
+
/**
|
|
1874
|
+
* Metadata production strategy. Only `upstream_passthrough` in 1.6.0.
|
|
1875
|
+
*/
|
|
1876
|
+
metadata_strategy?: DebianMetadataStrategy;
|
|
1877
|
+
/**
|
|
1878
|
+
* Package-body fetch strategy. Only `upstream_passthrough` in 1.6.0.
|
|
1879
|
+
*/
|
|
1880
|
+
package_fetch_strategy?: DebianPackageFetchStrategy;
|
|
1881
|
+
/**
|
|
1882
|
+
* Package-name-level queries. NOT honored in passthrough (that needs P3);
|
|
1883
|
+
* a non-empty value here with `upstream_passthrough` is rejected with 422
|
|
1884
|
+
* rather than silently advertising content the proxy would then block.
|
|
1885
|
+
*/
|
|
1886
|
+
package_queries?: Array<string>;
|
|
1887
|
+
/**
|
|
1888
|
+
* Upstream GPG key id used to verify upstream metadata (reserved for P4).
|
|
1889
|
+
*/
|
|
1890
|
+
upstream_gpg_key_id?: string | null;
|
|
1891
|
+
/**
|
|
1892
|
+
* Whether to verify the upstream signed `Release` before serving. In P2 the
|
|
1893
|
+
* P1 integrity gate already enforces index/Release consistency; this flag
|
|
1894
|
+
* is reserved for P4 trust-anchor verification.
|
|
1895
|
+
*/
|
|
1896
|
+
verify_upstream_metadata?: boolean;
|
|
1897
|
+
};
|
|
1898
|
+
|
|
1669
1899
|
export type DeliveryListResponse = {
|
|
1670
1900
|
items: Array<DeliveryResponse>;
|
|
1671
1901
|
total: number;
|
|
@@ -2562,6 +2792,10 @@ export type ListRepositoriesQuery = {
|
|
|
2562
2792
|
format?: string | null;
|
|
2563
2793
|
page?: number | null;
|
|
2564
2794
|
per_page?: number | null;
|
|
2795
|
+
/**
|
|
2796
|
+
* Filter the listing to repositories assigned to this project (#2472).
|
|
2797
|
+
*/
|
|
2798
|
+
project?: string | null;
|
|
2565
2799
|
q?: string | null;
|
|
2566
2800
|
type?: string | null;
|
|
2567
2801
|
};
|
|
@@ -2825,26 +3059,33 @@ export type NpmScopePolicyResponse = {
|
|
|
2825
3059
|
* layers before any garbage-collection mechanism is enabled.
|
|
2826
3060
|
*
|
|
2827
3061
|
* It deliberately does NOT attempt to classify which blobs are
|
|
2828
|
-
* "reclaimable orphans": that
|
|
2829
|
-
*
|
|
2830
|
-
* digest)` orphan heuristic would mis-handle
|
|
2831
|
-
* (
|
|
2832
|
-
*
|
|
3062
|
+
* "reclaimable orphans": that is the blob GC's job (mark-and-sweep over
|
|
3063
|
+
* `manifest_blob_refs`, per [`BLOB_PROTECTED_BY_REFS_SQL`]). A naive
|
|
3064
|
+
* per-`(repository_id, digest)` orphan heuristic would mis-handle shared
|
|
3065
|
+
* backends (anything other than `filesystem`), where all referencing
|
|
3066
|
+
* repos share ONE physical object per digest per backend, and report
|
|
3067
|
+
* in-use blobs as reclaimable; on `filesystem` each repository keeps an
|
|
3068
|
+
* independent copy under its own `storage_path`. The numbers here are
|
|
3069
|
+
* exact aggregates only.
|
|
2833
3070
|
*/
|
|
2834
3071
|
export type OciBlobFootprintReport = {
|
|
2835
3072
|
/**
|
|
2836
|
-
* Distinct digests
|
|
2837
|
-
* by a future GC sweep once
|
|
3073
|
+
* Distinct digests with at least one physical copy older than
|
|
3074
|
+
* `grace_hours` (eligible to be *considered* by a future GC sweep once
|
|
3075
|
+
* a reference table exists). Reporting only.
|
|
2838
3076
|
*/
|
|
2839
3077
|
aged_distinct_digests: number;
|
|
2840
3078
|
/**
|
|
2841
|
-
* Physical bytes (
|
|
3079
|
+
* Physical bytes (same physical-object grouping as `physical_bytes`)
|
|
3080
|
+
* older than `grace_hours`.
|
|
2842
3081
|
*/
|
|
2843
3082
|
aged_physical_bytes: number;
|
|
2844
3083
|
/**
|
|
2845
3084
|
* Number of distinct blob digests (content-addressed identities). When
|
|
2846
3085
|
* this is smaller than `total_blob_rows`, the difference is cross-repo
|
|
2847
|
-
*
|
|
3086
|
+
* sharing of a content identity (one physical object shared by all
|
|
3087
|
+
* referencing repos on shared backends; an independent copy per
|
|
3088
|
+
* repository on `filesystem`).
|
|
2848
3089
|
*/
|
|
2849
3090
|
distinct_digests: number;
|
|
2850
3091
|
/**
|
|
@@ -2861,8 +3102,13 @@ export type OciBlobFootprintReport = {
|
|
|
2861
3102
|
*/
|
|
2862
3103
|
per_repository: Array<OciBlobRepoFootprint>;
|
|
2863
3104
|
/**
|
|
2864
|
-
* Sum of `size_bytes` counting each distinct
|
|
2865
|
-
*
|
|
3105
|
+
* Sum of `size_bytes` counting each distinct **physical storage
|
|
3106
|
+
* object** exactly once, per the ownership model of
|
|
3107
|
+
* [`BLOB_PROTECTED_BY_REFS_SQL`]: on shared backends (anything other
|
|
3108
|
+
* than `filesystem`) a digest is one object per backend; on
|
|
3109
|
+
* `filesystem` each repository stores its own copy under its
|
|
3110
|
+
* `storage_path`, so the same digest in two filesystem repositories
|
|
3111
|
+
* counts twice.
|
|
2866
3112
|
*/
|
|
2867
3113
|
physical_bytes: number;
|
|
2868
3114
|
/**
|
|
@@ -2880,10 +3126,13 @@ export type OciBlobRepoFootprint = {
|
|
|
2880
3126
|
*/
|
|
2881
3127
|
blob_rows: number;
|
|
2882
3128
|
/**
|
|
2883
|
-
* Sum of `oci_blobs.size_bytes` for this repository's rows.
|
|
2884
|
-
*
|
|
3129
|
+
* Sum of `oci_blobs.size_bytes` for this repository's rows. On shared
|
|
3130
|
+
* backends (anything other than `filesystem`) blobs are deduplicated
|
|
3131
|
+
* across repos — one physical object per digest per backend — so the
|
|
2885
3132
|
* same physical bytes can be counted under more than one repository
|
|
2886
|
-
* here
|
|
3133
|
+
* here. On `filesystem` each repository stores its own independent
|
|
3134
|
+
* copy under its `storage_path`, so its rows are that repo's real
|
|
3135
|
+
* bytes. See [`OciBlobFootprintReport::physical_bytes`] for the
|
|
2887
3136
|
* dedup-aware total.
|
|
2888
3137
|
*/
|
|
2889
3138
|
logical_bytes: number;
|
|
@@ -2962,6 +3211,23 @@ export type PackageRow = {
|
|
|
2962
3211
|
version: string;
|
|
2963
3212
|
};
|
|
2964
3213
|
|
|
3214
|
+
export type PackageSearchQuery = {
|
|
3215
|
+
/**
|
|
3216
|
+
* Exact architecture filter (e.g. `x86_64`, `noarch`).
|
|
3217
|
+
*/
|
|
3218
|
+
arch?: string | null;
|
|
3219
|
+
limit?: number;
|
|
3220
|
+
offset?: number;
|
|
3221
|
+
/**
|
|
3222
|
+
* Case-insensitive substring match on the package name.
|
|
3223
|
+
*/
|
|
3224
|
+
q?: string | null;
|
|
3225
|
+
/**
|
|
3226
|
+
* Curation status filter (e.g. `approved`, `pending`, `blocked`, `review`).
|
|
3227
|
+
*/
|
|
3228
|
+
status?: string | null;
|
|
3229
|
+
};
|
|
3230
|
+
|
|
2965
3231
|
export type PackageVersionResponse = {
|
|
2966
3232
|
checksum_sha256: string;
|
|
2967
3233
|
created_at: string;
|
|
@@ -3295,6 +3561,43 @@ export type ProbeBody = {
|
|
|
3295
3561
|
target_peer_id: string;
|
|
3296
3562
|
};
|
|
3297
3563
|
|
|
3564
|
+
/**
|
|
3565
|
+
* Project entity.
|
|
3566
|
+
*/
|
|
3567
|
+
export type Project = {
|
|
3568
|
+
created_at: string;
|
|
3569
|
+
description?: string | null;
|
|
3570
|
+
id: string;
|
|
3571
|
+
/**
|
|
3572
|
+
* Unique, URL-safe project key (e.g. "payments").
|
|
3573
|
+
*/
|
|
3574
|
+
key: string;
|
|
3575
|
+
name: string;
|
|
3576
|
+
/**
|
|
3577
|
+
* Storage quota in bytes. P1: stored only, NOT enforced (quotas = P3).
|
|
3578
|
+
*/
|
|
3579
|
+
quota_bytes?: number | null;
|
|
3580
|
+
updated_at: string;
|
|
3581
|
+
};
|
|
3582
|
+
|
|
3583
|
+
export type ProjectListResponse = {
|
|
3584
|
+
items: Array<Project>;
|
|
3585
|
+
};
|
|
3586
|
+
|
|
3587
|
+
export type ProjectMemberListResponse = {
|
|
3588
|
+
items: Array<ProjectMemberRow>;
|
|
3589
|
+
};
|
|
3590
|
+
|
|
3591
|
+
/**
|
|
3592
|
+
* One membership grant on a project: a `permissions` row with
|
|
3593
|
+
* `target_type = 'project'`.
|
|
3594
|
+
*/
|
|
3595
|
+
export type ProjectMemberRow = {
|
|
3596
|
+
actions: Array<string>;
|
|
3597
|
+
principal_id: string;
|
|
3598
|
+
principal_type: string;
|
|
3599
|
+
};
|
|
3600
|
+
|
|
3298
3601
|
export type PromoteArtifactRequest = {
|
|
3299
3602
|
notes?: string | null;
|
|
3300
3603
|
skip_policy_check?: boolean;
|
|
@@ -3505,6 +3808,24 @@ export type RemoteInstanceResponse = {
|
|
|
3505
3808
|
url: string;
|
|
3506
3809
|
};
|
|
3507
3810
|
|
|
3811
|
+
export type RemoveProjectMemberRequest = {
|
|
3812
|
+
principal_id: string;
|
|
3813
|
+
principal_type: string;
|
|
3814
|
+
};
|
|
3815
|
+
|
|
3816
|
+
/**
|
|
3817
|
+
* Repository exposure descriptor echoed in the response.
|
|
3818
|
+
*/
|
|
3819
|
+
export type RepoExposure = {
|
|
3820
|
+
/**
|
|
3821
|
+
* `public` | `restricted_acl` | `restricted_roles` — see
|
|
3822
|
+
* [`classify_access_scope`].
|
|
3823
|
+
*/
|
|
3824
|
+
access_scope: string;
|
|
3825
|
+
repository_id: string;
|
|
3826
|
+
repository_key: string;
|
|
3827
|
+
};
|
|
3828
|
+
|
|
3508
3829
|
export type RepoHealthResponse = {
|
|
3509
3830
|
artifacts_evaluated: number;
|
|
3510
3831
|
artifacts_failing: number;
|
|
@@ -3580,13 +3901,65 @@ export type RepositoryResponse = {
|
|
|
3580
3901
|
* the semantics are clear for remote (pull-through cache) repositories.
|
|
3581
3902
|
*/
|
|
3582
3903
|
allow_anonymous_access: boolean;
|
|
3904
|
+
/**
|
|
3905
|
+
* Custom Description field for Debian/APT Release files. Omitted from the
|
|
3906
|
+
* Release file when `None` or empty.
|
|
3907
|
+
*/
|
|
3908
|
+
apt_description?: string | null;
|
|
3909
|
+
/**
|
|
3910
|
+
* Custom Label field for Debian/APT Release files (default: "artifact-keeper").
|
|
3911
|
+
*/
|
|
3912
|
+
apt_label?: string | null;
|
|
3913
|
+
/**
|
|
3914
|
+
* Custom Origin field for Debian/APT Release files (default: "artifact-keeper").
|
|
3915
|
+
*/
|
|
3916
|
+
apt_origin?: string | null;
|
|
3917
|
+
/**
|
|
3918
|
+
* Custom Version field for Debian/APT Release files. Omitted from the
|
|
3919
|
+
* Release file when `None` or empty.
|
|
3920
|
+
*/
|
|
3921
|
+
apt_release_version?: string | null;
|
|
3583
3922
|
created_at: string;
|
|
3923
|
+
/**
|
|
3924
|
+
* Custom User-Agent used for outbound HTTP requests to the upstream,
|
|
3925
|
+
* read back from `repository_config`. `None` when unset.
|
|
3926
|
+
*/
|
|
3927
|
+
custom_user_agent?: string | null;
|
|
3928
|
+
debian?: null | DebianRepositoryConfig;
|
|
3584
3929
|
description?: string | null;
|
|
3585
3930
|
format: string;
|
|
3931
|
+
/**
|
|
3932
|
+
* Whether a trusted upstream OpenPGP public key is configured for RPM
|
|
3933
|
+
* curation signature verification (#2568). The key material itself is
|
|
3934
|
+
* never returned; this boolean is the only exposure. `false` for repos
|
|
3935
|
+
* with no key set. Populated by the single-repo handlers (create / get /
|
|
3936
|
+
* update) and the listing; `repo_to_response` alone defaults it to `false`
|
|
3937
|
+
* (it is db-less and cannot read the column).
|
|
3938
|
+
*/
|
|
3939
|
+
has_trusted_gpg_key: boolean;
|
|
3586
3940
|
id: string;
|
|
3587
3941
|
is_public: boolean;
|
|
3588
3942
|
key: string;
|
|
3589
3943
|
name: string;
|
|
3944
|
+
/**
|
|
3945
|
+
* Whether unscoped npm names may resolve through this npm Remote
|
|
3946
|
+
* repository (#2424). Omitted when unset.
|
|
3947
|
+
*/
|
|
3948
|
+
npm_allow_unscoped?: boolean | null;
|
|
3949
|
+
/**
|
|
3950
|
+
* Allowed npm full-name glob patterns (#2424), read back from
|
|
3951
|
+
* `repository_config`. Omitted for non-npm repositories or when unset.
|
|
3952
|
+
*/
|
|
3953
|
+
npm_allowed_name_patterns?: Array<string> | null;
|
|
3954
|
+
/**
|
|
3955
|
+
* Allowed npm `@scope` literals (#2424), read back from
|
|
3956
|
+
* `repository_config`. Omitted for non-npm repositories or when unset.
|
|
3957
|
+
*/
|
|
3958
|
+
npm_allowed_scopes?: Array<string> | null;
|
|
3959
|
+
/**
|
|
3960
|
+
* Project this repository is assigned to (#2472), if any.
|
|
3961
|
+
*/
|
|
3962
|
+
project_id?: string | null;
|
|
3590
3963
|
/**
|
|
3591
3964
|
* When true, direct user uploads are rejected; artifacts must be promoted.
|
|
3592
3965
|
*/
|
|
@@ -3657,6 +4030,83 @@ export type RepositoryStorageBreakdown = {
|
|
|
3657
4030
|
storage_bytes: number;
|
|
3658
4031
|
};
|
|
3659
4032
|
|
|
4033
|
+
/**
|
|
4034
|
+
* Deduplicated storage-accounting response for a single repository (#2056).
|
|
4035
|
+
*
|
|
4036
|
+
* All figures are read from the materialized `repository_storage_stats` cache
|
|
4037
|
+
* (refreshed on a schedule + post-GC), so this endpoint is an O(1) primary-key
|
|
4038
|
+
* lookup and never runs the heavy cross-repo aggregation. `computed_at` is the
|
|
4039
|
+
* freshness marker; it is `null` until the first refresh has run.
|
|
4040
|
+
*
|
|
4041
|
+
* Quota is unaffected: these numbers are accounting/visibility only and do NOT
|
|
4042
|
+
* change how the repository's storage quota is enforced (#2056 §7).
|
|
4043
|
+
*/
|
|
4044
|
+
export type RepositoryStorageStatsResponse = {
|
|
4045
|
+
/**
|
|
4046
|
+
* Distinct physical objects (dedup keys) this repository references.
|
|
4047
|
+
*/
|
|
4048
|
+
blob_count: number;
|
|
4049
|
+
/**
|
|
4050
|
+
* When these figures were last recomputed. `null` before the first refresh.
|
|
4051
|
+
*/
|
|
4052
|
+
computed_at?: string | null;
|
|
4053
|
+
/**
|
|
4054
|
+
* logical_bytes / physical_bytes (1.0 when nothing is stored). Restricted
|
|
4055
|
+
* on cloud backends — see [`physical_bytes`](Self::physical_bytes).
|
|
4056
|
+
*/
|
|
4057
|
+
dedup_ratio?: number | null;
|
|
4058
|
+
/**
|
|
4059
|
+
* `per_repo` (filesystem) or `instance` (cloud) — the backend semantics at
|
|
4060
|
+
* compute time.
|
|
4061
|
+
*/
|
|
4062
|
+
dedup_scope: string;
|
|
4063
|
+
/**
|
|
4064
|
+
* The instance-wide globally-distinct footprint (true disk usage). On
|
|
4065
|
+
* cloud backends the sum of per-repo `physical_bytes` OVER-counts shared
|
|
4066
|
+
* objects, so this is the authoritative instance total.
|
|
4067
|
+
*
|
|
4068
|
+
* **Admin-only:** this is a whole-instance aggregate that spans every
|
|
4069
|
+
* tenant, so it is only populated for admin callers. It is omitted from the
|
|
4070
|
+
* response entirely for repo-authorized non-admins and anonymous callers,
|
|
4071
|
+
* who see only this repository's own figures (#2559 review).
|
|
4072
|
+
*/
|
|
4073
|
+
instance_unique_bytes?: number | null;
|
|
4074
|
+
/**
|
|
4075
|
+
* Sum over every reference (per-row). Now includes OCI layer bytes, which
|
|
4076
|
+
* were previously omitted from all storage accounting.
|
|
4077
|
+
*/
|
|
4078
|
+
logical_bytes: number;
|
|
4079
|
+
/**
|
|
4080
|
+
* Deduplicated physical footprint within the dedup scope.
|
|
4081
|
+
*
|
|
4082
|
+
* **Restricted on cloud (instance-scope) backends:** on a shared-storage
|
|
4083
|
+
* backend `physical_bytes`, `unique_bytes`, `shared_bytes` and
|
|
4084
|
+
* `dedup_ratio` are all cross-tenant-derivable — `shared_bytes =
|
|
4085
|
+
* physical_bytes - unique_bytes` reveals whether this repo's blobs are also
|
|
4086
|
+
* stored by another tenant (a per-blob cross-tenant existence oracle,
|
|
4087
|
+
* #2560). The whole derivable set is therefore populated only for admins on
|
|
4088
|
+
* instance-scope backends, and omitted for repo-authorized non-admins /
|
|
4089
|
+
* anonymous callers. On `per_repo` (filesystem) backends there is no
|
|
4090
|
+
* cross-tenant sharing (`shared_bytes == 0` by construction), so all
|
|
4091
|
+
* figures are always present.
|
|
4092
|
+
*/
|
|
4093
|
+
physical_bytes?: number | null;
|
|
4094
|
+
repository_key: string;
|
|
4095
|
+
/**
|
|
4096
|
+
* physical_bytes - unique_bytes. Always 0 on filesystem backends (a shared
|
|
4097
|
+
* digest in two repos is two files). Restricted on cloud backends — see
|
|
4098
|
+
* [`physical_bytes`](Self::physical_bytes).
|
|
4099
|
+
*/
|
|
4100
|
+
shared_bytes?: number | null;
|
|
4101
|
+
/**
|
|
4102
|
+
* Physical bytes of objects referenced only by this repository.
|
|
4103
|
+
* Restricted on cloud backends — see [`physical_bytes`].
|
|
4104
|
+
*
|
|
4105
|
+
* [`physical_bytes`]: Self::physical_bytes
|
|
4106
|
+
*/
|
|
4107
|
+
unique_bytes?: number | null;
|
|
4108
|
+
};
|
|
4109
|
+
|
|
3660
4110
|
export type RescanForInventoryRequest = {
|
|
3661
4111
|
/**
|
|
3662
4112
|
* Maximum number of artifacts to enqueue in this call. Operators
|
|
@@ -3817,6 +4267,12 @@ export type SamlConfigResponse = {
|
|
|
3817
4267
|
has_certificate: boolean;
|
|
3818
4268
|
id: string;
|
|
3819
4269
|
is_enabled: boolean;
|
|
4270
|
+
/**
|
|
4271
|
+
* Opt-in flag (see migration 157, #2333): when true, SAML assertion
|
|
4272
|
+
* group values are reflected as Artifact Keeper group memberships,
|
|
4273
|
+
* mirroring the OIDC flag from #1094. Defaults to false.
|
|
4274
|
+
*/
|
|
4275
|
+
map_groups_to_groups: boolean;
|
|
3820
4276
|
name: string;
|
|
3821
4277
|
name_id_format: string;
|
|
3822
4278
|
require_signed_assertions: boolean;
|
|
@@ -3878,6 +4334,23 @@ export type ScanResponse = {
|
|
|
3878
4334
|
artifact_id: string;
|
|
3879
4335
|
artifact_name?: string | null;
|
|
3880
4336
|
artifact_version?: string | null;
|
|
4337
|
+
/**
|
|
4338
|
+
* #2471: number of `not_applicable` scanner rows folded into this row.
|
|
4339
|
+
* `Some(n)` marks a synthetic *summary* row that collapses `n` redundant
|
|
4340
|
+
* "this scanner does not apply" results (e.g. the image-family scanners
|
|
4341
|
+
* `filesystem`/`incus`/`openscap` all declining on a Docker image) into a
|
|
4342
|
+
* single muted "not applicable to this artifact" indication, so the UI
|
|
4343
|
+
* stops rendering N rows that read as N failures. `None` for every real
|
|
4344
|
+
* (non-collapsed) scan row. Omitted from the wire when `None`.
|
|
4345
|
+
*/
|
|
4346
|
+
collapsed_not_applicable_count?: number | null;
|
|
4347
|
+
/**
|
|
4348
|
+
* #2471: the individual `scan_type` values folded into a summary row,
|
|
4349
|
+
* sorted and de-duplicated (e.g. `["filesystem","incus","openscap"]`).
|
|
4350
|
+
* Present only on a synthetic summary row (alongside
|
|
4351
|
+
* `collapsed_not_applicable_count`); `None` / omitted otherwise.
|
|
4352
|
+
*/
|
|
4353
|
+
collapsed_scan_types?: Array<string> | null;
|
|
3881
4354
|
completed_at?: string | null;
|
|
3882
4355
|
created_at: string;
|
|
3883
4356
|
critical_count: number;
|
|
@@ -4086,6 +4559,22 @@ export type SetupStatusResponse = {
|
|
|
4086
4559
|
setup_required: boolean;
|
|
4087
4560
|
};
|
|
4088
4561
|
|
|
4562
|
+
/**
|
|
4563
|
+
* Response from a deliberate per-artifact signing action (#2535).
|
|
4564
|
+
*/
|
|
4565
|
+
export type SignArtifactResponse = {
|
|
4566
|
+
algorithm: string;
|
|
4567
|
+
artifact_id: string;
|
|
4568
|
+
/**
|
|
4569
|
+
* The active signing key that produced the attestation.
|
|
4570
|
+
*/
|
|
4571
|
+
key_id: string;
|
|
4572
|
+
/**
|
|
4573
|
+
* SHA-256 of the produced signature blob (the blob itself is not persisted).
|
|
4574
|
+
*/
|
|
4575
|
+
signature_sha256: string;
|
|
4576
|
+
};
|
|
4577
|
+
|
|
4089
4578
|
export type SigningConfigResponse = {
|
|
4090
4579
|
key?: null | SigningKeyPublic;
|
|
4091
4580
|
repository_id: string;
|
|
@@ -4330,6 +4819,23 @@ export type SyncTaskResponse = {
|
|
|
4330
4819
|
storage_key: string;
|
|
4331
4820
|
};
|
|
4332
4821
|
|
|
4822
|
+
export type SyncTriggerResponse = {
|
|
4823
|
+
/**
|
|
4824
|
+
* The repository key the sync was triggered for.
|
|
4825
|
+
*/
|
|
4826
|
+
repository: string;
|
|
4827
|
+
/**
|
|
4828
|
+
* Whether the sync pass completed without error. A false value with
|
|
4829
|
+
* `triggered = true` means the pass ran but an upstream fetch/verify step
|
|
4830
|
+
* failed for the repo (details are in the server logs, not this response).
|
|
4831
|
+
*/
|
|
4832
|
+
succeeded: boolean;
|
|
4833
|
+
/**
|
|
4834
|
+
* Always true when the trigger was accepted and a sync pass ran.
|
|
4835
|
+
*/
|
|
4836
|
+
triggered: boolean;
|
|
4837
|
+
};
|
|
4838
|
+
|
|
4333
4839
|
/**
|
|
4334
4840
|
* Runtime configuration values.
|
|
4335
4841
|
*
|
|
@@ -4790,6 +5296,12 @@ export type UpdatePolicyRequest = {
|
|
|
4790
5296
|
require_signature?: boolean | null;
|
|
4791
5297
|
};
|
|
4792
5298
|
|
|
5299
|
+
export type UpdateProjectRequest = {
|
|
5300
|
+
description?: string | null;
|
|
5301
|
+
name?: string | null;
|
|
5302
|
+
quota_bytes?: number | null;
|
|
5303
|
+
};
|
|
5304
|
+
|
|
4793
5305
|
export type UpdateRepositoryRequest = {
|
|
4794
5306
|
/**
|
|
4795
5307
|
* Alias for `is_public`. When set to true, anonymous users can download
|
|
@@ -4800,6 +5312,37 @@ export type UpdateRepositoryRequest = {
|
|
|
4800
5312
|
* `allow_anonymous_access` takes precedence.
|
|
4801
5313
|
*/
|
|
4802
5314
|
allow_anonymous_access?: boolean | null;
|
|
5315
|
+
/**
|
|
5316
|
+
* Custom Description field for Debian/APT Release files. Pass an empty
|
|
5317
|
+
* string to remove (omits the field entirely from the Release file).
|
|
5318
|
+
* Stored in `repository_config` under `apt_description`.
|
|
5319
|
+
*/
|
|
5320
|
+
apt_description?: string | null;
|
|
5321
|
+
/**
|
|
5322
|
+
* Custom Label field for Debian/APT Release files. Pass an empty string
|
|
5323
|
+
* to reset to the default ("artifact-keeper").
|
|
5324
|
+
* Stored in `repository_config` under `apt_label`.
|
|
5325
|
+
*/
|
|
5326
|
+
apt_label?: string | null;
|
|
5327
|
+
/**
|
|
5328
|
+
* Custom Origin field for Debian/APT Release files. Pass an empty string
|
|
5329
|
+
* to reset to the default ("artifact-keeper").
|
|
5330
|
+
* Stored in `repository_config` under `apt_origin`.
|
|
5331
|
+
*/
|
|
5332
|
+
apt_origin?: string | null;
|
|
5333
|
+
/**
|
|
5334
|
+
* Custom Version field for Debian/APT Release files. Pass an empty
|
|
5335
|
+
* string to remove (omits the field entirely from the Release file).
|
|
5336
|
+
* Stored in `repository_config` under `apt_release_version`.
|
|
5337
|
+
*/
|
|
5338
|
+
apt_release_version?: string | null;
|
|
5339
|
+
/**
|
|
5340
|
+
* Update the custom User-Agent for outbound HTTP requests to the upstream.
|
|
5341
|
+
* Only valid for remote repositories. Pass an empty string to remove.
|
|
5342
|
+
* Max 256 characters. Stored in `repository_config` under `custom_user_agent`.
|
|
5343
|
+
*/
|
|
5344
|
+
custom_user_agent?: string | null;
|
|
5345
|
+
debian?: null | DebianConfigPatch;
|
|
4803
5346
|
description?: string | null;
|
|
4804
5347
|
/**
|
|
4805
5348
|
* Update the Cargo index upstream URL (stored in `repository_config`).
|
|
@@ -4809,6 +5352,28 @@ export type UpdateRepositoryRequest = {
|
|
|
4809
5352
|
is_public?: boolean | null;
|
|
4810
5353
|
key?: string | null;
|
|
4811
5354
|
name?: string | null;
|
|
5355
|
+
/**
|
|
5356
|
+
* Update whether unscoped npm package names may resolve through this npm
|
|
5357
|
+
* Remote repository (#2424). Stored under `npm_allow_unscoped`.
|
|
5358
|
+
*/
|
|
5359
|
+
npm_allow_unscoped?: boolean | null;
|
|
5360
|
+
/**
|
|
5361
|
+
* Update the allowed npm full-name glob patterns for this npm Remote
|
|
5362
|
+
* repository (#2424). When provided, replaces the stored
|
|
5363
|
+
* `npm_allowed_name_patterns` list.
|
|
5364
|
+
*/
|
|
5365
|
+
npm_allowed_name_patterns?: Array<string> | null;
|
|
5366
|
+
/**
|
|
5367
|
+
* Update the allowed npm `@scope` literals for this npm Remote repository
|
|
5368
|
+
* (#2424). When provided, replaces the stored `npm_allowed_scopes` list.
|
|
5369
|
+
*/
|
|
5370
|
+
npm_allowed_scopes?: Array<string> | null;
|
|
5371
|
+
/**
|
|
5372
|
+
* Assign this repository to a project (#2472). P1 is set-only: omitting
|
|
5373
|
+
* the field leaves the assignment unchanged (unassignment ships with the
|
|
5374
|
+
* project-admin surface in P2).
|
|
5375
|
+
*/
|
|
5376
|
+
project_id?: string | null;
|
|
4812
5377
|
/**
|
|
4813
5378
|
* When provided, enables/disables the `promotion_only` policy for this
|
|
4814
5379
|
* repository (admin-only). When omitted, the flag is left unchanged.
|
|
@@ -4841,6 +5406,15 @@ export type UpdateRepositoryRequest = {
|
|
|
4841
5406
|
* Stored in `repository_config` under `release_repository_id`.
|
|
4842
5407
|
*/
|
|
4843
5408
|
release_repository_key?: string | null;
|
|
5409
|
+
/**
|
|
5410
|
+
* Update the trusted upstream OpenPGP public key for RPM curation (#2568).
|
|
5411
|
+
* Three-way semantics via `Option<Option<String>>`: omit the field to
|
|
5412
|
+
* leave the stored key unchanged; send `null` to clear it (revert to
|
|
5413
|
+
* "unverified upstream"); send an ASCII-armored PUBLIC key block to set
|
|
5414
|
+
* it. A private-key block or malformed armor is rejected (400). The
|
|
5415
|
+
* response never echoes the key — only `has_trusted_gpg_key`.
|
|
5416
|
+
*/
|
|
5417
|
+
trusted_gpg_key?: string | null;
|
|
4844
5418
|
/**
|
|
4845
5419
|
* When provided, enables/disables first-class artifact versioning for
|
|
4846
5420
|
* this Generic/Mlmodel repository (#2367). When omitted, unchanged.
|
|
@@ -4868,6 +5442,7 @@ export type UpdateSamlConfigRequest = {
|
|
|
4868
5442
|
certificate?: string | null;
|
|
4869
5443
|
entity_id?: string | null;
|
|
4870
5444
|
is_enabled?: boolean | null;
|
|
5445
|
+
map_groups_to_groups?: boolean | null;
|
|
4871
5446
|
name?: string | null;
|
|
4872
5447
|
name_id_format?: string | null;
|
|
4873
5448
|
require_signed_assertions?: boolean | null;
|
|
@@ -6559,7 +7134,54 @@ export type TriggerSearchReindexResponses = {
|
|
|
6559
7134
|
|
|
6560
7135
|
export type TriggerSearchReindexResponse = TriggerSearchReindexResponses[keyof TriggerSearchReindexResponses];
|
|
6561
7136
|
|
|
6562
|
-
export type
|
|
7137
|
+
export type ArtifactAccessibleUsersData = {
|
|
7138
|
+
body?: never;
|
|
7139
|
+
path: {
|
|
7140
|
+
/**
|
|
7141
|
+
* Artifact id
|
|
7142
|
+
*/
|
|
7143
|
+
artifact_id: string;
|
|
7144
|
+
};
|
|
7145
|
+
query?: {
|
|
7146
|
+
/**
|
|
7147
|
+
* Repository to scope the enumeration to. **Required** for the CVE route
|
|
7148
|
+
* (a CVE spans many repos); ignored for the artifact route (implied by the
|
|
7149
|
+
* artifact).
|
|
7150
|
+
*/
|
|
7151
|
+
repository_id?: string | null;
|
|
7152
|
+
/**
|
|
7153
|
+
* 1-based page over the accessible-users list.
|
|
7154
|
+
*/
|
|
7155
|
+
page?: number | null;
|
|
7156
|
+
/**
|
|
7157
|
+
* Users per page (1..=100, default 20).
|
|
7158
|
+
*/
|
|
7159
|
+
per_page?: number | null;
|
|
7160
|
+
};
|
|
7161
|
+
url: '/api/v1/admin/security/artifact/{artifact_id}/accessible-users';
|
|
7162
|
+
};
|
|
7163
|
+
|
|
7164
|
+
export type ArtifactAccessibleUsersErrors = {
|
|
7165
|
+
/**
|
|
7166
|
+
* Admin privileges required
|
|
7167
|
+
*/
|
|
7168
|
+
403: unknown;
|
|
7169
|
+
/**
|
|
7170
|
+
* Artifact not found
|
|
7171
|
+
*/
|
|
7172
|
+
404: unknown;
|
|
7173
|
+
};
|
|
7174
|
+
|
|
7175
|
+
export type ArtifactAccessibleUsersResponses = {
|
|
7176
|
+
/**
|
|
7177
|
+
* Accessible-not-downloaded report
|
|
7178
|
+
*/
|
|
7179
|
+
200: AccessibleUsersResponse;
|
|
7180
|
+
};
|
|
7181
|
+
|
|
7182
|
+
export type ArtifactAccessibleUsersResponse = ArtifactAccessibleUsersResponses[keyof ArtifactAccessibleUsersResponses];
|
|
7183
|
+
|
|
7184
|
+
export type ArtifactBlastRadiusData = {
|
|
6563
7185
|
body?: never;
|
|
6564
7186
|
path: {
|
|
6565
7187
|
/**
|
|
@@ -6608,6 +7230,57 @@ export type ArtifactBlastRadiusResponses = {
|
|
|
6608
7230
|
|
|
6609
7231
|
export type ArtifactBlastRadiusResponse = ArtifactBlastRadiusResponses[keyof ArtifactBlastRadiusResponses];
|
|
6610
7232
|
|
|
7233
|
+
export type CveAccessibleUsersData = {
|
|
7234
|
+
body?: never;
|
|
7235
|
+
path: {
|
|
7236
|
+
/**
|
|
7237
|
+
* CVE id (exact match, e.g. CVE-2021-44228)
|
|
7238
|
+
*/
|
|
7239
|
+
cve_id: string;
|
|
7240
|
+
};
|
|
7241
|
+
query?: {
|
|
7242
|
+
/**
|
|
7243
|
+
* Repository to scope the enumeration to. **Required** for the CVE route
|
|
7244
|
+
* (a CVE spans many repos); ignored for the artifact route (implied by the
|
|
7245
|
+
* artifact).
|
|
7246
|
+
*/
|
|
7247
|
+
repository_id?: string | null;
|
|
7248
|
+
/**
|
|
7249
|
+
* 1-based page over the accessible-users list.
|
|
7250
|
+
*/
|
|
7251
|
+
page?: number | null;
|
|
7252
|
+
/**
|
|
7253
|
+
* Users per page (1..=100, default 20).
|
|
7254
|
+
*/
|
|
7255
|
+
per_page?: number | null;
|
|
7256
|
+
};
|
|
7257
|
+
url: '/api/v1/admin/security/cve/{cve_id}/accessible-users';
|
|
7258
|
+
};
|
|
7259
|
+
|
|
7260
|
+
export type CveAccessibleUsersErrors = {
|
|
7261
|
+
/**
|
|
7262
|
+
* Invalid parameter
|
|
7263
|
+
*/
|
|
7264
|
+
400: unknown;
|
|
7265
|
+
/**
|
|
7266
|
+
* Admin privileges required
|
|
7267
|
+
*/
|
|
7268
|
+
403: unknown;
|
|
7269
|
+
/**
|
|
7270
|
+
* CVE does not affect the repository
|
|
7271
|
+
*/
|
|
7272
|
+
404: unknown;
|
|
7273
|
+
};
|
|
7274
|
+
|
|
7275
|
+
export type CveAccessibleUsersResponses = {
|
|
7276
|
+
/**
|
|
7277
|
+
* Accessible-not-downloaded report
|
|
7278
|
+
*/
|
|
7279
|
+
200: AccessibleUsersResponse;
|
|
7280
|
+
};
|
|
7281
|
+
|
|
7282
|
+
export type CveAccessibleUsersResponse = CveAccessibleUsersResponses[keyof CveAccessibleUsersResponses];
|
|
7283
|
+
|
|
6611
7284
|
export type CveBlastRadiusData = {
|
|
6612
7285
|
body?: never;
|
|
6613
7286
|
path: {
|
|
@@ -8716,6 +9389,75 @@ export type BlockPackageResponses = {
|
|
|
8716
9389
|
|
|
8717
9390
|
export type BlockPackageResponse = BlockPackageResponses[keyof BlockPackageResponses];
|
|
8718
9391
|
|
|
9392
|
+
export type SearchCurationPackagesData = {
|
|
9393
|
+
body?: never;
|
|
9394
|
+
path: {
|
|
9395
|
+
/**
|
|
9396
|
+
* Staging repository key
|
|
9397
|
+
*/
|
|
9398
|
+
repo_key: string;
|
|
9399
|
+
};
|
|
9400
|
+
query?: {
|
|
9401
|
+
/**
|
|
9402
|
+
* Case-insensitive substring match on the package name.
|
|
9403
|
+
*/
|
|
9404
|
+
q?: string | null;
|
|
9405
|
+
/**
|
|
9406
|
+
* Exact architecture filter (e.g. `x86_64`, `noarch`).
|
|
9407
|
+
*/
|
|
9408
|
+
arch?: string | null;
|
|
9409
|
+
/**
|
|
9410
|
+
* Curation status filter (e.g. `approved`, `pending`, `blocked`, `review`).
|
|
9411
|
+
*/
|
|
9412
|
+
status?: string | null;
|
|
9413
|
+
limit?: number;
|
|
9414
|
+
offset?: number;
|
|
9415
|
+
};
|
|
9416
|
+
url: '/api/v1/curation/repos/{repo_key}/packages/search';
|
|
9417
|
+
};
|
|
9418
|
+
|
|
9419
|
+
export type SearchCurationPackagesErrors = {
|
|
9420
|
+
/**
|
|
9421
|
+
* Repository not found or not visible
|
|
9422
|
+
*/
|
|
9423
|
+
404: unknown;
|
|
9424
|
+
};
|
|
9425
|
+
|
|
9426
|
+
export type SearchCurationPackagesResponses = {
|
|
9427
|
+
200: Array<CurationPackageResponse>;
|
|
9428
|
+
};
|
|
9429
|
+
|
|
9430
|
+
export type SearchCurationPackagesResponse = SearchCurationPackagesResponses[keyof SearchCurationPackagesResponses];
|
|
9431
|
+
|
|
9432
|
+
export type TriggerCurationSyncData = {
|
|
9433
|
+
body?: never;
|
|
9434
|
+
path: {
|
|
9435
|
+
/**
|
|
9436
|
+
* Staging repository key
|
|
9437
|
+
*/
|
|
9438
|
+
repo_key: string;
|
|
9439
|
+
};
|
|
9440
|
+
query?: never;
|
|
9441
|
+
url: '/api/v1/curation/repos/{repo_key}/sync';
|
|
9442
|
+
};
|
|
9443
|
+
|
|
9444
|
+
export type TriggerCurationSyncErrors = {
|
|
9445
|
+
/**
|
|
9446
|
+
* Not authorized to trigger a sync for this repo
|
|
9447
|
+
*/
|
|
9448
|
+
403: unknown;
|
|
9449
|
+
/**
|
|
9450
|
+
* Repository not found
|
|
9451
|
+
*/
|
|
9452
|
+
404: unknown;
|
|
9453
|
+
};
|
|
9454
|
+
|
|
9455
|
+
export type TriggerCurationSyncResponses = {
|
|
9456
|
+
200: SyncTriggerResponse;
|
|
9457
|
+
};
|
|
9458
|
+
|
|
9459
|
+
export type TriggerCurationSyncResponse = TriggerCurationSyncResponses[keyof TriggerCurationSyncResponses];
|
|
9460
|
+
|
|
8719
9461
|
export type ListCurationRulesData = {
|
|
8720
9462
|
body?: never;
|
|
8721
9463
|
path?: never;
|
|
@@ -11560,6 +12302,10 @@ export type GetPluginConfigData = {
|
|
|
11560
12302
|
};
|
|
11561
12303
|
|
|
11562
12304
|
export type GetPluginConfigErrors = {
|
|
12305
|
+
/**
|
|
12306
|
+
* Admin privileges required
|
|
12307
|
+
*/
|
|
12308
|
+
403: unknown;
|
|
11563
12309
|
/**
|
|
11564
12310
|
* Plugin not found
|
|
11565
12311
|
*/
|
|
@@ -11588,6 +12334,10 @@ export type UpdatePluginConfigData = {
|
|
|
11588
12334
|
};
|
|
11589
12335
|
|
|
11590
12336
|
export type UpdatePluginConfigErrors = {
|
|
12337
|
+
/**
|
|
12338
|
+
* Admin privileges required
|
|
12339
|
+
*/
|
|
12340
|
+
403: unknown;
|
|
11591
12341
|
/**
|
|
11592
12342
|
* Plugin not found
|
|
11593
12343
|
*/
|
|
@@ -11699,6 +12449,276 @@ export type ReloadPluginResponses = {
|
|
|
11699
12449
|
|
|
11700
12450
|
export type ReloadPluginResponse = ReloadPluginResponses[keyof ReloadPluginResponses];
|
|
11701
12451
|
|
|
12452
|
+
export type ProjectsListData = {
|
|
12453
|
+
body?: never;
|
|
12454
|
+
path?: never;
|
|
12455
|
+
query?: never;
|
|
12456
|
+
url: '/api/v1/projects';
|
|
12457
|
+
};
|
|
12458
|
+
|
|
12459
|
+
export type ProjectsListErrors = {
|
|
12460
|
+
/**
|
|
12461
|
+
* Authentication required
|
|
12462
|
+
*/
|
|
12463
|
+
401: unknown;
|
|
12464
|
+
/**
|
|
12465
|
+
* Admin privileges required
|
|
12466
|
+
*/
|
|
12467
|
+
403: unknown;
|
|
12468
|
+
};
|
|
12469
|
+
|
|
12470
|
+
export type ProjectsListResponses = {
|
|
12471
|
+
/**
|
|
12472
|
+
* List of projects
|
|
12473
|
+
*/
|
|
12474
|
+
200: ProjectListResponse;
|
|
12475
|
+
};
|
|
12476
|
+
|
|
12477
|
+
export type ProjectsListResponse = ProjectsListResponses[keyof ProjectsListResponses];
|
|
12478
|
+
|
|
12479
|
+
export type ProjectsCreateData = {
|
|
12480
|
+
body: CreateProjectRequest;
|
|
12481
|
+
path?: never;
|
|
12482
|
+
query?: never;
|
|
12483
|
+
url: '/api/v1/projects';
|
|
12484
|
+
};
|
|
12485
|
+
|
|
12486
|
+
export type ProjectsCreateErrors = {
|
|
12487
|
+
/**
|
|
12488
|
+
* Authentication required
|
|
12489
|
+
*/
|
|
12490
|
+
401: unknown;
|
|
12491
|
+
/**
|
|
12492
|
+
* Admin privileges required
|
|
12493
|
+
*/
|
|
12494
|
+
403: unknown;
|
|
12495
|
+
/**
|
|
12496
|
+
* Project key already exists
|
|
12497
|
+
*/
|
|
12498
|
+
409: unknown;
|
|
12499
|
+
};
|
|
12500
|
+
|
|
12501
|
+
export type ProjectsCreateResponses = {
|
|
12502
|
+
/**
|
|
12503
|
+
* Project created
|
|
12504
|
+
*/
|
|
12505
|
+
200: Project;
|
|
12506
|
+
};
|
|
12507
|
+
|
|
12508
|
+
export type ProjectsCreateResponse = ProjectsCreateResponses[keyof ProjectsCreateResponses];
|
|
12509
|
+
|
|
12510
|
+
export type ProjectsDeleteData = {
|
|
12511
|
+
body?: never;
|
|
12512
|
+
path: {
|
|
12513
|
+
/**
|
|
12514
|
+
* Project ID
|
|
12515
|
+
*/
|
|
12516
|
+
id: string;
|
|
12517
|
+
};
|
|
12518
|
+
query?: never;
|
|
12519
|
+
url: '/api/v1/projects/{id}';
|
|
12520
|
+
};
|
|
12521
|
+
|
|
12522
|
+
export type ProjectsDeleteErrors = {
|
|
12523
|
+
/**
|
|
12524
|
+
* Authentication required
|
|
12525
|
+
*/
|
|
12526
|
+
401: unknown;
|
|
12527
|
+
/**
|
|
12528
|
+
* Admin privileges required
|
|
12529
|
+
*/
|
|
12530
|
+
403: unknown;
|
|
12531
|
+
/**
|
|
12532
|
+
* Project not found
|
|
12533
|
+
*/
|
|
12534
|
+
404: unknown;
|
|
12535
|
+
};
|
|
12536
|
+
|
|
12537
|
+
export type ProjectsDeleteResponses = {
|
|
12538
|
+
/**
|
|
12539
|
+
* Project deleted
|
|
12540
|
+
*/
|
|
12541
|
+
200: unknown;
|
|
12542
|
+
};
|
|
12543
|
+
|
|
12544
|
+
export type ProjectsGetData = {
|
|
12545
|
+
body?: never;
|
|
12546
|
+
path: {
|
|
12547
|
+
/**
|
|
12548
|
+
* Project ID
|
|
12549
|
+
*/
|
|
12550
|
+
id: string;
|
|
12551
|
+
};
|
|
12552
|
+
query?: never;
|
|
12553
|
+
url: '/api/v1/projects/{id}';
|
|
12554
|
+
};
|
|
12555
|
+
|
|
12556
|
+
export type ProjectsGetErrors = {
|
|
12557
|
+
/**
|
|
12558
|
+
* Authentication required
|
|
12559
|
+
*/
|
|
12560
|
+
401: unknown;
|
|
12561
|
+
/**
|
|
12562
|
+
* Admin privileges required
|
|
12563
|
+
*/
|
|
12564
|
+
403: unknown;
|
|
12565
|
+
/**
|
|
12566
|
+
* Project not found
|
|
12567
|
+
*/
|
|
12568
|
+
404: unknown;
|
|
12569
|
+
};
|
|
12570
|
+
|
|
12571
|
+
export type ProjectsGetResponses = {
|
|
12572
|
+
/**
|
|
12573
|
+
* Project details
|
|
12574
|
+
*/
|
|
12575
|
+
200: Project;
|
|
12576
|
+
};
|
|
12577
|
+
|
|
12578
|
+
export type ProjectsGetResponse = ProjectsGetResponses[keyof ProjectsGetResponses];
|
|
12579
|
+
|
|
12580
|
+
export type ProjectsUpdateData = {
|
|
12581
|
+
body: UpdateProjectRequest;
|
|
12582
|
+
path: {
|
|
12583
|
+
/**
|
|
12584
|
+
* Project ID
|
|
12585
|
+
*/
|
|
12586
|
+
id: string;
|
|
12587
|
+
};
|
|
12588
|
+
query?: never;
|
|
12589
|
+
url: '/api/v1/projects/{id}';
|
|
12590
|
+
};
|
|
12591
|
+
|
|
12592
|
+
export type ProjectsUpdateErrors = {
|
|
12593
|
+
/**
|
|
12594
|
+
* Authentication required
|
|
12595
|
+
*/
|
|
12596
|
+
401: unknown;
|
|
12597
|
+
/**
|
|
12598
|
+
* Admin privileges required
|
|
12599
|
+
*/
|
|
12600
|
+
403: unknown;
|
|
12601
|
+
/**
|
|
12602
|
+
* Project not found
|
|
12603
|
+
*/
|
|
12604
|
+
404: unknown;
|
|
12605
|
+
};
|
|
12606
|
+
|
|
12607
|
+
export type ProjectsUpdateResponses = {
|
|
12608
|
+
/**
|
|
12609
|
+
* Project updated
|
|
12610
|
+
*/
|
|
12611
|
+
200: Project;
|
|
12612
|
+
};
|
|
12613
|
+
|
|
12614
|
+
export type ProjectsUpdateResponse = ProjectsUpdateResponses[keyof ProjectsUpdateResponses];
|
|
12615
|
+
|
|
12616
|
+
export type ProjectsRemoveMemberData = {
|
|
12617
|
+
body: RemoveProjectMemberRequest;
|
|
12618
|
+
path: {
|
|
12619
|
+
/**
|
|
12620
|
+
* Project ID
|
|
12621
|
+
*/
|
|
12622
|
+
id: string;
|
|
12623
|
+
};
|
|
12624
|
+
query?: never;
|
|
12625
|
+
url: '/api/v1/projects/{id}/members';
|
|
12626
|
+
};
|
|
12627
|
+
|
|
12628
|
+
export type ProjectsRemoveMemberErrors = {
|
|
12629
|
+
/**
|
|
12630
|
+
* Authentication required
|
|
12631
|
+
*/
|
|
12632
|
+
401: unknown;
|
|
12633
|
+
/**
|
|
12634
|
+
* Admin privileges required
|
|
12635
|
+
*/
|
|
12636
|
+
403: unknown;
|
|
12637
|
+
/**
|
|
12638
|
+
* Grant not found
|
|
12639
|
+
*/
|
|
12640
|
+
404: unknown;
|
|
12641
|
+
};
|
|
12642
|
+
|
|
12643
|
+
export type ProjectsRemoveMemberResponses = {
|
|
12644
|
+
/**
|
|
12645
|
+
* Membership grant removed
|
|
12646
|
+
*/
|
|
12647
|
+
200: unknown;
|
|
12648
|
+
};
|
|
12649
|
+
|
|
12650
|
+
export type ProjectsListMembersData = {
|
|
12651
|
+
body?: never;
|
|
12652
|
+
path: {
|
|
12653
|
+
/**
|
|
12654
|
+
* Project ID
|
|
12655
|
+
*/
|
|
12656
|
+
id: string;
|
|
12657
|
+
};
|
|
12658
|
+
query?: never;
|
|
12659
|
+
url: '/api/v1/projects/{id}/members';
|
|
12660
|
+
};
|
|
12661
|
+
|
|
12662
|
+
export type ProjectsListMembersErrors = {
|
|
12663
|
+
/**
|
|
12664
|
+
* Authentication required
|
|
12665
|
+
*/
|
|
12666
|
+
401: unknown;
|
|
12667
|
+
/**
|
|
12668
|
+
* Admin privileges required
|
|
12669
|
+
*/
|
|
12670
|
+
403: unknown;
|
|
12671
|
+
/**
|
|
12672
|
+
* Project not found
|
|
12673
|
+
*/
|
|
12674
|
+
404: unknown;
|
|
12675
|
+
};
|
|
12676
|
+
|
|
12677
|
+
export type ProjectsListMembersResponses = {
|
|
12678
|
+
/**
|
|
12679
|
+
* Project membership grants
|
|
12680
|
+
*/
|
|
12681
|
+
200: ProjectMemberListResponse;
|
|
12682
|
+
};
|
|
12683
|
+
|
|
12684
|
+
export type ProjectsListMembersResponse = ProjectsListMembersResponses[keyof ProjectsListMembersResponses];
|
|
12685
|
+
|
|
12686
|
+
export type ProjectsAddMemberData = {
|
|
12687
|
+
body: AddProjectMemberRequest;
|
|
12688
|
+
path: {
|
|
12689
|
+
/**
|
|
12690
|
+
* Project ID
|
|
12691
|
+
*/
|
|
12692
|
+
id: string;
|
|
12693
|
+
};
|
|
12694
|
+
query?: never;
|
|
12695
|
+
url: '/api/v1/projects/{id}/members';
|
|
12696
|
+
};
|
|
12697
|
+
|
|
12698
|
+
export type ProjectsAddMemberErrors = {
|
|
12699
|
+
/**
|
|
12700
|
+
* Authentication required
|
|
12701
|
+
*/
|
|
12702
|
+
401: unknown;
|
|
12703
|
+
/**
|
|
12704
|
+
* Admin privileges required
|
|
12705
|
+
*/
|
|
12706
|
+
403: unknown;
|
|
12707
|
+
/**
|
|
12708
|
+
* Project not found
|
|
12709
|
+
*/
|
|
12710
|
+
404: unknown;
|
|
12711
|
+
};
|
|
12712
|
+
|
|
12713
|
+
export type ProjectsAddMemberResponses = {
|
|
12714
|
+
/**
|
|
12715
|
+
* Membership grant upserted
|
|
12716
|
+
*/
|
|
12717
|
+
200: ProjectMemberRow;
|
|
12718
|
+
};
|
|
12719
|
+
|
|
12720
|
+
export type ProjectsAddMemberResponse = ProjectsAddMemberResponses[keyof ProjectsAddMemberResponses];
|
|
12721
|
+
|
|
11702
12722
|
export type ListRulesData = {
|
|
11703
12723
|
body?: never;
|
|
11704
12724
|
path?: never;
|
|
@@ -12417,6 +13437,15 @@ export type GetHealthDashboardData = {
|
|
|
12417
13437
|
url: '/api/v1/quality/health/dashboard';
|
|
12418
13438
|
};
|
|
12419
13439
|
|
|
13440
|
+
export type GetHealthDashboardErrors = {
|
|
13441
|
+
/**
|
|
13442
|
+
* Admin privileges required
|
|
13443
|
+
*/
|
|
13444
|
+
403: ErrorResponse;
|
|
13445
|
+
};
|
|
13446
|
+
|
|
13447
|
+
export type GetHealthDashboardError = GetHealthDashboardErrors[keyof GetHealthDashboardErrors];
|
|
13448
|
+
|
|
12420
13449
|
export type GetHealthDashboardResponses = {
|
|
12421
13450
|
/**
|
|
12422
13451
|
* Health dashboard summary
|
|
@@ -12637,6 +13666,10 @@ export type ListRepositoriesData = {
|
|
|
12637
13666
|
format?: string | null;
|
|
12638
13667
|
type?: string | null;
|
|
12639
13668
|
q?: string | null;
|
|
13669
|
+
/**
|
|
13670
|
+
* Filter the listing to repositories assigned to this project (#2472).
|
|
13671
|
+
*/
|
|
13672
|
+
project?: string | null;
|
|
12640
13673
|
};
|
|
12641
13674
|
url: '/api/v1/repositories';
|
|
12642
13675
|
};
|
|
@@ -13858,6 +14891,34 @@ export type ListRepoScansResponses = {
|
|
|
13858
14891
|
|
|
13859
14892
|
export type ListRepoScansResponse = ListRepoScansResponses[keyof ListRepoScansResponses];
|
|
13860
14893
|
|
|
14894
|
+
export type GetRepositoryStorageData = {
|
|
14895
|
+
body?: never;
|
|
14896
|
+
path: {
|
|
14897
|
+
/**
|
|
14898
|
+
* Repository key
|
|
14899
|
+
*/
|
|
14900
|
+
key: string;
|
|
14901
|
+
};
|
|
14902
|
+
query?: never;
|
|
14903
|
+
url: '/api/v1/repositories/{key}/storage';
|
|
14904
|
+
};
|
|
14905
|
+
|
|
14906
|
+
export type GetRepositoryStorageErrors = {
|
|
14907
|
+
/**
|
|
14908
|
+
* Repository not found
|
|
14909
|
+
*/
|
|
14910
|
+
404: unknown;
|
|
14911
|
+
};
|
|
14912
|
+
|
|
14913
|
+
export type GetRepositoryStorageResponses = {
|
|
14914
|
+
/**
|
|
14915
|
+
* Deduplicated storage stats
|
|
14916
|
+
*/
|
|
14917
|
+
200: RepositoryStorageStatsResponse;
|
|
14918
|
+
};
|
|
14919
|
+
|
|
14920
|
+
export type GetRepositoryStorageResponse = GetRepositoryStorageResponses[keyof GetRepositoryStorageResponses];
|
|
14921
|
+
|
|
13861
14922
|
export type TestUpstreamData = {
|
|
13862
14923
|
body?: never;
|
|
13863
14924
|
path: {
|
|
@@ -15459,6 +16520,44 @@ export type SetupStatusResponses = {
|
|
|
15459
16520
|
|
|
15460
16521
|
export type SetupStatusResponse2 = SetupStatusResponses[keyof SetupStatusResponses];
|
|
15461
16522
|
|
|
16523
|
+
export type SignArtifactData = {
|
|
16524
|
+
body?: never;
|
|
16525
|
+
path: {
|
|
16526
|
+
/**
|
|
16527
|
+
* Artifact ID
|
|
16528
|
+
*/
|
|
16529
|
+
artifact_id: string;
|
|
16530
|
+
};
|
|
16531
|
+
query?: never;
|
|
16532
|
+
url: '/api/v1/signing/artifacts/{artifact_id}/sign';
|
|
16533
|
+
};
|
|
16534
|
+
|
|
16535
|
+
export type SignArtifactErrors = {
|
|
16536
|
+
/**
|
|
16537
|
+
* Admin privilege required
|
|
16538
|
+
*/
|
|
16539
|
+
403: ErrorResponse;
|
|
16540
|
+
/**
|
|
16541
|
+
* Artifact not found or not eligible for signing
|
|
16542
|
+
*/
|
|
16543
|
+
404: ErrorResponse;
|
|
16544
|
+
/**
|
|
16545
|
+
* Repository has no active signing key/config
|
|
16546
|
+
*/
|
|
16547
|
+
409: ErrorResponse;
|
|
16548
|
+
};
|
|
16549
|
+
|
|
16550
|
+
export type SignArtifactError = SignArtifactErrors[keyof SignArtifactErrors];
|
|
16551
|
+
|
|
16552
|
+
export type SignArtifactResponses = {
|
|
16553
|
+
/**
|
|
16554
|
+
* Artifact signed; attestation recorded
|
|
16555
|
+
*/
|
|
16556
|
+
200: SignArtifactResponse;
|
|
16557
|
+
};
|
|
16558
|
+
|
|
16559
|
+
export type SignArtifactResponse2 = SignArtifactResponses[keyof SignArtifactResponses];
|
|
16560
|
+
|
|
15462
16561
|
export type ListKeysData = {
|
|
15463
16562
|
body?: never;
|
|
15464
16563
|
path?: never;
|