{"openapi":"3.1.0","info":{"title":"Certora API","version":"2.0.0","description":"Organization-scoped API for AI security engine runs and Certora Prover authentication. Engine estimate, launch, and lifecycle routes require REST API access. The separate Prover token exchange requires the prover:access key scope and is available on Free and paid plans with metered Prover access. Launch retries require the same service key, Idempotency-Key, endpoint, and request body; a rotated ephemeral_token value is not a body change, so CI jobs may retry with a fresh token. Accepted, reservation-backed, and unresolved launches have no time-based expiry. Only completed pre-dispatch 4xx failures without a run or reservation may expire after 24 hours. Accepted runs are recovered without another estimate, launch, or balance reservation. AutoProver and AutoFuzzer estimates return an optional 15-minute quote to pin launch pricing. HTTP request failures, including an unknown API path, use application/problem+json with their real HTTP status. Accepted runs that later fail are returned normally with run.status failed and a safe run.failure object."},"servers":[{"url":"/"}],"tags":[{"name":"AI security engines","description":"Estimate, launch, and manage AI Auditor, AutoProver, and AutoFuzzer runs with REST API access."},{"name":"Certora Prover","description":"Obtain the short-lived token used by compatible Certora Prover clients, including certoraRun, with metered Prover access."}],"paths":{"/v2/ai-auditor-full-runs":{"post":{"operationId":"createAiAuditorFullRun","tags":["AI security engines"],"summary":"Create ai auditor full run","description":"Omit context or send [] for automatic selection and launch in one request; no preview or estimate call is required. The server performs a deterministic balance preflight and reserves funds before the worker selects context within server-controlled spending, time, and request limits. Full audits require non-empty scope when context is automatic. Non-empty context remains an expert override. Known Auto Context usage is included exactly once in successful or cancelled run cost; failed runs receive a full reservation refund. The existing overall hard-runtime timeout refund policy still applies. Planning limits are not public request parameters.","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiAuditorFullRunRequest"}}}},"responses":{"202":{"description":"Run accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/ai-auditor-full-runs/estimate":{"post":{"operationId":"estimateAiAuditorFullRun","tags":["AI security engines"],"summary":"Estimate ai auditor full run","description":"Optional estimate; no run, balance hold, or LLM context preparation is created. With omitted or empty context, pricing is a conservative preliminary estimate over candidate source files, not the final automatically selected context.","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiAuditorFullRunRequest"}}}},"responses":{"200":{"description":"Plan-adjusted estimate","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstimateEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/ai-auditor-diff-runs":{"post":{"operationId":"createAiAuditorDiffRun","tags":["AI security engines"],"summary":"Create ai auditor diff run","description":"Omit context or send [] for automatic selection and launch in one request; no preview or estimate call is required. The server performs a deterministic balance preflight and reserves funds before the worker selects context within server-controlled spending, time, and request limits. Full audits require non-empty scope when context is automatic. Non-empty context remains an expert override. Known Auto Context usage is included exactly once in successful or cancelled run cost; failed runs receive a full reservation refund. The existing overall hard-runtime timeout refund policy still applies. Planning limits are not public request parameters.","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiAuditorDiffRunRequest"}}}},"responses":{"202":{"description":"Run accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/ai-auditor-diff-runs/estimate":{"post":{"operationId":"estimateAiAuditorDiffRun","tags":["AI security engines"],"summary":"Estimate ai auditor diff run","description":"Optional estimate; no run, balance hold, or LLM context preparation is created. With omitted or empty context, pricing is a conservative preliminary estimate over candidate source files, not the final automatically selected context.","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiAuditorDiffRunRequest"}}}},"responses":{"200":{"description":"Plan-adjusted estimate","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstimateEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/ai-auditor-finding-validations-runs":{"post":{"operationId":"createAiAuditorFindingValidationRun","tags":["AI security engines"],"summary":"Create ai auditor finding validations run","description":"Omit context or send [] for automatic selection and launch in one request; no preview or estimate call is required. The server performs a deterministic balance preflight and reserves funds before the worker selects context within server-controlled spending, time, and request limits. Full audits require non-empty scope when context is automatic. Non-empty context remains an expert override. Known Auto Context usage is included exactly once in successful or cancelled run cost; failed runs receive a full reservation refund. The existing overall hard-runtime timeout refund policy still applies. Planning limits are not public request parameters.","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingValidationRunRequest"}}}},"responses":{"202":{"description":"Run accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/ai-auditor-finding-validations-runs/estimate":{"post":{"operationId":"estimateAiAuditorFindingValidationRun","tags":["AI security engines"],"summary":"Estimate ai auditor finding validations run","description":"Optional estimate; no run, balance hold, or LLM context preparation is created. With omitted or empty context, pricing is a conservative preliminary estimate over candidate source files, not the final automatically selected context.","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindingValidationRunRequest"}}}},"responses":{"200":{"description":"Plan-adjusted estimate","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstimateEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/auto-prover-runs":{"post":{"operationId":"createAutoProverRun","tags":["AI security engines"],"summary":"Create auto prover run","description":"The exact repository revision and contract path are resolved before a quote is issued or balance is reserved. Unresolvable revisions return 422 source_revision_not_found; missing contracts return 422 contract_not_found.","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/EstimateQuoteId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoProverRunRequest"}}}},"responses":{"202":{"description":"Run accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/auto-prover-runs/estimate":{"post":{"operationId":"estimateAutoProverRun","tags":["AI security engines"],"summary":"Estimate auto prover run","description":"The exact repository revision and contract path are resolved before a quote is issued or balance is reserved. Unresolvable revisions return 422 source_revision_not_found; missing contracts return 422 contract_not_found.","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoProverRunRequest"}}}},"responses":{"200":{"description":"Plan-adjusted estimate","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstimateEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/auto-fuzzer-runs":{"post":{"operationId":"createAutoFuzzerRun","tags":["AI security engines"],"summary":"Create auto fuzzer run","description":"The exact repository revision and contract path are resolved before a quote is issued or balance is reserved. Unresolvable revisions return 422 source_revision_not_found; missing contracts return 422 contract_not_found.","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/EstimateQuoteId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoFuzzerRunRequest"}}}},"responses":{"202":{"description":"Run accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/auto-fuzzer-runs/estimate":{"post":{"operationId":"estimateAutoFuzzerRun","tags":["AI security engines"],"summary":"Estimate auto fuzzer run","description":"The exact repository revision and contract path are resolved before a quote is issued or balance is reserved. Unresolvable revisions return 422 source_revision_not_found; missing contracts return 422 contract_not_found.","security":[{"bearerAuth":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutoFuzzerRunRequest"}}}},"responses":{"200":{"description":"Plan-adjusted estimate","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstimateEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/timeout-resolver-runs":{"post":{"operationId":"createTimeoutResolverRun","tags":["AI security engines"],"summary":"Create timeout resolver run","description":"Resolve one rule that timed out in a finished Certora Prover run. The run URL is either the report URL of a run on this environment's Prover or the dashboard link to the same job, and the run must belong to a member of the service key's organization. A fixed amount is reserved from the organization's balance when the run starts; at settlement the run is charged for what it used and the unused part is returned. A run the key may not resolve returns 404 run_not_found, whether the run is out of the launching member's sight or owned outside the key's organization; a run URL for another Prover returns 422 validation_error on run_url. There is no estimate route.","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeoutResolverRunRequest"}}}},"responses":{"202":{"description":"Run accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/prover/token":{"post":{"operationId":"createProverToken","tags":["Certora Prover"],"summary":"Exchange an API key for a Certora Prover token","description":"Authenticate with an API key carrying the prover:access scope (Use Certora Prover) to obtain a short-lived JWT for the key's creator and organization. Enable this permission when creating the key. Existing keys are not granted it automatically; create a replacement key with the permission if needed. No request body or Idempotency-Key is required. This endpoint also requires metered Prover access, available on Free and paid plans; engine run and lifecycle endpoints retain their separate REST API access requirement. The token expires after the configured CERTORA_JWT_TTL_SECONDS, which defaults to 300 seconds. Refresh it by repeating this exchange when needed. This exchange does not launch a run or reserve balance.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Short-lived Certora Prover JWT","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProverTokenResponse"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/access":{"get":{"operationId":"getAccess","tags":["AI security engines"],"summary":"Inspect the current service key and organization access","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Access details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccessEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/runs":{"get":{"operationId":"listRuns","tags":["AI security engines"],"summary":"List runs","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/RunCursor"},{"$ref":"#/components/parameters/RunLimit"},{"name":"status","in":"query","schema":{"type":"string","enum":["queued","running","finalizing","succeeded","failed","cancelling","cancelled"]}},{"name":"run_type","in":"query","schema":{"type":"string","enum":["ai_auditor_full","ai_auditor_diff","ai_auditor_finding_validation","auto_prover","auto_fuzzer","timeout_resolver"]}},{"name":"repository_url","in":"query","schema":{"type":"string","minLength":1,"maxLength":2048}},{"name":"commit_sha","in":"query","schema":{"$ref":"#/components/schemas/CommitSha"}},{"name":"client_reference","in":"query","schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Cursor-paginated runs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunListEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/runs/{run_id}":{"get":{"operationId":"getRun","tags":["AI security engines"],"summary":"Get canonical run status and progress","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/RunId"}],"responses":{"200":{"description":"Canonical run","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/runs/{run_id}/result":{"get":{"operationId":"getRunResult","tags":["AI security engines"],"summary":"Get the versioned run result","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/RunId"}],"responses":{"200":{"description":"Versioned result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResultEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/runs/{run_id}/artifacts":{"get":{"operationId":"listRunArtifacts","tags":["AI security engines"],"summary":"List filtered run artifacts","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/RunId"},{"$ref":"#/components/parameters/ArtifactCursor"},{"$ref":"#/components/parameters/ArtifactLimit"}],"responses":{"200":{"description":"Artifacts with short-lived signed download URLs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArtifactListEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/runs/{run_id}/cancel":{"post":{"operationId":"cancelRun","tags":["AI security engines"],"summary":"Request idempotent run cancellation","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/RunId"}],"responses":{"200":{"description":"Run was already terminal","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"202":{"description":"Cancellation accepted or still being reconciled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v2/runs/{run_id}/generated-files/commit":{"post":{"operationId":"commitGeneratedFiles","tags":["AI security engines"],"summary":"Commit generated files through the organization GitHub App","security":[{"bearerAuth":[]}],"parameters":[{"$ref":"#/components/parameters/RunId"}],"responses":{"200":{"description":"Idempotent delivery result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommitDeliveryEnvelope"}}}},"400":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"409":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"502":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Problem detail","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"Certora service key","description":"An API key bound to its organization and the member who created it. The key stops working if the member leaves the organization, is banned, or deletes their account. Engine routes enforce their required scope; the Prover token exchange requires prover:access (Use Certora Prover). Existing keys are not automatically granted new scopes. Available scopes: runs:create, runs:read, runs:cancel, artifacts:read, generated_files:write, prover:access."}},"parameters":{"RunId":{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":true,"description":"Deduplicates the same launch body for this organization, service key, and endpoint without a time-based expiry for accepted, reservation-backed, or unresolved launches. Only completed pre-dispatch 4xx failures without a run or reservation may expire after 24 hours. Retry the same key and body without a fresh estimate to recover an accepted run without another launch or balance reservation. A new key represents a separate, potentially billable run.","schema":{"type":"string","minLength":1,"maxLength":200}},"EstimateQuoteId":{"name":"Estimate-Quote-Id","in":"header","required":false,"description":"Pins an AutoProver or AutoFuzzer launch to the repository estimate returned by the immediately preceding estimate request. Quotes expire after 15 minutes. Older clients may omit this header, in which case launch recalculates the estimate.","schema":{"type":"string","format":"uuid"}},"RunCursor":{"name":"cursor","in":"query","schema":{"type":"string","format":"uuid"}},"ArtifactCursor":{"name":"cursor","in":"query","schema":{"type":"string","maxLength":4096}},"RunLimit":{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},"ArtifactLimit":{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":100}}},"schemas":{"CommitSha":{"type":"string","pattern":"^[0-9a-f]{40}$"},"Problem":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"code":{"type":"string"},"request_id":{"type":"string","format":"uuid"},"retryable":{"type":"boolean"},"field_errors":{"type":"object","description":"Present on validation failures. Keys identify rejected request-body paths, query parameters, or headers.","additionalProperties":{"type":"array","items":{"type":"string"}}}},"required":["type","title","status","detail","code","request_id","retryable"]},"Source":{"type":"object","additionalProperties":false,"properties":{"repository_url":{"type":"string","format":"uri","minLength":1,"maxLength":2048},"authentication":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"const":"public"}}},{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"const":"organization_github_app"}}},{"type":"object","additionalProperties":false,"required":["type","token"],"properties":{"type":{"const":"ephemeral_token"},"token":{"type":"string","minLength":1,"maxLength":500,"writeOnly":true}}}],"default":{"type":"public"}},"commit_sha":{"$ref":"#/components/schemas/CommitSha"}},"required":["repository_url","commit_sha"]},"DiffSource":{"type":"object","additionalProperties":false,"properties":{"repository_url":{"type":"string","format":"uri","minLength":1,"maxLength":2048},"authentication":{"oneOf":[{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"const":"public"}}},{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"const":"organization_github_app"}}},{"type":"object","additionalProperties":false,"required":["type","token"],"properties":{"type":{"const":"ephemeral_token"},"token":{"type":"string","minLength":1,"maxLength":500,"writeOnly":true}}}],"default":{"type":"public"}},"base_commit_sha":{"$ref":"#/components/schemas/CommitSha"},"head_commit_sha":{"$ref":"#/components/schemas/CommitSha"}},"required":["repository_url","base_commit_sha","head_commit_sha"]},"Contract":{"type":"object","additionalProperties":false,"properties":{"path":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^/].*\\.sol$"},"name":{"type":"string","maxLength":200,"pattern":"^[A-Za-z_$][A-Za-z0-9_$]*$"}},"required":["path","name"]},"Documents":{"type":"object","additionalProperties":false,"properties":{"design":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\.(?:[mM][dD]|[mM][aA][rR][kK][dD][oO][wW][nN]|[pP][dD][fF])$"},"threat_model":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\.(?:[mM][dD]|[mM][aA][rR][kK][dD][oO][wW][nN]|[pP][dD][fF])$"}},"required":[]},"FuzzerDocuments":{"type":"object","additionalProperties":false,"properties":{"design":{"type":"string","minLength":1,"maxLength":500,"pattern":"\\.(?:[mM][dD]|[mM][aA][rR][kK][dD][oO][wW][nN]|[pP][dD][fF])$"}},"required":[]},"GithubPullRequestDelivery":{"type":"object","additionalProperties":false,"properties":{"type":{"const":"github_pull_request"},"pull_request_number":{"type":"integer","minimum":1}},"required":["type","pull_request_number"]},"AuditGithubDeliveryRequest":{"type":"object","additionalProperties":false,"properties":{"type":{"const":"github_pull_request"},"pull_request_number":{"type":"integer","minimum":1},"head_commit_sha":{"$ref":"#/components/schemas/CommitSha"},"comment_on_pr":{"type":"boolean","default":true},"create_issues":{"type":"boolean","default":true},"issue_severities":{"type":"array","maxItems":4,"items":{"type":"string","enum":["HIGH","MEDIUM","LOW","INFO"]},"default":["HIGH","MEDIUM"]},"fail_on":{"type":"array","maxItems":4,"items":{"type":"string","enum":["HIGH","MEDIUM","LOW","INFO"]},"default":[]},"labels":{"type":"array","maxItems":20,"items":{"type":"string","minLength":1,"maxLength":50},"default":["ai-auditor","security"]}},"required":["type","pull_request_number","head_commit_sha"],"description":"Optional durable asynchronous CI delivery through the organization's GitHub App. Before paid launch, the server verifies repository access, the PR head SHA, and Checks write permission (plus Issues/Pull requests write for enabled outputs), then creates a Security Review check. No runner GitHub token is accepted or stored. The source revision must match the PR head. The server completes the check and delivers requested results after the launcher exits."},"AiAuditorFullRunRequest":{"type":"object","additionalProperties":false,"properties":{"source":{"$ref":"#/components/schemas/Source"},"model_mode":{"$ref":"#/components/schemas/AuditorModelMode","default":"normal","description":"AI Auditor model set for the complete pipeline. Normal is the default; Frontier selects the frontier lineup. Independent of max_iterations. Keep the same value in estimate, launch, and retries."},"context":{"type":"array","maxItems":5000,"items":{"type":"string","minLength":1,"maxLength":500},"description":"Optional expert context override for any programming language. Omit or send [] for server-side selection during the same audit job; no preview call or configuration key is required. Non-empty repository globs keep their existing override semantics and must include needed dependencies. Full automatic audits require non-empty scope; diff and finding validation derive their scope from the diff or finding."},"skip_submodules":{"type":"boolean"},"client_reference":{"type":"string","minLength":1,"maxLength":200},"scope":{"type":"array","maxItems":5000,"items":{"type":"string","minLength":1,"maxLength":500}},"instructions":{"type":"string","maxLength":10000},"max_iterations":{"type":"integer","minimum":2,"maximum":10,"default":6},"use_memory":{"type":"boolean","default":true},"delivery":{"$ref":"#/components/schemas/AuditGithubDeliveryRequest"}},"required":["source"],"anyOf":[{"required":["context"],"properties":{"context":{"minItems":1}}},{"required":["scope"],"properties":{"scope":{"minItems":1}}}],"description":"Provide a non-empty scope for automatic context, or a non-empty explicit context override. Omitted or empty context must not be replaced with an inferred whole-repository scope."},"AiAuditorDiffRunRequest":{"type":"object","additionalProperties":false,"properties":{"source":{"$ref":"#/components/schemas/DiffSource"},"model_mode":{"$ref":"#/components/schemas/AuditorModelMode","default":"normal","description":"AI Auditor model set for the complete pipeline. Normal is the default; Frontier selects the frontier lineup. Independent of max_iterations. Keep the same value in estimate, launch, and retries."},"context":{"type":"array","maxItems":5000,"items":{"type":"string","minLength":1,"maxLength":500},"description":"Optional expert context override for any programming language. Omit or send [] for server-side selection during the same audit job; no preview call or configuration key is required. Non-empty repository globs keep their existing override semantics and must include needed dependencies. Full automatic audits require non-empty scope; diff and finding validation derive their scope from the diff or finding."},"skip_submodules":{"type":"boolean"},"client_reference":{"type":"string","minLength":1,"maxLength":200},"delivery":{"$ref":"#/components/schemas/AuditGithubDeliveryRequest"},"instructions":{"type":"string","maxLength":10000},"max_iterations":{"type":"integer","minimum":2,"maximum":10,"default":6}},"required":["source"]},"FindingValidationRunRequest":{"type":"object","additionalProperties":false,"properties":{"source":{"$ref":"#/components/schemas/Source"},"model_mode":{"$ref":"#/components/schemas/AuditorModelMode","default":"normal","description":"AI Auditor model set for the complete pipeline. Normal is the default; Frontier selects the frontier lineup. Independent of max_iterations. Keep the same value in estimate, launch, and retries."},"context":{"type":"array","maxItems":5000,"items":{"type":"string","minLength":1,"maxLength":500},"description":"Optional expert context override for any programming language. Omit or send [] for server-side selection during the same audit job; no preview call or configuration key is required. Non-empty repository globs keep their existing override semantics and must include needed dependencies. Full automatic audits require non-empty scope; diff and finding validation derive their scope from the diff or finding."},"skip_submodules":{"type":"boolean"},"client_reference":{"type":"string","minLength":1,"maxLength":200},"finding":{"type":"string","minLength":1,"maxLength":8000}},"required":["source","finding"]},"AutoProverRunRequest":{"type":"object","additionalProperties":false,"properties":{"source":{"$ref":"#/components/schemas/Source"},"contract":{"$ref":"#/components/schemas/Contract"},"run_mode":{"type":"string","enum":["comprehensive","prioritized"],"default":"prioritized","description":"AutoProver only. Prioritized selects the top-ranked property and its supporting cluster; comprehensive formalizes all candidate properties and usually needs a higher max_budget_usd. Both modes use the same conservative estimate; final cost depends on actual work."},"limits":{"$ref":"#/components/schemas/RunLimits"},"documents":{"$ref":"#/components/schemas/Documents"},"delivery":{"$ref":"#/components/schemas/GithubPullRequestDelivery"},"client_reference":{"type":"string","minLength":1,"maxLength":200}},"required":["source","contract"]},"RunLimits":{"type":"object","additionalProperties":false,"properties":{"max_budget_usd":{"type":"number","exclusiveMinimum":0,"maximum":10000,"description":"USD ceiling on this run's balance reservation, with at most four decimal places. It must be at least the run's current estimated price (otherwise 422 invalid_max_budget). The engine's LLM budget is derived from it; AWS runtime is billed on top at settlement, so the final charge can exceed it. Omitted uses the standard reservation (estimate × margin)."},"time_budget_seconds":{"type":"integer","minimum":1,"maximum":72000,"description":"Graceful wall-clock ceiling for the run. It can only shorten the engine's default budget (the maximum). Separate from the 24-hour container limit, which ends a run without saving its artifacts."},"prover_timeout_seconds":{"type":"integer","minimum":1,"maximum":7200,"description":"Ceiling on each Prover job, forwarded as certoraRun --global_timeout. Caps the verification tail of a run whose rules are slow rather than wrong."}},"required":[]},"FuzzerRunLimits":{"type":"object","additionalProperties":false,"properties":{"max_budget_usd":{"type":"number","exclusiveMinimum":0,"maximum":10000,"description":"USD ceiling on this run's balance reservation, with at most four decimal places. It must be at least the run's current estimated price (otherwise 422 invalid_max_budget). The engine's LLM budget is derived from it; AWS runtime is billed on top at settlement, so the final charge can exceed it. Omitted uses the standard reservation (estimate × margin). AutoFuzzer takes no time or Prover-timeout limit."}},"required":[]},"AutoFuzzerRunRequest":{"type":"object","additionalProperties":false,"properties":{"source":{"$ref":"#/components/schemas/Source"},"contract":{"$ref":"#/components/schemas/Contract"},"limits":{"$ref":"#/components/schemas/FuzzerRunLimits"},"documents":{"$ref":"#/components/schemas/FuzzerDocuments"},"delivery":{"$ref":"#/components/schemas/GithubPullRequestDelivery"},"client_reference":{"type":"string","minLength":1,"maxLength":200}},"required":["source","contract"]},"TimeoutResolverRunRequest":{"type":"object","additionalProperties":false,"properties":{"run_url":{"type":"string","format":"uri","minLength":1,"maxLength":2048,"description":"The finished Prover run, in either of two forms. The report URL as certoraRun prints it, https://<prover host>/output/<user id>/<job id>/, with or without the anonymousKey query of a shareable link: the query is dropped and the key grants no access. Or the dashboard link to the same job, https://<dashboard host>/orgs/<org slug>/jobs/<job id>, with or without the /report suffix: the organization slug in it is not read for access."},"rule":{"type":"string","minLength":1,"maxLength":512,"description":"The rule or invariant that timed out."},"contract":{"type":"string","minLength":1,"maxLength":256,"description":"Narrow a parametric rule to one contract instantiation."},"method":{"type":"string","minLength":1,"maxLength":1024,"description":"Narrow a parametric rule to one method instantiation."},"property":{"$ref":"#/components/schemas/TimeoutResolverProperty"},"goal":{"type":"string","enum":["resolve_timeout","modularize"],"default":"resolve_timeout"},"app_description":{"type":"string","minLength":1,"maxLength":16384,"description":"What the verified application does, in prose."},"time_budget":{"type":"integer","minimum":1,"maximum":82800,"description":"Wall-clock budget in seconds. Omitted, the resolver's default applies. The maximum leaves the run time to upload its result before the container is killed."},"client_reference":{"type":"string","minLength":1,"maxLength":200}},"required":["run_url","rule","property"]},"TimeoutResolverProperty":{"type":"object","additionalProperties":false,"properties":{"title":{"type":"string","minLength":1,"maxLength":512},"description":{"type":"string","minLength":1,"maxLength":16384,"description":"The property in prose, as the rule formalizes it."},"sort":{"type":"string","enum":["invariant","safety_property","attack_vector"]}},"required":["title","description","sort"]},"TimeoutResolverSource":{"type":"object","additionalProperties":false,"properties":{"run_url":{"type":"string","format":"uri"},"rule":{"type":"string"},"contract":{"anyOf":[{"type":"string"},{"type":"null"}]},"method":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["run_url","rule","contract","method"]},"Progress":{"type":"object","additionalProperties":false,"properties":{"phase":{"type":"string","description":"Current provider phase. AI Auditor Auto Context may report _11_context_preparation while the run remains running. Dashboard preview planning_context is not a v2 run status. Keep polling the same run while planning continues."},"percent":{"anyOf":[{"type":"number","minimum":0,"maximum":100},{"type":"null"}]},"completed_steps":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"total_steps":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]}},"required":["phase","percent","completed_steps","total_steps"]},"Billing":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["reserved","metering","releasing","settled"]},"reserved_usd":{"type":"string","pattern":"^\\d+\\.\\d{4}$"},"charged_usd":{"anyOf":[{"type":"string","pattern":"^\\d+\\.\\d{4}$"},{"type":"null"}]}},"required":["status","reserved_usd","charged_usd"]},"Failure":{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string","description":"Safe terminal failure code. Auto Context may report auto_context_budget_exhausted, auto_context_timeout, auto_context_invalid_plan, auto_context_provider_error, or auto_context_configuration_error. Historical or other failures may use run_failed."},"detail":{"type":"string","description":"Safe human-readable explanation; branch on code, not this text."},"retryable":{"type":"boolean","description":"Whether a fresh attempt may be appropriate. A failed run remains terminal: replaying its Idempotency-Key recovers the same run. A new paid run requires an intentional new launch with a new key; never auto-launch merely because this flag is true."}},"required":["code","detail","retryable"]},"DeliveryFile":{"type":"object","additionalProperties":false,"properties":{"path":{"type":"string","minLength":1}},"required":["path"]},"RenamedFile":{"type":"object","additionalProperties":false,"properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1}},"required":["from","to"]},"RunDelivery":{"type":"object","additionalProperties":false,"properties":{"type":{"const":"github_pull_request"},"pull_request_number":{"type":"integer"},"status":{"type":"string","enum":["pending","succeeded","failed","skipped"]},"outcome":{"anyOf":[{"type":"string","enum":["committed","no_changes"]},{"type":"null"}]},"commit_sha":{"anyOf":[{"$ref":"#/components/schemas/CommitSha"},{"type":"null"}]},"files":{"type":"array","items":{"$ref":"#/components/schemas/DeliveryFile"}},"renamed_files":{"type":"array","items":{"$ref":"#/components/schemas/RenamedFile"}},"error":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type","pull_request_number","status","outcome","commit_sha","files","renamed_files","error"]},"AuditGithubRunDelivery":{"type":"object","additionalProperties":false,"properties":{"type":{"const":"github_pull_request"},"pull_request_number":{"type":"integer","minimum":1},"managed_by":{"const":"server"},"status":{"type":"string","enum":["pending","in_progress","completed"]},"check":{"anyOf":[{"type":"object","additionalProperties":false,"properties":{"id":{"type":"integer","minimum":1},"name":{"const":"Security Review"},"head_sha":{"$ref":"#/components/schemas/CommitSha"},"html_url":{"type":"string","format":"uri"},"status":{"type":"string","enum":["in_progress","completed"]}},"required":["id","name","head_sha","html_url","status"]},{"type":"null"}]},"error":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["type","pull_request_number","managed_by","status","check","error"]},"AuditorModelMode":{"type":"string","enum":["normal","frontier"]},"Run":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","format":"uuid"},"run_type":{"type":"string","enum":["ai_auditor_full","ai_auditor_diff","ai_auditor_finding_validation","auto_prover","auto_fuzzer","timeout_resolver"]},"model_mode":{"anyOf":[{"$ref":"#/components/schemas/AuditorModelMode"},{"type":"null"}],"description":"Recorded AI Auditor model mode. Null for other engines and historical runs without a recorded mode; do not infer Normal for historical null values."},"status":{"type":"string","enum":["queued","running","finalizing","succeeded","failed","cancelling","cancelled"]},"source":{"oneOf":[{"$ref":"#/components/schemas/Source"},{"$ref":"#/components/schemas/DiffSource"},{"$ref":"#/components/schemas/TimeoutResolverSource"}]},"client_reference":{"anyOf":[{"type":"string"},{"type":"null"}]},"progress":{"anyOf":[{"$ref":"#/components/schemas/Progress"},{"type":"null"}]},"result":{"type":"object","additionalProperties":false,"properties":{"available":{"type":"boolean","description":"Whether a result document can be fetched for this run. False for every status but succeeded, and false for a succeeded run whose engine published no readable result."}},"required":["available"]},"billing":{"$ref":"#/components/schemas/Billing"},"failure":{"anyOf":[{"$ref":"#/components/schemas/Failure"},{"type":"null"}]},"delivery":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/RunDelivery"},{"$ref":"#/components/schemas/AuditGithubRunDelivery"}]},{"type":"null"}]},"cancellable":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"started_at":{"anyOf":[{"type":"string","format":"date-time","description":"First time the application observed the provider running. Null while queued or when a run reached a terminal state before a running observation."},{"type":"null"}]},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"dashboard_url":{"type":"string","format":"uri","description":"Dashboard page for the run. A timeout_resolver run has no dashboard view, so its link is the organization's API page."}},"required":["id","run_type","status","source","client_reference","progress","result","billing","failure","delivery","cancellable","created_at","started_at","completed_at","dashboard_url"]},"RunEnvelope":{"type":"object","additionalProperties":false,"properties":{"request_id":{"type":"string","format":"uuid"},"run":{"$ref":"#/components/schemas/Run"}},"required":["request_id","run"]},"RunListEnvelope":{"type":"object","additionalProperties":false,"properties":{"request_id":{"type":"string","format":"uuid"},"runs":{"type":"array","items":{"$ref":"#/components/schemas/Run"}},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["request_id","runs","next_cursor"]},"Estimate":{"type":"object","additionalProperties":false,"properties":{"model_mode":{"$ref":"#/components/schemas/AuditorModelMode","description":"Model mode priced by an AI Auditor estimate. Omitted for AutoProver and AutoFuzzer."},"estimated_cost_usd":{"type":"string","pattern":"^\\d+\\.\\d{4}$"},"minimum_balance_required_usd":{"type":"string","pattern":"^\\d+\\.\\d{4}$"},"balance_usd":{"type":"string","pattern":"^-?\\d+\\.\\d{4}$"},"can_launch":{"type":"boolean"},"estimate_quote_id":{"type":"string","format":"uuid","description":"Returned for AutoProver and AutoFuzzer estimates. Send it as Estimate-Quote-Id when launching to pin the repository estimate."}},"required":["estimated_cost_usd","minimum_balance_required_usd","balance_usd","can_launch"]},"EstimateEnvelope":{"type":"object","additionalProperties":false,"properties":{"request_id":{"type":"string","format":"uuid"},"estimate":{"$ref":"#/components/schemas/Estimate"}},"required":["request_id","estimate"]},"AccessOrganization":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"},"slug":{"type":"string","minLength":1}},"required":["id","name","slug"]},"AccessServiceKey":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","minLength":1},"name":{"type":"string"},"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ServiceKeyScope"}}},"required":["id","name","scopes"]},"AccessCapabilities":{"type":"object","additionalProperties":false,"properties":{"run_types":{"type":"array","items":{"type":"string","enum":["ai_auditor_full","ai_auditor_diff","ai_auditor_finding_validation","auto_prover","auto_fuzzer","timeout_resolver"]},"uniqueItems":true},"github_app_connected":{"type":"boolean"}},"required":["run_types","github_app_connected"]},"AccessBilling":{"type":"object","additionalProperties":false,"properties":{"balance_usd":{"type":"string","pattern":"^-?\\d+\\.\\d{4}$"}},"required":["balance_usd"]},"AccessEnvelope":{"type":"object","additionalProperties":false,"properties":{"request_id":{"type":"string","format":"uuid"},"organization":{"$ref":"#/components/schemas/AccessOrganization"},"key":{"$ref":"#/components/schemas/AccessServiceKey"},"capabilities":{"$ref":"#/components/schemas/AccessCapabilities"},"billing":{"$ref":"#/components/schemas/AccessBilling"},"dashboard_url":{"type":"string","format":"uri"}},"required":["request_id","organization","key","capabilities","billing","dashboard_url"]},"ProverTokenResponse":{"type":"object","additionalProperties":false,"properties":{"token":{"type":"string","minLength":1,"pattern":"^[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+$","readOnly":true,"description":"Compact signed JWT for Certora Prover authentication. The response contains only token, without a run or request_id envelope. Expires after the configured token lifetime, 300 seconds by default."}},"required":["token"]},"PublicReport":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"format":{"const":"markdown"},"content":{"type":"string"}},"required":["format","content"]},{"type":"object","additionalProperties":false,"properties":{"format":{"const":"json"},"content":{}},"required":["format","content"]}]},"RunReportStatusCount":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["status","count"]},"RunReportRuleRef":{"type":"object","additionalProperties":false,"properties":{"spec_file":{"type":"string"},"name":{"type":"string"}},"required":["spec_file","name"]},"RunReportRule":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string"},"spec_file":{"type":"string"},"status":{"type":"string"},"line":{"anyOf":[{"type":"integer"},{"type":"null"}]},"duration_seconds":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"prover_link":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","spec_file","status","line","duration_seconds","prover_link"]},"RunReportProperty":{"type":"object","additionalProperties":false,"properties":{"title":{"type":"string"},"methods":{"type":"array","items":{"type":"string"}},"sort":{"type":"string"},"description":{"type":"string"},"component":{"type":"string"},"rule_refs":{"type":"array","items":{"$ref":"#/components/schemas/RunReportRuleRef"}}},"required":["title","methods","sort","description","component","rule_refs"]},"RunReportGroupRule":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string"},"spec_file":{"type":"string"},"status":{"type":"string"},"line":{"anyOf":[{"type":"integer"},{"type":"null"}]},"duration_seconds":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"prover_link":{"anyOf":[{"type":"string"},{"type":"null"}]},"descriptions":{"type":"array","items":{"type":"string"}}},"required":["name","spec_file","status","line","duration_seconds","prover_link","descriptions"]},"RunReportGroup":{"type":"object","additionalProperties":false,"properties":{"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"members":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"component":{"type":"string"},"title":{"type":"string"}},"required":["component","title"]}},"rules":{"type":"array","items":{"$ref":"#/components/schemas/RunReportGroupRule"}}},"required":["slug","title","description","status","members","rules"]},"RunReportSkipped":{"type":"object","additionalProperties":false,"properties":{"title":{"type":"string"},"methods":{"type":"array","items":{"type":"string"}},"sort":{"type":"string"},"description":{"type":"string"},"component":{"type":"string"},"rule_refs":{"type":"array","items":{"$ref":"#/components/schemas/RunReportRuleRef"}},"reason":{"type":"string"}},"required":["title","methods","sort","description","component","rule_refs","reason"]},"RunReportGaveUpProperty":{"type":"object","additionalProperties":false,"properties":{"title":{"type":"string"},"methods":{"type":"array","items":{"type":"string"}},"sort":{"type":"string"},"description":{"type":"string"}},"required":["title","methods","sort","description"]},"RunReportGaveUpComponent":{"type":"object","additionalProperties":false,"properties":{"component":{"type":"string"},"properties":{"type":"array","items":{"$ref":"#/components/schemas/RunReportGaveUpProperty"}}},"required":["component","properties"]},"RunReportCoverage":{"type":"object","additionalProperties":false,"properties":{"total_properties":{"type":"integer","minimum":0},"total_rules":{"type":"integer","minimum":0},"total_groups":{"type":"integer","minimum":0},"properties_per_group_min":{"type":"integer","minimum":0},"properties_per_group_max":{"type":"integer","minimum":0},"property_coverage_complete":{"type":"boolean"},"properties_in_no_group":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"component":{"type":"string"},"title":{"type":"string"}},"required":["component","title"]}},"rules_spanning_multiple_groups":{"type":"array","items":{"type":"string"}},"skipped_count":{"type":"integer","minimum":0},"gave_up_component_count":{"type":"integer","minimum":0},"dropped_orphan_rules":{"type":"integer","minimum":0},"warnings":{"type":"array","items":{"type":"string"}}},"required":["total_properties","total_rules","total_groups","properties_per_group_min","properties_per_group_max","property_coverage_complete","properties_in_no_group","rules_spanning_multiple_groups","skipped_count","gave_up_component_count","dropped_orphan_rules","warnings"]},"AutoProverReport":{"type":"object","additionalProperties":false,"properties":{"schema_version":{"type":"string"},"backend":{"anyOf":[{"type":"string","enum":["prover","foundry"]},{"type":"null"}]},"contract_name":{"type":"string"},"design_doc":{"anyOf":[{"type":"object","additionalProperties":false,"properties":{"path":{"type":"string"},"discovered":{"type":"boolean"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["path","discovered","reason"]},{"type":"null"}]},"run_timestamp_utc":{"anyOf":[{"type":"string"},{"type":"null"}]},"outcome":{"type":"string","enum":["verified","verified_with_gaps","partial","issues_found","unknown"]},"rule_counts":{"type":"array","items":{"$ref":"#/components/schemas/RunReportStatusCount"}},"group_counts":{"type":"array","items":{"$ref":"#/components/schemas/RunReportStatusCount"}},"total_duration_seconds":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"prover_links":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"component":{"type":"string"},"url":{"type":"string"},"is_http_url":{"type":"boolean"}},"required":["component","url","is_http_url"]}},"properties":{"type":"array","items":{"$ref":"#/components/schemas/RunReportProperty"}},"rules":{"type":"array","items":{"$ref":"#/components/schemas/RunReportRule"}},"groups":{"type":"array","items":{"$ref":"#/components/schemas/RunReportGroup"}},"skipped":{"type":"array","items":{"$ref":"#/components/schemas/RunReportSkipped"}},"gave_up_components":{"type":"array","items":{"$ref":"#/components/schemas/RunReportGaveUpComponent"}},"coverage":{"$ref":"#/components/schemas/RunReportCoverage"}},"required":["schema_version","backend","contract_name","run_timestamp_utc","outcome","rule_counts","group_counts","total_duration_seconds","prover_links","properties","rules","groups","skipped","gave_up_components","coverage"]},"AiAuditorResultData":{"type":"object","additionalProperties":false,"properties":{"report":{"$ref":"#/components/schemas/PublicReport"},"intermediate":{"anyOf":[{"$ref":"#/components/schemas/PublicReport"},{"type":"null"}]}},"required":["report","intermediate"]},"FindingValidationResultData":{"type":"object","additionalProperties":false,"properties":{"report":{"$ref":"#/components/schemas/PublicReport"}},"required":["report"]},"AissResultData":{"type":"object","additionalProperties":false,"properties":{"contract":{"$ref":"#/components/schemas/Contract"},"report":{"$ref":"#/components/schemas/AutoProverReport"}},"required":["contract","report"]},"AiAuditorFullResult":{"type":"object","additionalProperties":false,"properties":{"schema_version":{"const":"1"},"run_id":{"type":"string","format":"uuid"},"run_type":{"const":"ai_auditor_full"},"data":{"$ref":"#/components/schemas/AiAuditorResultData"}},"required":["schema_version","run_id","run_type","data"]},"AiAuditorDiffResult":{"type":"object","additionalProperties":false,"properties":{"schema_version":{"const":"1"},"run_id":{"type":"string","format":"uuid"},"run_type":{"const":"ai_auditor_diff"},"data":{"$ref":"#/components/schemas/AiAuditorResultData"}},"required":["schema_version","run_id","run_type","data"]},"FindingValidationResult":{"type":"object","additionalProperties":false,"properties":{"schema_version":{"const":"1"},"run_id":{"type":"string","format":"uuid"},"run_type":{"const":"ai_auditor_finding_validation"},"data":{"$ref":"#/components/schemas/FindingValidationResultData"}},"required":["schema_version","run_id","run_type","data"]},"AutoProverResult":{"type":"object","additionalProperties":false,"properties":{"schema_version":{"const":"1"},"run_id":{"type":"string","format":"uuid"},"run_type":{"const":"auto_prover"},"data":{"$ref":"#/components/schemas/AissResultData"}},"required":["schema_version","run_id","run_type","data"]},"AutoFuzzerResult":{"type":"object","additionalProperties":false,"properties":{"schema_version":{"const":"1"},"run_id":{"type":"string","format":"uuid"},"run_type":{"const":"auto_fuzzer"},"data":{"$ref":"#/components/schemas/AissResultData"}},"required":["schema_version","run_id","run_type","data"]},"TimeoutResolverResultData":{"type":"object","additionalProperties":false,"description":"The resolver's result document, reduced to the keys below. A key a later resolver release adds is not served until this list names it.","properties":{"schema_version":{"type":"integer"},"operation":{"type":"string"},"status":{"type":"string"},"message":{"anyOf":[{"type":"string"},{"type":"null"}]},"run":{"anyOf":[{"type":"object"},{"type":"null"}]},"products":{"type":"object"},"outcome":{"anyOf":[{"type":"object"},{"type":"null"}]},"compiler_output":{"anyOf":[{"type":"string"},{"type":"null"}]},"error":{"anyOf":[{"type":"object"},{"type":"null"}]}}},"TimeoutResolverResult":{"type":"object","additionalProperties":false,"properties":{"schema_version":{"const":"1"},"run_id":{"type":"string","format":"uuid"},"run_type":{"const":"timeout_resolver"},"data":{"$ref":"#/components/schemas/TimeoutResolverResultData"}},"required":["schema_version","run_id","run_type","data"]},"ResultEnvelope":{"type":"object","additionalProperties":false,"properties":{"request_id":{"type":"string","format":"uuid"},"result":{"oneOf":[{"$ref":"#/components/schemas/AiAuditorFullResult"},{"$ref":"#/components/schemas/AiAuditorDiffResult"},{"$ref":"#/components/schemas/FindingValidationResult"},{"$ref":"#/components/schemas/AutoProverResult"},{"$ref":"#/components/schemas/AutoFuzzerResult"},{"$ref":"#/components/schemas/TimeoutResolverResult"}],"discriminator":{"propertyName":"run_type"}}},"required":["request_id","result"]},"Artifact":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"name":{"type":"string"},"path":{"type":"string"},"category":{"type":"string"},"size_bytes":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"last_modified_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"download_url":{"type":"string","format":"uri"}},"required":["id","name","path","category","size_bytes","last_modified_at","download_url"]},"ArtifactListEnvelope":{"type":"object","additionalProperties":false,"properties":{"request_id":{"type":"string","format":"uuid"},"artifacts":{"type":"array","items":{"$ref":"#/components/schemas/Artifact"}},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["request_id","artifacts","next_cursor"]},"CommitDeliveryEnvelope":{"type":"object","additionalProperties":false,"properties":{"request_id":{"type":"string","format":"uuid"},"delivery":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["committed","no_changes"]},"commit_sha":{"anyOf":[{"$ref":"#/components/schemas/CommitSha"},{"type":"null"}]},"files":{"type":"array","items":{"$ref":"#/components/schemas/DeliveryFile"}},"renamed_files":{"type":"array","items":{"$ref":"#/components/schemas/RenamedFile"}}},"required":["status","commit_sha","files","renamed_files"]}},"required":["request_id","delivery"]},"ServiceKeyScope":{"type":"string","enum":["runs:create","runs:read","runs:cancel","artifacts:read","generated_files:write","prover:access"]}}}}