{"openapi":"3.1.0","info":{"title":"SOLCZAKI Gauntlet Exchange API","version":"1.0.0","description":"Tenant-scoped, append-only exchange for immutable agent-system artifacts, audit evidence, responses and retests."},"servers":[{"url":"https://gauntlet.itm8.pl","description":"Gauntlet exchange tenant: public-demo"}],"tags":[{"name":"Bootstrap"},{"name":"Artifacts"},{"name":"Audits"},{"name":"Responses"}],"paths":{"/.well-known/solczaki-gauntlet":{"get":{"tags":["Bootstrap"],"summary":"Discover capabilities and tenant endpoints","responses":{"200":{"description":"Discovery document"}}}},"/v1/artifacts":{"get":{"tags":["Artifacts"],"summary":"List artifact lineages","responses":{"200":{"description":"Artifact lineages"}}},"post":{"tags":["Artifacts"],"summary":"Publish a new immutable artifact version","security":[{"cloudflareAccess":[],"solczakiSignature":[]}],"responses":{"201":{"description":"Version appended"},"409":{"description":"Version label or digest conflict"}}}},"/v1/artifacts/{artifact_id}":{"get":{"tags":["Artifacts"],"summary":"Read one artifact lineage","parameters":[{"$ref":"#/components/parameters/artifactId"}],"responses":{"200":{"description":"Artifact and current version"},"404":{"description":"Unknown artifact"}}}},"/v1/artifacts/{artifact_id}/versions":{"get":{"tags":["Artifacts"],"summary":"List immutable versions","parameters":[{"$ref":"#/components/parameters/artifactId"}],"responses":{"200":{"description":"Ordered immutable versions"}}}},"/v1/artifact-versions/{digest}":{"get":{"tags":["Artifacts"],"summary":"Resolve exact bytes by digest","parameters":[{"$ref":"#/components/parameters/digest"}],"responses":{"200":{"description":"Exact artifact version"},"404":{"description":"Unknown digest"}}}},"/v1/artifact-versions/{digest}/audit-runs":{"get":{"tags":["Audits"],"summary":"List audit runs bound to an exact artifact version","parameters":[{"$ref":"#/components/parameters/digest"}],"responses":{"200":{"description":"Audit runs"}}}},"/v1/responses":{"post":{"tags":["Responses"],"summary":"Append a signed response to a finding","security":[{"cloudflareAccess":[],"solczakiSignature":[]}],"responses":{"201":{"description":"Response appended"}}}},"/v1/retests":{"post":{"tags":["Responses"],"summary":"Request a deterministic retest of a new version","security":[{"cloudflareAccess":[],"solczakiSignature":[]}],"responses":{"202":{"description":"Retest queued"}}}}},"components":{"parameters":{"artifactId":{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{2,127}$"}},"digest":{"name":"digest","in":"path","required":true,"schema":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","example":"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}},"securitySchemes":{"cloudflareAccess":{"type":"apiKey","in":"header","name":"CF-Access-Client-Id","description":"Pair with CF-Access-Client-Secret. Values are provisioned out of band and loaded from a secret manager."},"solczakiSignature":{"type":"apiKey","in":"header","name":"x-solczaki-signature","description":"Ed25519 signature binding the principal, exact request bytes and immutable artifact digest."}},"schemas":{"ArtifactVersion":{"type":"object","required":["artifact_id","version","digest","media_type","captured_at"],"properties":{"artifact_id":{"type":"string"},"version":{"type":"string"},"digest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","example":"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"},"media_type":{"type":"string"},"captured_at":{"type":"string","format":"date-time"},"source_revision":{"type":["string","null"]},"supersedes_digest":{"type":["string","null"],"pattern":"^sha256:[0-9a-f]{64}$","example":"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}}}}}}