{"openapi":"3.1.0","info":{"title":"Forge Decision Records API","description":"Deterministic decision engine with signed, replayable decision records. Evidence, constraints, and an explicit action menu go in; Forge returns only a menu-bound selected action, including a safe abstention or escalation when configured, plus an Ed25519-signed record that can be verified offline. No generative model is in the decision path.","version":"2.0.0"},"paths":{"/healthz":{"get":{"tags":["health"],"summary":"Healthz","description":"Liveness: the process is up.","operationId":"healthz_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductHealthResponse"}}}},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[],"x-forge-authentication":"public"}},"/readyz":{"get":{"tags":["health"],"summary":"Readyz","description":"Dependency-aware readiness with a shallow public response.","operationId":"readyz_readyz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductReadinessProbeResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductReadinessProbeResponse"}}}},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[],"x-forge-authentication":"public"}},"/v1/decision-records/evaluate":{"post":{"summary":"Evaluate a bounded high-consequence decision","description":"Submit an explicit action menu, bounded evidence, and declared controls. Forge returns a deterministic menu-bound disposition or safe abstention plus a complete signed proof trail. The caller retains execution authority and must verify the returned record against its independently provisioned signing-key pin. Governed release requests require request_id, client_request_sha256, and an Idempotency-Key that exactly equals request_id.","operationId":"evaluate_decision_record_v1_decision_records_evaluate_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgeEvaluateDecisionRequest"},"examples":{"synthetic_workflow":{"summary":"Synthetic evidence review","value":{"tenant_id":"partner-demo-tenant","industry":"generic","workflow_type":"generic_decision","governance_class":"standard_decision","subject":"Q3 vendor renewal — Acme Analytics","decision_question":"Renew the analytics platform contract for another year?","decision_options":["renew","renegotiate","terminate","hold"],"abstention_action":"hold","evidence":[{"evidence_id":"finance-usage-q2","title":"Usage and support trend","summary":"Active seats down 18% QoQ; support tickets up 40%.","source_system":"finance_usage_q2","source_type":"internal_system","confidence":0.7,"claim_support_level":"submitted_fact","option_support":{"renew":-0.7,"renegotiate":0.6,"terminate":0.3,"hold":0.2}},{"evidence_id":"security-review-2026-04","title":"Current security review","summary":"SOC 2 Type II current; no open critical findings.","source_system":"security_review_2026_04","source_type":"third_party_assessment","confidence":0.8,"claim_support_level":"submitted_fact","option_support":{"renew":0.8,"renegotiate":0.2,"terminate":-0.6,"hold":-0.2}},{"evidence_id":"exec-migration-estimate","title":"Migration cost estimate","summary":"Migration to alternate vendor estimated at 4.2 FTE-months.","source_system":"executive_migration_estimate","source_type":"partner_estimate","confidence":0.5,"claim_support_level":"partner_supplied","option_support":{"renew":0.5,"renegotiate":0.3,"terminate":-0.4,"hold":0.1}}],"context":{"contract_value_usd":420000,"renewal_deadline":"2026-09-30"},"hard_constraints":[],"learning_rights":{"learning_mode":"no_training","retention_opt_in":false},"requested_outputs":["signed_decision_record","replay_key","evidence_contributions"]}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionRecordCompactEvaluateResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"decision:write","x-forge-idempotency":{"header":"Idempotency-Key","maximum_length":128,"header_required":false,"automatic_payload_hash_fallback":true,"client_request_binding_required":false,"client_request_binding_required_when":"governed_release_attestations_present","idempotency_key_must_equal_request_id":false,"idempotency_key_must_equal_request_id_when_binding_present":true,"idempotency_key_must_equal_event_id":false,"same_key_different_payload_status":422},"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Optional stable retry key. When client request binding is supplied, this value must exactly equal request_id. Do not include PII; reuse only with the same body.","schema":{"type":"string","minLength":1,"maxLength":128}}],"security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records.write"]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records.write","decision_records"],"x-forge-authentication":"required"}},"/v1/decision-records/signing-identity":{"get":{"summary":"Decision Records Signing Identity","description":"Publish the deployment's signing-identity readback (public material).\n\nThis endpoint cannot authenticate itself as a trust bootstrap. Partners\nderive the full key ID from these public-key bytes, compare it with a\nseparately approved onboarding/configuration pin, and then use that pin\nfor offline attribution. Fetching this route at decision time is not\nindependent pinning.","operationId":"decision_records_signing_identity_v1_decision_records_signing_identity_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SigningIdentityResponse"}}}},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[],"x-forge-authentication":"public"}},"/v1/decision-records/describe":{"get":{"summary":"Describe Decision Engine","description":"Public self-description of the decision-engine facade.\n\nReturns the supported industries, the engine boundaries, the\nschema versions emitted, and the honest \"what this facade is\nNOT\" boundary. Public (no auth) — the description is non-\nsensitive and identical for every partner.","operationId":"describe_decision_engine_v1_decision_records_describe_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionEngineDescribeResponse"}}}},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[],"x-forge-authentication":"public"}},"/v1/decision-records/integration-presets":{"get":{"summary":"Decision Records Integration Presets","description":"Frozen integration kit: industry-agnostic vs agentic payloads and lifecycle.","operationId":"decision_records_integration_presets_v1_decision_records_integration_presets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationPresetsResponse"}}}},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[],"x-forge-authentication":"public"}},"/v1/decision-records/manifest":{"get":{"summary":"Decision Records Surface Manifest","description":"Public manifest for partner/OEM API surface discovery.","operationId":"decision_records_surface_manifest_v1_decision_records_manifest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiSurfaceManifestResponse"}}}},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[],"x-forge-authentication":"public"}},"/v1/webhooks/decision-records":{"post":{"summary":"Agentic Decision Record Webhook","description":"Agentic workflow completion: evaluate, sign, escalate when required.\n\nThis is a retrospective after-action accountability route. Partners\nsubmit an action that already completed inside their own boundary;\nForge returns a signed review record and may queue human-review\nnotification. It never returns execution clearance and cannot replace\neither protected pre-action endpoint.","operationId":"agentic_decision_record_webhook_v1_webhooks_decision_records_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgeDecisionWebhookRequest"},"examples":{"completed_agent_workflow":{"summary":"Completed partner-owned agent workflow","value":{"tenant_id":"partner-demo-tenant","industry":"generic","workflow_type":"agent_action_audit","governance_class":"high_consequence_agent_action","subject":"Completed customer-agent procurement evidence review","decision_question":"Accept the completed agent evidence trail for audit, revise it, escalate, or hold?","decision_options":["accept","revise","escalate","hold"],"abstention_action":"hold","evidence":[{"evidence_id":"partner-agent-run-8f3a","title":"Agent vendor comparison","summary":"The customer agent compared three vendors against the egress control rubric and recorded its completed recommendation.","source_system":"partner_agent_runtime","source_type":"agent_output","confidence":0.65,"claim_support_level":"model_inference","option_support":{"accept":0.65,"revise":0.15,"escalate":0.2,"hold":0.1}},{"evidence_id":"security-policy-egress-v4","title":"Customer-managed key requirement","summary":"The submitted policy requires customer-managed keys for cross-region replication.","source_system":"security_policy_registry","source_type":"internal_policy","confidence":0.9,"claim_support_level":"submitted_fact","option_support":{"accept":-0.4,"revise":0.7,"escalate":0.5,"hold":0.4}}],"context":{"integration_mode":"after_action","retrospective_only":true,"agent_runtime":"partner_owned","agent_completion_status":"completed_locally","execution_authority":"none_retrospective_accountability_only","human_reviewer_required":true},"learning_rights":{"learning_mode":"no_training","retention_opt_in":false},"requested_outputs":["signed_decision_record","replay_key","agent_action_readiness"],"request_id":"agent-workflow-completion-001","client_request_sha256":"398adb5a73c9ae1d59cce7e34a4ac343dce62e8168910992dc9dc89e6af433b9"}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionRecordCompactEvaluateResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"decision:write","x-forge-idempotency":{"header":"Idempotency-Key","maximum_length":128,"header_required":true,"automatic_payload_hash_fallback":false,"client_request_binding_required":true,"client_request_binding_required_when":null,"idempotency_key_must_equal_request_id":true,"idempotency_key_must_equal_request_id_when_binding_present":true,"idempotency_key_must_equal_event_id":false,"same_key_different_payload_status":422},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Required request binding: this value must exactly equal the request_id field. Do not include PII; reuse only with the same body.","schema":{"type":"string","minLength":1,"maxLength":128}}],"security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records.write"]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records.write","decision_records"],"x-forge-authentication":"required"}},"/v1/decision-records/schemas":{"get":{"summary":"Decision Records Schemas","description":"Seven platform contracts — what data to send and what comes back.","operationId":"decision_records_schemas_v1_decision_records_schemas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformContractsResponse"}}}},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[],"x-forge-authentication":"public"}},"/v1/decision-records/pre-action":{"post":{"summary":"Pre Action Assessment","description":"Assess an agent action before the customer's protected execution boundary.","operationId":"pre_action_assessment_v1_decision_records_pre_action_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgePreActionDecisionRequest"},"examples":{"enterprise_agent_pre_action":{"summary":"Agent action checked before customer-controlled execution","value":{"tenant_id":"partner-demo-tenant","control_profile_expectation":{"profile_id":"enterprise-agent-production"},"industry":"generic","workflow_type":"enterprise_agent_pre_action","governance_class":"high_consequence_agent_action","subject":"Refund agent proposes a 450 USD refund","decision_question":"Should the agent issue the proposed refund?","decision_options":["allow","hold","escalate","block"],"abstention_action":"hold","proposed_action_payload_sha256":"d85ece9c2a9cb199b34b8ee1bae2d79a1f9d3e98b222be202b046c9d1c9ff56a","evidence":[{"evidence_id":"refund-proposal-001","title":"Proposed refund exceeds automatic authority","summary":"The agent proposes 450 USD; policy allows automatic refunds up to 250 USD.","source_system":"refund_policy_engine","source_type":"policy_check","confidence":0.95,"claim_support_level":"submitted_fact","option_support":{"allow":-0.9,"hold":0.6,"escalate":0.9,"block":0.2}}],"constraint_results":[{"constraint":"refund_auto_approve_limit_usd","passed":false,"severity":"hard","detail":"450 USD exceeds the 250 USD automatic-refund limit.","source":"refund_policy_engine"}],"hard_constraints":["refund_auto_approve_limit_usd"],"context":{"integration_mode":"pre_action","agent_runtime":"partner_owned","agent_id":"refund-agent-1","proposed_action":"issue_refund:450_usd"},"learning_rights":{"learning_mode":"no_training","retention_opt_in":false},"request_id":"refund-pre-action-001","client_request_sha256":"cec3f3d1e3d07d32eb19cdf92a632160e82ffbf311b1eb6cecafb1378a6a0600"}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionRecordCompactEvaluateResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"decision:write","x-forge-idempotency":{"header":"Idempotency-Key","maximum_length":128,"header_required":true,"automatic_payload_hash_fallback":false,"client_request_binding_required":true,"client_request_binding_required_when":null,"idempotency_key_must_equal_request_id":true,"idempotency_key_must_equal_request_id_when_binding_present":true,"idempotency_key_must_equal_event_id":false,"same_key_different_payload_status":422},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Required request binding: this value must exactly equal the request_id field. Do not include PII; reuse only with the same body.","schema":{"type":"string","minLength":1,"maxLength":128}}],"security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records.write"]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records.write","decision_records"],"x-forge-authentication":"required"}},"/v1/agentic/events/evaluate":{"post":{"summary":"Agentic Event Evaluate","description":"Normalize agentic event input into a universal decision payload and signed record.","operationId":"agentic_event_evaluate_v1_agentic_events_evaluate_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgenticEventRequest"},"examples":{"enterprise_agent_event":{"summary":"Structured pre-action event","value":{"schema_version":"forge-agentic-event/v1","request_id":"refund-agent-event-001","tenant_id":"partner-demo-tenant","agent_id":"refund-agent-1","agent_version":"2026.07","governance_class":"high_consequence_agent_action","integration_mode":"pre_action","task":"Decide whether to issue a synthetic 450 USD refund.","proposed_action":"issue_refund:450_usd","proposed_action_payload_sha256":"d85ece9c2a9cb199b34b8ee1bae2d79a1f9d3e98b222be202b046c9d1c9ff56a","decision_options":["proceed","hold","escalate","block"],"abstention_action":"hold","hard_constraints":["refund_auto_approve_limit_usd"],"constraint_results":[{"constraint":"refund_auto_approve_limit_usd","passed":false,"severity":"hard","detail":"450 USD exceeds the 250 USD automatic limit.","source":"refund_policy_engine"}],"workflow_type":"enterprise_agent_pre_action","learning_rights":{"learning_mode":"no_training","retention_opt_in":false},"client_request_sha256":"6c9f5b5349602bf464ece373fe4f636470db3240b9648c39ff7099b4fe21c3c1"}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionRecordCompactEvaluateResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"decision:write","x-forge-idempotency":{"header":"Idempotency-Key","maximum_length":128,"header_required":true,"automatic_payload_hash_fallback":false,"client_request_binding_required":true,"client_request_binding_required_when":null,"idempotency_key_must_equal_request_id":true,"idempotency_key_must_equal_request_id_when_binding_present":true,"idempotency_key_must_equal_event_id":false,"same_key_different_payload_status":422},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Required request binding: this value must exactly equal the request_id field. Do not include PII; reuse only with the same body.","schema":{"type":"string","minLength":1,"maxLength":128}}],"security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records.write"]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records.write","decision_records"],"x-forge-authentication":"required"}},"/v1/calibration/per-version":{"get":{"summary":"Per Version","description":"Per-model-version Brier + reliability-bins drill-down.\n\nRead-only. Surfaces which model versions contributed to the\ncohort's calibration and whether they're mixing. Partner\nanalysts use this view to detect engine-version drift\nbefore the aggregate Brier moves.","operationId":"per_version_v1_calibration_per_version_get","parameters":[{"name":"industry","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"description":"Vertical (e.g. insurance_decision, cyber_threat_intel).","title":"Industry"},"description":"Vertical (e.g. insurance_decision, cyber_threat_intel)."},{"name":"client_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"description":"Optional tenant assertion; when supplied, it must match the authenticated org_id.","title":"Client Id"},"description":"Optional tenant assertion; when supplied, it must match the authenticated org_id."},{"name":"workflow_type","in":"query","required":false,"schema":{"type":"string","maxLength":128,"default":"","title":"Workflow Type"}},{"name":"system_version","in":"query","required":false,"schema":{"type":"string","maxLength":128,"default":"","title":"System Version"}},{"name":"rubric_version","in":"query","required":false,"schema":{"type":"string","maxLength":128,"default":"","title":"Rubric Version"}},{"name":"row_limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"description":"Maximum retained calibration rows in this bounded view.","default":1000,"title":"Row Limit"},"description":"Maximum retained calibration rows in this bounded view."},{"name":"snapshot_max_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Stable snapshot high-water mark returned by a prior page.","title":"Snapshot Max Id"},"description":"Stable snapshot high-water mark returned by a prior page."},{"name":"before_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"description":"Read rows older than this immutable keyset ID.","title":"Before Id"},"description":"Read rows older than this immutable keyset ID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalibrationPerVersionResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"calibration:read","security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records"],"x-forge-authentication":"required"}},"/v1/calibration/delta":{"get":{"summary":"Delta","description":"Calibration delta — what changed in the partner cohort\nbetween ``since_iso`` and now.\n\nRead-only. Returns the Brier + reliability-bins before AND\nafter the cutoff, plus a derived delta block (samples\nchange, Brier change, status change). Useful for the\npartner's monthly review meeting.","operationId":"delta_v1_calibration_delta_get","parameters":[{"name":"industry","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"description":"Vertical (e.g. insurance_decision, cyber_threat_intel).","title":"Industry"},"description":"Vertical (e.g. insurance_decision, cyber_threat_intel)."},{"name":"since_iso","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"ISO-8601 cutoff. Entries with created_at strictly later than this go in 'after'. If omitted, partitions at the median created_at.","title":"Since Iso"},"description":"ISO-8601 cutoff. Entries with created_at strictly later than this go in 'after'. If omitted, partitions at the median created_at."},{"name":"client_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"description":"Optional tenant assertion; when supplied, it must match the authenticated org_id.","title":"Client Id"},"description":"Optional tenant assertion; when supplied, it must match the authenticated org_id."},{"name":"workflow_type","in":"query","required":false,"schema":{"type":"string","maxLength":128,"default":"","title":"Workflow Type"}},{"name":"system_version","in":"query","required":false,"schema":{"type":"string","maxLength":128,"default":"","title":"System Version"}},{"name":"rubric_version","in":"query","required":false,"schema":{"type":"string","maxLength":128,"default":"","title":"Rubric Version"}},{"name":"engine_identity_sha256","in":"query","required":false,"schema":{"type":"string","maxLength":64,"pattern":"^[0-9a-fA-F]{64}$|^$","description":"Exact signed engine identity. Supply it to prevent a drift comparison from mixing engine/config/prior populations.","default":"","title":"Engine Identity Sha256"},"description":"Exact signed engine identity. Supply it to prevent a drift comparison from mixing engine/config/prior populations."},{"name":"row_limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"description":"Maximum retained calibration rows in this bounded view.","default":1000,"title":"Row Limit"},"description":"Maximum retained calibration rows in this bounded view."},{"name":"snapshot_max_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Snapshot Max Id"}},{"name":"before_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Before Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalibrationDeltaResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"calibration:read","security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records"],"x-forge-authentication":"required"}},"/v1/calibration/outcomes":{"post":{"summary":"Submit Outcome","description":"Submit ground-truth outcome for a prior signed decision record.\n\nCloses the learning loop: evaluate registers the prediction;\nthis endpoint tags it with what actually happened so Brier score\nand reliability bins accrue on the partner's own book.","operationId":"submit_outcome_v1_calibration_outcomes_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalibrationOutcomeSubmit"},"examples":{"customer_asserted_outcome":{"summary":"Outcome tied to a previously signed record","value":{"schema_version":"forge-outcome/v2","client_id":"partner-demo-tenant","industry":"generic_decision","record_id":"<record_id from evaluate response>","final_outcome":"renew","partner_decision":"renew","observed_at":"2026-07-10T18:30:00Z","outcome_authority":{"authority_type":"system_of_record","authority_id":"board-minutes-registry","source_reference":"board_minutes_2026-06-20","attested_at":"2026-07-10T18:31:00Z"},"outcome_evidence":{"schema_version":"forge-outcome-evidence-reference/v1","evidence_sha256":"35574ed6dd28245ce750c859da4f152a00a91e69dfbccd4d9b4ac1bca3798143","evidence_id":"board_minutes_2026-06-20","source_system_id":"board-minutes-registry"}}}}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalibrationOutcomeResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"calibration:write","security":[{"ForgeApiKeyAuth":[]}],"x-forge-authentication":"durably_authority_bound_api_key_required"}},"/v1/calibration/profile":{"get":{"summary":"Calibration Profile","description":"Version-scoped calibration profile — tenant-local, no cross-customer training.","operationId":"calibration_profile_v1_calibration_profile_get","parameters":[{"name":"industry","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"description":"Canonical industry from the signed record.","title":"Industry"},"description":"Canonical industry from the signed record."},{"name":"workflow_type","in":"query","required":false,"schema":{"type":"string","maxLength":128,"description":"Scope to workflow (optional).","default":"","title":"Workflow Type"},"description":"Scope to workflow (optional)."},{"name":"system_version","in":"query","required":false,"schema":{"type":"string","maxLength":128,"description":"Scope to customer system/model version.","default":"","title":"System Version"},"description":"Scope to customer system/model version."},{"name":"rubric_version","in":"query","required":false,"schema":{"type":"string","maxLength":128,"description":"Scope to customer policy/rubric version.","default":"","title":"Rubric Version"},"description":"Scope to customer policy/rubric version."},{"name":"engine_identity_sha256","in":"query","required":false,"schema":{"type":"string","maxLength":64,"pattern":"^[0-9a-fA-F]{64}$|^$","description":"Scope to one immutable signed Forge engine identity.","default":"","title":"Engine Identity Sha256"},"description":"Scope to one immutable signed Forge engine identity."},{"name":"client_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"description":"Optional tenant assertion; when supplied, it must match the authenticated org_id.","title":"Client Id"},"description":"Optional tenant assertion; when supplied, it must match the authenticated org_id."},{"name":"row_limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"description":"Maximum retained calibration rows in this bounded view.","default":1000,"title":"Row Limit"},"description":"Maximum retained calibration rows in this bounded view."},{"name":"snapshot_max_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Snapshot Max Id"}},{"name":"before_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Before Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalibrationProfileResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"calibration:read","security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records"],"x-forge-authentication":"required"}},"/v1/decision-records/realized-outcomes":{"post":{"summary":"Ingest Realized Outcome For Record","description":"Ingest a realized outcome against a signed decision record.\n\nDistinct from ``POST /v1/calibration/outcomes``, which records the\ncustomer-attested outcome contract for a calibration registration.\nThis endpoint resolves the signed record by replay key, enforces the\nrecord's signed learning rights, attaches a signed outcome block, and\nappends the calibration delta to the tenant's outcome ledger.","operationId":"ingest_realized_outcome_v1_decision_records_realized_outcomes_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealizedOutcomeIngestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealizedOutcomeIngestResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"calibration:write","security":[{"ForgeApiKeyAuth":[]}],"x-forge-authentication":"durably_authority_bound_api_key_required"}},"/oauth/token":{"post":{"tags":["oauth"],"summary":"Oauth Token","description":"OAuth2 client-credentials grant (M2M).\n\nAccepts ``application/x-www-form-urlencoded`` or JSON body with\n``grant_type=client_credentials``, ``client_id``, ``client_secret``.","operationId":"oauth_token_oauth_token_post","requestBody":{"content":{"application/json":{"schema":{"properties":{"grant_type":{"type":"string","const":"client_credentials","title":"Grant Type"},"client_id":{"type":"string","maxLength":255,"minLength":1,"title":"Client Id"},"client_secret":{"type":"string","maxLength":4096,"minLength":1,"format":"password","title":"Client Secret","writeOnly":true},"scope":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Scope"}},"additionalProperties":false,"type":"object","required":["grant_type","client_id","client_secret"],"title":"OAuthClientCredentialsRequest","description":"Executable body contract shared by JSON and form-encoded clients."},"examples":{"client_credentials":{"summary":"Provisioned machine credential","value":{"grant_type":"client_credentials","client_id":"issued-client-id","client_secret":"replace-with-secret-manager-value","scope":"decision_records.write"}}}},"application/x-www-form-urlencoded":{"schema":{"properties":{"grant_type":{"type":"string","const":"client_credentials","title":"Grant Type"},"client_id":{"type":"string","maxLength":255,"minLength":1,"title":"Client Id"},"client_secret":{"type":"string","maxLength":4096,"minLength":1,"format":"password","title":"Client Secret","writeOnly":true},"scope":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Scope"}},"additionalProperties":false,"type":"object","required":["grant_type","client_id","client_secret"],"title":"OAuthClientCredentialsRequest","description":"Executable body contract shared by JSON and form-encoded clients."},"examples":{"client_credentials":{"summary":"Provisioned machine credential","value":{"grant_type":"client_credentials","client_id":"issued-client-id","client_secret":"replace-with-secret-manager-value","scope":"decision_records.write"}}}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthTokenResponse"}}}},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[],"x-forge-authentication":"oauth_client_credentials_body"}},"/v1/agent-control-profiles/activate":{"post":{"tags":["enterprise-agent-control"],"summary":"Activate Agent Control Profile","description":"Atomically create and activate the next tenant profile version.","operationId":"activate_agent_control_profile_v1_agent_control_profiles_activate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentControlProfileActivateRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentControlProfileResponse"}}}},"200":{"description":"Exact replay of the already-active immutable version.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentControlProfileResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[{"ForgeBearerAuth":[]}],"x-forge-authentication":"interactive_recent_mfa_required","x-forge-requires-recent-mfa":true}},"/v1/agent-control-profiles/active":{"get":{"tags":["enterprise-agent-control"],"summary":"Get Active Agent Control Profile","description":"Read one authenticated tenant profile lineage's active version.","operationId":"get_active_agent_control_profile_v1_agent_control_profiles_active_get","parameters":[{"name":"profile_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$","description":"Exact tenant profile lineage whose active immutable version must be returned.","title":"Profile Id"},"description":"Exact tenant profile lineage whose active immutable version must be returned."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentControlProfileResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"tenant:read","security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records"],"x-forge-authentication":"required"}},"/v1/governed-release-authority-policies/activate":{"post":{"tags":["model-and-data-governance-authority"],"summary":"Activate Governed Release Policy","operationId":"activate_governed_release_policy_v1_governed_release_authority_policies_activate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernedReleasePolicyActivateRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernedReleasePolicyResponse"}}}},"200":{"description":"Exact replay of the already-active immutable version.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernedReleasePolicyResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[{"ForgeBearerAuth":[]}],"x-forge-authentication":"interactive_recent_mfa_required","x-forge-requires-recent-mfa":true}},"/v1/governed-release-authority-policies/active":{"get":{"tags":["model-and-data-governance-authority"],"summary":"Get Active Governed Release Policy","operationId":"get_active_governed_release_policy_v1_governed_release_authority_policies_active_get","parameters":[{"name":"governance_class","in":"query","required":true,"schema":{"enum":["model_governance","synthetic_data_release"],"type":"string","title":"Governance Class"}},{"name":"workflow_type","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$","title":"Workflow Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernedReleasePolicyResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"tenant:read","security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records"],"x-forge-authentication":"required"}},"/v1/decision-records/integration-status":{"get":{"tags":["integration"],"summary":"Integration Status","description":"Honest map of what this host exposes — no auth required.","operationId":"integration_status_v1_decision_records_integration_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IntegrationStatusResponse"}}}},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[],"x-forge-authentication":"public"}},"/v1/agent-events":{"post":{"tags":["agent-run-monitoring"],"summary":"Append Agent Event","description":"Append exactly the next ordered event; exact duplicates are safe.","operationId":"append_agent_event_v1_agent_events_post","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$","title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRunEventAppendRequest"},"examples":{"ordered_agent_event":{"summary":"Append the first event in a synthetic monitored run","value":{"schema_version":"forge-agent-run-event/v1","event_id":"refund-run-001-event-001","run_id":"refund-run-001","sequence":1,"parent_event_id":null,"occurred_at":"2026-07-13T20:00:00Z","event_type":"run.started","tool_call_id":null,"action_payload_sha256":null,"result_payload_sha256":null,"previous_event_sha256":null}}}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRunAppendResponse"}}}},"200":{"description":"Exact normalized event replay; no additional event was stored.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRunAppendResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"decision:write","x-forge-idempotency":{"header":"Idempotency-Key","maximum_length":128,"header_required":true,"automatic_payload_hash_fallback":false,"client_request_binding_required":false,"client_request_binding_required_when":null,"idempotency_key_must_equal_request_id":false,"idempotency_key_must_equal_request_id_when_binding_present":false,"idempotency_key_must_equal_event_id":true,"same_key_different_payload_status":409},"security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records.write"]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records.write","decision_records"],"x-forge-authentication":"required"}},"/v1/agent-runs/{run_id}/events":{"get":{"tags":["agent-run-monitoring"],"summary":"Query Agent Run Events","description":"Return one tenant-bound, sequence-ordered page.","operationId":"query_agent_run_events_v1_agent_runs__run_id__events_get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$","title":"Run Id"}},{"name":"after_sequence","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"After Sequence"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRunEventsPageResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"audit:read","security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records"],"x-forge-authentication":"required"}},"/v1/agent-runs/{run_id}/export":{"get":{"tags":["agent-run-monitoring"],"summary":"Export Agent Run","description":"Return a complete chain signed by the configured Forge identity.","operationId":"export_agent_run_v1_agent_runs__run_id__export_get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRunExportResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"audit:read","security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records"],"x-forge-authentication":"required"}},"/v1/auth/keys/stage":{"post":{"tags":["auth"],"summary":"Stage Product Key","operationId":"stage_product_key_v1_auth_keys_stage_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductAPIKeyStageRequest"},"examples":{"disabled_handoff_key":{"summary":"Stage a disabled decision key before writing the handoff","value":{"name":"production-decision-writer","provisioning_request_id":"customer-onboarding-change-20260715-001","scopes":["decision:write"],"allowed_operations":["GET /v1/auth/keys/self","POST /v1/decision-records/pre-action"],"allowed_agent_control_profile_ids":["primary-agent"],"expires_in_days":90}}}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductAPIKeyStageResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[{"ForgeBearerAuth":[]}],"x-forge-authentication":"interactive_recent_mfa_required","x-forge-requires-recent-mfa":true}},"/v1/auth/keys/staged/activate":{"post":{"tags":["auth"],"summary":"Activate Staged Product Key","operationId":"activate_staged_product_key_v1_auth_keys_staged_activate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductAPIKeyActivateRequest"},"examples":{"activate_durable_handoff":{"summary":"Activate one key after the secret and descriptor are durable","value":{"key_id":"fki_AbCdEfGhIjKlMnOpQrStUvWxYz012345"}}}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductAPIKeyActivateResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[{"ForgeBearerAuth":[]}],"x-forge-authentication":"interactive_recent_mfa_required","x-forge-requires-recent-mfa":true}},"/v1/auth/keys":{"get":{"tags":["auth"],"summary":"List Product Keys","operationId":"list_product_keys_v1_auth_keys_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductAPIKeyInventoryResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[{"ForgeBearerAuth":[]}],"x-forge-authentication":"interactive_recent_mfa_required","x-forge-requires-recent-mfa":true}},"/v1/auth/keys/revoke":{"post":{"tags":["auth"],"summary":"Revoke Product Key","operationId":"revoke_product_key_v1_auth_keys_revoke_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductAPIKeyRevokeRequest"},"examples":{"immediate_revocation":{"summary":"Revoke exactly one key by opaque identity","value":{"key_id":"fki_AbCdEfGhIjKlMnOpQrStUvWxYz012345","grace_period_hours":0}}}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductAPIKeyRevokeResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[{"ForgeBearerAuth":[]}],"x-forge-authentication":"interactive_recent_mfa_required","x-forge-requires-recent-mfa":true}},"/v1/auth/keys/self":{"get":{"tags":["auth"],"summary":"Get Product Key Self","operationId":"get_product_key_self_v1_auth_keys_self_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductAPIKeySelfResponse"}}}},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[{"ForgeApiKeyAuth":[]}],"x-forge-authentication":"managed_api_key_self_introspection_only"}},"/v1/webhook-keys":{"get":{"tags":["webhook-security"],"summary":"List Webhook Keys","operationId":"list_webhook_keys_v1_webhook_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookKeyListResponse"}}}},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[{"ForgeBearerAuth":[]}],"x-forge-authentication":"interactive_recent_mfa_required","x-forge-requires-recent-mfa":true},"post":{"tags":["webhook-security"],"summary":"Create Webhook Key","operationId":"create_webhook_key_v1_webhook_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookKeyCreateRequest"},"examples":{"receiver_key":{"summary":"Create a receiver-verification key","value":{"description":"production escalation receiver"}}}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookKeyCreateResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[{"ForgeBearerAuth":[]}],"x-forge-authentication":"interactive_recent_mfa_required","x-forge-requires-recent-mfa":true}},"/v1/webhook-keys/{key_id}":{"delete":{"tags":["webhook-security"],"summary":"Revoke Webhook Key","operationId":"revoke_webhook_key_v1_webhook_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","pattern":"^whk_[0-9a-f]{40}$","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookKeyMutationResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[{"ForgeBearerAuth":[]}],"x-forge-authentication":"interactive_recent_mfa_required","x-forge-requires-recent-mfa":true}},"/v1/webhook-keys/{key_id}/activate":{"post":{"tags":["webhook-security"],"summary":"Activate Webhook Key","operationId":"activate_webhook_key_v1_webhook_keys__key_id__activate_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","pattern":"^whk_[0-9a-f]{40}$","title":"Key Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookKeyActivateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookKeyMutationResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[{"ForgeBearerAuth":[]}],"x-forge-authentication":"interactive_recent_mfa_required","x-forge-requires-recent-mfa":true}},"/v1/deliveries/{record_id}":{"get":{"tags":["webhook-security"],"summary":"Get Delivery Status","operationId":"get_delivery_status_v1_deliveries__record_id__get","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Record Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeliveryStatusListResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"delivery:read","security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records"],"x-forge-authentication":"required"}},"/v1/deliveries/{record_id}/retry":{"post":{"tags":["webhook-security"],"summary":"Retry Dead Letter Delivery","operationId":"retry_dead_letter_delivery_v1_deliveries__record_id__retry_post","parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Record Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeliveryRetryRequest"},"examples":{"dead_letter_retry":{"summary":"Retry one dead-letter delivery","value":{"outbox_id":123}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeliveryStatusListResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[{"ForgeBearerAuth":[]}],"x-forge-authentication":"interactive_recent_mfa_required","x-forge-requires-recent-mfa":true}},"/v1/tenant/metrics":{"get":{"tags":["tenant"],"summary":"Tenant Metrics","description":"Current-worker diagnostic window for the authenticated tenant.\n\nThis endpoint never represents a complete multi-worker or historical\nSLA view. Fleet SLOs come from the protected external metrics backend.","operationId":"tenant_metrics_v1_tenant_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantMetricsResponse"}}}},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"tenant:read","security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records"],"x-forge-authentication":"required"}},"/v1/tenant/audit-log":{"get":{"tags":["tenant"],"summary":"Tenant Audit Log","description":"Stable tenant audit snapshot with an authenticated keyset cursor.","operationId":"tenant_audit_log_v1_tenant_audit_log_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":2048},{"type":"null"}],"title":"Cursor"}},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Action"}},{"name":"outcome","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Outcome"}},{"name":"resource","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Resource"}},{"name":"replay_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Replay Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TenantAuditLogResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","x-forge-api-key-scope":"tenant:read","security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records"],"x-forge-authentication":"required"}},"/v1/tenant/decision-index/summary":{"get":{"tags":["tenant"],"summary":"Decision Index Summary","description":"Aggregate monitoring window for the authenticated tenant.\n\nDerived from indexed metadata only; the signed records remain the\nevidence. ``abstention_rate`` is null until the window has samples.","operationId":"decision_index_summary_v1_tenant_decision_index_summary_get","parameters":[{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Start"}},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"End"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionIndexSummaryResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records"],"x-forge-authentication":"required"}},"/v1/tenant/decision-index/records":{"get":{"tags":["tenant"],"summary":"Decision Index Records","description":"Recent-first keyset page of indexed decision metadata.","operationId":"decision_index_records_v1_tenant_decision_index_records_get","parameters":[{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Start"}},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"End"}},{"name":"abstained","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Abstained"}},{"name":"abstention_reason","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Abstention Reason"}},{"name":"policy_hit","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Policy Hit"}},{"name":"policy_gate_status","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Policy Gate Status"}},{"name":"confidence_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Confidence Min"}},{"name":"confidence_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Confidence Max"}},{"name":"key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Key Id"}},{"name":"workflow_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Workflow Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"before_rowid","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Before Rowid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionIndexRecordsResponse"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records"],"x-forge-authentication":"required"}},"/v1/tenant/decision-index/export":{"get":{"tags":["tenant"],"summary":"Decision Index Export","description":"SIEM JSONL or GRC CSV export of the tenant's indexed metadata.","operationId":"decision_index_export_v1_tenant_decision_index_export_get","parameters":[{"name":"format","in":"query","required":false,"schema":{"enum":["jsonl","csv"],"type":"string","default":"jsonl","title":"Format"}},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Start"}},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"End"}},{"name":"abstained","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Abstained"}},{"name":"abstention_reason","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Abstention Reason"}},{"name":"policy_hit","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Policy Hit"}},{"name":"policy_gate_status","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Policy Gate Status"}},{"name":"confidence_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Confidence Min"}},{"name":"confidence_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Confidence Max"}},{"name":"key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Key Id"}},{"name":"workflow_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Workflow Type"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"$ref":"#/components/responses/ForgeError"},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[{"ForgeApiKeyAuth":[]},{"ForgeOAuth2ClientCredentials":["decision_records"]},{"ForgeBearerAuth":[]}],"x-forge-oauth-scopes":["decision_records"],"x-forge-authentication":"required"}},"/v1/platform/enterprise-config":{"get":{"tags":["enterprise-platform"],"summary":"Enterprise Config","description":"Tier 2/3 knobs: OIDC federation, mTLS, residency, record export.","operationId":"enterprise_config_v1_platform_enterprise_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseConfigResponse"}}}},"default":{"$ref":"#/components/responses/ForgeError"}},"x-forge-error-contract":"forge-error/v1","security":[],"x-forge-authentication":"public"}}},"components":{"schemas":{"AgentControlProfileActivateRequest":{"anyOf":[{"properties":{"hard_constraints":{"minItems":1}}},{"properties":{"required_approvals":{"minItems":1}}}],"properties":{"schema_version":{"type":"string","enum":["forge-agent-control-profile/v1","forge-agent-control-profile/v2"],"title":"Schema Version","default":"forge-agent-control-profile/v2"},"profile_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$","title":"Profile Id"},"version":{"type":"integer","maximum":2147483647.0,"minimum":1.0,"title":"Version"},"decision_options":{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100,"minItems":1,"uniqueItems":true,"title":"Decision Options","x-forge-canonical-uniqueness":"NFKC-casefold"},"abstention_action":{"type":"string","maxLength":128,"minLength":1,"title":"Abstention Action"},"hard_constraints":{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100,"uniqueItems":true,"title":"Hard Constraints","x-forge-canonical-uniqueness":"NFKC-casefold"},"required_approvals":{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100,"uniqueItems":true,"title":"Required Approvals","x-forge-canonical-uniqueness":"NFKC-casefold"},"permitted_attester_key_ids":{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100,"uniqueItems":true,"title":"Permitted Attester Key Ids","description":"Configured attester identifiers. New protected integrations use full Ed25519 public-key fingerprints; legacy label identifiers are retained for record compatibility but cannot verify a positive control.","x-forge-canonical-uniqueness":"NFKC-casefold"},"control_attester_grants":{"items":{"$ref":"#/components/schemas/ControlAttesterGrant"},"type":"array","maxItems":100,"title":"Control Attester Grants","description":"Required by v2. Each configured constraint or approval label is assigned exactly once to a full Ed25519 public-key fingerprint; one key cannot serve both control kinds."},"permitted_outcome_authority_ids":{"items":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$"},"type":"array","maxItems":100,"uniqueItems":true,"title":"Permitted Outcome Authority Ids","description":"Configured outcome-authority identifiers. Each signed decision labels these as configured_not_verified.","x-forge-canonical-uniqueness":"NFKC-casefold"},"prior_active_profile_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Prior Active Profile Sha256","description":"Required from version 2 onward and must exactly match the current active digest. Version 1 must omit it."}},"additionalProperties":false,"type":"object","required":["profile_id","version","decision_options","abstention_action","hard_constraints","required_approvals"],"title":"AgentControlProfileActivateRequest","description":"The complete immutable configuration for one next active version."},"AgentControlProfileResponse":{"properties":{"schema_version":{"type":"string","enum":["forge-agent-control-profile/v1","forge-agent-control-profile/v2"],"title":"Schema Version"},"tenant_id":{"type":"string","title":"Tenant Id"},"profile_id":{"type":"string","title":"Profile Id"},"version":{"type":"integer","minimum":1.0,"title":"Version"},"decision_options":{"items":{"type":"string"},"type":"array","title":"Decision Options"},"abstention_action":{"type":"string","title":"Abstention Action"},"hard_constraints":{"items":{"type":"string"},"type":"array","title":"Hard Constraints"},"required_approvals":{"items":{"type":"string"},"type":"array","title":"Required Approvals"},"permitted_attester_key_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Permitted Attester Key Ids"},"control_attester_grants":{"anyOf":[{"items":{"$ref":"#/components/schemas/ControlAttesterGrant"},"type":"array"},{"type":"null"}],"title":"Control Attester Grants"},"control_attestation_context":{"anyOf":[{"$ref":"#/components/schemas/ControlAttestationContext"},{"type":"null"}]},"permitted_outcome_authority_ids":{"items":{"type":"string"},"type":"array","title":"Permitted Outcome Authority Ids"},"profile_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Profile Sha256"},"prior_active_profile_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Prior Active Profile Sha256"},"created_by_principal_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Created By Principal Sha256"},"created_at":{"type":"string","title":"Created At"},"active":{"type":"boolean","const":true,"title":"Active"},"idempotent_replay":{"type":"boolean","title":"Idempotent Replay"}},"additionalProperties":false,"type":"object","required":["schema_version","tenant_id","profile_id","version","decision_options","abstention_action","hard_constraints","required_approvals","permitted_outcome_authority_ids","profile_sha256","created_by_principal_sha256","created_at","active","idempotent_replay"],"title":"AgentControlProfileResponse"},"AgentRunAppendReceipt":{"properties":{"schema_version":{"type":"string","const":"forge-agent-run-append-receipt/v1","title":"Schema Version"},"tenant_id":{"type":"string","title":"Tenant Id"},"run_id":{"type":"string","title":"Run Id"},"sequence":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Sequence"},"event_type":{"type":"string","enum":["agent.action.blocked","agent.action.executed","agent.action.proposed","forge.decision.received","observation.recorded","run.aborted","run.completed","run.failed","run.started","tool.call.completed","tool.call.started"],"title":"Event Type"},"event_id":{"type":"string","title":"Event Id"},"event_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Event Sha256"},"previous_receipt_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Previous Receipt Sha256"},"committed_at":{"type":"string","title":"Committed At"},"runtime":{"$ref":"#/components/schemas/AgentRunRuntimeIdentity"},"decision_reference":{"anyOf":[{"$ref":"#/components/schemas/AgentRunDecisionReference"},{"type":"null"}]},"authenticated_submitter":{"$ref":"#/components/schemas/AgentRunAuthenticatedSubmitter"},"receipt_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Receipt Sha256"},"signature":{"$ref":"#/components/schemas/AgentRunSignatureBlock"}},"additionalProperties":false,"type":"object","required":["schema_version","tenant_id","run_id","sequence","event_type","event_id","event_sha256","committed_at","runtime","decision_reference","authenticated_submitter","receipt_sha256","signature"],"title":"AgentRunAppendReceipt"},"AgentRunAppendResponse":{"properties":{"schema_version":{"type":"string","const":"forge-agent-run-append-response/v1","title":"Schema Version"},"tenant_id":{"type":"string","title":"Tenant Id"},"accepted":{"type":"boolean","const":true,"title":"Accepted"},"idempotent_replay":{"type":"boolean","title":"Idempotent Replay"},"event":{"$ref":"#/components/schemas/AgentRunStoredEvent"},"receipt":{"$ref":"#/components/schemas/AgentRunAppendReceipt"},"chain":{"$ref":"#/components/schemas/AgentRunChainTail"}},"additionalProperties":false,"type":"object","required":["schema_version","tenant_id","accepted","idempotent_replay","event","receipt","chain"],"title":"AgentRunAppendResponse"},"AgentRunAuthenticatedSubmitter":{"properties":{"schema_version":{"type":"string","const":"forge-authenticated-submitter/v1","title":"Schema Version"},"principal_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Principal Sha256"},"credential_class":{"type":"string","enum":["interactive_identity","machine_api_key","machine_oauth_client"],"title":"Credential Class"},"auth_source":{"type":"string","maxLength":64,"minLength":1,"title":"Auth Source"},"role":{"type":"string","maxLength":32,"minLength":1,"title":"Role"},"raw_identity_disclosed":{"type":"boolean","const":false,"title":"Raw Identity Disclosed"}},"additionalProperties":false,"type":"object","required":["schema_version","principal_sha256","credential_class","auth_source","role","raw_identity_disclosed"],"title":"AgentRunAuthenticatedSubmitter"},"AgentRunChainTail":{"properties":{"event_count":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Event Count"},"last_sequence":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Last Sequence"},"last_event_id":{"type":"string","title":"Last Event Id"},"last_event_sha256":{"type":"string","title":"Last Event Sha256"},"last_occurred_at":{"type":"string","title":"Last Occurred At"},"last_receipt_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Last Receipt Sha256"},"closed":{"type":"boolean","title":"Closed"},"closed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Closed At"},"terminal_event_type":{"anyOf":[{"type":"string","enum":["run.completed","run.failed","run.aborted"]},{"type":"null"}],"title":"Terminal Event Type"}},"additionalProperties":false,"type":"object","required":["event_count","last_sequence","last_event_id","last_event_sha256","last_occurred_at","last_receipt_sha256","closed","closed_at","terminal_event_type"],"title":"AgentRunChainTail"},"AgentRunDecisionReference":{"properties":{"schema_version":{"type":"string","const":"forge-agent-run-decision-reference/v1","title":"Schema Version"},"validation_status":{"type":"string","const":"verified_complete_signed_record_projection","title":"Validation Status"},"record_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$","title":"Record Id"},"complete_record_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Complete Record Sha256"},"decision_signing_key_id":{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$","title":"Decision Signing Key Id"},"selected_action":{"type":"string","maxLength":128,"minLength":1,"title":"Selected Action"},"integration_mode":{"type":"string","const":"pre_action","title":"Integration Mode"},"signed_normalized_request_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Signed Normalized Request Sha256"},"signed_action_identity_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Signed Action Identity Sha256"},"proposed_action_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Proposed Action Sha256"},"proposed_action_payload_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Proposed Action Payload Sha256"},"agent_control_profile_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$","title":"Agent Control Profile Id"},"agent_control_profile_version":{"type":"integer","maximum":2147483647.0,"minimum":1.0,"title":"Agent Control Profile Version"},"agent_control_profile_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Agent Control Profile Sha256"},"agent_control_profile_binding_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Agent Control Profile Binding Sha256"},"authenticated_submitter_principal_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Authenticated Submitter Principal Sha256"},"authenticated_submitter_binding_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Authenticated Submitter Binding Sha256"}},"additionalProperties":false,"type":"object","required":["schema_version","validation_status","record_id","complete_record_sha256","decision_signing_key_id","selected_action","integration_mode","signed_normalized_request_sha256","signed_action_identity_sha256","proposed_action_sha256","proposed_action_payload_sha256","agent_control_profile_id","agent_control_profile_version","agent_control_profile_sha256","agent_control_profile_binding_sha256","authenticated_submitter_principal_sha256","authenticated_submitter_binding_sha256"],"title":"AgentRunDecisionReference"},"AgentRunEventAppendRequest":{"properties":{"schema_version":{"type":"string","const":"forge-agent-run-event/v1","title":"Schema Version","default":"forge-agent-run-event/v1"},"event_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$","title":"Event Id"},"run_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$","title":"Run Id"},"sequence":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Sequence"},"parent_event_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"},{"type":"null"}],"title":"Parent Event Id"},"occurred_at":{"type":"string","format":"date-time","title":"Occurred At"},"event_type":{"type":"string","maxLength":64,"minLength":1,"pattern":"^[a-z][a-z0-9._:-]{0,63}$","title":"Event Type"},"tool_call_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"},{"type":"null"}],"title":"Tool Call Id"},"action_payload_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Action Payload Sha256"},"result_payload_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Result Payload Sha256"},"previous_event_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Previous Event Sha256"},"event_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Event Sha256","description":"Optional caller-computed canonical hash. When supplied it must match Forge's domain-separated v1 hash exactly."},"decision_reference":{"anyOf":[{"$ref":"#/components/schemas/AgentRunDecisionReference"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["event_id","run_id","sequence","occurred_at","event_type"],"title":"AgentRunEventAppendRequest","description":"One immutable event proposed for the next run sequence position."},"AgentRunEventsPageResponse":{"properties":{"schema_version":{"type":"string","const":"forge-agent-run-events-page/v1","title":"Schema Version"},"tenant_id":{"type":"string","title":"Tenant Id"},"run_id":{"type":"string","title":"Run Id"},"event_count":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Event Count"},"after_sequence":{"type":"integer","maximum":10000.0,"minimum":0.0,"title":"After Sequence"},"limit":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Limit"},"has_more":{"type":"boolean","title":"Has More"},"next_after_sequence":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next After Sequence"},"chain":{"$ref":"#/components/schemas/AgentRunChainTail"},"events":{"items":{"$ref":"#/components/schemas/AgentRunStoredEvent"},"type":"array","title":"Events"},"append_receipts":{"items":{"$ref":"#/components/schemas/AgentRunAppendReceipt"},"type":"array","title":"Append Receipts"}},"additionalProperties":false,"type":"object","required":["schema_version","tenant_id","run_id","event_count","after_sequence","limit","has_more","next_after_sequence","chain","events","append_receipts"],"title":"AgentRunEventsPageResponse"},"AgentRunExportChainTail":{"properties":{"event_count":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Event Count"},"last_sequence":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Last Sequence"},"last_event_id":{"type":"string","title":"Last Event Id"},"last_event_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Last Event Sha256"},"last_occurred_at":{"type":"string","title":"Last Occurred At"}},"additionalProperties":false,"type":"object","required":["event_count","last_sequence","last_event_id","last_event_sha256","last_occurred_at"],"title":"AgentRunExportChainTail"},"AgentRunExportResponse":{"properties":{"schema_version":{"type":"string","const":"forge-agent-run-chain-export/v1","title":"Schema Version"},"tenant_id":{"type":"string","title":"Tenant Id"},"run_id":{"type":"string","title":"Run Id"},"export_kind":{"type":"string","enum":["as_of","final"],"title":"Export Kind"},"as_of_sequence":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"As Of Sequence"},"event_count":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Event Count"},"chain":{"$ref":"#/components/schemas/AgentRunExportChainTail"},"receipt_tail":{"$ref":"#/components/schemas/AgentRunReceiptTail"},"events":{"items":{"$ref":"#/components/schemas/AgentRunStoredEvent"},"type":"array","title":"Events"},"append_receipts":{"items":{"$ref":"#/components/schemas/AgentRunAppendReceipt"},"type":"array","title":"Append Receipts"},"exported_at":{"type":"string","title":"Exported At"},"runtime":{"$ref":"#/components/schemas/AgentRunRuntimeIdentity"},"signature":{"$ref":"#/components/schemas/AgentRunSignatureBlock"}},"additionalProperties":false,"type":"object","required":["schema_version","tenant_id","run_id","export_kind","as_of_sequence","event_count","chain","receipt_tail","events","append_receipts","exported_at","runtime","signature"],"title":"AgentRunExportResponse"},"AgentRunReceiptTail":{"properties":{"sequence":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Sequence"},"event_id":{"type":"string","title":"Event Id"},"event_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Event Sha256"},"receipt_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Receipt Sha256"}},"additionalProperties":false,"type":"object","required":["sequence","event_id","event_sha256","receipt_sha256"],"title":"AgentRunReceiptTail"},"AgentRunRuntimeIdentity":{"properties":{"schema_version":{"type":"string","const":"forge-runtime-identity/v1","title":"Schema Version"},"deployment_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$","title":"Deployment Id"},"environment":{"type":"string","maxLength":64,"minLength":1,"title":"Environment"},"image_digest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","title":"Image Digest"}},"additionalProperties":false,"type":"object","required":["schema_version","deployment_id","environment","image_digest"],"title":"AgentRunRuntimeIdentity"},"AgentRunSignatureBlock":{"properties":{"schema_version":{"type":"string","const":"forge-record-signature/v2","title":"Schema Version"},"algorithm":{"type":"string","const":"ed25519","title":"Algorithm"},"signed_field":{"type":"string","enum":["agent_run_append_receipt","complete_agent_run_export"],"title":"Signed Field"},"canonicalization":{"type":"string","const":"utf8-json-sort-keys-compact-v1","title":"Canonicalization"},"message_prefix":{"type":"string","title":"Message Prefix"},"signed_message_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Signed Message Sha256"},"signature":{"type":"string","title":"Signature"},"public_key":{"type":"string","title":"Public Key"},"key_id":{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$","title":"Key Id"},"key_scope":{"type":"string","const":"configured","title":"Key Scope"},"signed_at":{"type":"string","title":"Signed At"}},"additionalProperties":false,"type":"object","required":["schema_version","algorithm","signed_field","canonicalization","message_prefix","signed_message_sha256","signature","public_key","key_id","key_scope","signed_at"],"title":"AgentRunSignatureBlock"},"AgentRunStoredEvent":{"properties":{"schema_version":{"type":"string","const":"forge-agent-run-event/v1","title":"Schema Version"},"event_id":{"type":"string","title":"Event Id"},"run_id":{"type":"string","title":"Run Id"},"sequence":{"type":"integer","title":"Sequence"},"parent_event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Event Id"},"occurred_at":{"type":"string","title":"Occurred At"},"event_type":{"type":"string","title":"Event Type"},"tool_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Call Id"},"action_payload_sha256":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Payload Sha256"},"result_payload_sha256":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Payload Sha256"},"previous_event_sha256":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Previous Event Sha256"},"event_sha256":{"type":"string","title":"Event Sha256"}},"additionalProperties":false,"type":"object","required":["schema_version","event_id","run_id","sequence","parent_event_id","occurred_at","event_type","tool_call_id","action_payload_sha256","result_payload_sha256","previous_event_sha256","event_sha256"],"title":"AgentRunStoredEvent"},"AgenticEventRequest":{"allOf":[{"anyOf":[{"required":["tenant_id"]},{"required":["client_id"]}]},{"anyOf":[{"required":["task"]},{"required":["decision_question"]}]},{"if":{"properties":{"integration_mode":{"const":"pre_action"}},"required":["integration_mode"]},"then":{"required":["proposed_action","proposed_action_payload_sha256"]}}],"properties":{"schema_version":{"type":"string","const":"forge-agentic-event/v1","title":"Schema Version","default":"forge-agentic-event/v1"},"request_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1,"pattern":"^[\\x21-\\x7E]+$"},{"type":"null"}],"title":"Request Id"},"client_request_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Client Request Sha256","description":"Optional caller-computed forge-client-request-binding/v1 digest."},"tenant_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Tenant Id","description":"Tenant scope (required unless client_id set)."},"client_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Client Id","description":"Alias for tenant_id."},"agent_id":{"type":"string","maxLength":128,"minLength":1,"title":"Agent Id","description":"Stable agent identifier."},"agent_version":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Agent Version"},"system_version":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"System Version"},"rubric_version":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Rubric Version"},"governance_class":{"anyOf":[{"type":"string","enum":["standard_decision","high_consequence_agent_action","model_governance","synthetic_data_release"]},{"type":"null"}],"title":"Governance Class","description":"Optional explicit declaration. This agentic route derives high_consequence_agent_action and rejects every conflicting class."},"industry":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Industry"},"workflow_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Workflow Id"},"system_type":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"System Type"},"subject":{"anyOf":[{"type":"string","maxLength":1600},{"type":"null"}],"title":"Subject"},"integration_mode":{"type":"string","enum":["pre_action","after_action"],"title":"Integration Mode","description":"pre_action requires proposed_action."},"task":{"anyOf":[{"type":"string","maxLength":1600,"minLength":1},{"type":"null"}],"title":"Task","description":"Decision question the agent is resolving."},"decision_question":{"anyOf":[{"type":"string","maxLength":1600,"minLength":1},{"type":"null"}],"title":"Decision Question","description":"Alias for task."},"plan":{"anyOf":[{"type":"string","maxLength":1600},{"type":"null"}],"title":"Plan"},"tools_called":{"anyOf":[{"items":{"$ref":"#/components/schemas/AgenticToolCallRequest"},"type":"array","maxItems":100},{"type":"null"}],"title":"Tools Called"},"tool_results":{"anyOf":[{"items":{"$ref":"#/components/schemas/AgenticToolResultRequest"},"type":"array","maxItems":100},{"type":"null"}],"title":"Tool Results"},"proposed_action":{"anyOf":[{"type":"string","maxLength":512,"minLength":1,"pattern":"^[\\x21-\\x7E]+$"},{"type":"null"}],"title":"Proposed Action","description":"Required when integration_mode is pre_action."},"proposed_action_payload_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Proposed Action Payload Sha256","description":"Required for pre_action. forge-action-payload/v1 commitment to the exact customer-side payload; Forge does not receive that payload."},"control_profile_expectation":{"anyOf":[{"$ref":"#/components/schemas/ControlProfileExpectationRequest"},{"type":"null"}],"description":"Protected-call selector for the server-owned active agent control profile. profile_id selects the lineage; optional version/digest pins are checked before normalization and evaluation."},"decision_options":{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100,"minItems":2,"uniqueItems":true,"title":"Decision Options","description":"Required exact, case-sensitive action menu of 2 to 100 values. Forge never supplies an implicit agent-action menu.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"abstention_action":{"type":"string","maxLength":128,"minLength":1,"title":"Abstention Action","description":"Required exact non-approval decision_options member used when the agent event cannot support a completed assessment."},"partner_declared_disposition":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Partner Declared Disposition","description":"Disposition asserted by the partner's local policy engine. It must exactly match decision_options; Forge records it as unverified."},"blocked_actions":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Blocked Actions","description":"Partner-reported context only. Forge does not evaluate or enforce this field; use constraint_results for executable checks.","deprecated":true,"x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-evaluation-status":"not_evaluated","x-forge-normalization-policy":"reject-noncanonical-input"},"policy_checks":{"anyOf":[{"items":{},"type":"array","maxItems":100},{"type":"null"}],"title":"Policy Checks","description":"Partner-reported context only. Forge does not evaluate or assert these checks; use constraint_results for executable checks.","deprecated":true,"x-forge-evaluation-status":"not_evaluated"},"human_approval_state":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":64},{"type":"null"}],"title":"Human Approval State","description":"Partner-reported context only. Forge does not evaluate this object; use required_approvals and completed_approvals.","deprecated":true,"x-forge-evaluation-status":"not_evaluated"},"final_output_hash":{"anyOf":[{"type":"string","pattern":"^(?:sha256:)?[0-9a-f]{64}$"},{"type":"null"}],"title":"Final Output Hash","description":"Lowercase SHA-256 digest of the final agent output, optionally prefixed with sha256:."},"constraint_results":{"anyOf":[{"items":{"$ref":"#/components/schemas/PolicyConstraintResultRequest"},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Constraint Results","x-forge-normalization-policy":"reject-noncanonical-input","x-forge-unique-by":"constraint:NFKC-casefold"},"control_attestations":{"anyOf":[{"items":{"$ref":"#/components/schemas/ControlAttestationRequest"},"type":"array","maxItems":100},{"type":"null"}],"title":"Control Attestations","description":"Customer-authority Ed25519 attestations bound to this exact agent, profile version, request, action, and payload commitment."},"hard_constraints":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Hard Constraints","description":"Named controls that constraint_results must exactly and completely evaluate before a positive agent-action disposition is eligible.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"required_approvals":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Required Approvals","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"completed_approvals":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Completed Approvals","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"missing_required_approval":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Missing Required Approval","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"workflow_type":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Workflow Type"},"human_review_boundary":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":64},{"type":"null"}],"title":"Human Review Boundary"},"data_provenance":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":64},{"type":"null"}],"title":"Data Provenance"},"learning_rights":{"anyOf":[{"$ref":"#/components/schemas/LearningRightsRequest"},{"type":"null"}]},"policy_gate_status":{"anyOf":[{"type":"string","enum":["pass","fail","not_evaluated"]},{"type":"null"}],"title":"Policy Gate Status"}},"additionalProperties":false,"type":"object","required":["agent_id","integration_mode","decision_options","abstention_action","request_id","client_request_sha256"],"title":"AgenticEventRequest","description":"Agentic runtime event normalized into the universal decision payload.","x-forge-request-binding-required":true},"AgenticToolCallRequest":{"allOf":[{"anyOf":[{"required":["tool"]},{"required":["name"]}]},{"not":{"required":["tool","name"]}},{"not":{"required":["detail","summary"]}}],"properties":{"tool":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Tool"},"name":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Name","description":"Compatibility alias for tool.","deprecated":true},"detail":{"anyOf":[{"type":"string","maxLength":1600,"minLength":1},{"type":"null"}],"title":"Detail"},"summary":{"anyOf":[{"type":"string","maxLength":1600,"minLength":1},{"type":"null"}],"title":"Summary","description":"Compatibility alias for detail.","deprecated":true}},"additionalProperties":false,"type":"object","title":"AgenticToolCallRequest","description":"Tool invocation fields that are translated into evidence."},"AgenticToolResultRequest":{"allOf":[{"anyOf":[{"required":["summary"]},{"required":["output"]},{"required":["hash"]},{"required":["content_hash"]}]},{"not":{"required":["summary","output"]}},{"not":{"required":["hash","content_hash"]}}],"properties":{"summary":{"anyOf":[{"type":"string","maxLength":1600,"minLength":1},{"type":"null"}],"title":"Summary"},"output":{"anyOf":[{"type":"string","maxLength":1600,"minLength":1},{"type":"null"}],"title":"Output","description":"Compatibility alias for summary.","deprecated":true},"hash":{"anyOf":[{"type":"string","pattern":"^(?:sha256:)?[0-9a-f]{64}$"},{"type":"null"}],"title":"Hash"},"content_hash":{"anyOf":[{"type":"string","pattern":"^(?:sha256:)?[0-9a-f]{64}$"},{"type":"null"}],"title":"Content Hash","description":"Compatibility alias for hash.","deprecated":true}},"additionalProperties":false,"type":"object","title":"AgenticToolResultRequest","description":"Tool-result subset deterministically translated into evidence."},"ApiSurfaceManifestResponse":{"properties":{"schema_version":{"type":"string","const":"forge-api-surface-manifest/v1","title":"Schema Version"},"common_response_metadata":{"items":{"type":"string"},"type":"array","title":"Common Response Metadata"},"integration_depths":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Integration Depths"},"surface_groups":{"additionalProperties":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"type":"object","title":"Surface Groups"},"not_in_scope":{"items":{"type":"string"},"type":"array","title":"Not In Scope"},"model_gateway":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model Gateway"}},"additionalProperties":false,"type":"object","required":["schema_version","common_response_metadata","integration_depths","surface_groups","not_in_scope"],"title":"ApiSurfaceManifestResponse"},"CalibrationDeltaResponse":{"properties":{"schema_version":{"type":"string","const":"forge-calibration-ops/v1","title":"Schema Version"},"tenant_id":{"type":"string","title":"Tenant Id"},"industry":{"type":"string","title":"Industry"},"view":{"type":"string","const":"calibration_delta","title":"View"},"partition_mode":{"type":"string","enum":["balanced_ordered_halves","explicit_timestamp_cutoff"],"title":"Partition Mode"},"since_iso":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Since Iso"},"calibration_scope":{"additionalProperties":{"type":"string"},"type":"object","title":"Calibration Scope"},"scope_mismatch_rows_excluded":{"type":"integer","minimum":0.0,"title":"Scope Mismatch Rows Excluded"},"engine_identities_observed":{"items":{"type":"string"},"type":"array","title":"Engine Identities Observed"},"engine_identity_mixing_warning":{"type":"boolean","title":"Engine Identity Mixing Warning"},"engine_identity_missing_rows":{"type":"integer","minimum":0.0,"title":"Engine Identity Missing Rows","default":0},"engine_identity_population_complete":{"type":"boolean","title":"Engine Identity Population Complete","default":true},"before":{"$ref":"#/components/schemas/CalibrationMetricsResponse"},"after":{"$ref":"#/components/schemas/CalibrationMetricsResponse"},"delta":{"$ref":"#/components/schemas/CalibrationDeltaSummaryResponse"},"honest_disclosures":{"items":{"type":"string"},"type":"array","title":"Honest Disclosures"},"read_window":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Read Window"}},"additionalProperties":false,"type":"object","required":["schema_version","tenant_id","industry","view","partition_mode","since_iso","calibration_scope","scope_mismatch_rows_excluded","engine_identities_observed","engine_identity_mixing_warning","before","after","delta","honest_disclosures"],"title":"CalibrationDeltaResponse"},"CalibrationDeltaSummaryResponse":{"properties":{"samples_change":{"type":"integer","title":"Samples Change"},"brier_score_change":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Brier Score Change"},"status_change":{"type":"string","title":"Status Change"}},"additionalProperties":false,"type":"object","required":["samples_change","brier_score_change","status_change"],"title":"CalibrationDeltaSummaryResponse"},"CalibrationMetricsResponse":{"properties":{"samples":{"type":"integer","minimum":0.0,"title":"Samples"},"outcome_rows_total":{"type":"integer","minimum":0.0,"title":"Outcome Rows Total","default":0},"inference_skipped_outcomes_excluded":{"type":"integer","minimum":0.0,"title":"Inference Skipped Outcomes Excluded","default":0},"brier_methodology":{"additionalProperties":true,"type":"object","title":"Brier Methodology"},"scored_samples":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Scored Samples"},"brier_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Brier Score"},"reliability_bins":{"items":{"$ref":"#/components/schemas/CalibrationReliabilityBinResponse"},"type":"array","title":"Reliability Bins"},"status":{"type":"string","title":"Status"},"validation_threshold_n":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Validation Threshold N"},"brier_quality_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Brier Quality Threshold"},"validation_requirements":{"anyOf":[{"$ref":"#/components/schemas/CalibrationValidationRequirementsResponse"},{"type":"null"}]},"skipped_unmatchable_outcomes":{"type":"integer","minimum":0.0,"title":"Skipped Unmatchable Outcomes"},"ambiguous_outcome_labels_dropped":{"type":"integer","minimum":0.0,"title":"Ambiguous Outcome Labels Dropped","default":0},"non_finite_posteriors_dropped":{"type":"integer","minimum":0.0,"title":"Non Finite Posteriors Dropped"},"out_of_range_posteriors_dropped":{"type":"integer","minimum":0.0,"title":"Out Of Range Posteriors Dropped"},"invalid_probability_vectors_dropped":{"type":"integer","minimum":0.0,"title":"Invalid Probability Vectors Dropped","default":0},"reliability_rating":{"additionalProperties":true,"type":"object","title":"Reliability Rating"}},"additionalProperties":false,"type":"object","required":["samples","brier_score","reliability_bins","status","skipped_unmatchable_outcomes","non_finite_posteriors_dropped","out_of_range_posteriors_dropped","reliability_rating"],"title":"CalibrationMetricsResponse"},"CalibrationOutcomeAuthorityResponse":{"properties":{"authority_type":{"type":"string","enum":["system_of_record","authorized_human","customer_attestation"],"title":"Authority Type"},"authority_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$","title":"Authority Id"},"authority_role":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"},{"type":"null"}],"title":"Authority Role"},"source_reference":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"},{"type":"null"}],"title":"Source Reference"},"attested_at":{"type":"string","format":"date-time","title":"Attested At"},"authenticated_submitter":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$","title":"Authenticated Submitter"},"authenticated_role":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"},{"type":"null"}],"title":"Authenticated Role"},"authority_assertion_scope":{"type":"string","const":"customer_asserted","title":"Authority Assertion Scope"},"forge_independently_verified":{"type":"boolean","const":false,"title":"Forge Independently Verified"},"authentication_binding":{"type":"string","const":"bound_to_authenticated_submitter","title":"Authentication Binding"}},"additionalProperties":false,"type":"object","required":["authority_type","authority_id","attested_at","authenticated_submitter","authority_assertion_scope","forge_independently_verified","authentication_binding"],"title":"CalibrationOutcomeAuthorityResponse"},"CalibrationOutcomeResponse":{"properties":{"schema_version":{"type":"string","const":"forge-outcome-receipt/v1","title":"Schema Version","default":"forge-outcome-receipt/v1"},"accepted":{"type":"boolean","const":true,"title":"Accepted","default":true},"updated":{"type":"boolean","title":"Updated"},"idempotent_replay":{"type":"boolean","title":"Idempotent Replay","default":false},"reason":{"type":"string","enum":["outcome_written","outcome_already_recorded"],"title":"Reason"},"record_id":{"type":"string","title":"Record Id"},"final_outcome":{"type":"string","title":"Final Outcome"},"outcome_authority":{"$ref":"#/components/schemas/CalibrationOutcomeAuthorityResponse"},"outcome_event_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Outcome Event Id"},"storage_write_status":{"$ref":"#/components/schemas/CalibrationStorageWriteStatusResponse"},"calibration_summary":{"additionalProperties":true,"type":"object","title":"Calibration Summary"}},"additionalProperties":false,"type":"object","required":["updated","reason","record_id","final_outcome","outcome_authority","storage_write_status","calibration_summary"],"title":"CalibrationOutcomeResponse"},"CalibrationOutcomeSubmit":{"properties":{"schema_version":{"type":"string","const":"forge-outcome/v2","title":"Schema Version"},"record_id":{"type":"string","maxLength":128,"minLength":1,"title":"Record Id","description":"record_id from the signed DecisionRecord."},"industry":{"type":"string","maxLength":128,"minLength":1,"title":"Industry","description":"Same industry key used at evaluate time."},"final_outcome":{"type":"string","maxLength":128,"minLength":1,"title":"Final Outcome","description":"Observed outcome label from the signed decision-option menu."},"partner_decision":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$","title":"Partner Decision","description":"What the partner actually did, if different from Forge selected_action."},"outcome_evidence":{"$ref":"#/components/schemas/OutcomeEvidenceSubmit","description":"Optional reference-only evidence metadata. Raw evidence, notes, URLs, email addresses, and nested customer content are rejected."},"observed_at":{"type":"string","format":"date-time","title":"Observed At","description":"When the outcome occurred or became observable."},"outcome_authority":{"$ref":"#/components/schemas/OutcomeAuthoritySubmit"},"client_id":{"type":"string","maxLength":128,"minLength":1,"title":"Client Id","description":"Optional tenant assertion. When supplied, it must exactly match the authenticated org_id."}},"additionalProperties":false,"type":"object","required":["record_id","industry","final_outcome","outcome_authority","schema_version"],"title":"CalibrationOutcomeSubmit","description":"Ground-truth outcome for a prior signed decision record."},"CalibrationPerVersionResponse":{"properties":{"schema_version":{"type":"string","const":"forge-calibration-ops/v1","title":"Schema Version"},"tenant_id":{"type":"string","title":"Tenant Id"},"industry":{"type":"string","title":"Industry"},"view":{"type":"string","const":"per_model_version_drill_down","title":"View"},"versions_observed":{"items":{"type":"string"},"type":"array","title":"Versions Observed"},"version_mixing_warning":{"type":"boolean","title":"Version Mixing Warning"},"version_identity_missing_rows":{"type":"integer","minimum":0.0,"title":"Version Identity Missing Rows","default":0},"version_identity_population_complete":{"type":"boolean","title":"Version Identity Population Complete","default":true},"calibration_scope":{"additionalProperties":{"type":"string"},"type":"object","title":"Calibration Scope"},"scope_mismatch_rows_excluded":{"type":"integer","minimum":0.0,"title":"Scope Mismatch Rows Excluded"},"by_version":{"additionalProperties":{"$ref":"#/components/schemas/CalibrationMetricsResponse"},"type":"object","title":"By Version"},"honest_disclosures":{"items":{"type":"string"},"type":"array","title":"Honest Disclosures"},"read_window":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Read Window"}},"additionalProperties":false,"type":"object","required":["schema_version","tenant_id","industry","view","versions_observed","version_mixing_warning","calibration_scope","scope_mismatch_rows_excluded","by_version","honest_disclosures"],"title":"CalibrationPerVersionResponse"},"CalibrationProfileResponse":{"properties":{"schema_version":{"type":"string","const":"forge-calibration-profile/v1","title":"Schema Version"},"profile_key":{"type":"string","title":"Profile Key"},"tenant_id":{"type":"string","title":"Tenant Id"},"industry":{"type":"string","title":"Industry"},"workflow_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Type"},"system_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Version"},"rubric_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rubric Version"},"engine_identity_sha256":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Engine Identity Sha256"},"samples_in_profile":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Samples In Profile"},"version_fork_warning":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Version Fork Warning"},"rubric_fork_warning":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Rubric Fork Warning"},"system_versions_observed":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"System Versions Observed"},"rubric_versions_observed":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Rubric Versions Observed"},"calibration":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Calibration"},"scope_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scope Note"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"ledger_read_health":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Ledger Read Health"},"cross_tenant_generalization":{"anyOf":[{"type":"boolean","const":false},{"type":"null"}],"title":"Cross Tenant Generalization"},"empirically_calibrated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Empirically Calibrated"},"read_window":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Read Window"},"windowed_result":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Windowed Result"}},"additionalProperties":false,"type":"object","required":["schema_version","profile_key","tenant_id","industry"],"title":"CalibrationProfileResponse"},"CalibrationReliabilityBinResponse":{"properties":{"bucket":{"type":"string","title":"Bucket"},"predicted_mean":{"type":"number","title":"Predicted Mean"},"observed_rate":{"type":"number","title":"Observed Rate"},"n":{"type":"integer","minimum":0.0,"title":"N"},"n_semantics":{"type":"string","title":"N Semantics"}},"additionalProperties":false,"type":"object","required":["bucket","predicted_mean","observed_rate","n","n_semantics"],"title":"CalibrationReliabilityBinResponse"},"CalibrationStorageWriteStatusResponse":{"properties":{"attempted":{"type":"boolean","title":"Attempted"},"written":{"type":"boolean","title":"Written"},"reason":{"type":"string","title":"Reason"},"backend":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backend"},"outcome_evidence_retention":{"anyOf":[{"type":"string","enum":["none","reference_only_evaluation_metrics"]},{"type":"null"}],"title":"Outcome Evidence Retention"}},"additionalProperties":false,"type":"object","required":["attempted","written","reason"],"title":"CalibrationStorageWriteStatusResponse"},"CalibrationValidationRequirementsResponse":{"properties":{"scored_samples":{"type":"integer","minimum":0.0,"title":"Scored Samples"},"minimum_scored_samples":{"type":"integer","minimum":0.0,"title":"Minimum Scored Samples"},"brier_score":{"type":"number","title":"Brier Score"},"maximum_brier_score":{"type":"number","title":"Maximum Brier Score"},"meets_sample_threshold":{"type":"boolean","title":"Meets Sample Threshold"},"meets_brier_quality_threshold":{"type":"boolean","title":"Meets Brier Quality Threshold"}},"additionalProperties":false,"type":"object","required":["scored_samples","minimum_scored_samples","brier_score","maximum_brier_score","meets_sample_threshold","meets_brier_quality_threshold"],"title":"CalibrationValidationRequirementsResponse"},"CompleteRecordSignatureReferenceResponse":{"properties":{"algorithm":{"type":"string","const":"ed25519","title":"Algorithm"},"key_id":{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$","title":"Key Id"},"signed_field":{"type":"string","const":"complete_decision_record","title":"Signed Field"},"canonicalization":{"type":"string","title":"Canonicalization"},"excluded_paths":{"items":{"type":"string"},"type":"array","title":"Excluded Paths"},"signed_record_schema_version":{"type":"string","const":"forge-decision-record/v2","title":"Signed Record Schema Version"}},"additionalProperties":false,"type":"object","required":["algorithm","key_id","signed_field","canonicalization","excluded_paths","signed_record_schema_version"],"title":"CompleteRecordSignatureReferenceResponse","description":"Canonical full-record signature contract exposed to integrations."},"ControlAttestationContext":{"properties":{"audience":{"type":"string","const":"forge-enterprise-decision-control","title":"Audience"},"environment":{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,63}$","title":"Environment"},"deployment_id":{"type":"string","maxLength":128,"minLength":2,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{1,127}$","title":"Deployment Id"}},"additionalProperties":false,"type":"object","required":["audience","environment","deployment_id"],"title":"ControlAttestationContext","description":"Server-owned replay boundary a customer signer must bind exactly."},"ControlAttestationRequest":{"properties":{"schema_version":{"type":"string","const":"forge-control-attestation/v2","title":"Schema Version","default":"forge-control-attestation/v2"},"algorithm":{"type":"string","const":"ed25519","title":"Algorithm","default":"ed25519"},"canonicalization":{"type":"string","const":"forge-tagged-json-f64be-v1","title":"Canonicalization","default":"forge-tagged-json-f64be-v1"},"message_prefix":{"type":"string","const":"forge-control-attestation-subject/v2\n","title":"Message Prefix","default":"forge-control-attestation-subject/v2\n"},"signed_field":{"type":"string","const":"subject","title":"Signed Field","default":"subject"},"subject":{"$ref":"#/components/schemas/ControlAttestationSubjectRequest"},"public_key":{"type":"string","maxLength":44,"minLength":44,"title":"Public Key"},"signature":{"type":"string","maxLength":88,"minLength":88,"title":"Signature"},"signed_message_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Signed Message Sha256"}},"additionalProperties":false,"type":"object","required":["subject","public_key","signature","signed_message_sha256"],"title":"ControlAttestationRequest","description":"Detached Ed25519 envelope for one positive constraint or approval."},"ControlAttestationSubjectRequest":{"properties":{"schema_version":{"type":"string","const":"forge-control-attestation-subject/v2","title":"Schema Version","default":"forge-control-attestation-subject/v2"},"kind":{"type":"string","enum":["constraint","approval"],"title":"Kind"},"status":{"type":"string","enum":["pass","completed"],"title":"Status"},"label":{"type":"string","maxLength":128,"minLength":1,"title":"Label"},"attester_key_id":{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$","title":"Attester Key Id","description":"Full SHA-256 fingerprint derived from the raw Ed25519 public-key bytes and pinned in the active tenant control profile."},"tenant_id":{"type":"string","maxLength":128,"minLength":1,"title":"Tenant Id"},"profile_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$","title":"Profile Id"},"profile_version":{"type":"integer","maximum":2147483647.0,"minimum":1.0,"title":"Profile Version"},"profile_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Profile Sha256"},"operation":{"type":"string","enum":["POST /v1/decision-records/pre-action","POST /v1/agentic/events/evaluate"],"title":"Operation"},"request_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[\\x21-\\x7E]+$","title":"Request Id"},"proposed_action":{"type":"string","maxLength":512,"minLength":1,"pattern":"^[\\x21-\\x7E]+$","title":"Proposed Action"},"proposed_action_payload_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Proposed Action Payload Sha256"},"audience":{"type":"string","const":"forge-enterprise-decision-control","title":"Audience","default":"forge-enterprise-decision-control"},"environment":{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,63}$","title":"Environment"},"deployment_id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{1,127}$","title":"Deployment Id"},"nonce":{"type":"string","pattern":"^[A-Za-z0-9._~:-]{16,128}$","title":"Nonce","description":"Attester-generated challenge value. Replay consumption remains the responsibility of the protected request/idempotency boundary."},"issued_at":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?Z$","title":"Issued At"},"expires_at":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?Z$","title":"Expires At"}},"additionalProperties":false,"type":"object","required":["kind","status","label","attester_key_id","tenant_id","profile_id","profile_version","profile_sha256","operation","request_id","proposed_action","proposed_action_payload_sha256","environment","deployment_id","nonce","issued_at","expires_at"],"title":"ControlAttestationSubjectRequest","description":"Complete non-circular subject signed by a customer control authority."},"ControlAttesterGrant":{"properties":{"key_id":{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$","title":"Key Id"},"kind":{"type":"string","enum":["constraint","approval"],"title":"Kind"},"labels":{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100,"minItems":1,"uniqueItems":true,"title":"Labels","x-forge-canonical-uniqueness":"NFKC-casefold"}},"additionalProperties":false,"type":"object","required":["key_id","kind","labels"],"title":"ControlAttesterGrant","description":"One exact v2 authorization from one key to named positive controls."},"ControlProfileExpectationRequest":{"properties":{"profile_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$","title":"Profile Id","description":"Exact tenant control-profile lineage selected for this protected call."},"version":{"anyOf":[{"type":"integer","maximum":2147483647.0,"minimum":1.0},{"type":"null"}],"title":"Version"},"profile_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Profile Sha256"}},"additionalProperties":false,"type":"object","required":["profile_id"],"title":"ControlProfileExpectationRequest","description":"Required lineage selector plus optional optimistic version/digest pins."},"DataScopeRequest":{"properties":{"data_class":{"anyOf":[{"type":"string","enum":["public_only","partner_safe_sanitized","customer_confidential","cui_prohibited_until_agreement","export_control_review_required"]},{"type":"null"}],"title":"Data Class"},"storage_scope":{"anyOf":[{"type":"string","enum":["request_processing_only","forge_transactional_accountability_state","customer_managed_record_vault","contract_defined"]},{"type":"null"}],"title":"Storage Scope"},"retention_period":{"anyOf":[{"type":"string","enum":["request_only","no_calibration_retention","customer_managed","contract_defined"]},{"type":"null"}],"title":"Retention Period"},"cui_status":{"anyOf":[{"type":"string","enum":["not_cui","cui","unknown_requires_review"]},{"type":"null"}],"title":"Cui Status"},"export_control_status":{"anyOf":[{"type":"string","enum":["not_export_controlled","export_controlled","unknown_requires_review"]},{"type":"null"}],"title":"Export Control Status"},"customer_data_owner":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Customer Data Owner"},"raw_customer_data_retained":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Raw Customer Data Retained"}},"additionalProperties":false,"type":"object","title":"DataScopeRequest","description":"Strict customer-declared data-handling boundary."},"DecisionBindingSignatureReferenceResponse":{"properties":{"algorithm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Algorithm"},"key_id":{"anyOf":[{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$"},{"type":"null"}],"title":"Key Id"},"signed_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signed Field"},"binding_schema_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Binding Schema Version"},"protected_fields":{"items":{"type":"string"},"type":"array","title":"Protected Fields"}},"additionalProperties":false,"type":"object","required":["algorithm","signed_field","binding_schema_version","protected_fields"],"title":"DecisionBindingSignatureReferenceResponse"},"DecisionEngineDescribeResponse":{"properties":{"engine_facade_schema_version":{"type":"string","title":"Engine Facade Schema Version"},"decision_record_schema_version":{"type":"string","title":"Decision Record Schema Version"},"architecture_layers":{"additionalProperties":true,"type":"object","title":"Architecture Layers"},"supported_industries":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Supported Industries"},"agentic_integration":{"additionalProperties":true,"type":"object","title":"Agentic Integration"},"engine_owns":{"items":{"type":"string"},"type":"array","title":"Engine Owns"},"adapters_own":{"items":{"type":"string"},"type":"array","title":"Adapters Own"},"adapters_explicitly_do_not_own":{"items":{"type":"string"},"type":"array","title":"Adapters Explicitly Do Not Own"},"honest_boundaries":{"items":{"type":"string"},"type":"array","title":"Honest Boundaries"},"determinism":{"additionalProperties":true,"type":"object","title":"Determinism"},"decision_methodology":{"additionalProperties":true,"type":"object","title":"Decision Methodology"},"signature_verification":{"additionalProperties":true,"type":"object","title":"Signature Verification"},"signing_identity_readback_url":{"type":"string","title":"Signing Identity Readback Url"},"integration_lifecycle":{"additionalProperties":true,"type":"object","title":"Integration Lifecycle"},"registered_adapter_keys":{"items":{"type":"string"},"type":"array","title":"Registered Adapter Keys"},"deliberation_layer":{"additionalProperties":true,"type":"object","title":"Deliberation Layer"},"policy_gate_contract":{"additionalProperties":true,"type":"object","title":"Policy Gate Contract"},"client_request_binding":{"additionalProperties":true,"type":"object","title":"Client Request Binding"},"api_surface_manifest":{"additionalProperties":true,"type":"object","title":"Api Surface Manifest"},"signing_identity_readback":{"$ref":"#/components/schemas/SigningIdentityResponse"}},"additionalProperties":false,"type":"object","required":["engine_facade_schema_version","decision_record_schema_version","architecture_layers","supported_industries","agentic_integration","engine_owns","adapters_own","adapters_explicitly_do_not_own","honest_boundaries","determinism","decision_methodology","signature_verification","signing_identity_readback_url","integration_lifecycle","registered_adapter_keys","deliberation_layer","policy_gate_contract","client_request_binding","api_surface_manifest","signing_identity_readback"],"title":"DecisionEngineDescribeResponse"},"DecisionIndexAlertStateResponse":{"properties":{"rule_id":{"type":"string","title":"Rule Id"},"status":{"type":"string","title":"Status"},"since":{"type":"string","title":"Since"}},"additionalProperties":false,"type":"object","required":["rule_id","status","since"],"title":"DecisionIndexAlertStateResponse"},"DecisionIndexEntryResponse":{"properties":{"record_id":{"type":"string","title":"Record Id"},"issued_at":{"type":"string","title":"Issued At"},"indexed_at":{"type":"string","title":"Indexed At"},"assessment_mode":{"type":"string","title":"Assessment Mode"},"abstained":{"type":"boolean","title":"Abstained"},"abstention_reason":{"type":"string","title":"Abstention Reason"},"confidence":{"type":"number","title":"Confidence"},"key_id":{"type":"string","title":"Key Id"},"selected_action":{"type":"string","title":"Selected Action"},"decision_type":{"type":"string","title":"Decision Type"},"workflow_type":{"type":"string","title":"Workflow Type"},"industry":{"type":"string","title":"Industry"},"policy_gate_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Policy Gate Status"},"policy_gate_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Policy Gate Reason"},"policy_hits":{"items":{"type":"string"},"type":"array","title":"Policy Hits"},"model_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Version"},"prompt_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Version"},"replay_key":{"type":"string","title":"Replay Key"},"projection_sha256":{"type":"string","title":"Projection Sha256"}},"additionalProperties":false,"type":"object","required":["record_id","issued_at","indexed_at","assessment_mode","abstained","abstention_reason","confidence","key_id","selected_action","decision_type","workflow_type","industry","policy_gate_status","policy_gate_reason","policy_hits","model_version","prompt_version","replay_key","projection_sha256"],"title":"DecisionIndexEntryResponse"},"DecisionIndexFiltersResponse":{"properties":{"start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start"},"end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End"},"abstained":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Abstained"},"abstention_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abstention Reason"},"policy_hit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Policy Hit"},"policy_gate_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Policy Gate Status"},"confidence_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Confidence Min"},"confidence_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Confidence Max"},"key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"workflow_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Type"}},"additionalProperties":false,"type":"object","required":["start","end","abstained","abstention_reason","policy_hit","policy_gate_status","confidence_min","confidence_max","key_id","workflow_type"],"title":"DecisionIndexFiltersResponse"},"DecisionIndexRecordsResponse":{"properties":{"org_id":{"type":"string","title":"Org Id"},"count":{"type":"integer","minimum":0.0,"title":"Count"},"limit":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Limit"},"has_more":{"type":"boolean","title":"Has More"},"next_before_rowid":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Next Before Rowid"},"filters":{"$ref":"#/components/schemas/DecisionIndexFiltersResponse"},"entries":{"items":{"$ref":"#/components/schemas/DecisionIndexEntryResponse"},"type":"array","title":"Entries"}},"additionalProperties":false,"type":"object","required":["org_id","count","limit","has_more","next_before_rowid","filters","entries"],"title":"DecisionIndexRecordsResponse"},"DecisionIndexSummaryResponse":{"properties":{"org_id":{"type":"string","title":"Org Id"},"index_boundary":{"type":"string","const":"derived_metadata_only_not_evidence_raw_payloads_never_indexed","title":"Index Boundary"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"abstained":{"type":"integer","minimum":0.0,"title":"Abstained"},"abstention_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Abstention Rate"},"policy_hit_counts":{"items":{"prefixItems":[{"type":"string"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2},"type":"array","title":"Policy Hit Counts"},"policy_gate_status_counts":{"items":{"prefixItems":[{"type":"string"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2},"type":"array","title":"Policy Gate Status Counts"},"confidence_bands":{"additionalProperties":{"type":"integer"},"type":"object","title":"Confidence Bands"},"key_ids":{"items":{"type":"string"},"type":"array","title":"Key Ids"},"model_versions":{"items":{"type":"string"},"type":"array","title":"Model Versions"},"first_issued_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Issued At"},"last_issued_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Issued At"},"firing_alerts":{"items":{"$ref":"#/components/schemas/DecisionIndexAlertStateResponse"},"type":"array","title":"Firing Alerts"},"recent_alert_events":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Recent Alert Events"}},"additionalProperties":false,"type":"object","required":["org_id","index_boundary","total","abstained","abstention_rate","policy_hit_counts","policy_gate_status_counts","confidence_bands","key_ids","model_versions","first_issued_at","last_issued_at","firing_alerts","recent_alert_events"],"title":"DecisionIndexSummaryResponse"},"DecisionRecordCompactEvaluateResponse":{"properties":{"schema_version":{"type":"string","const":"forge-decision-engine-facade/v1","title":"Schema Version"},"decision":{"$ref":"#/components/schemas/DecisionSummaryResponse"},"record_reference":{"$ref":"#/components/schemas/DecisionRecordReferenceResponse"},"record":{"$ref":"#/components/schemas/ForgeSignedDecisionRecordV2"},"record_delivery":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Record Delivery"}},"additionalProperties":false,"type":"object","required":["schema_version","decision","record_reference","record"],"title":"DecisionRecordCompactEvaluateResponse","description":"Compact typed response; the complete signed record is authoritative.","x-forge-extra-field-policy":"strict top-level envelope; explicitly named map fields are extensible"},"DecisionRecordEvaluateRequest":{"properties":{"request_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1,"pattern":"^[\\x21-\\x7E]+$"},{"type":"null"}],"title":"Request Id","description":"Caller nonce for request/response binding and replay separation. The current SDK supplies one automatically."},"client_request_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Client Request Sha256","description":"Optional caller-computed forge-client-request-binding/v1 digest. When present, request_id is required and the validated binding is echoed inside signed normalized_request.context."},"proposed_action":{"anyOf":[{"type":"string","maxLength":512,"minLength":1,"pattern":"^[\\x21-\\x7E]+$"},{"type":"null"}],"title":"Proposed Action","description":"Exact customer-side action identifier for a protected pre-action request. When control_attestations are used, every signed subject must bind this value and the separate payload commitment."},"proposed_action_payload_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Proposed Action Payload Sha256","description":"Privacy-preserving forge-action-payload/v1 commitment to the exact customer-side payload that may execute. Required by the pre-action route; the payload itself stays in the customer boundary."},"control_profile_expectation":{"anyOf":[{"$ref":"#/components/schemas/ControlProfileExpectationRequest"},{"type":"null"}],"description":"Pre-action and agentic-event routes only: select the server-owned active profile by required profile_id and optionally pin its version or digest. It is checked before evaluation and is not profile data."},"tenant_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Tenant Id","description":"Exact tenant identifier bound into current SDK requests. It must match the authenticated organization."},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id","description":"Caller-asserted tenant identifier. Must match the authenticated organization scope. Cross-tenant support operations are never expressed through a decision payload."},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry","description":"Optional explicit industry/adapter routing hint. Call /v1/decision-records/describe for the adapters enabled on this host; unregistered values are rejected. If absent, the classifier picks the highest-scoring registered adapter by keyword."},"workflow_type":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Workflow Type","description":"Optional explicit workflow hint (e.g. pre_bind_technical_diligence, cti_escalation_review)."},"decision_type":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Decision Type","description":"Optional explicit decision-type hint."},"governance_class":{"anyOf":[{"type":"string","enum":["standard_decision","high_consequence_agent_action","model_governance","synthetic_data_release"]},{"type":"null"}],"title":"Governance Class","description":"Closed signed control class. Ordinary v1 requests may omit it and are recorded as standard_decision. Recognized model-governance and synthetic-data release shapes must declare the matching class."},"intended_use":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Intended Use","description":"Declared intended use returned in signed governance_metadata. This is descriptive metadata, not a policy-control result."},"workflow_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Workflow Id","description":"Optional customer workflow/run identifier."},"system_type":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"System Type","description":"Optional source-system type for agentic normalization."},"system_version":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"System Version","description":"Optional customer source-system or model version. Returned in signed governance_metadata and used for consented calibration profiles."},"rubric_version":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Rubric Version","description":"Optional customer policy/rubric version. Returned in signed governance_metadata and used for consented calibration profiles."},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject","description":"What the decision is about (asset, target, account, etc)."},"decision_question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decision Question","description":"The operator-facing question. The orchestrator falls back to a subject-derived question if omitted."},"evidence":{"anyOf":[{"$ref":"#/components/schemas/EvidenceItemRequest"},{"items":{"$ref":"#/components/schemas/EvidenceItemRequest"},"type":"array","maxItems":100,"x-forge-independent-evidence":"Runtime rejects duplicate evidence_id values after casefold, deduplicates repeated normalized content_hash values, and correlates observations that share a normalized declared source_system, effective support polarity, and capped trust before inference. Correlation returns a signed safe abstention. Distinct source_system values remain customer-declared unless a separate upstream attestation is verified."},{"type":"null"}],"title":"Evidence","description":"At most 100 strict evidence objects, or one evidence object for single-item compatibility. Unknown fields are rejected; direction and weight_hint are not controls. Use option_support (or the explicit supports compatibility alias)."},"decision_options":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100,"minItems":2},{"type":"null"}],"uniqueItems":true,"title":"Decision Options","description":"Two to 100 decision-option labels. The standalone enterprise evaluate route requires this field explicitly; a separately governed legacy host may still derive compatibility defaults. Labels must remain unique after calibration outcome canonicalization.","x-forge-calibration-outcome-uniqueness":"canonical-outcome-key","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"abstention_action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abstention Action","description":"Exact recognized non-approval decision_options member used for uncertainty or incomplete evaluation. The standalone enterprise evaluate route requires it explicitly; legacy compatibility hosts may derive a safe in-menu fallback. A reported hard failure or human-review requirement may select a stronger in-menu block or escalation disposition."},"context":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":128},{"type":"null"}],"additionalProperties":true,"title":"Context","description":"Bounded workflow-specific metadata. The exact submission is source-hash bound but arbitrary context is not re-disclosed in the signed request view. Use the named version, intended-use, provenance, and human-boundary fields for reviewer-visible metadata."},"extensions":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":64},{"type":"null"}],"additionalProperties":true,"title":"Extensions","description":"Bounded forward-compatibility metadata. Extension values are request-bound but never evaluated as safeguards; executable controls must use the named top-level control fields."},"constraints":{"anyOf":[{"items":{"type":"string","maxLength":512,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Constraints","description":"Human-readable decision context only. Use hard_constraints plus matching constraint_results for executable policy gates.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"hard_constraints":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Hard Constraints","description":"Names of controls that must each have exactly one matching constraint_results entry before the policy gate may pass.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"constraint_results":{"anyOf":[{"items":{"$ref":"#/components/schemas/PolicyConstraintResultRequest"},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Constraint Results","description":"Explicit results for policy constraints. Every named constraint must have exactly one recognized result before the gate may report pass.","x-forge-normalization-policy":"reject-noncanonical-input","x-forge-unique-by":"constraint:NFKC-casefold"},"control_attestations":{"anyOf":[{"items":{"$ref":"#/components/schemas/ControlAttestationRequest"},"type":"array","maxItems":100},{"type":"null"}],"title":"Control Attestations","description":"Customer-authority Ed25519 attestations for positive constraint and approval claims. Authenticity requires a public-key-derived key ID pinned in the active immutable control profile."},"governed_release_policy_expectation":{"anyOf":[{"$ref":"#/components/schemas/GovernedReleasePolicyExpectationRequest"},{"type":"null"}],"description":"Exact immutable tenant governed-release policy expected for this model or synthetic-data decision. It never grants Forge execution authority."},"governed_request_basis_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Governed Request Basis Sha256","description":"Canonical forge-tagged-json digest of this complete request excluding only this field and governed_release_attestations."},"governed_release_attestations":{"anyOf":[{"items":{"$ref":"#/components/schemas/GovernedReleaseAttestationRequest"},"type":"array","maxItems":200},{"type":"null"}],"title":"Governed Release Attestations","description":"Customer-authority Ed25519 proofs for every policy-required positive constraint and completed approval on this exact governed request."},"required_approvals":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Required Approvals","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"completed_approvals":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Completed Approvals","description":"Positive evidence of approvals actually completed. Omitting a required approval here makes it missing; an empty missing list is not proof.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"missing_required_approval":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Missing Required Approval","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"human_review_boundary":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":64},{"type":"null"}],"title":"Human Review Boundary","description":"Bounded customer-defined human-review boundary returned in signed governance_metadata. Use required_approvals and completed_approvals for executable approval controls."},"data_provenance":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":64},{"type":"null"}],"title":"Data Provenance","description":"Bounded source/provenance metadata supplied by the customer and returned in signed governance_metadata; not independently verified."},"data_scope":{"anyOf":[{"$ref":"#/components/schemas/DataScopeRequest"},{"type":"null"}],"description":"Strict customer-declared data-handling boundary. Unknown or misspelled fields are rejected rather than signed and ignored."},"learning_rights":{"anyOf":[{"$ref":"#/components/schemas/LearningRightsRequest"},{"type":"null"}],"description":"Explicit customer learning and retention choice. Retention is deny-by-default and derived permission flags are not accepted."},"requested_outputs":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":8},{"type":"null"}],"items":{"enum":["agent_action_readiness","alternatives_considered","engine_path_metadata","evidence_contributions","governed_release_gate","replay_key","signed_decision_record","uncertainty_analysis"]},"uniqueItems":true,"title":"Requested Outputs","description":"Closed list of output labels that map to content always emitted and covered by the complete-record signature.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"record_delivery_webhook_url":{"anyOf":[{"type":"string","maxLength":8192,"pattern":"^https://"},{"type":"null"}],"title":"Record Delivery Webhook Url","description":"Optional HTTPS destination for the signed record. The destination is re-resolved and SSRF-checked before every pinned connection."},"record_delivery_webhook_key_id":{"anyOf":[{"type":"string","pattern":"^whk_[0-9a-f]{40}$"},{"type":"null"}],"title":"Record Delivery Webhook Key Id","description":"Tenant webhook key to use for this receiver. Required once a tenant has more than one active/rotation key."},"record_s3_presigned_put_url":{"anyOf":[{"type":"string","maxLength":8192,"pattern":"^https://"},{"type":"null"}],"title":"Record S3 Presigned Put Url","description":"Optional HTTPS presigned PUT URL for the customer's object store."},"record_export_destination":{"anyOf":[{"type":"string","enum":["partner_vault_http_response","signed_webhook","s3_object","snowflake_stage","splunk_hec","siem_json","worm_archive"]},{"type":"null"}],"title":"Record Export Destination"},"include_record_export_envelope":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Record Export Envelope"},"minimum_evidence_count":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":1.0},{"type":"null"}],"title":"Minimum Evidence Count","description":"Optional minimum submitted evidence count required for a completed assessment. It cannot exceed the 100-item engine cap."},"dispatch_escalation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Dispatch Escalation","description":"Webhook route only: dispatch a required escalation when true."},"escalation_webhook_url":{"anyOf":[{"type":"string","maxLength":8192},{"type":"null"}],"title":"Escalation Webhook Url","description":"Webhook route only: HTTPS escalation destination. A loopback HTTP target is accepted only under the explicit local-development override."},"escalation_webhook_key_id":{"anyOf":[{"type":"string","pattern":"^whk_[0-9a-f]{40}$"},{"type":"null"}],"title":"Escalation Webhook Key Id","description":"Tenant webhook key for the escalation receiver."},"partner_declared_policy_action":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Partner Declared Policy Action","description":"Action asserted by a customer-owned policy engine. It remains a partner assertion and must exactly match decision_options."},"policy_gate_status":{"anyOf":[{"type":"string","enum":["pass","fail","not_evaluated"]},{"type":"null"}],"title":"Policy Gate Status","description":"Optional customer-declared gate status. A declared pass cannot override a failed or incomplete Forge control evaluation."}},"additionalProperties":false,"type":"object","title":"DecisionRecordEvaluateRequest","description":"Public-facing input to the industry-agnostic decision engine.\n\nThe top level is a closed contract. Domain-specific metadata belongs in\n``context``; policy controls must use the explicitly named control fields.\nThis prevents a misspelled control (for example ``hard_constaints``) from\nbeing accepted, signed, and then ignored by the policy gate.\n\nSee ``docs/product_integration_guide.md`` for curl-ready examples. The\nauthoritative enabled-adapter list is returned by\n``/v1/decision-records/describe`` for the deployed host.","examples":[{"abstention_action":"request_more_data","client_id":"insurance-enterprise-synthetic","decision_options":["bind","exclude","decline","request_more_data"],"decision_question":"Should the MGA bind, exclude, decline, or request more data?","evidence":[{"claim_support_level":"partner_supplied","confidence":0.84,"evidence_id":"ev-001","summary":"Synthetic inspection shows remediated electrical findings.","title":"Loss-control inspection"}],"industry":"insurance","subject":"Synthetic industrial property risk — illustrative pre-bind","workflow_type":"pre_bind_technical_diligence"},{"abstention_action":"request_more_data","client_id":"cyber-enterprise-synthetic","context":{"entity":"synthetic-vendor.example"},"decision_options":["escalate","monitor","enrich","notify","request_more_data"],"decision_question":"Escalate, monitor, enrich, notify, or request more data?","evidence":[{"claim_support_level":"partner_supplied","confidence":0.77,"evidence_id":"cti-001","summary":"Synthetic forum mention within last 30 days.","title":"Dark web credential mention"}],"industry":"cyber","subject":"Synthetic credential exposure — illustrative vendor","workflow_type":"cti_escalation_review"}],"x-forge-extra-field-policy":"strict top-level contract; domain metadata belongs in context"},"DecisionRecordReferenceResponse":{"properties":{"schema_version":{"type":"string","const":"forge-record-reference/v1","title":"Schema Version"},"record_id":{"type":"string","title":"Record Id"},"replay_key":{"type":"string","title":"Replay Key"},"signature":{"$ref":"#/components/schemas/DecisionRecordSignatureReferenceResponse"},"decision_signature":{"$ref":"#/components/schemas/DecisionBindingSignatureReferenceResponse"},"complete_record_signature":{"$ref":"#/components/schemas/CompleteRecordSignatureReferenceResponse"},"verification_required":{"type":"boolean","const":true,"title":"Verification Required"},"signing_identity_path":{"type":"string","title":"Signing Identity Path"}},"additionalProperties":false,"type":"object","required":["schema_version","record_id","replay_key","signature","decision_signature","complete_record_signature","verification_required","signing_identity_path"],"title":"DecisionRecordReferenceResponse","description":"Identifiers needed to persist and independently verify the record."},"DecisionRecordSignatureReferenceResponse":{"properties":{"algorithm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Algorithm"},"key_id":{"anyOf":[{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$"},{"type":"null"}],"title":"Key Id"},"signed_field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signed Field"}},"additionalProperties":false,"type":"object","required":["algorithm","signed_field"],"title":"DecisionRecordSignatureReferenceResponse"},"DecisionSummaryResponse":{"properties":{"schema_version":{"type":"string","const":"forge-decision-summary/v1","title":"Schema Version"},"action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"},"confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence"},"assessment_mode":{"type":"string","title":"Assessment Mode"},"abstained":{"type":"boolean","title":"Abstained"},"abstention_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abstention Reason"}},"additionalProperties":false,"type":"object","required":["schema_version","action","confidence","assessment_mode","abstained","abstention_reason"],"title":"DecisionSummaryResponse","description":"Small control-plane projection for ordinary client integrations."},"DeliveryRetryRequest":{"properties":{"outbox_id":{"type":"integer","minimum":1.0,"title":"Outbox Id"},"replacement_url":{"anyOf":[{"type":"string","maxLength":8192,"minLength":1},{"type":"null"}],"title":"Replacement Url"},"webhook_key_id":{"anyOf":[{"type":"string","pattern":"^whk_[0-9a-f]{40}$"},{"type":"null"}],"title":"Webhook Key Id"}},"additionalProperties":false,"type":"object","required":["outbox_id"],"title":"DeliveryRetryRequest"},"DeliveryStatusListResponse":{"properties":{"schema_version":{"type":"string","const":"forge-delivery-status-list/v1","title":"Schema Version"},"record_id":{"type":"string","title":"Record Id"},"deliveries":{"items":{"$ref":"#/components/schemas/DeliveryStatusResponse"},"type":"array","title":"Deliveries"}},"additionalProperties":false,"type":"object","required":["schema_version","record_id","deliveries"],"title":"DeliveryStatusListResponse"},"DeliveryStatusResponse":{"properties":{"schema_version":{"type":"string","const":"forge-delivery-status/v1","title":"Schema Version"},"outbox_id":{"type":"integer","title":"Outbox Id"},"record_id":{"type":"string","title":"Record Id"},"event_type":{"type":"string","title":"Event Type"},"delivery_kind":{"type":"string","enum":["webhook","s3_put","unknown"],"title":"Delivery Kind"},"webhook_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Key Id"},"state":{"type":"string","enum":["pending","processing","retry","delivered","dead_letter"],"title":"State"},"attempts":{"type":"integer","minimum":0.0,"title":"Attempts"},"max_attempts":{"type":"integer","minimum":1.0,"title":"Max Attempts"},"available_at":{"type":"string","title":"Available At"},"last_attempt_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Attempt At"},"delivered_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivered At"},"payload_retained":{"type":"boolean","title":"Payload Retained"},"payload_expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payload Expires At"},"payload_purged_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payload Purged At"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"}},"additionalProperties":false,"type":"object","required":["schema_version","outbox_id","record_id","event_type","delivery_kind","webhook_key_id","state","attempts","max_attempts","available_at","last_attempt_at","delivered_at","payload_retained","payload_expires_at","payload_purged_at","last_error"],"title":"DeliveryStatusResponse"},"EnterpriseConfigResponse":{"properties":{"schema_version":{"type":"string","const":"forge-enterprise-config/v1","title":"Schema Version"},"api_version":{"type":"string","title":"Api Version"},"oidc_federation":{"additionalProperties":true,"type":"object","title":"Oidc Federation"},"mtls":{"additionalProperties":true,"type":"object","title":"Mtls"},"data_residency":{"additionalProperties":true,"type":"object","title":"Data Residency"},"record_export":{"additionalProperties":true,"type":"object","title":"Record Export"},"host_surface_profile":{"type":"string","enum":["full_host","api_only"],"title":"Host Surface Profile"},"same_origin_integration_artifacts":{"type":"boolean","title":"Same Origin Integration Artifacts"},"status_page_path":{"type":"string","title":"Status Page Path"},"sla_doc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sla Doc"},"on_prem_doc":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"On Prem Doc"}},"additionalProperties":false,"type":"object","required":["schema_version","api_version","oidc_federation","mtls","data_residency","record_export","host_surface_profile","same_origin_integration_artifacts","status_page_path","sla_doc","on_prem_doc"],"title":"EnterpriseConfigResponse","description":"Strict discovery envelope with deliberately extensible capability maps."},"EvidenceItemRequest":{"properties":{"evidence_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Evidence Id"},"source_system":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Source System","description":"Stable source-system identifier; retained in the signed commitment."},"source_type":{"anyOf":[{"type":"string","maxLength":120,"minLength":1},{"type":"null"}],"title":"Source Type"},"source_label":{"anyOf":[{"type":"string","maxLength":240,"minLength":1},{"type":"null"}],"title":"Source Label","description":"Reviewer-facing source label."},"data_source":{"anyOf":[{"type":"string","maxLength":240,"minLength":1},{"type":"null"}],"title":"Data Source","description":"Deprecated compatibility alias for source_label.","deprecated":true},"title":{"anyOf":[{"type":"string","maxLength":240,"minLength":1},{"type":"null"}],"title":"Title"},"summary":{"type":"string","maxLength":1600,"minLength":1,"title":"Summary"},"confidence":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Confidence","description":"Caller-assessed reliability in [0, 1]. Every evidence item sent to the standalone enterprise API must include this field explicitly. The optional model default exists only for legacy internal compatibility and is never inferred at the standalone HTTP boundary. Embedded callers that omit or malform it are normalized to neutral 0.0, never to an invented positive weight.","x-forge-standalone-required":true},"claim_support_level":{"anyOf":[{"type":"string","enum":["submitted_fact","partner_supplied","public_context","model_inference","system_generated","attested_upstream","unverified","not_assessed"]},{"type":"null"}],"title":"Claim Support Level","description":"Caller-declared provenance label. It does not authenticate the source or mint upstream trust; public request claims are capped at partner-supplied computational trust unless a separate server-owned attestation verifier succeeds."},"option_support":{"anyOf":[{"additionalProperties":{"type":"number","maximum":1.0,"minimum":-1.0},"type":"object","maxProperties":100,"minProperties":1},{"type":"null"}],"title":"Option Support","description":"Preferred option-to-weight map. Keys must exactly match the request's explicit decision_options; values are finite numbers in [-1, 1]."},"supports":{"anyOf":[{"additionalProperties":{"type":"number","maximum":1.0,"minimum":-1.0},"type":"object","maxProperties":100,"minProperties":1},{"type":"null"}],"title":"Supports","description":"Backward-compatible alias for option_support.","deprecated":true},"content_hash":{"anyOf":[{"type":"string","pattern":"^(?:sha256:)?[0-9a-f]{64}$"},{"type":"null"}],"title":"Content Hash","description":"Caller-supplied SHA-256 source-content fingerprint (64 lowercase hex characters, optionally prefixed with sha256:); retained in the signed commitment."},"timestamp":{"anyOf":[{"type":"string","maxLength":120,"minLength":1,"pattern":"^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:\\.[0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9])$"},{"type":"null"}],"format":"date-time","title":"Timestamp","description":"Evidence observation time as RFC 3339 with Z or an explicit numeric UTC offset. Unknown offset -00:00 is rejected."}},"additionalProperties":false,"type":"object","required":["summary","confidence"],"title":"EvidenceItemRequest","description":"One executable evidence-input vocabulary for every decision route.\n\n``option_support`` is the preferred request spelling. ``supports`` remains\nan explicit compatibility alias because older integrations use it. A\ncaller must choose one spelling so conflicting maps can never be resolved\nby silent precedence. ``data_source`` is the corresponding legacy alias\nfor ``source_label`` and follows the same rule.","x-forge-option-support-alias":"option_support is preferred; supports is accepted for compatibility; submitting both is rejected","x-forge-signed-commitment":"Every accepted field is included in source_payload_hash; the normalized evidence object is additionally committed by normalized_evidence_sha256 inside the completely signed record.","x-forge-standalone-confidence-policy":"caller_supplied_required_no_server_default"},"GovernedReleaseAttestationRequest":{"properties":{"schema_version":{"type":"string","const":"forge-governed-release-attestation/v1","title":"Schema Version","default":"forge-governed-release-attestation/v1"},"algorithm":{"type":"string","const":"ed25519","title":"Algorithm","default":"ed25519"},"canonicalization":{"type":"string","const":"forge-tagged-json-f64be-v1","title":"Canonicalization","default":"forge-tagged-json-f64be-v1"},"message_prefix":{"type":"string","const":"forge-governed-release-attestation-subject/v1\n","title":"Message Prefix","default":"forge-governed-release-attestation-subject/v1\n"},"signed_field":{"type":"string","const":"subject","title":"Signed Field","default":"subject"},"subject":{"$ref":"#/components/schemas/GovernedReleaseAttestationSubjectRequest"},"public_key":{"type":"string","maxLength":44,"minLength":44,"title":"Public Key"},"signature":{"type":"string","maxLength":88,"minLength":88,"title":"Signature"},"signed_message_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Signed Message Sha256"}},"additionalProperties":false,"type":"object","required":["subject","public_key","signature","signed_message_sha256"],"title":"GovernedReleaseAttestationRequest","description":"Detached Ed25519 envelope for one governed-release authority claim."},"GovernedReleaseAttestationSubjectRequest":{"properties":{"schema_version":{"type":"string","const":"forge-governed-release-attestation-subject/v1","title":"Schema Version","default":"forge-governed-release-attestation-subject/v1"},"domain":{"type":"string","enum":["model_governance","synthetic_data_release"],"title":"Domain"},"kind":{"type":"string","enum":["constraint","approval"],"title":"Kind"},"status":{"type":"string","enum":["pass","completed"],"title":"Status"},"label":{"type":"string","maxLength":128,"minLength":1,"title":"Label"},"attester_key_id":{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$","title":"Attester Key Id"},"tenant_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$","title":"Tenant Id"},"policy_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$","title":"Policy Id"},"policy_version":{"type":"integer","maximum":2147483647.0,"minimum":1.0,"title":"Policy Version"},"policy_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Policy Sha256"},"governance_class":{"type":"string","enum":["model_governance","synthetic_data_release"],"title":"Governance Class"},"workflow_type":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$","title":"Workflow Type"},"governed_request_basis_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Governed Request Basis Sha256"},"audience":{"type":"string","const":"forge-governed-release-authority","title":"Audience","default":"forge-governed-release-authority"},"nonce":{"type":"string","pattern":"^[A-Za-z0-9._~:-]{16,128}$","title":"Nonce"},"issued_at":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?Z$","title":"Issued At"},"expires_at":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?Z$","title":"Expires At"}},"additionalProperties":false,"type":"object","required":["domain","kind","status","label","attester_key_id","tenant_id","policy_id","policy_version","policy_sha256","governance_class","workflow_type","governed_request_basis_sha256","nonce","issued_at","expires_at"],"title":"GovernedReleaseAttestationSubjectRequest","description":"One exact customer-governance claim signed for one request basis."},"GovernedReleaseAttesterGrant":{"properties":{"key_id":{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$","title":"Key Id"},"kind":{"type":"string","enum":["constraint","approval"],"title":"Kind"},"labels":{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100,"minItems":1,"uniqueItems":true,"title":"Labels","x-forge-canonical-uniqueness":"NFKC-casefold"}},"additionalProperties":false,"type":"object","required":["key_id","kind","labels"],"title":"GovernedReleaseAttesterGrant"},"GovernedReleasePolicyActivateRequest":{"properties":{"schema_version":{"type":"string","const":"forge-governed-release-authority-policy/v1","title":"Schema Version","default":"forge-governed-release-authority-policy/v1"},"policy_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$","title":"Policy Id"},"version":{"type":"integer","maximum":2147483647.0,"minimum":1.0,"title":"Version"},"governance_class":{"type":"string","enum":["model_governance","synthetic_data_release"],"title":"Governance Class"},"workflow_type":{"anyOf":[{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$"},{"type":"null"}],"title":"Workflow Type","description":"Optional exact workflow scope; null applies as class fallback."},"required_constraints":{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100,"minItems":1,"uniqueItems":true,"title":"Required Constraints","x-forge-canonical-uniqueness":"NFKC-casefold"},"required_approvals":{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100,"minItems":1,"uniqueItems":true,"title":"Required Approvals","x-forge-canonical-uniqueness":"NFKC-casefold"},"attester_grants":{"items":{"$ref":"#/components/schemas/GovernedReleaseAttesterGrant"},"type":"array","maxItems":200,"minItems":1,"title":"Attester Grants"},"prior_active_policy_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Prior Active Policy Sha256"}},"additionalProperties":false,"type":"object","required":["policy_id","version","governance_class","required_constraints","required_approvals","attester_grants"],"title":"GovernedReleasePolicyActivateRequest","description":"Complete immutable next policy version plus optimistic prior pin."},"GovernedReleasePolicyExpectationRequest":{"properties":{"policy_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$","title":"Policy Id"},"version":{"type":"integer","maximum":2147483647.0,"minimum":1.0,"title":"Version"},"policy_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Policy Sha256"}},"additionalProperties":false,"type":"object","required":["policy_id","version","policy_sha256"],"title":"GovernedReleasePolicyExpectationRequest","description":"Exact immutable policy version expected for this governed request."},"GovernedReleasePolicyResponse":{"properties":{"schema_version":{"type":"string","const":"forge-governed-release-authority-policy/v1","title":"Schema Version"},"tenant_id":{"type":"string","title":"Tenant Id"},"policy_id":{"type":"string","title":"Policy Id"},"version":{"type":"integer","minimum":1.0,"title":"Version"},"governance_class":{"type":"string","enum":["model_governance","synthetic_data_release"],"title":"Governance Class"},"workflow_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workflow Type"},"required_constraints":{"items":{"type":"string"},"type":"array","title":"Required Constraints"},"required_approvals":{"items":{"type":"string"},"type":"array","title":"Required Approvals"},"attester_grants":{"items":{"$ref":"#/components/schemas/GovernedReleaseAttesterGrant"},"type":"array","title":"Attester Grants"},"policy_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Policy Sha256"},"prior_active_policy_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Prior Active Policy Sha256"},"created_by_principal_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Created By Principal Sha256"},"created_at":{"type":"string","title":"Created At"},"active":{"type":"boolean","const":true,"title":"Active"},"idempotent_replay":{"type":"boolean","title":"Idempotent Replay"}},"additionalProperties":false,"type":"object","required":["schema_version","tenant_id","policy_id","version","governance_class","workflow_type","required_constraints","required_approvals","attester_grants","policy_sha256","created_by_principal_sha256","created_at","active","idempotent_replay"],"title":"GovernedReleasePolicyResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IntegrationAPIKeyScopeOperations":{"properties":{"decision:write":{"items":{"type":"string"},"type":"array","title":"Decision:Write"},"calibration:write":{"items":{"type":"string"},"type":"array","title":"Calibration:Write"},"calibration:read":{"items":{"type":"string"},"type":"array","title":"Calibration:Read"},"delivery:read":{"items":{"type":"string"},"type":"array","title":"Delivery:Read"},"tenant:read":{"items":{"type":"string"},"type":"array","title":"Tenant:Read"},"audit:read":{"items":{"type":"string"},"type":"array","title":"Audit:Read"}},"additionalProperties":false,"type":"object","required":["decision:write","calibration:write","calibration:read","delivery:read","tenant:read","audit:read"],"title":"IntegrationAPIKeyScopeOperations","description":"Closed customer-key operation map; release controls are not buyer API."},"IntegrationAuthStatus":{"properties":{"bearer_jwt":{"type":"boolean","title":"Bearer Jwt"},"x_api_key":{"type":"boolean","title":"X Api Key"},"canonical_evaluate_scope":{"type":"string","title":"Canonical Evaluate Scope"},"agentic_event_scope":{"type":"string","title":"Agentic Event Scope"},"oauth_client_credentials":{"type":"boolean","title":"Oauth Client Credentials"},"oauth_token_path":{"type":"string","title":"Oauth Token Path"},"oauth_scopes":{"items":{"type":"string"},"type":"array","title":"Oauth Scopes"},"oauth_recommended_scope":{"type":"string","title":"Oauth Recommended Scope"},"oauth_legacy_umbrella_scope":{"type":"string","title":"Oauth Legacy Umbrella Scope"},"api_key_header":{"type":"string","const":"X-API-Key","title":"Api Key Header"},"one_credential_per_request":{"type":"boolean","title":"One Credential Per Request"},"browser_credentials_supported":{"type":"boolean","title":"Browser Credentials Supported"},"enterprise_provisioned":{"type":"boolean","title":"Enterprise Provisioned"},"tenant_binding":{"type":"string","title":"Tenant Binding"},"api_key_scopes":{"items":{"type":"string","enum":["decision:write","calibration:write","calibration:read","delivery:read","tenant:read","audit:read"]},"type":"array","title":"Api Key Scopes"},"api_key_scope_operations":{"$ref":"#/components/schemas/IntegrationAPIKeyScopeOperations"},"api_key_selector_free_operations":{"items":{"type":"string"},"type":"array","title":"Api Key Selector Free Operations"},"api_key_operation_allowlist_required":{"type":"boolean","const":true,"title":"Api Key Operation Allowlist Required"},"api_key_allowed_operations_field":{"type":"string","const":"allowed_operations","title":"Api Key Allowed Operations Field"},"api_key_operation_authority_status_field":{"type":"string","const":"operation_authority_status","title":"Api Key Operation Authority Status Field"},"api_key_self_path":{"type":"string","const":"GET /v1/auth/keys/self","title":"Api Key Self Path"},"api_key_self_schema_version":{"type":"string","const":"forge-api-key-self/v2","title":"Api Key Self Schema Version"},"legacy_key_operation_policy":{"type":"string","const":"self_readback_only_rotation_required","title":"Legacy Key Operation Policy"},"decision_write_lifecycle_operations":{"items":{"type":"string"},"type":"array","title":"Decision Write Lifecycle Operations"},"decision_write_exclusions":{"items":{"type":"string"},"type":"array","title":"Decision Write Exclusions"},"api_key_default_expiry_days":{"type":"integer","title":"Api Key Default Expiry Days"},"api_key_max_expiry_days":{"type":"integer","title":"Api Key Max Expiry Days"},"key_inventory_path":{"type":"string","title":"Key Inventory Path"},"key_stage_path":{"type":"string","const":"POST /v1/auth/keys/stage","title":"Key Stage Path"},"key_staged_activation_path":{"type":"string","const":"POST /v1/auth/keys/staged/activate","title":"Key Staged Activation Path"},"canonical_key_lifecycle":{"type":"string","const":"stage_disabled_then_activate_atomically","title":"Canonical Key Lifecycle"},"replacement_binding_field":{"type":"string","const":"replaces_key_id","title":"Replacement Binding Field"},"provisioning_request_binding_field":{"type":"string","const":"provisioning_request_id","title":"Provisioning Request Binding Field"},"legacy_issue_or_rotate_routes_mounted":{"type":"boolean","const":false,"title":"Legacy Issue Or Rotate Routes Mounted"},"key_revoke_path":{"type":"string","title":"Key Revoke Path"},"key_selector":{"type":"string","const":"stable_opaque_key_id","title":"Key Selector"},"key_custody_auth":{"type":"string","title":"Key Custody Auth"}},"additionalProperties":false,"type":"object","required":["bearer_jwt","x_api_key","canonical_evaluate_scope","agentic_event_scope","oauth_client_credentials","oauth_token_path","oauth_scopes","oauth_recommended_scope","oauth_legacy_umbrella_scope","api_key_header","one_credential_per_request","browser_credentials_supported","enterprise_provisioned","tenant_binding","api_key_scopes","api_key_scope_operations","api_key_selector_free_operations","api_key_operation_allowlist_required","api_key_allowed_operations_field","api_key_operation_authority_status_field","api_key_self_path","api_key_self_schema_version","legacy_key_operation_policy","decision_write_lifecycle_operations","decision_write_exclusions","api_key_default_expiry_days","api_key_max_expiry_days","key_inventory_path","key_stage_path","key_staged_activation_path","canonical_key_lifecycle","replacement_binding_field","provisioning_request_binding_field","legacy_issue_or_rotate_routes_mounted","key_revoke_path","key_selector","key_custody_auth"],"title":"IntegrationAuthStatus"},"IntegrationContractStatus":{"properties":{"handoff_eligible":{"type":"boolean","title":"Handoff Eligible"},"runtime_candidate_ready":{"type":"boolean","title":"Runtime Candidate Ready"},"release_qualification_attested":{"type":"boolean","const":false,"title":"Release Qualification Attested"},"qualification_note":{"type":"string","title":"Qualification Note"},"product_only_openapi_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Only Openapi Path"},"starter_openapi_path":{"type":"string","title":"Starter Openapi Path"},"integration_openapi_profiles":{"additionalProperties":{"type":"string"},"type":"object","title":"Integration Openapi Profiles"},"compatibility_openapi_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compatibility Openapi Path"},"interactive_docs_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Interactive Docs Path"},"documentation_portal_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Documentation Portal Path"},"api_major":{"type":"string","const":"v1","title":"Api Major"},"supported_api_majors":{"items":{"type":"string","const":"v1"},"type":"array","title":"Supported Api Majors"},"service_release":{"type":"string","title":"Service Release"},"stability":{"type":"string","const":"stable","title":"Stability"},"deprecated":{"type":"boolean","title":"Deprecated"},"sunset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sunset"},"deprecation_policy_path":{"type":"string","title":"Deprecation Policy Path"},"breaking_change_rule":{"type":"string","title":"Breaking Change Rule"},"minimum_sunset_notice_days":{"type":"integer","title":"Minimum Sunset Notice Days"},"future_major_parallel_support_months":{"type":"integer","title":"Future Major Parallel Support Months"},"deprecation_headers":{"items":{"type":"string"},"type":"array","title":"Deprecation Headers"},"error_schema_version":{"type":"string","const":"forge-error/v1","title":"Error Schema Version"}},"additionalProperties":false,"type":"object","required":["handoff_eligible","runtime_candidate_ready","release_qualification_attested","qualification_note","product_only_openapi_path","starter_openapi_path","integration_openapi_profiles","compatibility_openapi_path","interactive_docs_path","documentation_portal_path","api_major","supported_api_majors","service_release","stability","deprecated","sunset","deprecation_policy_path","breaking_change_rule","minimum_sunset_notice_days","future_major_parallel_support_months","deprecation_headers","error_schema_version"],"title":"IntegrationContractStatus"},"IntegrationControlModeStatus":{"properties":{"protected_boundary_model":{"type":"string","const":"customer_controlled","title":"Protected Boundary Model"},"pre_action_operation":{"type":"string","title":"Pre Action Operation"},"agentic_event_operation":{"type":"string","title":"Agentic Event Operation"},"run_event_operation":{"type":"string","title":"Run Event Operation"},"run_events_read_operation":{"type":"string","title":"Run Events Read Operation"},"run_export_operation":{"type":"string","title":"Run Export Operation"},"agent_accountability_openapi_path":{"type":"string","title":"Agent Accountability Openapi Path"},"forge_executes_customer_actions":{"type":"boolean","title":"Forge Executes Customer Actions"},"note":{"type":"string","title":"Note"}},"additionalProperties":false,"type":"object","required":["protected_boundary_model","pre_action_operation","agentic_event_operation","run_event_operation","run_events_read_operation","run_export_operation","agent_accountability_openapi_path","forge_executes_customer_actions","note"],"title":"IntegrationControlModeStatus"},"IntegrationIdempotencyOperationStatus":{"properties":{"operation":{"type":"string","enum":["POST /v1/decision-records/evaluate","POST /v1/decision-records/pre-action","POST /v1/agentic/events/evaluate","POST /v1/webhooks/decision-records","POST /v1/agent-events"],"title":"Operation"},"header_required":{"type":"boolean","title":"Header Required"},"automatic_payload_hash_fallback":{"type":"boolean","title":"Automatic Payload Hash Fallback"},"client_request_binding_required":{"type":"boolean","title":"Client Request Binding Required"},"client_request_binding_required_when":{"anyOf":[{"type":"string","const":"governed_release_attestations_present"},{"type":"null"}],"title":"Client Request Binding Required When"},"idempotency_key_must_equal_request_id":{"type":"boolean","title":"Idempotency Key Must Equal Request Id"},"idempotency_key_must_equal_request_id_when_binding_present":{"type":"boolean","title":"Idempotency Key Must Equal Request Id When Binding Present"},"idempotency_key_must_equal_event_id":{"type":"boolean","title":"Idempotency Key Must Equal Event Id"},"same_key_different_payload_status":{"type":"integer","enum":[409,422],"title":"Same Key Different Payload Status"}},"additionalProperties":false,"type":"object","required":["operation","header_required","automatic_payload_hash_fallback","client_request_binding_required","client_request_binding_required_when","idempotency_key_must_equal_request_id","idempotency_key_must_equal_request_id_when_binding_present","idempotency_key_must_equal_event_id","same_key_different_payload_status"],"title":"IntegrationIdempotencyOperationStatus"},"IntegrationIdempotencyStatus":{"properties":{"header":{"type":"string","const":"Idempotency-Key","title":"Header"},"maximum_length":{"type":"integer","title":"Maximum Length"},"explicit_header_recommended":{"type":"boolean","title":"Explicit Header Recommended"},"automatic_payload_hash_fallback":{"type":"boolean","title":"Automatic Payload Hash Fallback"},"automatic_payload_hash_fallback_scope":{"type":"string","const":"unbound_evaluate_only","title":"Automatic Payload Hash Fallback Scope"},"requires_exact_request_id_match_for_bound_requests":{"type":"boolean","title":"Requires Exact Request Id Match For Bound Requests"},"operations":{"items":{"$ref":"#/components/schemas/IntegrationIdempotencyOperationStatus"},"type":"array","title":"Operations"},"outcome_submission":{"$ref":"#/components/schemas/IntegrationOutcomeSubmissionIdempotencyStatus"},"same_key_same_payload":{"type":"string","title":"Same Key Same Payload"},"same_key_different_payload_status":{"type":"integer","title":"Same Key Different Payload Status"},"tenant_isolated":{"type":"boolean","title":"Tenant Isolated"}},"additionalProperties":false,"type":"object","required":["header","maximum_length","explicit_header_recommended","automatic_payload_hash_fallback","automatic_payload_hash_fallback_scope","requires_exact_request_id_match_for_bound_requests","operations","outcome_submission","same_key_same_payload","same_key_different_payload_status","tenant_isolated"],"title":"IntegrationIdempotencyStatus"},"IntegrationOutcomeSubmissionIdempotencyStatus":{"properties":{"operation":{"type":"string","const":"POST /v1/calibration/outcomes","title":"Operation"},"header_supported":{"type":"boolean","const":false,"title":"Header Supported"},"retry_identity":{"type":"string","const":"tenant_id_and_signed_record_id","title":"Retry Identity"},"same_final_outcome":{"type":"string","title":"Same Final Outcome"},"different_final_outcome_status":{"type":"integer","const":409,"title":"Different Final Outcome Status"}},"additionalProperties":false,"type":"object","required":["operation","header_supported","retry_identity","same_final_outcome","different_final_outcome_status"],"title":"IntegrationOutcomeSubmissionIdempotencyStatus","description":"Outcome retries bind to the signed record, not a transport header."},"IntegrationPresetsResponse":{"properties":{"schema_version":{"type":"string","const":"forge-integration-presets/v1","title":"Schema Version"},"summary":{"type":"string","title":"Summary"},"mode_comparison":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Mode Comparison"},"lifecycle_steps":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Lifecycle Steps"},"api_surface":{"items":{"type":"string"},"type":"array","title":"Api Surface"},"sample_operations":{"additionalProperties":{"type":"string"},"type":"object","title":"Sample Operations"},"sample_payloads":{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object","title":"Sample Payloads"},"sample_payload_status":{"additionalProperties":{"type":"string"},"type":"object","title":"Sample Payload Status"},"verification":{"additionalProperties":true,"type":"object","title":"Verification"},"calibration_honesty":{"type":"string","title":"Calibration Honesty"},"calibration_outcome_industry":{"type":"string","title":"Calibration Outcome Industry"},"platform_contracts":{"additionalProperties":true,"type":"object","title":"Platform Contracts"},"adapter_templates":{"additionalProperties":true,"type":"object","title":"Adapter Templates"},"record_export":{"additionalProperties":true,"type":"object","title":"Record Export"}},"additionalProperties":false,"type":"object","required":["schema_version","summary","mode_comparison","lifecycle_steps","api_surface","sample_operations","sample_payloads","sample_payload_status","verification","calibration_honesty","calibration_outcome_industry","platform_contracts","adapter_templates","record_export"],"title":"IntegrationPresetsResponse"},"IntegrationQuickstartStatus":{"properties":{"same_origin_artifacts_available":{"type":"boolean","title":"Same Origin Artifacts Available"},"artifact_delivery_model":{"type":"string","enum":["same_origin_signed_release","out_of_band_signed_release"],"title":"Artifact Delivery Model"},"guide_artifact":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Guide Artifact"},"first_call_kit_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Call Kit Url"},"integration_kit_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Integration Kit Url"},"preset_path":{"type":"string","title":"Preset Path"},"preset_name":{"type":"string","title":"Preset Name"},"canonical_operation":{"type":"string","title":"Canonical Operation"},"bootstrap_trust_source":{"type":"string","const":"authenticated_enterprise_onboarding","title":"Bootstrap Trust Source"},"bootstrap_files":{"items":{"type":"string"},"type":"array","title":"Bootstrap Files"},"bootstrap_reviewed_sha256_required":{"type":"boolean","const":true,"title":"Bootstrap Reviewed Sha256 Required"},"api_origin_establishes_bootstrap_trust":{"type":"boolean","const":false,"title":"Api Origin Establishes Bootstrap Trust"},"runnable_examples":{"items":{"type":"string"},"type":"array","title":"Runnable Examples"},"typescript_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Typescript Source"},"typescript_build_command":{"type":"string","title":"Typescript Build Command"},"typescript_run_command":{"type":"string","title":"Typescript Run Command"}},"additionalProperties":false,"type":"object","required":["same_origin_artifacts_available","artifact_delivery_model","guide_artifact","first_call_kit_url","integration_kit_url","preset_path","preset_name","canonical_operation","bootstrap_trust_source","bootstrap_files","bootstrap_reviewed_sha256_required","api_origin_establishes_bootstrap_trust","runnable_examples","typescript_source","typescript_build_command","typescript_run_command"],"title":"IntegrationQuickstartStatus"},"IntegrationRecordExportFields":{"properties":{"record_delivery_webhook_url":{"type":"string","title":"Record Delivery Webhook Url"},"record_export_destination":{"type":"string","title":"Record Export Destination"},"record_s3_presigned_put_url":{"type":"string","title":"Record S3 Presigned Put Url"},"include_record_export_envelope":{"type":"string","title":"Include Record Export Envelope"}},"additionalProperties":false,"type":"object","required":["record_delivery_webhook_url","record_export_destination","record_s3_presigned_put_url","include_record_export_envelope"],"title":"IntegrationRecordExportFields"},"IntegrationRecordExportStatus":{"properties":{"schema_version":{"type":"string","const":"forge-record-export/v1","title":"Schema Version"},"default":{"type":"string","title":"Default"},"supported_destinations":{"items":{"type":"string"},"type":"array","title":"Supported Destinations"},"note":{"type":"string","title":"Note"},"webhook_path":{"type":"string","title":"Webhook Path"},"record_delivery_event_type":{"type":"string","title":"Record Delivery Event Type"},"webhook_event_binding":{"type":"string","title":"Webhook Event Binding"},"evaluate_fields":{"$ref":"#/components/schemas/IntegrationRecordExportFields"},"first_party_s3_on_evaluate":{"type":"boolean","title":"First Party S3 On Evaluate"},"partner_vault_delivery":{"type":"string","title":"Partner Vault Delivery"}},"additionalProperties":false,"type":"object","required":["schema_version","default","supported_destinations","note","webhook_path","record_delivery_event_type","webhook_event_binding","evaluate_fields","first_party_s3_on_evaluate","partner_vault_delivery"],"title":"IntegrationRecordExportStatus"},"IntegrationResponseProfileStatus":{"properties":{"profile":{"type":"string","const":"compact-v1","title":"Profile"},"profile_selection_header_required":{"type":"boolean","const":false,"title":"Profile Selection Header Required"},"legacy_compatibility_envelope_available":{"type":"boolean","const":false,"title":"Legacy Compatibility Envelope Available"},"idempotency_rule":{"type":"string","title":"Idempotency Rule"}},"additionalProperties":false,"type":"object","required":["profile","profile_selection_header_required","legacy_compatibility_envelope_available","idempotency_rule"],"title":"IntegrationResponseProfileStatus"},"IntegrationRetryStatus":{"properties":{"retryable_statuses":{"items":{"type":"integer"},"type":"array","title":"Retryable Statuses"},"retry_in_progress_status":{"type":"integer","title":"Retry In Progress Status"},"respect_retry_after":{"type":"boolean","title":"Respect Retry After"},"mutation_rule":{"type":"string","title":"Mutation Rule"},"recommended_per_attempt_timeout_seconds":{"type":"integer","title":"Recommended Per Attempt Timeout Seconds"},"maximum_retry_delay_seconds":{"type":"integer","title":"Maximum Retry Delay Seconds"}},"additionalProperties":false,"type":"object","required":["retryable_statuses","retry_in_progress_status","respect_retry_after","mutation_rule","recommended_per_attempt_timeout_seconds","maximum_retry_delay_seconds"],"title":"IntegrationRetryStatus"},"IntegrationStatusResponse":{"properties":{"schema_version":{"type":"string","const":"forge-integration-status/v1","title":"Schema Version"},"host_surface":{"type":"string","const":"slim_product_app","title":"Host Surface"},"host_surface_profile":{"type":"string","enum":["full_host","api_only"],"title":"Host Surface Profile"},"production_host_model":{"type":"string","title":"Production Host Model"},"primary_base_url":{"type":"string","title":"Primary Base Url"},"slim_product_app_available":{"type":"boolean","title":"Slim Product App Available"},"slim_product_app_note":{"type":"string","title":"Slim Product App Note"},"contract":{"$ref":"#/components/schemas/IntegrationContractStatus"},"transport":{"$ref":"#/components/schemas/IntegrationTransportStatus"},"auth":{"$ref":"#/components/schemas/IntegrationAuthStatus"},"idempotency":{"$ref":"#/components/schemas/IntegrationIdempotencyStatus"},"retry":{"$ref":"#/components/schemas/IntegrationRetryStatus"},"response_profiles":{"$ref":"#/components/schemas/IntegrationResponseProfileStatus"},"webhooks":{"$ref":"#/components/schemas/IntegrationWebhookStatus"},"quickstart":{"$ref":"#/components/schemas/IntegrationQuickstartStatus"},"control_modes":{"$ref":"#/components/schemas/IntegrationControlModeStatus"},"public_contract_paths":{"items":{"type":"string"},"type":"array","title":"Public Contract Paths"},"partner_paths":{"items":{"type":"string"},"type":"array","title":"Partner Paths"},"record_export":{"$ref":"#/components/schemas/IntegrationRecordExportStatus"},"tenant_metrics":{"$ref":"#/components/schemas/IntegrationTenantMetricsStatus"},"token_issue_rate_limit":{"$ref":"#/components/schemas/IntegrationTokenRateLimitStatus"}},"additionalProperties":false,"type":"object","required":["schema_version","host_surface","host_surface_profile","production_host_model","primary_base_url","slim_product_app_available","slim_product_app_note","contract","transport","auth","idempotency","retry","response_profiles","webhooks","quickstart","control_modes","public_contract_paths","partner_paths","record_export","tenant_metrics","token_issue_rate_limit"],"title":"IntegrationStatusResponse","description":"Stable top-level discovery contract; export capabilities are extensible."},"IntegrationTenantMetricsStatus":{"properties":{"backend":{"type":"string","title":"Backend"},"multi_worker_note":{"type":"string","title":"Multi Worker Note"}},"additionalProperties":false,"type":"object","required":["backend","multi_worker_note"],"title":"IntegrationTenantMetricsStatus"},"IntegrationTokenRateLimitStatus":{"properties":{"backend":{"type":"string","title":"Backend"},"note":{"type":"string","title":"Note"}},"additionalProperties":false,"type":"object","required":["backend","note"],"title":"IntegrationTokenRateLimitStatus"},"IntegrationTransportStatus":{"properties":{"integration_model":{"type":"string","const":"server_to_server","title":"Integration Model"},"cors_enabled":{"type":"boolean","title":"Cors Enabled"},"browser_credentials_supported":{"type":"boolean","title":"Browser Credentials Supported"},"production_tls_required":{"type":"boolean","title":"Production Tls Required"},"api_keys_in_browser_prohibited":{"type":"boolean","title":"Api Keys In Browser Prohibited"}},"additionalProperties":false,"type":"object","required":["integration_model","cors_enabled","browser_credentials_supported","production_tls_required","api_keys_in_browser_prohibited"],"title":"IntegrationTransportStatus"},"IntegrationWebhookStatus":{"properties":{"inbound_event_route":{"type":"string","title":"Inbound Event Route"},"inbound_event_semantics":{"type":"string","const":"authenticated_retrospective_api_operation","title":"Inbound Event Semantics"},"inbound_authentication":{"type":"string","const":"api_key_oauth_or_bearer","title":"Inbound Authentication"},"outbound_signed_delivery_available":{"type":"boolean","title":"Outbound Signed Delivery Available"},"receiver_configuration_required":{"type":"boolean","title":"Receiver Configuration Required"},"management_routes_mounted":{"type":"boolean","title":"Management Routes Mounted"},"delivery_status_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Delivery Status Route"},"retry_route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retry Route"},"worker_mode":{"type":"string","title":"Worker Mode"},"receiver_secret_delivery":{"type":"string","title":"Receiver Secret Delivery"},"signature_version":{"type":"string","const":"forge-webhook-signature/v2","title":"Signature Version"},"signature_direction":{"type":"string","const":"outbound_delivery_only","title":"Signature Direction"},"default_timestamp_tolerance_seconds":{"type":"integer","title":"Default Timestamp Tolerance Seconds"},"default_max_attempts":{"type":"integer","title":"Default Max Attempts"},"duplicate_delivery_possible":{"type":"boolean","title":"Duplicate Delivery Possible"},"ordering_guarantee":{"type":"string","const":"none","title":"Ordering Guarantee"},"integration_guide":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Integration Guide"}},"additionalProperties":false,"type":"object","required":["inbound_event_route","inbound_event_semantics","inbound_authentication","outbound_signed_delivery_available","receiver_configuration_required","management_routes_mounted","delivery_status_route","retry_route","worker_mode","receiver_secret_delivery","signature_version","signature_direction","default_timestamp_tolerance_seconds","default_max_attempts","duplicate_delivery_possible","ordering_guarantee","integration_guide"],"title":"IntegrationWebhookStatus"},"LearningRightsRequest":{"properties":{"schema_version":{"anyOf":[{"type":"string","const":"forge-learning-rights/v1"},{"type":"null"}],"title":"Schema Version"},"requested_learning_mode":{"anyOf":[{"type":"string","enum":["no_training","evaluation_metrics_only"]},{"type":"null"}],"title":"Requested Learning Mode"},"learning_mode":{"anyOf":[{"type":"string","enum":["no_training","evaluation_metrics_only"]},{"type":"null"}],"title":"Learning Mode"},"retention_opt_in":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Retention Opt In"},"retention_authorization_id":{"anyOf":[{"type":"string","maxLength":128,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$"},{"type":"null"}],"title":"Retention Authorization Id","description":"Exact authorization identity pre-bound by a recent-MFA tenant administrator to the active managed decision credential. The request value alone never grants storage authority."}},"additionalProperties":false,"type":"object","title":"LearningRightsRequest","description":"Strict customer retention choice; derived permission flags are rejected."},"OAuthTokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","const":"Bearer","title":"Token Type"},"expires_in":{"type":"integer","minimum":1.0,"title":"Expires In"},"scope":{"type":"string","enum":["decision_records","decision_records.write","decision_records decision_records.write"],"title":"Scope"},"allowed_agent_control_profile_ids":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Allowed Agent Control Profile Ids"},"org_id":{"type":"string","title":"Org Id"},"token_environment":{"type":"string","enum":["sandbox","production"],"title":"Token Environment"},"audience":{"type":"string","title":"Audience"}},"additionalProperties":false,"type":"object","required":["access_token","token_type","expires_in","scope","allowed_agent_control_profile_ids","org_id","token_environment","audience"],"title":"OAuthTokenResponse"},"OutcomeAuthoritySubmit":{"properties":{"authority_type":{"type":"string","enum":["system_of_record","authorized_human","customer_attestation"],"title":"Authority Type"},"authority_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$","title":"Authority Id"},"authority_role":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$","title":"Authority Role"},"source_reference":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$","title":"Source Reference","description":"Optional opaque identifier in the customer's system of record. URLs, email addresses, and free-text notes are not accepted."},"attested_at":{"type":"string","format":"date-time","title":"Attested At"}},"additionalProperties":false,"type":"object","required":["authority_type","authority_id","attested_at"],"title":"OutcomeAuthoritySubmit","description":"Customer-declared source for ground truth.\n\nForge binds this declaration to the authenticated submitter. The source\nnamed here is not independently verified by this endpoint."},"OutcomeEvidenceSubmit":{"properties":{"schema_version":{"type":"string","const":"forge-outcome-evidence-reference/v1","title":"Schema Version","description":"Required reference-only evidence contract version: forge-outcome-evidence-reference/v1."},"evidence_sha256":{"type":"string","maxLength":64,"minLength":64,"pattern":"^[0-9a-f]{64}$","title":"Evidence Sha256","description":"Customer-computed SHA-256 of the exact evidence artifact bytes retained in the customer system. The endpoint rejects raw content."},"evidence_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$","title":"Evidence Id","description":"Optional opaque identifier in the customer evidence store."},"source_system_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$","title":"Source System Id","description":"Optional opaque source-system identifier."}},"additionalProperties":false,"type":"object","required":["schema_version","evidence_sha256"],"title":"OutcomeEvidenceSubmit","description":"Reference-only evidence metadata; raw evidence stays customer-side."},"PlatformContractsResponse":{"properties":{"schema_version":{"type":"string","const":"forge-platform-contracts/v1","title":"Schema Version"},"summary":{"type":"string","title":"Summary"},"contracts":{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object","title":"Contracts"},"integration_modes":{"additionalProperties":{"type":"string"},"type":"object","title":"Integration Modes"},"adapter_templates":{"type":"string","title":"Adapter Templates"}},"additionalProperties":false,"type":"object","required":["schema_version","summary","contracts","integration_modes","adapter_templates"],"title":"PlatformContractsResponse"},"PolicyConstraintResultRequest":{"properties":{"constraint":{"type":"string","maxLength":128,"minLength":1,"title":"Constraint"},"passed":{"type":"boolean","title":"Passed"},"status":{"anyOf":[{"type":"string","enum":["pass","passed","ok","compliant","fail","failed","violation","breach","noncompliant","escalate","escalated","human_review","review"]},{"type":"null"}],"title":"Status"},"severity":{"anyOf":[{"type":"string","enum":["hard","soft","advisory"]},{"type":"null"}],"title":"Severity"},"detail":{"anyOf":[{"type":"string","maxLength":1600},{"type":"null"}],"title":"Detail"},"source":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Source"},"required_action":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Required Action"}},"additionalProperties":false,"type":"object","required":["constraint","passed"],"title":"PolicyConstraintResultRequest","description":"One explicit, executable policy-control evaluation result."},"ProductAPIKeyActivateRequest":{"properties":{"key_id":{"type":"string","maxLength":36,"minLength":36,"pattern":"^fki_[A-Za-z0-9_-]{32}$","title":"Key Id"}},"additionalProperties":false,"type":"object","required":["key_id"],"title":"ProductAPIKeyActivateRequest"},"ProductAPIKeyActivateResponse":{"properties":{"activated":{"type":"integer","const":1,"title":"Activated"},"key_id":{"type":"string","title":"Key Id"},"provisioning_request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provisioning Request Id"},"lifecycle_status":{"type":"string","const":"active","title":"Lifecycle Status"},"activated_at":{"type":"string","title":"Activated At"},"idempotent_replay":{"type":"boolean","title":"Idempotent Replay"},"replaced_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Replaced Key Id"}},"additionalProperties":false,"type":"object","required":["activated","key_id","provisioning_request_id","lifecycle_status","activated_at","idempotent_replay","replaced_key_id"],"title":"ProductAPIKeyActivateResponse"},"ProductAPIKeyInventoryItem":{"properties":{"key_id":{"type":"string","title":"Key Id"},"secret_prefix":{"type":"string","title":"Secret Prefix"},"name":{"type":"string","title":"Name"},"provisioning_request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provisioning Request Id"},"scopes":{"items":{"type":"string","enum":["all","decision:write","calibration:write","calibration:read","delivery:read","tenant:read","audit:read","operations:read"]},"type":"array","title":"Scopes"},"allowed_operations":{"items":{"type":"string"},"type":"array","title":"Allowed Operations"},"operation_authority_status":{"type":"string","enum":["active","legacy_self_only_rotation_required","invalid"],"title":"Operation Authority Status"},"allowed_agent_control_profile_ids":{"items":{"type":"string"},"type":"array","title":"Allowed Agent Control Profile Ids"},"outcome_authority_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome Authority Id"},"retention_authorization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retention Authorization Id"},"lifecycle_status":{"type":"string","enum":["active","revocation_scheduled","revoked","expired","disabled"],"title":"Lifecycle Status"},"created_at":{"type":"string","title":"Created At"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"},"last_used_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Used At"},"revoked_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revoked At"},"effective_revocation_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective Revocation At"}},"additionalProperties":false,"type":"object","required":["key_id","secret_prefix","name","provisioning_request_id","scopes","allowed_operations","operation_authority_status","allowed_agent_control_profile_ids","lifecycle_status","created_at","expires_at","last_used_at","revoked_at","effective_revocation_at"],"title":"ProductAPIKeyInventoryItem"},"ProductAPIKeyInventoryResponse":{"properties":{"schema_version":{"type":"string","const":"forge-api-key-inventory/v5","title":"Schema Version"},"org_id":{"type":"string","title":"Org Id"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"count":{"type":"integer","minimum":0.0,"title":"Count"},"offset":{"type":"integer","minimum":0.0,"title":"Offset"},"limit":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Limit"},"keys":{"items":{"$ref":"#/components/schemas/ProductAPIKeyInventoryItem"},"type":"array","title":"Keys"}},"additionalProperties":false,"type":"object","required":["schema_version","org_id","total","count","offset","limit","keys"],"title":"ProductAPIKeyInventoryResponse"},"ProductAPIKeyRevokeRequest":{"properties":{"key_id":{"type":"string","maxLength":36,"minLength":36,"pattern":"^fki_[A-Za-z0-9_-]{32}$","title":"Key Id","description":"Stable opaque identity of the one key being revoked."},"grace_period_hours":{"type":"integer","maximum":168.0,"minimum":0.0,"title":"Grace Period Hours","description":"Hours before revocation becomes effective. The secure default is immediate (0); a grace window must be requested explicitly.","default":0}},"additionalProperties":false,"type":"object","required":["key_id"],"title":"ProductAPIKeyRevokeRequest"},"ProductAPIKeyRevokeResponse":{"properties":{"revoked":{"type":"integer","const":1,"title":"Revoked"},"key_id":{"type":"string","title":"Key Id"},"grace_period_hours":{"type":"integer","maximum":168.0,"minimum":0.0,"title":"Grace Period Hours"},"effective_at":{"type":"string","title":"Effective At"},"immediate":{"type":"boolean","title":"Immediate"}},"additionalProperties":false,"type":"object","required":["revoked","key_id","grace_period_hours","effective_at","immediate"],"title":"ProductAPIKeyRevokeResponse"},"ProductAPIKeySelfResponse":{"properties":{"schema_version":{"type":"string","const":"forge-api-key-self/v2","title":"Schema Version"},"credential_type":{"type":"string","const":"managed_api_key","title":"Credential Type"},"credential_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Credential Sha256"},"key_id":{"type":"string","pattern":"^fki_[A-Za-z0-9_-]{32}$","title":"Key Id"},"provisioning_request_id":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._~:-]{0,127}$"},{"type":"null"}],"title":"Provisioning Request Id"},"org_id":{"type":"string","maxLength":128,"minLength":1,"title":"Org Id"},"scopes":{"items":{"type":"string","enum":["all","decision:write","calibration:write","calibration:read","delivery:read","tenant:read","audit:read","operations:read"]},"type":"array","title":"Scopes"},"allowed_operations":{"items":{"type":"string"},"type":"array","title":"Allowed Operations"},"operation_authority_status":{"type":"string","enum":["active","legacy_self_only_rotation_required"],"title":"Operation Authority Status"},"allowed_agent_control_profile_ids":{"items":{"type":"string"},"type":"array","title":"Allowed Agent Control Profile Ids"},"outcome_authority_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome Authority Id"},"retention_authorization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retention Authorization Id"},"created_at":{"type":"string","title":"Created At"},"expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires At"},"lifecycle_status":{"type":"string","const":"active","title":"Lifecycle Status"},"durable_lookup_verified":{"type":"boolean","const":true,"title":"Durable Lookup Verified"}},"additionalProperties":false,"type":"object","required":["schema_version","credential_type","credential_sha256","key_id","org_id","scopes","allowed_operations","operation_authority_status","allowed_agent_control_profile_ids","outcome_authority_id","retention_authorization_id","created_at","expires_at","lifecycle_status","durable_lookup_verified"],"title":"ProductAPIKeySelfResponse","description":"Non-secret durable identity of exactly the presented managed key."},"ProductAPIKeyStageRequest":{"properties":{"name":{"type":"string","maxLength":128,"minLength":1,"title":"Name","default":"Managed product key"},"provisioning_request_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9._~:-]{0,127}$","title":"Provisioning Request Id","description":"Unique immutable client request identity for timeout-safe staging. A replay never creates another key or replays plaintext material."},"scopes":{"items":{"type":"string","enum":["decision:write","calibration:write","calibration:read","delivery:read","tenant:read","audit:read"]},"type":"array","title":"Scopes","description":"Closed API-key scope list. New product keys default to the bounded decision:write scope (decision evaluation, pre-action, agentic-event, decision-webhook submission, and ordered v1 agent-event append only). Calibration, delivery-status, tenant-observability, ordered agent-run audit access require explicit customer scopes. Deployment-wide operational monitoring is not a customer-key capability; it requires a separate purpose-bound deployment-owner credential. The audit:read scope is limited to v1 agent-run query and export routes. Custody, delivery retry, administrative, and release-control routes remain excluded. Internal or administrative scopes cannot be issued through this customer API. An empty list is deny-all."},"allowed_operations":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Allowed Operations","description":"Exact sorted method-path templates this managed key may invoke. The set must include GET /v1/auth/keys/self and must justify, without surplus, every requested scope. Runtime authorization requires both this route authority and the matching scope."},"allowed_agent_control_profile_ids":{"items":{"type":"string"},"type":"array","maxItems":100,"title":"Allowed Agent Control Profile Ids","description":"Exact server-owned agent-control profiles this credential may use. A protected pre-action or agentic key carries at least one canonical profile ID. A decision:write key limited by its signed onboarding operation cap to evaluate-only review may use an empty list. A non-decision key must provide an empty list."},"outcome_authority_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$"},{"type":"null"}],"title":"Outcome Authority Id","description":"Optional stable tenant authority name for a dedicated calibration:write credential. Profile-bound outcome submission requires this binding; replacement inherits it and cannot rename it."},"retention_authorization_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$"},{"type":"null"}],"title":"Retention Authorization Id","description":"Optional exact customer approval identity for retained evaluation metrics. It is usable only by a decision:write credential and is not active until this staged key is explicitly activated. A request must name this exact value; caller input alone never authorizes a calibration write."},"expires_in_days":{"type":"integer","maximum":365.0,"minimum":1.0,"title":"Expires In Days","description":"Finite key lifetime in days, measured from the database clock. New keys default to 90 days and can never exceed 365 days.","default":90},"replaces_key_id":{"anyOf":[{"type":"string","maxLength":36,"minLength":36,"pattern":"^fki_[A-Za-z0-9_-]{32}$"},{"type":"null"}],"title":"Replaces Key Id","description":"Optional active key to revoke atomically only when this staged key is later activated. Staging itself never changes the old key."}},"additionalProperties":false,"type":"object","required":["provisioning_request_id","allowed_operations","allowed_agent_control_profile_ids"],"title":"ProductAPIKeyStageRequest","description":"Describe one customer key to stage in a disabled state."},"ProductAPIKeyStageResponse":{"properties":{"api_key":{"type":"string","title":"Api Key","description":"One-time plaintext API key. Store it in an approved secret manager; the product service and database retain only its SHA-256 digest, a non-secret display prefix, and lifecycle metadata. Approved operator handoff tooling may temporarily persist a mode-0600 custody artifact outside the product database; move it into the approved secrets store or delete it under the handoff runbook.","readOnly":true,"x-forge-display-once":true,"x-forge-sensitive":true},"key_id":{"type":"string","title":"Key Id"},"secret_prefix":{"type":"string","title":"Secret Prefix","description":"Non-unique display hint only; never accepted as a custody selector."},"name":{"type":"string","title":"Name"},"provisioning_request_id":{"type":"string","title":"Provisioning Request Id"},"display_once":{"type":"boolean","const":true,"title":"Display Once"},"scopes":{"items":{"type":"string","enum":["decision:write","calibration:write","calibration:read","delivery:read","tenant:read","audit:read"]},"type":"array","title":"Scopes"},"allowed_operations":{"items":{"type":"string"},"type":"array","title":"Allowed Operations"},"allowed_agent_control_profile_ids":{"items":{"type":"string"},"type":"array","title":"Allowed Agent Control Profile Ids"},"outcome_authority_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome Authority Id"},"retention_authorization_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retention Authorization Id"},"expires_at":{"type":"string","title":"Expires At"},"lifecycle_status":{"type":"string","const":"disabled","title":"Lifecycle Status"},"activation_required":{"type":"boolean","const":true,"title":"Activation Required"},"replaces_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Replaces Key Id"}},"additionalProperties":false,"type":"object","required":["api_key","key_id","secret_prefix","name","provisioning_request_id","display_once","scopes","allowed_operations","allowed_agent_control_profile_ids","expires_at","lifecycle_status","activation_required","replaces_key_id"],"title":"ProductAPIKeyStageResponse"},"ProductHealthResponse":{"properties":{"status":{"type":"string","const":"ok","title":"Status"},"alive":{"type":"boolean","const":true,"title":"Alive"},"service":{"type":"string","const":"Forge Decision Records API","title":"Service"}},"additionalProperties":false,"type":"object","required":["status","alive","service"],"title":"ProductHealthResponse"},"ProductReadinessProbeResponse":{"properties":{"status":{"type":"string","enum":["ready","not_ready"],"title":"Status"},"ready":{"type":"boolean","title":"Ready"},"service":{"type":"string","const":"Forge Decision Records API","title":"Service"}},"additionalProperties":false,"type":"object","required":["status","ready","service"],"title":"ProductReadinessProbeResponse"},"RealizedOutcomeCalibrationResponse":{"properties":{"predicted_confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Predicted Confidence"},"actual_outcome":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Actual Outcome"},"delta":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Delta"},"applied":{"type":"boolean","title":"Applied"},"reason":{"type":"string","title":"Reason"}},"additionalProperties":false,"type":"object","required":["predicted_confidence","actual_outcome","delta","applied","reason"],"title":"RealizedOutcomeCalibrationResponse"},"RealizedOutcomeIngestRequest":{"properties":{"schema_version":{"type":"string","const":"forge-realized-outcome/v1","title":"Schema Version"},"record_replay_key":{"type":"string","maxLength":256,"minLength":1,"title":"Record Replay Key","description":"replay_key of the signed decision record this outcome describes."},"outcome":{"$ref":"#/components/schemas/RealizedOutcomeSubmit"}},"additionalProperties":false,"type":"object","required":["schema_version","record_replay_key","outcome"],"title":"RealizedOutcomeIngestRequest","description":"Realized-outcome ingestion envelope; tenant identity stays in credentials."},"RealizedOutcomeIngestResponse":{"properties":{"schema_version":{"type":"string","const":"forge-realized-outcome-ingestion/v1","title":"Schema Version"},"tenant_id":{"type":"string","title":"Tenant Id"},"record_replay_key":{"type":"string","title":"Record Replay Key"},"outcome_replay_key":{"type":"string","title":"Outcome Replay Key"},"outcome_signature":{"additionalProperties":true,"type":"object","title":"Outcome Signature"},"outcome_kind":{"type":"string","title":"Outcome Kind"},"engine_correct":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Engine Correct"},"quality_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Quality Score"},"calibration":{"$ref":"#/components/schemas/RealizedOutcomeCalibrationResponse"},"idempotent_replay":{"type":"boolean","title":"Idempotent Replay"},"ground_truth_verification":{"type":"string","const":"customer_asserted_not_forge_verified","title":"Ground Truth Verification"}},"additionalProperties":false,"type":"object","required":["schema_version","tenant_id","record_replay_key","outcome_replay_key","outcome_signature","outcome_kind","engine_correct","quality_score","calibration","idempotent_replay","ground_truth_verification"],"title":"RealizedOutcomeIngestResponse"},"RealizedOutcomeSubmit":{"properties":{"outcome_kind":{"type":"string","enum":["correct","wrong","delayed","escalated","loss_avoided","loss_incurred","human_override","abstained_correctly","abstained_incorrectly","outcome_unknown","data_arrived_late","reviewer_disagreed_then_outcome_confirmed_engine","reviewer_disagreed_then_outcome_confirmed_reviewer"],"title":"Outcome Kind","description":"Controlled outcome vocabulary from the outcome loop contract."},"outcome_summary":{"type":"string","maxLength":1024,"minLength":1,"title":"Outcome Summary","description":"Short customer-owned description of what actually happened."},"observed_at":{"type":"string","format":"date-time","title":"Observed At","description":"When the outcome occurred or became observable (ISO-8601, explicit offset)."},"realized_loss_amount":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Realized Loss Amount"},"realized_loss_currency":{"anyOf":[{"type":"string","maxLength":3,"minLength":3,"pattern":"^[A-Z]{3}$"},{"type":"null"}],"title":"Realized Loss Currency"},"reviewer_action_taken":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Reviewer Action Taken"},"time_to_outcome_seconds":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Time To Outcome Seconds"},"notes":{"anyOf":[{"type":"string","maxLength":2048,"minLength":1},{"type":"null"}],"title":"Notes"}},"additionalProperties":false,"type":"object","required":["outcome_kind","outcome_summary","observed_at"],"title":"RealizedOutcomeSubmit","description":"One realized outcome against a prior signed decision record."},"SigningIdentityPinningResponse":{"properties":{"cli":{"type":"string","title":"Cli"},"library":{"type":"string","title":"Library"},"protected_positive_cli":{"type":"string","title":"Protected Positive Cli"},"protected_positive_library":{"type":"string","title":"Protected Positive Library"},"note":{"type":"string","title":"Note"}},"additionalProperties":false,"type":"object","required":["cli","library","protected_positive_cli","protected_positive_library","note"],"title":"SigningIdentityPinningResponse"},"SigningIdentityResponse":{"properties":{"schema_version":{"type":"string","const":"forge-signing-identity-readback/v2","title":"Schema Version"},"algorithm":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Algorithm"},"key_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Scope"},"persistent_identity":{"type":"boolean","title":"Persistent Identity"},"boot_ready":{"type":"boolean","title":"Boot Ready"},"key_id":{"anyOf":[{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$"},{"type":"null"}],"title":"Key Id"},"key_id_format":{"type":"string","title":"Key Id Format"},"key_fingerprint_bits":{"type":"integer","const":256,"title":"Key Fingerprint Bits"},"public_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Public Key"},"same_origin_readback_only":{"type":"boolean","const":true,"title":"Same Origin Readback Only"},"requires_out_of_band_pin":{"type":"boolean","const":true,"title":"Requires Out Of Band Pin"},"trust_bootstrap":{"type":"string","const":"not_provided_by_this_endpoint","title":"Trust Bootstrap"},"pinning":{"$ref":"#/components/schemas/SigningIdentityPinningResponse"},"verification_scope":{"type":"string","title":"Verification Scope"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"additionalProperties":false,"type":"object","required":["schema_version","algorithm","key_scope","persistent_identity","boot_ready","key_id_format","key_fingerprint_bits","public_key","same_origin_readback_only","requires_out_of_band_pin","trust_bootstrap","pinning","verification_scope"],"title":"SigningIdentityResponse","description":"Public readback contract; it is not itself a trust bootstrap."},"TenantAuditEntryResponse":{"properties":{"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"action":{"type":"string","title":"Action"},"outcome":{"type":"string","title":"Outcome"},"resource":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"},"entry_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entry Hash"},"details":{"additionalProperties":true,"type":"object","title":"Details"}},"additionalProperties":false,"type":"object","required":["created_at","action","outcome","resource","request_id","entry_hash","details"],"title":"TenantAuditEntryResponse"},"TenantAuditFiltersResponse":{"properties":{"action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"},"outcome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome"},"resource":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource"},"replay_key_sha256":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Replay Key Sha256"}},"additionalProperties":false,"type":"object","required":["action","outcome","resource","replay_key_sha256"],"title":"TenantAuditFiltersResponse"},"TenantAuditLogResponse":{"properties":{"org_id":{"type":"string","title":"Org Id"},"count":{"type":"integer","minimum":0.0,"title":"Count"},"limit":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Limit"},"stable_snapshot":{"type":"boolean","const":true,"title":"Stable Snapshot"},"has_more":{"type":"boolean","title":"Has More"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"filters":{"$ref":"#/components/schemas/TenantAuditFiltersResponse"},"entries":{"items":{"$ref":"#/components/schemas/TenantAuditEntryResponse"},"type":"array","title":"Entries"}},"additionalProperties":false,"type":"object","required":["org_id","count","limit","stable_snapshot","has_more","next_cursor","filters","entries"],"title":"TenantAuditLogResponse"},"TenantLatencyResponse":{"properties":{"avg":{"type":"number","minimum":0.0,"title":"Avg"},"p95":{"type":"number","minimum":0.0,"title":"P95"}},"additionalProperties":false,"type":"object","required":["avg","p95"],"title":"TenantLatencyResponse"},"TenantMetricsResponse":{"properties":{"org_id":{"type":"string","title":"Org Id"},"aggregation_scope":{"type":"string","const":"current_worker_process","title":"Aggregation Scope"},"complete_fleet_view":{"type":"boolean","const":false,"title":"Complete Fleet View"},"operational_use":{"type":"string","const":"diagnostic_only","title":"Operational Use"},"worker_instance_id":{"type":"string","title":"Worker Instance Id"},"window_records":{"type":"integer","minimum":0.0,"title":"Window Records"},"status_counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Status Counts"},"latency_ms":{"$ref":"#/components/schemas/TenantLatencyResponse"},"paths":{"items":{"prefixItems":[{"type":"string"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2},"type":"array","title":"Paths"}},"additionalProperties":false,"type":"object","required":["org_id","aggregation_scope","complete_fleet_view","operational_use","worker_instance_id","window_records","status_counts","latency_ms","paths"],"title":"TenantMetricsResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WebhookKeyActivateRequest":{"properties":{"replaces_key_id":{"anyOf":[{"type":"string","pattern":"^whk_[0-9a-f]{40}$"},{"type":"null"}],"title":"Replaces Key Id"},"mode":{"type":"string","enum":["rotation","additional_receiver"],"title":"Mode","default":"rotation"}},"additionalProperties":false,"type":"object","title":"WebhookKeyActivateRequest"},"WebhookKeyCreateRequest":{"properties":{"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Description"}},"additionalProperties":false,"type":"object","title":"WebhookKeyCreateRequest"},"WebhookKeyCreateResponse":{"properties":{"schema_version":{"type":"string","const":"forge-product-webhook-key/v2","title":"Schema Version"},"key_id":{"type":"string","pattern":"^whk_[0-9a-f]{40}$","title":"Key Id"},"secret_b64":{"type":"string","title":"Secret B64"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"lifecycle_status":{"type":"string","enum":["active","pending"],"title":"Lifecycle Status"},"created_at":{"type":"string","title":"Created At"},"warning":{"type":"string","title":"Warning"}},"additionalProperties":false,"type":"object","required":["schema_version","key_id","secret_b64","description","lifecycle_status","created_at","warning"],"title":"WebhookKeyCreateResponse"},"WebhookKeyListResponse":{"properties":{"schema_version":{"type":"string","const":"forge-product-webhook-key-list/v2","title":"Schema Version"},"keys":{"items":{"$ref":"#/components/schemas/WebhookKeyMetadataResponse"},"type":"array","title":"Keys"}},"additionalProperties":false,"type":"object","required":["schema_version","keys"],"title":"WebhookKeyListResponse"},"WebhookKeyMetadataResponse":{"properties":{"schema_version":{"type":"string","const":"forge-product-webhook-key/v2","title":"Schema Version"},"key_id":{"type":"string","pattern":"^whk_[0-9a-f]{40}$","title":"Key Id"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"active":{"type":"boolean","title":"Active"},"lifecycle_status":{"type":"string","enum":["pending","active","retiring","revoked"],"title":"Lifecycle Status"},"created_at":{"type":"string","title":"Created At"},"activated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Activated At"},"retiring_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retiring At"},"last_used_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Used At"},"revoked_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revoked At"}},"additionalProperties":false,"type":"object","required":["schema_version","key_id","description","active","lifecycle_status","created_at","activated_at","retiring_at","last_used_at","revoked_at"],"title":"WebhookKeyMetadataResponse"},"WebhookKeyMutationResponse":{"properties":{"schema_version":{"type":"string","const":"forge-product-webhook-key/v2","title":"Schema Version"},"key_id":{"type":"string","pattern":"^whk_[0-9a-f]{40}$","title":"Key Id"},"lifecycle_status":{"type":"string","enum":["active","revoked"],"title":"Lifecycle Status"}},"additionalProperties":false,"type":"object","required":["schema_version","key_id","lifecycle_status"],"title":"WebhookKeyMutationResponse"},"ForgeErrorResponse":{"type":"object","additionalProperties":false,"required":["schema_version","error","detail"],"properties":{"schema_version":{"type":"string","const":"forge-error/v1"},"error":{"type":"object","additionalProperties":false,"required":["code","message","status","request_id","retryable"],"properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{1,127}$"},"message":{"type":"string"},"status":{"type":"integer","minimum":400,"maximum":599},"request_id":{"type":"string","minLength":1,"maxLength":128},"retryable":{"type":"boolean"}}},"detail":{"description":"Deprecated compatibility detail. New clients must branch on error.code.","deprecated":true}}},"ForgeSignedDecisionRecordV2":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"forge-decision-record/v2","title":"Forge Signed Decision Record v2","type":"object","additionalProperties":false,"required":["schema_version","record_id","replay_key","tenant_id","industry","workflow_type","decision_type","selected_action","assessment_mode","abstained","abstention_reason","confidence","bayesian_inference","evidence_contributions","methodology","engine_contract","classification","normalized_request","signature","decision_binding","decision_signature","input_binding","complete_record_signature"],"properties":{"schema_version":{"const":"forge-decision-record/v2"},"record_id":{"type":"string","pattern":"^FDR-[0-9A-F]{32}$"},"replay_key":{"type":"string","pattern":"^[0-9a-f]{64}$"},"tenant_id":{"type":"string","minLength":1},"industry":{"type":"string","minLength":1},"workflow_type":{"type":"string","minLength":1},"decision_type":{"type":"string"},"selected_action":{"type":"string","minLength":1},"assessment_mode":{"enum":["completed_assessment","context_only"]},"abstained":{"type":"boolean"},"abstention_reason":{"type":"string"},"confidence":{"type":"number","minimum":0,"maximum":1},"bayesian_inference":{"type":"object","additionalProperties":true,"properties":{"inference_skipped":{"type":"boolean"}}},"evidence_contributions":{"type":"object","additionalProperties":true},"methodology":{"type":"object","additionalProperties":true},"engine_contract":{"type":"object","additionalProperties":true,"required":["learning_rights"],"properties":{"learning_rights":{"$ref":"#/components/schemas/ForgeSignedDecisionRecordV2/$defs/learning_rights"},"decision_provenance":{"$ref":"#/components/schemas/ForgeSignedDecisionRecordV2/$defs/decision_provenance"}}},"classification":{"type":"object","additionalProperties":true},"normalized_request":{"type":"object","additionalProperties":false,"description":"Data-minimized normalized request view covered by the complete-record signature. source_payload_hash commits to the complete submitted JSON; evidence text and arbitrary caller context are not returned. Bounded governance metadata remains visible for declared-use and version review.","required":["tenant_id","industry","workflow_type","decision_type","question","subject","decision_options","context","constraints","evidence","data_scope","learning_rights","requested_outputs","source_payload_hash","adapter_key"],"properties":{"tenant_id":{"type":"string","minLength":1},"industry":{"type":"string","minLength":1},"workflow_type":{"type":"string","minLength":1},"decision_type":{"type":"string"},"governance_class":{"enum":["standard_decision","high_consequence_agent_action","model_governance","synthetic_data_release"]},"question":{"type":"string","minLength":1},"subject":{"type":"string","minLength":1},"decision_options":{"type":"array","items":{"type":"string","minLength":1},"minItems":2,"uniqueItems":true},"abstention_action":{"type":"string","minLength":1},"governance_metadata":{"type":"object","additionalProperties":false,"properties":{"workflow_id":{"type":"string","minLength":1,"maxLength":128},"system_type":{"type":"string","minLength":1,"maxLength":128},"system_version":{"type":"string","minLength":1,"maxLength":128},"rubric_version":{"type":"string","minLength":1,"maxLength":128},"intended_use":{"type":"string","minLength":1,"maxLength":512},"data_provenance":{"type":"object","maxProperties":64,"additionalProperties":true},"finance_review":{"type":"object","additionalProperties":false,"required":["schema_version","review_phase","review_owner_role","strategy_category","regulator_correspondence_pending","model_version_change_recency_days"],"properties":{"schema_version":{"const":"forge-finance-review-context/v1"},"review_phase":{"type":["string","null"],"minLength":1,"maxLength":128},"review_owner_role":{"type":["string","null"],"minLength":1,"maxLength":128},"strategy_category":{"type":["string","null"],"minLength":1,"maxLength":128},"regulator_correspondence_pending":{"type":"boolean"},"model_version_change_recency_days":{"type":["integer","null"],"minimum":0,"maximum":2147483647}}},"human_review_boundary":{"type":"object","maxProperties":64,"additionalProperties":true},"governed_release_authority_evidence":{"$ref":"#/components/schemas/ForgeSignedDecisionRecordV2/$defs/governed_release_authority_evidence"},"control_attestation_evidence":{"type":"object","additionalProperties":false,"required":["schema_version","verification_status","runtime_context","attestations"],"properties":{"schema_version":{"const":"forge-verified-control-attestations/v1"},"verification_status":{"const":"verified"},"runtime_context":{"type":"object","additionalProperties":false,"required":["audience","environment","deployment_id"],"properties":{"audience":{"const":"forge-enterprise-decision-control"},"environment":{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,63}$"},"deployment_id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{1,127}$"}}},"attestations":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["attestation","verification"],"properties":{"attestation":{"type":"object","additionalProperties":false,"required":["schema_version","algorithm","canonicalization","message_prefix","signed_field","subject","public_key","signature","signed_message_sha256"],"properties":{"schema_version":{"const":"forge-control-attestation/v2"},"algorithm":{"const":"ed25519"},"canonicalization":{"const":"forge-tagged-json-f64be-v1"},"message_prefix":{"const":"forge-control-attestation-subject/v2\n"},"signed_field":{"const":"subject"},"public_key":{"type":"string","minLength":44,"maxLength":44,"pattern":"^[A-Za-z0-9+/]{42}[AEIMQUYcgkosw048]=$","description":"Canonical standard Base64 for exactly 32 raw Ed25519 public-key bytes. The runtime verifier decodes and re-encodes the bytes, derives the key fingerprint from those bytes, and requires the resulting identity to be pinned in the active tenant profile."},"signature":{"type":"string","minLength":88,"maxLength":88,"pattern":"^[A-Za-z0-9+/]{85}[AQgw]==$","description":"Canonical standard Base64 for exactly 64 raw Ed25519 signature bytes. This schema constrains the wire encoding; the runtime verifier performs the cryptographic Ed25519 verification over the complete canonical signed subject."},"signed_message_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"subject":{"type":"object","additionalProperties":false,"required":["schema_version","kind","status","label","attester_key_id","tenant_id","profile_id","profile_version","profile_sha256","operation","request_id","proposed_action","proposed_action_payload_sha256","audience","environment","deployment_id","nonce","issued_at","expires_at"],"properties":{"schema_version":{"const":"forge-control-attestation-subject/v2"},"kind":{"enum":["constraint","approval"],"description":"constraint requires status pass; approval requires status completed."},"status":{"enum":["pass","completed"],"description":"Must match the declared kind exactly."},"label":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]+$"},"attester_key_id":{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$"},"tenant_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]+$"},"profile_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$"},"profile_version":{"type":"integer","minimum":1,"maximum":2147483647},"profile_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"operation":{"enum":["POST /v1/decision-records/pre-action","POST /v1/agentic/events/evaluate"]},"request_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]+$"},"proposed_action":{"type":"string","minLength":1,"maxLength":512,"pattern":"^[!-~]+$"},"proposed_action_payload_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"audience":{"const":"forge-enterprise-decision-control"},"environment":{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,63}$"},"deployment_id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{1,127}$"},"nonce":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9._~:-]{16,128}$","not":{"pattern":"[^A-Za-z0-9._~:-]"},"description":"Attester-generated canonical nonce. The schema fixes the exact alphabet and length; durable one-time consumption and replay rejection are enforced transactionally at the protected runtime boundary."},"issued_at":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?Z$","description":"Canonical UTC RFC 3339 instant using Z and whole seconds or 1-6 fractional digits. The runtime verifier also validates the calendar instant."},"expires_at":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?Z$","description":"Canonical UTC RFC 3339 expiry using Z and whole seconds or 1-6 fractional digits. Ordering, the maximum 300-second TTL, clock skew, and request-time freshness remain runtime-verifier semantics."}},"allOf":[{"if":{"type":"object","additionalProperties":true,"required":["kind"],"properties":{"kind":{"const":"constraint"}}},"then":{"type":"object","additionalProperties":true,"properties":{"status":{"const":"pass"}}}},{"if":{"type":"object","additionalProperties":true,"required":["kind"],"properties":{"kind":{"const":"approval"}}},"then":{"type":"object","additionalProperties":true,"properties":{"status":{"const":"completed"}}}}]}}},"verification":{"type":"object","additionalProperties":false,"required":["verified","signature_valid","reason","verification_scope","key_id","kind","label","status","nonce","issued_at","expires_at","verified_at","signed_message_sha256"],"properties":{"verified":{"const":true},"signature_valid":{"const":true},"reason":{"const":"ok"},"verification_scope":{"const":"customer_control_claim_and_action_binding_v2"},"key_id":{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$"},"kind":{"enum":["constraint","approval"],"description":"constraint requires status pass; approval requires status completed."},"label":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]+$"},"status":{"enum":["pass","completed"],"description":"Must match the declared kind exactly."},"nonce":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9._~:-]{16,128}$","not":{"pattern":"[^A-Za-z0-9._~:-]"},"description":"Exact nonce copied from the cryptographically verified subject. Runtime evidence verification recomputes the verdict and requires full field equality."},"issued_at":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?Z$","description":"Canonical UTC RFC 3339 issue time copied from the verified subject. Runtime evidence verification rechecks the signed value and temporal contract."},"expires_at":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?Z$","description":"Canonical UTC RFC 3339 expiry copied from the verified subject. Ordering, maximum 300-second TTL, clock skew, and freshness are re-enforced by the runtime verifier."},"verified_at":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?Z$","description":"Canonical UTC RFC 3339 instant at which the runtime verifier checked the signed attestation and its freshness."},"signed_message_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"}},"allOf":[{"if":{"type":"object","additionalProperties":true,"required":["kind"],"properties":{"kind":{"const":"constraint"}}},"then":{"type":"object","additionalProperties":true,"properties":{"status":{"const":"pass"}}}},{"if":{"type":"object","additionalProperties":true,"required":["kind"],"properties":{"kind":{"const":"approval"}}},"then":{"type":"object","additionalProperties":true,"properties":{"status":{"const":"completed"}}}}]}}}}}}}},"agent_control_profile":{"type":"object","additionalProperties":false,"required":["schema_version","profile_id","version","profile_sha256","decision_options","abstention_action","hard_constraints","required_approvals","permitted_outcome_authorities","activation_status","server_owned"],"properties":{"schema_version":{"enum":["forge-agent-control-profile-binding/v1","forge-agent-control-profile-binding/v2"]},"profile_schema_version":{"const":"forge-agent-control-profile/v2"},"profile_id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$"},"version":{"type":"integer","minimum":1,"maximum":2147483647},"profile_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"decision_options":{"type":"array","minItems":2,"maxItems":100,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":128}},"abstention_action":{"type":"string","minLength":1,"maxLength":128},"hard_constraints":{"type":"array","maxItems":100,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":128}},"required_approvals":{"type":"array","maxItems":100,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":128}},"permitted_attesters":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["key_id","verification_status"],"properties":{"key_id":{"type":"string","minLength":1,"maxLength":128},"verification_status":{"const":"configured_not_verified"}}}},"control_attester_grants":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["key_id","kind","labels"],"properties":{"key_id":{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$"},"kind":{"enum":["constraint","approval"]},"labels":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]+$"}}}}},"permitted_outcome_authorities":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["authority_id","verification_status"],"properties":{"authority_id":{"type":"string","minLength":1,"maxLength":128},"verification_status":{"const":"configured_not_verified"}}}},"activation_status":{"const":"active_at_evaluation"},"server_owned":{"const":true}},"allOf":[{"anyOf":[{"type":"object","additionalProperties":true,"properties":{"hard_constraints":{"minItems":1}}},{"type":"object","additionalProperties":true,"properties":{"required_approvals":{"minItems":1}}}]},{"oneOf":[{"type":"object","additionalProperties":true,"required":["schema_version","permitted_attesters"],"properties":{"schema_version":{"const":"forge-agent-control-profile-binding/v1"},"profile_schema_version":{"not":{}},"control_attester_grants":{"not":{}}}},{"type":"object","additionalProperties":true,"required":["schema_version","profile_schema_version","control_attester_grants"],"properties":{"schema_version":{"const":"forge-agent-control-profile-binding/v2"},"profile_schema_version":{"const":"forge-agent-control-profile/v2"},"permitted_attesters":{"not":{}}}}]}]},"authenticated_submitter":{"type":"object","additionalProperties":false,"required":["schema_version","principal_sha256","credential_class","auth_source","role","raw_identity_disclosed"],"properties":{"schema_version":{"const":"forge-authenticated-submitter/v1"},"principal_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"credential_class":{"enum":["machine_api_key","machine_oauth_client","interactive_identity"]},"auth_source":{"type":"string","minLength":1,"maxLength":64},"role":{"type":"string","minLength":1,"maxLength":32},"raw_identity_disclosed":{"const":false}}},"action_identity":{"type":"object","additionalProperties":false,"description":"Bounded reviewer-visible identity of the customer-owned agent action. This is a signed attribution and request commitment, not a claim that Forge executed the action.","required":["schema_version","source"],"properties":{"schema_version":{"const":"forge-action-identity/v1"},"source":{"const":"normalized_request_context"},"agent_id":{"type":"string","minLength":1,"maxLength":128},"agent_version":{"type":"string","minLength":1,"maxLength":128},"integration_mode":{"enum":["pre_action","after_action"]},"proposed_action":{"type":"string","minLength":1,"maxLength":512},"proposed_action_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"proposed_action_payload_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"Optional for historical v2 records; required by current protected-execution helpers."},"workflow_id":{"type":"string","minLength":1,"maxLength":128}},"allOf":[{"if":{"required":["proposed_action"]},"then":{"required":["proposed_action_sha256"]}},{"if":{"required":["proposed_action_sha256"]},"then":{"required":["proposed_action"]}}],"anyOf":[{"required":["agent_id"]},{"required":["integration_mode"]},{"required":["proposed_action"]},{"required":["proposed_action_payload_sha256"]}]},"context":{"type":"object","additionalProperties":false,"properties":{"agentic_event_normalization":{"type":"object","additionalProperties":false,"required":["schema_version","profile_id","profile_version","empirically_calibrated","confidence_semantics","weights","positive_support_rule","verified_assertion_semantics","underlying_control_fact_independently_verified","telemetry_rule"],"properties":{"schema_version":{"const":"forge-agentic-event-normalization-profile/v1"},"profile_id":{"const":"conservative-enterprise-agent-event"},"profile_version":{"const":1},"empirically_calibrated":{"const":false},"confidence_semantics":{"const":"deterministic_engine_processing_coefficient_not_customer_confidence_or_outcome_probability"},"weights":{"type":"object","additionalProperties":false,"required":["telemetry_evidence_confidence","unverified_control_evidence_confidence","verified_control_evidence_confidence","verified_positive_option_support","verified_nonpositive_option_support"],"properties":{"telemetry_evidence_confidence":{"const":0.0},"unverified_control_evidence_confidence":{"const":0.0},"verified_control_evidence_confidence":{"const":1.0},"verified_positive_option_support":{"const":1.0},"verified_nonpositive_option_support":{"const":-1.0}}},"positive_support_rule":{"const":"only_a_server_verified_profile_bound_control_attestation_set_may_support_one_unique_approval_family_option_and_oppose_nonapproval_menu_options"},"verified_assertion_semantics":{"const":"cryptographic_attribution_and_profile_binding_not_independent_validation_of_the_underlying_customer_fact"},"underlying_control_fact_independently_verified":{"const":false},"telemetry_rule":{"const":"tool_plan_output_and_minimal_event_rows_are_receipt_context_only_and_never_support_a_positive_disposition"}}},"forge_client_request_binding":{"type":"object","additionalProperties":false,"required":["schema_version","operation","request_id","client_request_sha256"],"properties":{"schema_version":{"const":"forge-client-request-binding/v1"},"operation":{"enum":["POST /v1/decision-records/evaluate","POST /v1/webhooks/decision-records","POST /v1/decision-records/pre-action","POST /v1/agentic/events/evaluate"]},"request_id":{"type":"string","minLength":1,"maxLength":128},"client_request_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"}}}}},"constraints":{"type":"array","items":{"type":"string"}},"evidence":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["evidence_id","source_label","source_type","timestamp","confidence","claim_support_level","normalized_evidence_sha256"],"properties":{"evidence_id":{"type":"string","minLength":1},"source_label":{"type":"string"},"source_system":{"type":"string","minLength":1,"maxLength":128},"source_type":{"type":"string"},"timestamp":{"anyOf":[{"const":"not_provided"},{"type":"string","format":"date-time","pattern":"^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](?:\\.[0-9]+)?(?:Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9])$"}]},"confidence":{"type":"number","minimum":0,"maximum":1},"claim_support_level":{"type":"string"},"content_hash":{"type":"string","pattern":"^(?:sha256:)?[0-9a-f]{64}$"},"normalized_evidence_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"supports":{"type":"object","additionalProperties":{"type":"number","minimum":-1,"maximum":1}}}}},"data_scope":{"type":"object","additionalProperties":true},"learning_rights":{"$ref":"#/components/schemas/ForgeSignedDecisionRecordV2/$defs/learning_rights"},"requested_outputs":{"type":"array","items":{"type":"string"}},"source_payload_hash":{"type":"string","pattern":"^[0-9a-f]{64}$"},"adapter_key":{"type":"string","minLength":1}},"allOf":[{"if":{"type":"object","additionalProperties":true,"required":["agent_control_profile"],"properties":{"agent_control_profile":{"type":"object","additionalProperties":true,"required":["schema_version"],"properties":{"schema_version":{"const":"forge-agent-control-profile-binding/v2"}}}}},"then":{"type":"object","additionalProperties":true,"required":["governance_metadata"],"properties":{"governance_metadata":{"type":"object","additionalProperties":true,"required":["control_attestation_evidence"]}}}}]},"signature":{"$ref":"#/components/schemas/ForgeSignedDecisionRecordV2/$defs/legacy_signature"},"decision_binding":{"$ref":"#/components/schemas/ForgeSignedDecisionRecordV2/$defs/decision_binding"},"decision_signature":{"$ref":"#/components/schemas/ForgeSignedDecisionRecordV2/$defs/decision_signature"},"input_binding":{"$ref":"#/components/schemas/ForgeSignedDecisionRecordV2/$defs/input_binding"},"complete_record_signature":{"$ref":"#/components/schemas/ForgeSignedDecisionRecordV2/$defs/complete_record_signature"}},"allOf":[{"if":{"type":"object","additionalProperties":true,"properties":{"assessment_mode":{"const":"completed_assessment"}},"required":["assessment_mode"]},"then":{"type":"object","additionalProperties":true,"properties":{"abstained":{"const":false},"abstention_reason":{"const":""}}}},{"if":{"allOf":[{"type":"object","additionalProperties":true,"properties":{"assessment_mode":{"const":"completed_assessment"}},"required":["assessment_mode"]},{"not":{"type":"object","additionalProperties":true,"properties":{"bayesian_inference":{"type":"object","additionalProperties":true,"properties":{"inference_skipped":{"type":"boolean","const":true}},"required":["inference_skipped"]}},"required":["bayesian_inference"]}}]},"then":{"type":"object","additionalProperties":true,"properties":{"confidence":{"minimum":0.56}}}},{"if":{"type":"object","additionalProperties":true,"properties":{"assessment_mode":{"const":"completed_assessment"},"bayesian_inference":{"type":"object","additionalProperties":true,"properties":{"inference_skipped":{"type":"boolean","const":true}},"required":["inference_skipped"]}},"required":["assessment_mode","bayesian_inference"]},"then":{"type":"object","additionalProperties":true,"properties":{"confidence":{"const":0.5},"methodology":{"type":"object","additionalProperties":true,"required":["policy_gate"],"properties":{"policy_gate":{"type":"object","additionalProperties":true,"required":["policy_gate_status"],"properties":{"policy_gate_status":{"const":"fail"}}}}}}}},{"if":{"type":"object","additionalProperties":true,"properties":{"assessment_mode":{"const":"context_only"}},"required":["assessment_mode"]},"then":{"type":"object","additionalProperties":true,"properties":{"abstained":{"const":true},"abstention_reason":{"minLength":1}}}}],"$defs":{"decision_provenance":{"type":"object","additionalProperties":false,"description":"AI supply-chain version set that decided the record. Optional: records issued before forge-decision-provenance/v1 do not carry it and verify under their original replay basis.","required":["schema_version","model_version","prompt_version","tool_versions","guardrail_versions"],"properties":{"schema_version":{"const":"forge-decision-provenance/v1"},"model_version":{"type":"string","minLength":1,"maxLength":128},"prompt_version":{"type":"string","minLength":1,"maxLength":128},"tool_versions":{"type":"object","additionalProperties":false,"required":["decision_solver","uncertainty_model"],"properties":{"decision_solver":{"type":"string","minLength":1,"maxLength":128},"uncertainty_model":{"type":"string","minLength":1,"maxLength":128}}},"guardrail_versions":{"type":"object","additionalProperties":false,"required":["policy_gate","learning_rights_contract","learning_rights_guard"],"properties":{"policy_gate":{"type":"string","minLength":1,"maxLength":128},"learning_rights_contract":{"type":"string","minLength":1,"maxLength":128},"learning_rights_guard":{"type":"string","minLength":1,"maxLength":128}}}}},"governed_release_authority_evidence":{"type":"object","additionalProperties":false,"required":["schema_version","verification_status","policy","governed_request_basis_sha256","attestations"],"properties":{"schema_version":{"const":"forge-verified-governed-release-authority/v1"},"verification_status":{"const":"verified"},"governed_request_basis_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"policy":{"type":"object","additionalProperties":false,"required":["schema_version","tenant_id","policy_id","version","policy_sha256","governance_class","workflow_type","request_workflow_type","required_constraints","required_approvals","attester_grants"],"properties":{"schema_version":{"const":"forge-governed-release-authority-policy/v1"},"tenant_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$"},"policy_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$"},"version":{"type":"integer","minimum":1,"maximum":2147483647},"policy_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"governance_class":{"enum":["model_governance","synthetic_data_release"]},"workflow_type":{"type":["string","null"],"pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$"},"request_workflow_type":{"type":"string","pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$"},"required_constraints":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":128}},"required_approvals":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":128}},"attester_grants":{"type":"array","minItems":1,"maxItems":200,"items":{"type":"object","additionalProperties":false,"required":["key_id","kind","labels"],"properties":{"key_id":{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$"},"kind":{"enum":["constraint","approval"]},"labels":{"type":"array","minItems":1,"maxItems":100,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":128}}}}}}},"attestations":{"type":"array","minItems":2,"maxItems":200,"items":{"type":"object","additionalProperties":false,"required":["attestation","verification"],"properties":{"attestation":{"type":"object","additionalProperties":false,"required":["schema_version","algorithm","canonicalization","message_prefix","signed_field","subject","public_key","signature","signed_message_sha256"],"properties":{"schema_version":{"const":"forge-governed-release-attestation/v1"},"algorithm":{"const":"ed25519"},"canonicalization":{"const":"forge-tagged-json-f64be-v1"},"message_prefix":{"const":"forge-governed-release-attestation-subject/v1\n"},"signed_field":{"const":"subject"},"public_key":{"type":"string","minLength":44,"maxLength":44,"pattern":"^[A-Za-z0-9+/]{42}[AEIMQUYcgkosw048]=$"},"signature":{"type":"string","minLength":88,"maxLength":88,"pattern":"^[A-Za-z0-9+/]{85}[AQgw]==$"},"signed_message_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"subject":{"type":"object","additionalProperties":false,"required":["schema_version","domain","kind","status","label","attester_key_id","tenant_id","policy_id","policy_version","policy_sha256","governance_class","workflow_type","governed_request_basis_sha256","audience","nonce","issued_at","expires_at"],"properties":{"schema_version":{"const":"forge-governed-release-attestation-subject/v1"},"domain":{"enum":["model_governance","synthetic_data_release"]},"kind":{"enum":["constraint","approval"]},"status":{"enum":["pass","completed"]},"label":{"type":"string","minLength":1,"maxLength":128},"attester_key_id":{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$"},"tenant_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$"},"policy_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$"},"policy_version":{"type":"integer","minimum":1,"maximum":2147483647},"policy_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"governance_class":{"enum":["model_governance","synthetic_data_release"]},"workflow_type":{"type":"string","pattern":"^[a-z0-9][a-z0-9._:-]{0,127}$"},"governed_request_basis_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"audience":{"const":"forge-governed-release-authority"},"nonce":{"type":"string","pattern":"^[A-Za-z0-9._~:-]{16,128}$"},"issued_at":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?Z$"},"expires_at":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?Z$"}}}}},"verification":{"type":"object","additionalProperties":false,"required":["verified","signature_valid","key_id","kind","label","nonce","signed_message_sha256"],"properties":{"verified":{"const":true},"signature_valid":{"const":true},"key_id":{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$"},"kind":{"enum":["constraint","approval"]},"label":{"type":"string","minLength":1,"maxLength":128},"nonce":{"type":"string","pattern":"^[A-Za-z0-9._~:-]{16,128}$"},"signed_message_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"}}}}}}}},"learning_rights":{"type":"object","additionalProperties":false,"required":["schema_version","requested_learning_mode","learning_mode","retention_opt_in","retention_authorization_id","retention_decision","automatic_live_training","live_model_mutation_allowed","customer_data_training_allowed","retained_learning_allowed","retained_learning_form","promotion_requires_written_approval","default_rule"],"properties":{"schema_version":{"const":"forge-learning-rights/v1"},"requested_learning_mode":{"enum":["no_training","evaluation_metrics_only"]},"learning_mode":{"enum":["no_training","evaluation_metrics_only"]},"retention_opt_in":{"type":"boolean"},"retention_authorization_id":{"type":"string","maxLength":256},"retention_decision":{"enum":["not_authorized","explicit_opt_in"]},"automatic_live_training":{"const":false},"live_model_mutation_allowed":{"const":false},"customer_data_training_allowed":{"const":false},"retained_learning_allowed":{"type":"boolean"},"retained_learning_form":{"enum":["none","metrics_only"]},"promotion_requires_written_approval":{"type":"boolean"},"default_rule":{"const":"No customer, partner, insured, government, or research-counterparty data trains live models by default."}}},"legacy_signature":{"type":"object","additionalProperties":false,"required":["schema_version","algorithm","signed_field","signature","public_key","key_id"],"properties":{"schema_version":{"const":"forge-record-signature/v2"},"algorithm":{"const":"ed25519"},"signed_field":{"const":"replay_key"},"signature":{"type":"string","minLength":88,"maxLength":88,"pattern":"^[A-Za-z0-9+/]{85}[AQgw]==$","description":"Canonical standard Base64 for exactly 64 raw Ed25519 signature bytes. The runtime verifier performs the cryptographic signature check over the declared signed field."},"public_key":{"type":"string","minLength":44,"maxLength":44,"pattern":"^[A-Za-z0-9+/]{42}[AEIMQUYcgkosw048]=$","description":"Canonical standard Base64 for exactly 32 raw Ed25519 public-key bytes. Runtime verification derives key_id from these bytes and requires a separately pinned trust anchor."},"key_id":{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$"},"key_scope":{"type":"string"},"signed_at":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?Z$"},"verification":{"type":"string"}}},"decision_binding":{"type":"object","additionalProperties":false,"required":["schema_version","record_id","replay_key","tenant_id","workflow_type","decision_type","selected_action","assessment_mode","abstained","abstention_reason","confidence"],"properties":{"schema_version":{"const":"forge-decision-binding/v1"},"record_id":{"type":"string"},"replay_key":{"type":"string"},"tenant_id":{"type":"string"},"workflow_type":{"type":"string"},"decision_type":{"type":"string"},"selected_action":{"type":"string"},"assessment_mode":{"type":"string"},"abstained":{"type":"boolean"},"abstention_reason":{"type":"string"},"confidence":{"type":"string","pattern":"^(?:0\\.[0-9]{4}|1\\.0000)$"}}},"decision_signature":{"type":"object","additionalProperties":false,"required":["schema_version","algorithm","signed_field","signature","public_key","key_id","binding_schema_version","canonicalization","message_prefix","confidence_encoding","signed_message_sha256","protected_fields"],"properties":{"schema_version":{"const":"forge-decision-binding-signature/v2"},"algorithm":{"const":"ed25519"},"signed_field":{"const":"decision_binding"},"signature":{"type":"string","minLength":88,"maxLength":88,"pattern":"^[A-Za-z0-9+/]{85}[AQgw]==$","description":"Canonical standard Base64 for exactly 64 raw Ed25519 signature bytes. The runtime verifier performs the cryptographic signature check over the canonical decision binding."},"public_key":{"type":"string","minLength":44,"maxLength":44,"pattern":"^[A-Za-z0-9+/]{42}[AEIMQUYcgkosw048]=$","description":"Canonical standard Base64 for exactly 32 raw Ed25519 public-key bytes. Runtime verification derives key_id from these bytes and requires a separately pinned trust anchor."},"key_id":{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$"},"key_scope":{"type":"string"},"signed_at":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?Z$"},"verification":{"type":"string"},"binding_schema_version":{"const":"forge-decision-binding/v1"},"canonicalization":{"const":"utf8-json-sort-keys-compact-v1"},"message_prefix":{"const":"forge-decision-binding/v1\n"},"confidence_encoding":{"const":"fixed_decimal_4_round_half_even"},"signed_message_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"protected_fields":{"const":["record_id","replay_key","tenant_id","workflow_type","decision_type","selected_action","assessment_mode","abstained","abstention_reason","confidence"]}}},"input_binding":{"type":"object","additionalProperties":false,"required":["schema_version","hash_algorithm","source_payload_sha256","api_operation_sha256","issuance_id_sha256","canonicalization","number_encoding","object_key_order","binding_scope","excluded_paths"],"properties":{"schema_version":{"const":"forge-exact-json-sha256/v1"},"hash_algorithm":{"const":"sha256"},"source_payload_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"api_operation_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"issuance_id_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"canonicalization":{"const":"forge-tagged-json-f64be-v1"},"number_encoding":{"const":"ieee754_binary64_big_endian_hex"},"object_key_order":{"const":"utf16_code_unit_lexicographic"},"binding_scope":{"const":"semantic_engine_input_api_operation_and_issuance"},"excluded_paths":{"type":"array","maxItems":0}}},"complete_record_signature":{"type":"object","additionalProperties":false,"required":["schema_version","algorithm","signed_field","signature","public_key","key_id","key_scope","signed_at","verification","signed_record_schema_version","canonicalization","message_prefix","number_encoding","object_key_order","excluded_paths","signed_message_sha256"],"properties":{"schema_version":{"const":"forge-complete-decision-record-signature/v3"},"algorithm":{"const":"ed25519"},"signed_field":{"const":"complete_decision_record"},"signature":{"type":"string","minLength":88,"maxLength":88,"pattern":"^[A-Za-z0-9+/]{85}[AQgw]==$","description":"Canonical standard Base64 for exactly 64 raw Ed25519 signature bytes. The runtime verifier performs the cryptographic signature check over the complete canonical returned record."},"public_key":{"type":"string","minLength":44,"maxLength":44,"pattern":"^[A-Za-z0-9+/]{42}[AEIMQUYcgkosw048]=$","description":"Canonical standard Base64 for exactly 32 raw Ed25519 public-key bytes. Runtime verification derives key_id from these bytes and requires a separately pinned trust anchor."},"key_id":{"type":"string","pattern":"^ed25519:[0-9a-f]{64}$"},"key_scope":{"enum":["configured","ephemeral_session"]},"signed_at":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\\.[0-9]{1,6})?Z$"},"verification":{"type":"string","minLength":1},"signed_record_schema_version":{"const":"forge-decision-record/v2"},"canonicalization":{"const":"forge-tagged-json-f64be-v1"},"message_prefix":{"const":"forge-complete-decision-record/v2\n"},"number_encoding":{"const":"ieee754_binary64_big_endian_hex"},"object_key_order":{"const":"utf16_code_unit_lexicographic"},"excluded_paths":{"const":["complete_record_signature.signature","complete_record_signature.signed_message_sha256"]},"signed_message_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"}}}}},"ForgeEvaluateDecisionRequest":{"properties":{"request_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1,"pattern":"^[\\x21-\\x7E]+$"},{"type":"null"}],"title":"Request Id","description":"Caller nonce for request/response binding and replay separation. The current SDK supplies one automatically."},"client_request_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Client Request Sha256","description":"Optional caller-computed forge-client-request-binding/v1 digest. When present, request_id is required and the validated binding is echoed inside signed normalized_request.context."},"proposed_action":{"anyOf":[{"type":"string","maxLength":512,"minLength":1,"pattern":"^[\\x21-\\x7E]+$"},{"type":"null"}],"title":"Proposed Action","description":"Exact customer-side action identifier for a protected pre-action request. When control_attestations are used, every signed subject must bind this value and the separate payload commitment."},"proposed_action_payload_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Proposed Action Payload Sha256","description":"Privacy-preserving forge-action-payload/v1 commitment to the exact customer-side payload that may execute. Required by the pre-action route; the payload itself stays in the customer boundary."},"control_profile_expectation":{"anyOf":[{"$ref":"#/components/schemas/ControlProfileExpectationRequest"},{"type":"null"}],"description":"Pre-action and agentic-event routes only: select the server-owned active profile by required profile_id and optionally pin its version or digest. It is checked before evaluation and is not profile data."},"tenant_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Tenant Id","description":"Exact tenant identifier bound into current SDK requests. It must match the authenticated organization."},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id","description":"Caller-asserted tenant identifier. Must match the authenticated organization scope. Cross-tenant support operations are never expressed through a decision payload."},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry","description":"Optional explicit industry/adapter routing hint. Call /v1/decision-records/describe for the adapters enabled on this host; unregistered values are rejected. If absent, the classifier picks the highest-scoring registered adapter by keyword."},"workflow_type":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Workflow Type","description":"Optional explicit workflow hint (e.g. pre_bind_technical_diligence, cti_escalation_review)."},"decision_type":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Decision Type","description":"Optional explicit decision-type hint."},"governance_class":{"anyOf":[{"type":"string","enum":["standard_decision","high_consequence_agent_action","model_governance","synthetic_data_release"]},{"type":"null"}],"title":"Governance Class","description":"Closed signed control class. Ordinary v1 requests may omit it and are recorded as standard_decision. Recognized model-governance and synthetic-data release shapes must declare the matching class."},"intended_use":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Intended Use","description":"Declared intended use returned in signed governance_metadata. This is descriptive metadata, not a policy-control result."},"workflow_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Workflow Id","description":"Optional customer workflow/run identifier."},"system_type":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"System Type","description":"Optional source-system type for agentic normalization."},"system_version":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"System Version","description":"Optional customer source-system or model version. Returned in signed governance_metadata and used for consented calibration profiles."},"rubric_version":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Rubric Version","description":"Optional customer policy/rubric version. Returned in signed governance_metadata and used for consented calibration profiles."},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject","description":"What the decision is about (asset, target, account, etc)."},"decision_question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decision Question","description":"The operator-facing question. The orchestrator falls back to a subject-derived question if omitted."},"evidence":{"anyOf":[{"$ref":"#/components/schemas/EvidenceItemRequest"},{"items":{"$ref":"#/components/schemas/EvidenceItemRequest"},"type":"array","maxItems":100,"x-forge-independent-evidence":"Runtime rejects duplicate evidence_id values after casefold, deduplicates repeated normalized content_hash values, and correlates observations that share a normalized declared source_system, effective support polarity, and capped trust before inference. Correlation returns a signed safe abstention. Distinct source_system values remain customer-declared unless a separate upstream attestation is verified."},{"type":"null"}],"title":"Evidence","description":"At most 100 strict evidence objects, or one evidence object for single-item compatibility. Unknown fields are rejected; direction and weight_hint are not controls. Use option_support (or the explicit supports compatibility alias)."},"decision_options":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100,"minItems":2},{"type":"null"}],"uniqueItems":true,"title":"Decision Options","description":"Two to 100 decision-option labels. The standalone enterprise evaluate route requires this field explicitly; a separately governed legacy host may still derive compatibility defaults. Labels must remain unique after calibration outcome canonicalization.","x-forge-calibration-outcome-uniqueness":"canonical-outcome-key","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"abstention_action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abstention Action","description":"Exact recognized non-approval decision_options member used for uncertainty or incomplete evaluation. The standalone enterprise evaluate route requires it explicitly; legacy compatibility hosts may derive a safe in-menu fallback. A reported hard failure or human-review requirement may select a stronger in-menu block or escalation disposition."},"context":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":128},{"type":"null"}],"additionalProperties":true,"title":"Context","description":"Bounded workflow-specific metadata. The exact submission is source-hash bound but arbitrary context is not re-disclosed in the signed request view. Use the named version, intended-use, provenance, and human-boundary fields for reviewer-visible metadata."},"extensions":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":64},{"type":"null"}],"additionalProperties":true,"title":"Extensions","description":"Bounded forward-compatibility metadata. Extension values are request-bound but never evaluated as safeguards; executable controls must use the named top-level control fields."},"constraints":{"anyOf":[{"items":{"type":"string","maxLength":512,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Constraints","description":"Human-readable decision context only. Use hard_constraints plus matching constraint_results for executable policy gates.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"hard_constraints":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Hard Constraints","description":"Names of controls that must each have exactly one matching constraint_results entry before the policy gate may pass.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"constraint_results":{"anyOf":[{"items":{"$ref":"#/components/schemas/PolicyConstraintResultRequest"},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Constraint Results","description":"Explicit results for policy constraints. Every named constraint must have exactly one recognized result before the gate may report pass.","x-forge-normalization-policy":"reject-noncanonical-input","x-forge-unique-by":"constraint:NFKC-casefold"},"control_attestations":{"anyOf":[{"items":{"$ref":"#/components/schemas/ControlAttestationRequest"},"type":"array","maxItems":100},{"type":"null"}],"title":"Control Attestations","description":"Customer-authority Ed25519 attestations for positive constraint and approval claims. Authenticity requires a public-key-derived key ID pinned in the active immutable control profile."},"governed_release_policy_expectation":{"anyOf":[{"$ref":"#/components/schemas/GovernedReleasePolicyExpectationRequest"},{"type":"null"}],"description":"Exact immutable tenant governed-release policy expected for this model or synthetic-data decision. It never grants Forge execution authority."},"governed_request_basis_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Governed Request Basis Sha256","description":"Canonical forge-tagged-json digest of this complete request excluding only this field and governed_release_attestations."},"governed_release_attestations":{"anyOf":[{"items":{"$ref":"#/components/schemas/GovernedReleaseAttestationRequest"},"type":"array","maxItems":200},{"type":"null"}],"title":"Governed Release Attestations","description":"Customer-authority Ed25519 proofs for every policy-required positive constraint and completed approval on this exact governed request."},"required_approvals":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Required Approvals","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"completed_approvals":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Completed Approvals","description":"Positive evidence of approvals actually completed. Omitting a required approval here makes it missing; an empty missing list is not proof.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"missing_required_approval":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Missing Required Approval","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"human_review_boundary":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":64},{"type":"null"}],"title":"Human Review Boundary","description":"Bounded customer-defined human-review boundary returned in signed governance_metadata. Use required_approvals and completed_approvals for executable approval controls."},"data_provenance":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":64},{"type":"null"}],"title":"Data Provenance","description":"Bounded source/provenance metadata supplied by the customer and returned in signed governance_metadata; not independently verified."},"data_scope":{"anyOf":[{"$ref":"#/components/schemas/DataScopeRequest"},{"type":"null"}],"description":"Strict customer-declared data-handling boundary. Unknown or misspelled fields are rejected rather than signed and ignored."},"learning_rights":{"anyOf":[{"$ref":"#/components/schemas/LearningRightsRequest"},{"type":"null"}],"description":"Explicit customer learning and retention choice. Retention is deny-by-default and derived permission flags are not accepted."},"requested_outputs":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":8},{"type":"null"}],"items":{"enum":["agent_action_readiness","alternatives_considered","engine_path_metadata","evidence_contributions","governed_release_gate","replay_key","signed_decision_record","uncertainty_analysis"]},"uniqueItems":true,"title":"Requested Outputs","description":"Closed list of output labels that map to content always emitted and covered by the complete-record signature.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"record_delivery_webhook_url":{"anyOf":[{"type":"string","maxLength":8192,"pattern":"^https://"},{"type":"null"}],"title":"Record Delivery Webhook Url","description":"Optional HTTPS destination for the signed record. The destination is re-resolved and SSRF-checked before every pinned connection."},"record_delivery_webhook_key_id":{"anyOf":[{"type":"string","pattern":"^whk_[0-9a-f]{40}$"},{"type":"null"}],"title":"Record Delivery Webhook Key Id","description":"Tenant webhook key to use for this receiver. Required once a tenant has more than one active/rotation key."},"record_s3_presigned_put_url":{"anyOf":[{"type":"string","maxLength":8192,"pattern":"^https://"},{"type":"null"}],"title":"Record S3 Presigned Put Url","description":"Optional HTTPS presigned PUT URL for the customer's object store."},"record_export_destination":{"anyOf":[{"type":"string","enum":["partner_vault_http_response","signed_webhook","s3_object","snowflake_stage","splunk_hec","siem_json","worm_archive"]},{"type":"null"}],"title":"Record Export Destination"},"include_record_export_envelope":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Record Export Envelope"},"minimum_evidence_count":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":1.0},{"type":"null"}],"title":"Minimum Evidence Count","description":"Optional minimum submitted evidence count required for a completed assessment. It cannot exceed the 100-item engine cap."},"partner_declared_policy_action":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Partner Declared Policy Action","description":"Action asserted by a customer-owned policy engine. It remains a partner assertion and must exactly match decision_options."},"policy_gate_status":{"anyOf":[{"type":"string","enum":["pass","fail","not_evaluated"]},{"type":"null"}],"title":"Policy Gate Status","description":"Optional customer-declared gate status. A declared pass cannot override a failed or incomplete Forge control evaluation."}},"additionalProperties":false,"type":"object","title":"DecisionRecordEvaluateRequest","description":"Public-facing input to the industry-agnostic decision engine.\n\nThe top level is a closed contract. Domain-specific metadata belongs in\n``context``; policy controls must use the explicitly named control fields.\nThis prevents a misspelled control (for example ``hard_constaints``) from\nbeing accepted, signed, and then ignored by the policy gate.\n\nSee ``docs/product_integration_guide.md`` for curl-ready examples. The\nauthoritative enabled-adapter list is returned by\n``/v1/decision-records/describe`` for the deployed host.","examples":[{"abstention_action":"request_more_data","client_id":"insurance-enterprise-synthetic","decision_options":["bind","exclude","decline","request_more_data"],"decision_question":"Should the MGA bind, exclude, decline, or request more data?","evidence":[{"claim_support_level":"partner_supplied","confidence":0.84,"evidence_id":"ev-001","summary":"Synthetic inspection shows remediated electrical findings.","title":"Loss-control inspection"}],"industry":"insurance","subject":"Synthetic industrial property risk — illustrative pre-bind","workflow_type":"pre_bind_technical_diligence"},{"abstention_action":"request_more_data","client_id":"cyber-enterprise-synthetic","context":{"entity":"synthetic-vendor.example"},"decision_options":["escalate","monitor","enrich","notify","request_more_data"],"decision_question":"Escalate, monitor, enrich, notify, or request more data?","evidence":[{"claim_support_level":"partner_supplied","confidence":0.77,"evidence_id":"cti-001","summary":"Synthetic forum mention within last 30 days.","title":"Dark web credential mention"}],"industry":"cyber","subject":"Synthetic credential exposure — illustrative vendor","workflow_type":"cti_escalation_review"}],"x-forge-extra-field-policy":"strict top-level contract; domain metadata belongs in context","x-forge-operation-specific-contract":true,"required":["decision_options","abstention_action"]},"ForgePreActionDecisionRequest":{"properties":{"request_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1,"pattern":"^[\\x21-\\x7E]+$"},{"type":"null"}],"title":"Request Id","description":"Caller nonce for request/response binding and replay separation. The current SDK supplies one automatically."},"client_request_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Client Request Sha256","description":"Optional caller-computed forge-client-request-binding/v1 digest. When present, request_id is required and the validated binding is echoed inside signed normalized_request.context."},"proposed_action":{"anyOf":[{"type":"string","maxLength":512,"minLength":1,"pattern":"^[\\x21-\\x7E]+$"},{"type":"null"}],"title":"Proposed Action","description":"Exact customer-side action identifier for a protected pre-action request. When control_attestations are used, every signed subject must bind this value and the separate payload commitment."},"proposed_action_payload_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Proposed Action Payload Sha256","description":"Privacy-preserving forge-action-payload/v1 commitment to the exact customer-side payload that may execute. Required by the pre-action route; the payload itself stays in the customer boundary."},"control_profile_expectation":{"anyOf":[{"$ref":"#/components/schemas/ControlProfileExpectationRequest"},{"type":"null"}],"description":"Pre-action and agentic-event routes only: select the server-owned active profile by required profile_id and optionally pin its version or digest. It is checked before evaluation and is not profile data."},"tenant_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Tenant Id","description":"Exact tenant identifier bound into current SDK requests. It must match the authenticated organization."},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id","description":"Caller-asserted tenant identifier. Must match the authenticated organization scope. Cross-tenant support operations are never expressed through a decision payload."},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry","description":"Optional explicit industry/adapter routing hint. Call /v1/decision-records/describe for the adapters enabled on this host; unregistered values are rejected. If absent, the classifier picks the highest-scoring registered adapter by keyword."},"workflow_type":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Workflow Type","description":"Optional explicit workflow hint (e.g. pre_bind_technical_diligence, cti_escalation_review)."},"decision_type":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Decision Type","description":"Optional explicit decision-type hint."},"governance_class":{"anyOf":[{"type":"string","enum":["standard_decision","high_consequence_agent_action","model_governance","synthetic_data_release"]},{"type":"null"}],"title":"Governance Class","description":"Closed signed control class. Ordinary v1 requests may omit it and are recorded as standard_decision. Recognized model-governance and synthetic-data release shapes must declare the matching class."},"intended_use":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Intended Use","description":"Declared intended use returned in signed governance_metadata. This is descriptive metadata, not a policy-control result."},"workflow_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Workflow Id","description":"Optional customer workflow/run identifier."},"system_type":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"System Type","description":"Optional source-system type for agentic normalization."},"system_version":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"System Version","description":"Optional customer source-system or model version. Returned in signed governance_metadata and used for consented calibration profiles."},"rubric_version":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Rubric Version","description":"Optional customer policy/rubric version. Returned in signed governance_metadata and used for consented calibration profiles."},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject","description":"What the decision is about (asset, target, account, etc)."},"decision_question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decision Question","description":"The operator-facing question. The orchestrator falls back to a subject-derived question if omitted."},"evidence":{"anyOf":[{"$ref":"#/components/schemas/EvidenceItemRequest"},{"items":{"$ref":"#/components/schemas/EvidenceItemRequest"},"type":"array","maxItems":100,"x-forge-independent-evidence":"Runtime rejects duplicate evidence_id values after casefold, deduplicates repeated normalized content_hash values, and correlates observations that share a normalized declared source_system, effective support polarity, and capped trust before inference. Correlation returns a signed safe abstention. Distinct source_system values remain customer-declared unless a separate upstream attestation is verified."},{"type":"null"}],"title":"Evidence","description":"At most 100 strict evidence objects, or one evidence object for single-item compatibility. Unknown fields are rejected; direction and weight_hint are not controls. Use option_support (or the explicit supports compatibility alias)."},"decision_options":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100,"minItems":2},{"type":"null"}],"uniqueItems":true,"title":"Decision Options","description":"Two to 100 decision-option labels. The standalone enterprise evaluate route requires this field explicitly; a separately governed legacy host may still derive compatibility defaults. Labels must remain unique after calibration outcome canonicalization.","x-forge-calibration-outcome-uniqueness":"canonical-outcome-key","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"abstention_action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abstention Action","description":"Exact recognized non-approval decision_options member used for uncertainty or incomplete evaluation. The standalone enterprise evaluate route requires it explicitly; legacy compatibility hosts may derive a safe in-menu fallback. A reported hard failure or human-review requirement may select a stronger in-menu block or escalation disposition."},"context":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":128},{"type":"null"}],"additionalProperties":true,"title":"Context","description":"Bounded workflow-specific metadata. The exact submission is source-hash bound but arbitrary context is not re-disclosed in the signed request view. Use the named version, intended-use, provenance, and human-boundary fields for reviewer-visible metadata."},"extensions":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":64},{"type":"null"}],"additionalProperties":true,"title":"Extensions","description":"Bounded forward-compatibility metadata. Extension values are request-bound but never evaluated as safeguards; executable controls must use the named top-level control fields."},"constraints":{"anyOf":[{"items":{"type":"string","maxLength":512,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Constraints","description":"Human-readable decision context only. Use hard_constraints plus matching constraint_results for executable policy gates.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"hard_constraints":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Hard Constraints","description":"Names of controls that must each have exactly one matching constraint_results entry before the policy gate may pass.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"constraint_results":{"anyOf":[{"items":{"$ref":"#/components/schemas/PolicyConstraintResultRequest"},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Constraint Results","description":"Explicit results for policy constraints. Every named constraint must have exactly one recognized result before the gate may report pass.","x-forge-normalization-policy":"reject-noncanonical-input","x-forge-unique-by":"constraint:NFKC-casefold"},"control_attestations":{"anyOf":[{"items":{"$ref":"#/components/schemas/ControlAttestationRequest"},"type":"array","maxItems":100},{"type":"null"}],"title":"Control Attestations","description":"Customer-authority Ed25519 attestations for positive constraint and approval claims. Authenticity requires a public-key-derived key ID pinned in the active immutable control profile."},"governed_release_policy_expectation":{"anyOf":[{"$ref":"#/components/schemas/GovernedReleasePolicyExpectationRequest"},{"type":"null"}],"description":"Exact immutable tenant governed-release policy expected for this model or synthetic-data decision. It never grants Forge execution authority."},"governed_request_basis_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Governed Request Basis Sha256","description":"Canonical forge-tagged-json digest of this complete request excluding only this field and governed_release_attestations."},"governed_release_attestations":{"anyOf":[{"items":{"$ref":"#/components/schemas/GovernedReleaseAttestationRequest"},"type":"array","maxItems":200},{"type":"null"}],"title":"Governed Release Attestations","description":"Customer-authority Ed25519 proofs for every policy-required positive constraint and completed approval on this exact governed request."},"required_approvals":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Required Approvals","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"completed_approvals":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Completed Approvals","description":"Positive evidence of approvals actually completed. Omitting a required approval here makes it missing; an empty missing list is not proof.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"missing_required_approval":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Missing Required Approval","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"human_review_boundary":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":64},{"type":"null"}],"title":"Human Review Boundary","description":"Bounded customer-defined human-review boundary returned in signed governance_metadata. Use required_approvals and completed_approvals for executable approval controls."},"data_provenance":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":64},{"type":"null"}],"title":"Data Provenance","description":"Bounded source/provenance metadata supplied by the customer and returned in signed governance_metadata; not independently verified."},"data_scope":{"anyOf":[{"$ref":"#/components/schemas/DataScopeRequest"},{"type":"null"}],"description":"Strict customer-declared data-handling boundary. Unknown or misspelled fields are rejected rather than signed and ignored."},"learning_rights":{"anyOf":[{"$ref":"#/components/schemas/LearningRightsRequest"},{"type":"null"}],"description":"Explicit customer learning and retention choice. Retention is deny-by-default and derived permission flags are not accepted."},"requested_outputs":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":8},{"type":"null"}],"items":{"enum":["agent_action_readiness","alternatives_considered","engine_path_metadata","evidence_contributions","governed_release_gate","replay_key","signed_decision_record","uncertainty_analysis"]},"uniqueItems":true,"title":"Requested Outputs","description":"Closed list of output labels that map to content always emitted and covered by the complete-record signature.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"record_delivery_webhook_url":{"anyOf":[{"type":"string","maxLength":8192,"pattern":"^https://"},{"type":"null"}],"title":"Record Delivery Webhook Url","description":"Optional HTTPS destination for the signed record. The destination is re-resolved and SSRF-checked before every pinned connection."},"record_delivery_webhook_key_id":{"anyOf":[{"type":"string","pattern":"^whk_[0-9a-f]{40}$"},{"type":"null"}],"title":"Record Delivery Webhook Key Id","description":"Tenant webhook key to use for this receiver. Required once a tenant has more than one active/rotation key."},"record_s3_presigned_put_url":{"anyOf":[{"type":"string","maxLength":8192,"pattern":"^https://"},{"type":"null"}],"title":"Record S3 Presigned Put Url","description":"Optional HTTPS presigned PUT URL for the customer's object store."},"record_export_destination":{"anyOf":[{"type":"string","enum":["partner_vault_http_response","signed_webhook","s3_object","snowflake_stage","splunk_hec","siem_json","worm_archive"]},{"type":"null"}],"title":"Record Export Destination"},"include_record_export_envelope":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Record Export Envelope"},"minimum_evidence_count":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":1.0},{"type":"null"}],"title":"Minimum Evidence Count","description":"Optional minimum submitted evidence count required for a completed assessment. It cannot exceed the 100-item engine cap."},"partner_declared_policy_action":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Partner Declared Policy Action","description":"Action asserted by a customer-owned policy engine. It remains a partner assertion and must exactly match decision_options."},"policy_gate_status":{"anyOf":[{"type":"string","enum":["pass","fail","not_evaluated"]},{"type":"null"}],"title":"Policy Gate Status","description":"Optional customer-declared gate status. A declared pass cannot override a failed or incomplete Forge control evaluation."}},"additionalProperties":false,"type":"object","title":"DecisionRecordEvaluateRequest","description":"Public-facing input to the industry-agnostic decision engine.\n\nThe top level is a closed contract. Domain-specific metadata belongs in\n``context``; policy controls must use the explicitly named control fields.\nThis prevents a misspelled control (for example ``hard_constaints``) from\nbeing accepted, signed, and then ignored by the policy gate.\n\nSee ``docs/product_integration_guide.md`` for curl-ready examples. The\nauthoritative enabled-adapter list is returned by\n``/v1/decision-records/describe`` for the deployed host.","examples":[{"abstention_action":"request_more_data","client_id":"insurance-enterprise-synthetic","decision_options":["bind","exclude","decline","request_more_data"],"decision_question":"Should the MGA bind, exclude, decline, or request more data?","evidence":[{"claim_support_level":"partner_supplied","confidence":0.84,"evidence_id":"ev-001","summary":"Synthetic inspection shows remediated electrical findings.","title":"Loss-control inspection"}],"industry":"insurance","subject":"Synthetic industrial property risk — illustrative pre-bind","workflow_type":"pre_bind_technical_diligence"},{"abstention_action":"request_more_data","client_id":"cyber-enterprise-synthetic","context":{"entity":"synthetic-vendor.example"},"decision_options":["escalate","monitor","enrich","notify","request_more_data"],"decision_question":"Escalate, monitor, enrich, notify, or request more data?","evidence":[{"claim_support_level":"partner_supplied","confidence":0.77,"evidence_id":"cti-001","summary":"Synthetic forum mention within last 30 days.","title":"Dark web credential mention"}],"industry":"cyber","subject":"Synthetic credential exposure — illustrative vendor","workflow_type":"cti_escalation_review"}],"x-forge-extra-field-policy":"strict top-level contract; domain metadata belongs in context","x-forge-operation-specific-contract":true,"required":["decision_options","abstention_action","request_id","client_request_sha256"]},"ForgeDecisionWebhookRequest":{"properties":{"request_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1,"pattern":"^[\\x21-\\x7E]+$"},{"type":"null"}],"title":"Request Id","description":"Caller nonce for request/response binding and replay separation. The current SDK supplies one automatically."},"client_request_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Client Request Sha256","description":"Optional caller-computed forge-client-request-binding/v1 digest. When present, request_id is required and the validated binding is echoed inside signed normalized_request.context."},"proposed_action":{"anyOf":[{"type":"string","maxLength":512,"minLength":1,"pattern":"^[\\x21-\\x7E]+$"},{"type":"null"}],"title":"Proposed Action","description":"Exact customer-side action identifier for a protected pre-action request. When control_attestations are used, every signed subject must bind this value and the separate payload commitment."},"proposed_action_payload_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Proposed Action Payload Sha256","description":"Privacy-preserving forge-action-payload/v1 commitment to the exact customer-side payload that may execute. Required by the pre-action route; the payload itself stays in the customer boundary."},"control_profile_expectation":{"anyOf":[{"$ref":"#/components/schemas/ControlProfileExpectationRequest"},{"type":"null"}],"description":"Pre-action and agentic-event routes only: select the server-owned active profile by required profile_id and optionally pin its version or digest. It is checked before evaluation and is not profile data."},"tenant_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}],"title":"Tenant Id","description":"Exact tenant identifier bound into current SDK requests. It must match the authenticated organization."},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id","description":"Caller-asserted tenant identifier. Must match the authenticated organization scope. Cross-tenant support operations are never expressed through a decision payload."},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry","description":"Optional explicit industry/adapter routing hint. Call /v1/decision-records/describe for the adapters enabled on this host; unregistered values are rejected. If absent, the classifier picks the highest-scoring registered adapter by keyword."},"workflow_type":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Workflow Type","description":"Optional explicit workflow hint (e.g. pre_bind_technical_diligence, cti_escalation_review)."},"decision_type":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Decision Type","description":"Optional explicit decision-type hint."},"governance_class":{"anyOf":[{"type":"string","enum":["standard_decision","high_consequence_agent_action","model_governance","synthetic_data_release"]},{"type":"null"}],"title":"Governance Class","description":"Closed signed control class. Ordinary v1 requests may omit it and are recorded as standard_decision. Recognized model-governance and synthetic-data release shapes must declare the matching class."},"intended_use":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Intended Use","description":"Declared intended use returned in signed governance_metadata. This is descriptive metadata, not a policy-control result."},"workflow_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Workflow Id","description":"Optional customer workflow/run identifier."},"system_type":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"System Type","description":"Optional source-system type for agentic normalization."},"system_version":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"System Version","description":"Optional customer source-system or model version. Returned in signed governance_metadata and used for consented calibration profiles."},"rubric_version":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Rubric Version","description":"Optional customer policy/rubric version. Returned in signed governance_metadata and used for consented calibration profiles."},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject","description":"What the decision is about (asset, target, account, etc)."},"decision_question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Decision Question","description":"The operator-facing question. The orchestrator falls back to a subject-derived question if omitted."},"evidence":{"anyOf":[{"$ref":"#/components/schemas/EvidenceItemRequest"},{"items":{"$ref":"#/components/schemas/EvidenceItemRequest"},"type":"array","maxItems":100,"x-forge-independent-evidence":"Runtime rejects duplicate evidence_id values after casefold, deduplicates repeated normalized content_hash values, and correlates observations that share a normalized declared source_system, effective support polarity, and capped trust before inference. Correlation returns a signed safe abstention. Distinct source_system values remain customer-declared unless a separate upstream attestation is verified."},{"type":"null"}],"title":"Evidence","description":"At most 100 strict evidence objects, or one evidence object for single-item compatibility. Unknown fields are rejected; direction and weight_hint are not controls. Use option_support (or the explicit supports compatibility alias)."},"decision_options":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100,"minItems":2},{"type":"null"}],"uniqueItems":true,"title":"Decision Options","description":"Two to 100 decision-option labels. The standalone enterprise evaluate route requires this field explicitly; a separately governed legacy host may still derive compatibility defaults. Labels must remain unique after calibration outcome canonicalization.","x-forge-calibration-outcome-uniqueness":"canonical-outcome-key","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"abstention_action":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abstention Action","description":"Exact recognized non-approval decision_options member used for uncertainty or incomplete evaluation. The standalone enterprise evaluate route requires it explicitly; legacy compatibility hosts may derive a safe in-menu fallback. A reported hard failure or human-review requirement may select a stronger in-menu block or escalation disposition."},"context":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":128},{"type":"null"}],"additionalProperties":true,"title":"Context","description":"Bounded workflow-specific metadata. The exact submission is source-hash bound but arbitrary context is not re-disclosed in the signed request view. Use the named version, intended-use, provenance, and human-boundary fields for reviewer-visible metadata."},"extensions":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":64},{"type":"null"}],"additionalProperties":true,"title":"Extensions","description":"Bounded forward-compatibility metadata. Extension values are request-bound but never evaluated as safeguards; executable controls must use the named top-level control fields."},"constraints":{"anyOf":[{"items":{"type":"string","maxLength":512,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Constraints","description":"Human-readable decision context only. Use hard_constraints plus matching constraint_results for executable policy gates.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"hard_constraints":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Hard Constraints","description":"Names of controls that must each have exactly one matching constraint_results entry before the policy gate may pass.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"constraint_results":{"anyOf":[{"items":{"$ref":"#/components/schemas/PolicyConstraintResultRequest"},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Constraint Results","description":"Explicit results for policy constraints. Every named constraint must have exactly one recognized result before the gate may report pass.","x-forge-normalization-policy":"reject-noncanonical-input","x-forge-unique-by":"constraint:NFKC-casefold"},"control_attestations":{"anyOf":[{"items":{"$ref":"#/components/schemas/ControlAttestationRequest"},"type":"array","maxItems":100},{"type":"null"}],"title":"Control Attestations","description":"Customer-authority Ed25519 attestations for positive constraint and approval claims. Authenticity requires a public-key-derived key ID pinned in the active immutable control profile."},"governed_release_policy_expectation":{"anyOf":[{"$ref":"#/components/schemas/GovernedReleasePolicyExpectationRequest"},{"type":"null"}],"description":"Exact immutable tenant governed-release policy expected for this model or synthetic-data decision. It never grants Forge execution authority."},"governed_request_basis_sha256":{"anyOf":[{"type":"string","pattern":"^[0-9a-f]{64}$"},{"type":"null"}],"title":"Governed Request Basis Sha256","description":"Canonical forge-tagged-json digest of this complete request excluding only this field and governed_release_attestations."},"governed_release_attestations":{"anyOf":[{"items":{"$ref":"#/components/schemas/GovernedReleaseAttestationRequest"},"type":"array","maxItems":200},{"type":"null"}],"title":"Governed Release Attestations","description":"Customer-authority Ed25519 proofs for every policy-required positive constraint and completed approval on this exact governed request."},"required_approvals":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Required Approvals","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"completed_approvals":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Completed Approvals","description":"Positive evidence of approvals actually completed. Omitting a required approval here makes it missing; an empty missing list is not proof.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"missing_required_approval":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100},{"type":"null"}],"uniqueItems":true,"title":"Missing Required Approval","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"human_review_boundary":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":64},{"type":"null"}],"title":"Human Review Boundary","description":"Bounded customer-defined human-review boundary returned in signed governance_metadata. Use required_approvals and completed_approvals for executable approval controls."},"data_provenance":{"anyOf":[{"additionalProperties":true,"type":"object","maxProperties":64},{"type":"null"}],"title":"Data Provenance","description":"Bounded source/provenance metadata supplied by the customer and returned in signed governance_metadata; not independently verified."},"data_scope":{"anyOf":[{"$ref":"#/components/schemas/DataScopeRequest"},{"type":"null"}],"description":"Strict customer-declared data-handling boundary. Unknown or misspelled fields are rejected rather than signed and ignored."},"learning_rights":{"anyOf":[{"$ref":"#/components/schemas/LearningRightsRequest"},{"type":"null"}],"description":"Explicit customer learning and retention choice. Retention is deny-by-default and derived permission flags are not accepted."},"requested_outputs":{"anyOf":[{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":8},{"type":"null"}],"items":{"enum":["agent_action_readiness","alternatives_considered","engine_path_metadata","evidence_contributions","governed_release_gate","replay_key","signed_decision_record","uncertainty_analysis"]},"uniqueItems":true,"title":"Requested Outputs","description":"Closed list of output labels that map to content always emitted and covered by the complete-record signature.","x-forge-canonical-uniqueness":"NFKC-casefold","x-forge-normalization-policy":"reject-noncanonical-input"},"minimum_evidence_count":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":1.0},{"type":"null"}],"title":"Minimum Evidence Count","description":"Optional minimum submitted evidence count required for a completed assessment. It cannot exceed the 100-item engine cap."},"dispatch_escalation":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Dispatch Escalation","description":"Webhook route only: dispatch a required escalation when true."},"escalation_webhook_url":{"anyOf":[{"type":"string","maxLength":8192},{"type":"null"}],"title":"Escalation Webhook Url","description":"Webhook route only: HTTPS escalation destination. A loopback HTTP target is accepted only under the explicit local-development override."},"escalation_webhook_key_id":{"anyOf":[{"type":"string","pattern":"^whk_[0-9a-f]{40}$"},{"type":"null"}],"title":"Escalation Webhook Key Id","description":"Tenant webhook key for the escalation receiver."},"partner_declared_policy_action":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Partner Declared Policy Action","description":"Action asserted by a customer-owned policy engine. It remains a partner assertion and must exactly match decision_options."},"policy_gate_status":{"anyOf":[{"type":"string","enum":["pass","fail","not_evaluated"]},{"type":"null"}],"title":"Policy Gate Status","description":"Optional customer-declared gate status. A declared pass cannot override a failed or incomplete Forge control evaluation."}},"additionalProperties":false,"type":"object","title":"DecisionRecordEvaluateRequest","description":"Public-facing input to the industry-agnostic decision engine.\n\nThe top level is a closed contract. Domain-specific metadata belongs in\n``context``; policy controls must use the explicitly named control fields.\nThis prevents a misspelled control (for example ``hard_constaints``) from\nbeing accepted, signed, and then ignored by the policy gate.\n\nSee ``docs/product_integration_guide.md`` for curl-ready examples. The\nauthoritative enabled-adapter list is returned by\n``/v1/decision-records/describe`` for the deployed host.","examples":[{"abstention_action":"request_more_data","client_id":"insurance-enterprise-synthetic","decision_options":["bind","exclude","decline","request_more_data"],"decision_question":"Should the MGA bind, exclude, decline, or request more data?","evidence":[{"claim_support_level":"partner_supplied","confidence":0.84,"evidence_id":"ev-001","summary":"Synthetic inspection shows remediated electrical findings.","title":"Loss-control inspection"}],"industry":"insurance","subject":"Synthetic industrial property risk — illustrative pre-bind","workflow_type":"pre_bind_technical_diligence"},{"abstention_action":"request_more_data","client_id":"cyber-enterprise-synthetic","context":{"entity":"synthetic-vendor.example"},"decision_options":["escalate","monitor","enrich","notify","request_more_data"],"decision_question":"Escalate, monitor, enrich, notify, or request more data?","evidence":[{"claim_support_level":"partner_supplied","confidence":0.77,"evidence_id":"cti-001","summary":"Synthetic forum mention within last 30 days.","title":"Dark web credential mention"}],"industry":"cyber","subject":"Synthetic credential exposure — illustrative vendor","workflow_type":"cti_escalation_review"}],"x-forge-extra-field-policy":"strict top-level contract; domain metadata belongs in context","x-forge-operation-specific-contract":true,"required":["decision_options","abstention_action","request_id","client_request_sha256"]}},"securitySchemes":{"ForgeBearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT bearer token issued by POST /oauth/token or an approved enterprise identity flow."},"ForgeApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"Scoped server-to-server partner API key. decision:write covers only decision evaluation, pre-action, agentic-event, and decision-webhook submission plus ordered v1 agent-event append. Calibration, delivery readback, agent-run audit export, and tenant observability require separate explicit customer scopes. Deployment-wide readiness, SLO, host-surface, and Prometheus endpoints require a separate internal, purpose-bound deployment-owner credential. Do not combine this credential with an Authorization bearer credential on the same request."},"ForgeOAuth2ClientCredentials":{"type":"oauth2","description":"OAuth 2.0 client-credentials flow for machine access.","flows":{"clientCredentials":{"tokenUrl":"/oauth/token","scopes":{"decision_records.write":"Least-privilege scope for decision evaluation, pre-action, agentic-event evaluation, decision-webhook submission, and ordered v1 agent-event append only.","decision_records":"Legacy umbrella scope for tenant-bound decision evaluation, pre-action and agent events, calibration reporting, delivery status, and tenant observability. Ground-truth outcome submission requires a separately scoped, durably authority-bound Forge API key. It excludes credential custody, delivery retry, and release authority."}}}}},"responses":{"ForgeError":{"description":"Stable, sanitized product API error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgeErrorResponse"}}}}}},"servers":[{"url":"/","description":"The standalone Forge product API host issued during onboarding."}],"x-forge-contract-scope":"standalone_product_api_only","x-forge-client-model":"server_to_server","x-forge-cors-enabled":false,"x-forge-error-schema-version":"forge-error/v1","x-forge-response-contract":{"profile":"compact-v1","profile_selection_header":false,"legacy_compatibility_envelope":false},"x-forge-starter-profiles":[{"profile_id":"decision-accountability-starter","url":"/openapi/profiles/decision-accountability-starter.json","canonical_contract_url":"/openapi/product.json","projection":"exact_path_items_and_transitive_components"},{"profile_id":"enterprise-agent-accountability","url":"/openapi/profiles/enterprise-agent-accountability.json","canonical_contract_url":"/openapi/product.json","projection":"exact_path_items_and_transitive_components"},{"profile_id":"enterprise-governed-release","url":"/openapi/profiles/enterprise-governed-release.json","canonical_contract_url":"/openapi/product.json","projection":"exact_path_items_and_transitive_components"}]}