Skip to content
GitmoapAPIBeta
Integrateprovider-publishing
GET/provider-submissions/{submission_id}

Get a provider submission

get_provider_submission

The submission's state, its manifest, who submitted it and when, the outcome of the checks on its images, and the reviewer's decision and notes once it has been reviewed. Only the publisher that made it and platform administrators may read it.

Parameters

Path
  • submission_idProviderSubmissionId (string · uuid)Submission id

Responses

200application/json
  • auth_schemaobject
  • manifestProviderVersionManifestThe provider version as submitted. Image locations and digests, signing and lifecycle are filled in by the platform when the version is published.
    • The ProviderVersionManifest schema
    • capabilitiesarray of CapabilityDescriptor
      • The CapabilityDescriptor schema
      • cache_enabledboolean
      • capability_idCapabilityId (string)
      • config_schemaobjectThe JSON Schema a step's config must satisfy to use this capability.
      • default_timeout_secondsinteger · int320–∞
      • descriptionstring
      • image_uristringThe container image that runs the capability, with an immutable version tag.
      • inputsarray of PortDescriptor
      • namestring
      • outputsarray of PortDescriptor
      • requires_dockerboolean
      • stage_typeStageTypesourcebuildtestpublishdeploynotifycustomThe pipeline stage a capability belongs to. Maps verbatim to the stage_type field of a capability in gitmoap-provider.yaml.
      • bindablearray of PortName (string)optionalConfig keys that can take their value from an earlier step. Each has an optional value input port of the same name: connect it and read it with {"$from": "<key>"}, or leave it unconnected and write the value yourself.
      • image_digeststring or nulloptionalThe exact build of the capability's container image, when the catalog records one. Pinned so a run cannot pick up a different build behind the same tag.
      • input_groupsarray of PortGroupoptionalRules about which inputs are alternatives to each other. Empty for most capabilities.
      • source_image_refstring or nulloptionalFor a verified provider, the image's location in its publisher's registry before gitmoap copied it. Absent for providers gitmoap builds itself.
    • contract_versioninteger · int320–∞
    • manifest_digeststringThe SHA-256 digest of the version's gitmoap-provider.yaml. May be empty.
    • provider_idProviderId (string)
    • published_atstring
    • published_bystring"platform" for platform-authored providers; a publisher id otherwise.
    • versionProviderVersion (string)
    • changelogMarkdownDoc (string) or nulloptionalThe version's release notes, in Markdown, up to 64 KB. They cannot be changed once published. Absent when the version has none.
    • cosign_signature_refstring or nulloptionalWhere the cosign signature is stored in the registry, when the images are signed.
    • lifecycle_stateVersionLifecycleactivedeprecatedsunsetoptionalWhere the version is in its life: active, deprecated or sunset. Checked whenever a run starts.
    • signedbooleanoptionalWhether the version's images are signed with gitmoap's cosign key, as verified and platform providers' are.
    • sunset_atstring or nulloptionalWhen the version was sunset. Set only for a sunset version.
    • sunset_enforced_atstring or nulloptionalWhen the sunset's grace period ends. After it, a run that uses the version fails to start.
  • manifest_digeststring
  • provider_descriptionstring
  • provider_idProviderId (string)
  • provider_namestringThe provider's name, as the catalog shows it.
  • publisher_idPublisherId (string · uuid)
  • source_image_refsobjectEach capability's image in your registry, by capability id.
  • stateSubmissionStatesubmittedin_reviewchanges_requestedapprovedmirroringsigningpublishedrejectedmirror_failedwithdrawnverifyingverification_failedWhere a provider submission stands, from review through to publication or refusal.
  • submission_idProviderSubmissionId (string · uuid)
  • submitted_atstring
  • submitted_byActorSummaryWho submitted the version.
  • target_tierProviderTierplatformverifiedcommunityprivateThe tier the version was submitted for: verified goes to review by gitmoap; community and private are checked automatically, without review.
  • versionProviderVersion (string)
  • attest_resultAttestResult or nulloptionalThe result of checking a community or private provider's images.
  • mirror_resultMirrorResult or nulloptional
  • owning_group_idGroupId (string · uuid) or nulloptionalThe organization the provider is private to. Set only when target_tier is private.
  • published_atstring or nulloptional
  • registry_pull_secret_refSsmParameterPath (string) or nulloptionalA reference to the stored credential for pulling images from a private registry, for a private provider that uses one. Never the credential itself.
  • review_notesstring or nulloptional
  • reviewed_atstring or nulloptional
  • reviewerActorSummary or nulloptionalThe gitmoap administrator who reviewed the submission, once reviewed.
200 exampleSynthesized example
{
"auth_schema": {},
"manifest": {
"capabilities": [
{
"cache_enabled": false,
"capability_id": "c681d60f-447f-41a7-9653-840a4efaa272",
"config_schema": {},
"default_timeout_seconds": 81,
"description": "Renders each region as density contours of its operations.",
"image_uri": "https://gitmoap.example/acme/ff3885e3",
"inputs": [],
"name": "payments-api",
"outputs": [],
"requires_docker": false,
"stage_type": "source"
}
],
"contract_version": 4,
"manifest_digest": "manifest-digest-6c06",
"provider_id": "3cbbc487-aa29-464c-9ad6-c917709211d0",
"published_at": "2026-10-17T08:19:24Z",
"published_by": "b7e2d1c0-9f8e-4d7c-a6b5-c4d3e2f1a0b9",
"version": "version-ceb3",
"changelog": "changelog-35a0",
"cosign_signature_ref": "cosign-signature-ref-70c4",
"lifecycle_state": "active",
"signed": false,
"sunset_at": "2026-10-16T16:18:22Z",
"sunset_enforced_at": "2026-10-10T08:41:04Z"
},
"manifest_digest": "manifest-digest-e822",
"provider_description": "provider-description-cbaa",
"provider_id": "ac180a5f-6a56-41f8-ad9a-ce0d4c422dba",
"provider_name": "payments-api",
"publisher_id": "b4aa3a3a-f8b0-46de-bc39-0df8694812cd",
"source_image_refs": {
"source_image_refs": {
"image_digest": "image-digest-e68f",
"image_ref": "image-ref-53c3"
}
},
"state": "submitted",
"submission_id": "9a3f9daa-d1d5-47da-9a51-47ad7d7690f1",
"submitted_at": "2026-10-16T01:15:05Z",
"submitted_by": {
"email": "mara@acme.example",
"id": "id-a0b2",
"username": "lin",
"avatar_url": "https://gitmoap.example/acme/4a42740f"
},
"target_tier": "platform",
"version": "version-0de2",
"attest_result": {
"attested_at": "2026-10-13T00:02:01Z",
"capabilities": {
"capabilities": {
"image_digest": "image-digest-253b",
"image_uri": "https://gitmoap.example/acme/cae3b4c8"
}
}
},
"mirror_result": {
"capabilities": {
"capabilities": {
"gitmoap_image_uri": "https://gitmoap.example/acme/9b924a1f",
"image_digest": "image-digest-4ff6"
}
},
"mirrored_at": "2026-10-10T13:36:52Z",
"sbom_ref": "sbom-ref-8b2d"
},
"owning_group_id": "4c1d8e2f-6a3b-4f90-b7c5-1e2d3c4b5a69",
"published_at": "2026-10-12T18:56:18Z",
"registry_pull_secret_ref": "registry-pull-secret-ref-1191",
"review_notes": "review-notes-0b04",
"reviewed_at": "2026-10-11T21:41:02Z",
"reviewer": {
"email": "lin@acme.example",
"id": "id-7b3e",
"username": "lin",
"avatar_url": "https://gitmoap.example/acme/3f407b16"
}
}
400Bad request — a path parameter is not a well-formed value of its typeapplication/json
Error codes
  • BAD_REQUESTThe request is malformed: a parameter or a body field is not a well-formed value of its type
  • errorErrorBody
    • The ErrorBody schema
    • codestringThe coarse category, tied to the status: NOT_FOUND, CONFLICT, INSUFFICIENT_SCOPE. Every error has one; the API reference's error catalogue lists them all.
    • messagestringWhat went wrong, for a person. Written to be read, not parsed: match on reason or code.
    • fieldstring or nulloptionalOn a 400 that refused one field's value, the field, as its JSON path: email, items[0].name. Put the message under that input. Absent on every other error.
    • reasonstring or nulloptionalThe specific code, when the error has one: LAST_ORGANIZATION_OWNER, BRANCH_PROTECTED. The message starts with it too. Match on this when it is present, and on code otherwise.
    • required_scopestring or nulloptionalThe scope the access token was missing, on INSUFFICIENT_SCOPE.
    • violationsanyoptionalPresent on the structured-validation errors (PROVIDER_VALIDATION_FAILED per-node, PIPELINE_VALIDATION_FAILED DAG): a JSON array of the offending elements, so a caller can fix every one in a single round-trip. Absent (omitted) on every other error.
400 exampleSynthesized example
{
"error": {
"code": "code-4c63",
"message": "Stream pipeline status into the run header"
}
}
401application/json
Error codes
  • UNAUTHORIZEDNo credential was sent, or the one sent is invalid, expired or revoked
  • errorErrorBody
    • The ErrorBody schema
    • codestringThe coarse category, tied to the status: NOT_FOUND, CONFLICT, INSUFFICIENT_SCOPE. Every error has one; the API reference's error catalogue lists them all.
    • messagestringWhat went wrong, for a person. Written to be read, not parsed: match on reason or code.
    • fieldstring or nulloptionalOn a 400 that refused one field's value, the field, as its JSON path: email, items[0].name. Put the message under that input. Absent on every other error.
    • reasonstring or nulloptionalThe specific code, when the error has one: LAST_ORGANIZATION_OWNER, BRANCH_PROTECTED. The message starts with it too. Match on this when it is present, and on code otherwise.
    • required_scopestring or nulloptionalThe scope the access token was missing, on INSUFFICIENT_SCOPE.
    • violationsanyoptionalPresent on the structured-validation errors (PROVIDER_VALIDATION_FAILED per-node, PIPELINE_VALIDATION_FAILED DAG): a JSON array of the offending elements, so a caller can fix every one in a single round-trip. Absent (omitted) on every other error.
401 exampleSynthesized example
{
"error": {
"code": "code-796e",
"message": "Pin a page's payload to the build that rendered it"
}
}
403application/json
Error codes
  • FORBIDDENYou are signed in but may not do this here; reason names the permission or the rule that refused it
  • INSUFFICIENT_SCOPEThe access token lacks the scope this operation needs; required_scope names it
  • PERMISSION_REQUIREDYou need a permission you do not hold here; the message names it
  • errorErrorBody
    • The ErrorBody schema
    • codestringThe coarse category, tied to the status: NOT_FOUND, CONFLICT, INSUFFICIENT_SCOPE. Every error has one; the API reference's error catalogue lists them all.
    • messagestringWhat went wrong, for a person. Written to be read, not parsed: match on reason or code.
    • fieldstring or nulloptionalOn a 400 that refused one field's value, the field, as its JSON path: email, items[0].name. Put the message under that input. Absent on every other error.
    • reasonstring or nulloptionalThe specific code, when the error has one: LAST_ORGANIZATION_OWNER, BRANCH_PROTECTED. The message starts with it too. Match on this when it is present, and on code otherwise.
    • required_scopestring or nulloptionalThe scope the access token was missing, on INSUFFICIENT_SCOPE.
    • violationsanyoptionalPresent on the structured-validation errors (PROVIDER_VALIDATION_FAILED per-node, PIPELINE_VALIDATION_FAILED DAG): a JSON array of the offending elements, so a caller can fix every one in a single round-trip. Absent (omitted) on every other error.
403 exampleSynthesized example
{
"error": {
"code": "code-41b8",
"message": "Draw the region map from operation density"
}
}
404application/json
Error codes
  • NOT_FOUNDThe resource does not exist — or exists and you cannot see it: a private resource you have no access to answers exactly as an absent one does
  • errorErrorBody
    • The ErrorBody schema
    • codestringThe coarse category, tied to the status: NOT_FOUND, CONFLICT, INSUFFICIENT_SCOPE. Every error has one; the API reference's error catalogue lists them all.
    • messagestringWhat went wrong, for a person. Written to be read, not parsed: match on reason or code.
    • fieldstring or nulloptionalOn a 400 that refused one field's value, the field, as its JSON path: email, items[0].name. Put the message under that input. Absent on every other error.
    • reasonstring or nulloptionalThe specific code, when the error has one: LAST_ORGANIZATION_OWNER, BRANCH_PROTECTED. The message starts with it too. Match on this when it is present, and on code otherwise.
    • required_scopestring or nulloptionalThe scope the access token was missing, on INSUFFICIENT_SCOPE.
    • violationsanyoptionalPresent on the structured-validation errors (PROVIDER_VALIDATION_FAILED per-node, PIPELINE_VALIDATION_FAILED DAG): a JSON array of the offending elements, so a caller can fix every one in a single round-trip. Absent (omitted) on every other error.
404 exampleSynthesized example
{
"error": {
"code": "code-b188",
"message": "Draw the region map from operation density"
}
}

CLI

gitmoap provider-publishing get

  • --submission-ididSubmission id

Used in these guides