Skip to content

Commit 7aa9eab

Browse files
authored
feat(openapi): update spec with artifact validation endpoint
[main] update client/openapi/console.yaml
2 parents 4423da9 + 457339e commit 7aa9eab

File tree

1 file changed

+94
-125
lines changed

1 file changed

+94
-125
lines changed

client/openapi/console.yaml

Lines changed: 94 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -28,39 +28,9 @@ paths:
2828
status:
2929
type: string
3030
enum: [ok]
31-
/api/v1/artifacts/sign:
32-
post:
33-
summary: Sign an artifact using Cosign
34-
tags:
35-
- Artifact
36-
requestBody:
37-
required: true
38-
content:
39-
application/json:
40-
schema:
41-
$ref: '#/components/schemas/SignArtifactRequest'
42-
responses:
43-
'200':
44-
description: Artifact signed successfully
45-
content:
46-
application/json:
47-
schema:
48-
$ref: '#/components/schemas/SignArtifactResponse'
49-
'400':
50-
description: Invalid input
51-
content:
52-
application/json:
53-
schema:
54-
$ref: '#/components/schemas/Error'
55-
'500':
56-
description: Internal server error
57-
content:
58-
application/json:
59-
schema:
60-
$ref: '#/components/schemas/Error'
6131
/api/v1/artifacts/verify:
6232
post:
63-
summary: Verify an artifact using Cosign
33+
summary: Verify an artifact
6434
tags:
6535
- Artifact
6636
requestBody:
@@ -399,130 +369,109 @@ components:
399369
type: http
400370
scheme: basic
401371
schemas:
402-
SignArtifactRequest:
372+
VerifyArtifactRequest:
403373
type: object
374+
description: >
375+
Parameters for verifying a signed artifact or container image using Sigstore and related trust sources.
376+
Fields correspond to common verification inputs such as issuer expectations, trusted roots, and TUF configuration.
404377
properties:
405-
artifact:
378+
ociImage:
406379
type: string
407380
description: >
408-
URI or identifier of the artifact to sign. This could be a container image (e.g., quay.io/example/app:latest),
409-
a file path, a blob digest, or another unique artifact reference.
381+
The OCI image reference to verify.
410382
example: quay.io/example/app:latest
411-
artifactType:
412-
type: string
383+
bundle:
384+
type: object
413385
description: >
414-
Type of the artifact to sign. Common types include `container-image`, `file`, `blob`, `sbom`, etc.
415-
enum:
416-
- container-image
417-
- file
418-
- blob
419-
- sbom
420-
example: container-image
421-
identityToken:
422-
type: string
423-
description: OIDC token for Fulcio (if using keyless signing)
386+
Optional full Sigstore verification bundle (json).
387+
If provided, the verifier will validate this bundle directly instead of fetching an OCI image.
424388
nullable: true
425-
privateKeyRef:
389+
additionalProperties: true
390+
artifactDigest:
426391
type: string
427-
description: Reference to a private key (KMS URI or file)
428-
nullable: true
429-
annotations:
430-
type: object
431-
additionalProperties:
432-
type: string
433-
description: Optional key-value annotations to include in the signature
434-
example:
435-
env: prod
436-
required:
437-
- artifact
438-
- artifactType
439-
SignArtifactResponse:
440-
type: object
441-
properties:
442-
success:
443-
type: boolean
444-
description: Whether the signing was successful
445-
signature:
392+
description: >
393+
Hex-encoded digest of the artifact to verify. Used when the artifact reference
394+
does not directly include a digest (e.g., separate file verification).
395+
Mandatory when using the bundle.
396+
artifactDigestAlgorithm:
446397
type: string
447-
description: The generated signature
448-
certificate:
398+
default: sha256
399+
description: >
400+
Digest algorithm used to compute the artifact's digest.
401+
Common values: sha256, sha512.
402+
expectedOIDIssuer:
449403
type: string
450-
description: Fulcio-signed certificate (PEM), if keyless
404+
description: >
405+
Expected OIDC issuer for the signing certificate (Fulcio-based verification).
406+
example: https://accounts.google.com
451407
nullable: true
452-
logEntry:
453-
type: object
454-
description: Rekor transparency log entry
455-
properties:
456-
uuid:
457-
type: string
458-
integratedTime:
459-
type: integer
460-
logIndex:
461-
type: integer
462-
required:
463-
- success
464-
- signature
465-
VerifyArtifactRequest:
466-
type: object
467-
properties:
468-
artifact:
408+
expectedOIDIssuerRegex:
469409
type: string
470410
description: >
471-
URI or identifier of the artifact to verify. This could be a container image (e.g., quay.io/example/app:latest),
472-
a file path, a blob digest, or another unique artifact reference.
473-
example: quay.io/example/app:latest
474-
publicKey:
475-
type: string
476-
description: Optional public key path, KMS URI, or URL (for key-based verification)
411+
Regular expression that the OIDC issuer must match, if exact match is not desired.
477412
nullable: true
478-
example: cosign.pub
479-
cert:
413+
expectedSAN:
480414
type: string
481-
description: Path or content of certificate for Fulcio-based verification
415+
description: >
416+
Expected identity in the signing certificate's Subject Alternative Name (SAN) extension.
417+
482418
nullable: true
483-
certChain:
419+
expectedSANRegex:
484420
type: string
485-
description: Certificate chain in PEM format (if using keyless verification)
421+
description: >
422+
Regular expression that the SAN value must match, allowing pattern-based verification.
486423
nullable: true
487-
certificateIdentity:
424+
requireTimestamp:
425+
type: boolean
426+
default: true
427+
description: >
428+
Require that either an RFC3161 signed timestamp or a log entry integrated timestamp
429+
is present in the signature.
430+
requireCTLog:
431+
type: boolean
432+
default: true
433+
description: >
434+
Require that a Certificate Transparency (CT) log entry exists for the signing certificate.
435+
requireTLog:
436+
type: boolean
437+
default: true
438+
description: >
439+
Require that an Artifact Transparency (Rekor) log entry exists for the verified artifact.
440+
minBundleVersion:
488441
type: string
489-
description: Expected identity from Fulcio certificate (OIDC subject)
442+
description: >
443+
Minimum acceptable bundle version (e.g., '0.1') for verified signatures.
444+
example: "0.1"
490445
nullable: true
491-
certificateOidcIssuer:
446+
tufRootURL:
492447
type: string
493-
description: OIDC issuer for Fulcio verification
448+
description: >
449+
URL of a TUF repository containing the trusted root JSON file.
450+
example: https://tuf-repo-cdn.sigstore.dev
494451
nullable: true
495-
annotations:
496-
type: object
497-
additionalProperties:
498-
type: string
499-
description: Optional key-value annotations to verify in the signature
500-
offline:
501-
type: boolean
502-
default: false
503-
description: Whether to run Cosign in offline mode
504-
output:
452+
predicateType:
505453
type: string
506-
enum: [json, text]
507-
default: json
508-
description: Output format
454+
description: >
455+
The type of the predicate for the attestation.
456+
example: https://example.com/attestations/build
509457
required:
510-
- artifact
458+
- expectedIssuer
459+
- expectedSAN
511460
VerifyArtifactResponse:
512461
type: object
513462
properties:
514463
verified:
515464
type: boolean
516465
description: Whether verification was successful
517-
message:
518-
type: string
519-
description: Verification result message
520466
details:
521467
type: object
522-
description: Detailed output from Cosign
468+
description: >
469+
The full verification result payload returned by the Sigstore verifier.
470+
This structure may evolve over time.
471+
additionalProperties: true
523472
required:
524473
- verified
525-
- message
474+
- details
526475
InclusionProof:
527476
type: object
528477
description: Merkle tree inclusion proof for a Rekor entry
@@ -743,19 +692,39 @@ components:
743692
TargetsList:
744693
type: object
745694
properties:
746-
targets:
695+
data:
747696
type: array
748697
items:
749-
type: string
698+
$ref: '#/components/schemas/TargetInfo'
750699
required:
751-
- targets
700+
- data
752701
TargetContent:
753702
type: object
754703
properties:
755704
content:
756705
type: string
757706
required:
758707
- content
708+
TargetInfo:
709+
type: object
710+
properties:
711+
name:
712+
type: string
713+
description: Target name
714+
type:
715+
type: string
716+
description: Target type
717+
status:
718+
type: string
719+
description: Status of the target.
720+
content:
721+
type: string
722+
description: Content of the target.
723+
required:
724+
- name
725+
- type
726+
- status
727+
- content
759728
CertificateInfo:
760729
type: object
761730
properties:
@@ -804,4 +773,4 @@ components:
804773
type: string
805774
description: Error message
806775
required:
807-
- error
776+
- error

0 commit comments

Comments
 (0)