{"openapi":"3.1.0","info":{"title":"BEACON Gate external agent API","version":"0.1.0-dev.1","description":"Standalone development service: offline questions and private statistics. Sign exact UTF-8 bytes; see docs/PROTOCOL.md. Controlled workflows are disabled by default."},"servers":[{"url":"https://gate.beacon.methodfield.com"}],"paths":{"/.well-known/beacon-gate.json":{"get":{"operationId":"get___well_known_beacon_gate_json","security":[],"parameters":[],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/health/live":{"get":{"operationId":"get__health_live","security":[],"parameters":[],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/health/ready":{"get":{"operationId":"get__health_ready","security":[],"parameters":[],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/policies":{"get":{"operationId":"get__v1_gate_policies","security":[],"parameters":[],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/jwks":{"get":{"operationId":"get__v1_gate_jwks","security":[],"parameters":[],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/enrollments/challenge":{"post":{"operationId":"post__v1_gate_enrollments_challenge","security":[],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["invitation_token","public_key"],"properties":{"invitation_token":{"type":"string","minLength":1,"maxLength":16384},"public_key":{"type":"object","additionalProperties":false,"required":["kty","crv","x"],"properties":{"kty":{"const":"OKP"},"crv":{"const":"Ed25519"},"x":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}}}}}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/enrollments":{"post":{"operationId":"post__v1_gate_enrollments","security":[],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["invitation_token","challenge_id","proof"],"properties":{"invitation_token":{"type":"string","minLength":1,"maxLength":16384},"challenge_id":{"type":"string","minLength":1,"maxLength":16384},"proof":{"type":"string","minLength":1,"maxLength":16384}}}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/sessions/challenge":{"post":{"operationId":"post__v1_gate_sessions_challenge","security":[],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["actor_id","public_key"],"properties":{"actor_id":{"type":"string","minLength":1,"maxLength":16384},"public_key":{"type":"object","additionalProperties":false,"required":["kty","crv","x"],"properties":{"kty":{"const":"OKP"},"crv":{"const":"Ed25519"},"x":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}}}}}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/sessions":{"post":{"operationId":"post__v1_gate_sessions","security":[],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["challenge_id","proof"],"properties":{"challenge_id":{"type":"string","minLength":1,"maxLength":16384},"proof":{"type":"string","minLength":1,"maxLength":16384}}}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/runs":{"post":{"operationId":"post__v1_gate_runs","security":[{"gateBearer":[],"httpSignature":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["declared_mode","policy_id"],"properties":{"declared_mode":{"enum":["H","HA","AS","AA"]},"policy_id":{"enum":["study_all","human_confirmation","ai_execution","bounded_autonomy"]}}}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/controlled-runs":{"post":{"operationId":"post__v1_gate_controlled_runs","security":[{"gateBearer":[],"httpSignature":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["declared_mode","policy_id"],"properties":{"declared_mode":{"enum":["H","HA","AS","AA"]},"policy_id":{"enum":["study_all","human_confirmation","ai_execution","bounded_autonomy"]}}}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/runs/{id}":{"get":{"operationId":"get__v1_gate_runs__id_","security":[{"gateBearer":[],"httpSignature":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/runs/{id}/start":{"post":{"operationId":"post__v1_gate_runs__id__start","security":[{"gateBearer":[],"httpSignature":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":[],"properties":{}}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/runs/{id}/abort":{"post":{"operationId":"post__v1_gate_runs__id__abort","security":[{"gateBearer":[],"httpSignature":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":[],"properties":{}}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/runs/{id}/task":{"get":{"operationId":"get__v1_gate_runs__id__task","security":[{"gateBearer":[],"httpSignature":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/runs/{id}/questions":{"get":{"operationId":"get__v1_gate_runs__id__questions","security":[{"gateBearer":[],"httpSignature":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/runs/{id}/events":{"get":{"operationId":"get__v1_gate_runs__id__events","security":[{"gateBearer":[],"httpSignature":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"after","in":"query","required":false,"schema":{"type":"string","pattern":"^(0|[1-9][0-9]{0,6})$"}}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/runs/{id}/assessment":{"get":{"operationId":"get__v1_gate_runs__id__assessment","security":[{"gateBearer":[],"httpSignature":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/runs/{id}/actions":{"post":{"operationId":"post__v1_gate_runs__id__actions","security":[{"gateBearer":[],"httpSignature":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["tool","resource","amount"],"properties":{"tool":{"const":"mock_increment"},"resource":{"const":"mock_counter"},"amount":{"const":1}}}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/permits":{"post":{"operationId":"post__v1_gate_permits","security":[{"gateBearer":[],"httpSignature":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["action_id"],"properties":{"action_id":{"type":"string","minLength":1,"maxLength":16384}}}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/actions/{id}/commit":{"post":{"operationId":"post__v1_gate_actions__id__commit","security":[{"gateBearer":[],"httpSignature":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["permit_id"],"properties":{"permit_id":{"type":"string","minLength":1,"maxLength":16384}}}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/runs/{id}/submit":{"post":{"operationId":"post__v1_gate_runs__id__submit","security":[{"gateBearer":[],"httpSignature":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["answer_ids","answers"],"properties":{"answer_ids":{"type":"array","maxItems":50,"uniqueItems":true,"items":{"type":"string","pattern":"^record_[0-9]{3}$"}},"answers":{"type":"object","additionalProperties":false,"required":["q1","q2","q3","q4"],"properties":{"q1":{"type":"integer"},"q2":{"type":"integer"},"q3":{"type":"array","maxItems":12,"uniqueItems":true,"items":{"type":"string","pattern":"^item_[0-9]{1,2}$"}},"q4":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"string","pattern":"^resource_[0-9]$"}}}}}}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/runs/{id}/client-events":{"post":{"operationId":"post__v1_gate_runs__id__client_events","security":[{"gateBearer":[],"httpSignature":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["kind","payload"],"properties":{"kind":{"type":"string","minLength":1,"maxLength":64},"payload":{"type":"string","maxLength":4096}}}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/actors/{id}/deletion-request":{"post":{"operationId":"post__v1_gate_actors__id__deletion_request","security":[{"gateBearer":[],"httpSignature":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":[],"properties":{}}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}},"/v1/gate/actors/{id}/key/rotate":{"post":{"operationId":"post__v1_gate_actors__id__key_rotate","security":[{"gateBearer":[],"httpSignature":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["public_key","proof"],"properties":{"public_key":{"type":"object","additionalProperties":false,"required":["kty","crv","x"],"properties":{"kty":{"const":"OKP"},"crv":{"const":"Ed25519"},"x":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}}},"proof":{"type":"string","minLength":1,"maxLength":16384}}}}}},"responses":{"200":{"description":"Successful response"},"201":{"description":"Created"},"400":{"description":"invalid_input"},"401":{"description":"invalid_authentication"},"403":{"description":"insufficient_scope or policy failure"},"404":{"description":"not_found"},"409":{"description":"state_conflict or idempotency_conflict"},"410":{"description":"expired"},"413":{"description":"payload_too_large"},"429":{"description":"rate_limited"},"503":{"description":"temporarily_unavailable"}}}}},"components":{"securitySchemes":{"gateBearer":{"type":"http","scheme":"bearer"},"httpSignature":{"type":"apiKey","in":"header","name":"Signature","description":"Signature-Input and Content-Digest are also required by the fixed Gate profile."}}}}