{"openapi":"3.1.1","info":{"title":"Reaper Harness agent API","version":"1.0.0-beta","description":"Advisory change routing: planning depth, missing decisions and stop conditions. Does not inspect repositories, execute work or grant authority."},"servers":[{"url":"https://reaperharness.com"}],"security":[{"BetaKey":[]}],"paths":{"/api/v1/assess":{"post":{"operationId":"assess_agent_change","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Input"},"example":{"summary":"Review the public documentation without changing any files.","scope":"single","writeSurface":"none","risk":"low","authority":"advisory","externalSystems":false,"verification":"basic"}}}},"responses":{"200":{"description":"Validated result from the original engine; no authority or procurement is implied.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Output"}}}},"400":{"description":"Sanitized error. Respect Retry-After on 429/503; a daily cap resets at the next UTC day.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sanitized error. Respect Retry-After on 429/503; a daily cap resets at the next UTC day.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Sanitized error. Respect Retry-After on 429/503; a daily cap resets at the next UTC day.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Sanitized error. Respect Retry-After on 429/503; a daily cap resets at the next UTC day.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Sanitized error. Respect Retry-After on 429/503; a daily cap resets at the next UTC day.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"408":{"description":"Sanitized error. Respect Retry-After on 429/503; a daily cap resets at the next UTC day.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Sanitized error. Respect Retry-After on 429/503; a daily cap resets at the next UTC day.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Sanitized error. Respect Retry-After on 429/503; a daily cap resets at the next UTC day.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Sanitized error. Respect Retry-After on 429/503; a daily cap resets at the next UTC day.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Sanitized error. Respect Retry-After on 429/503; a daily cap resets at the next UTC day.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Sanitized error. Respect Retry-After on 429/503; a daily cap resets at the next UTC day.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Sanitized error. Respect Retry-After on 429/503; a daily cap resets at the next UTC day.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"504":{"description":"Sanitized error. Respect Retry-After on 429/503; a daily cap resets at the next UTC day.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"BetaKey":{"type":"apiKey","in":"header","name":"X-Agent-API-Key"}},"schemas":{"Input":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://reaperharness.com/schemas/request.schema.json","type":"object","required":["summary","scope","writeSurface","risk","authority","externalSystems","verification"],"properties":{"summary":{"type":"string","minLength":20,"maxLength":800,"pattern":"^\\S(?:[\\s\\S]*\\S)?$"},"scope":{"enum":["single","multi","independent"]},"writeSurface":{"enum":["none","one","many"]},"risk":{"enum":["low","medium","high","destructive"]},"authority":{"enum":["advisory","explicit","missing"]},"externalSystems":{"type":"boolean"},"verification":{"enum":["none","basic","full"]}},"additionalProperties":false},"Output":{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://reaperharness.com/schemas/reaper-boundary-pack.v1.json","title":"Reaper boundary pack v1","type":"object","required":["schemaVersion","ruleset","decision","blueprintDepth","lifecycleRoute","summary","reasons","missingDecisions","verificationSteps","stopConditions","input","advisory"],"properties":{"schemaVersion":{"const":"reaper.boundary-pack.v1"},"ruleset":{"type":"string"},"decision":{"enum":["ROUTE READY","HOLD"]},"blueprintDepth":{"enum":["NO_BLUEPRINT","PK_ONLY","AP_PK","MS_AP_PK","FP_MS_AP_PK","PACKAGE_0_LANE_PLAN","HOLD_SCOPE_UNCLEAR"]},"lifecycleRoute":{"enum":["BYPASS","COMPRESSED_DR_CT_EX","FULL_DR_CT_EX","PARALLEL_LANE","HOLD"]},"summary":{"type":"string"},"reasons":{"type":"array","items":{"type":"string"}},"missingDecisions":{"type":"array","items":{"type":"string"}},"verificationSteps":{"type":"array","items":{"type":"string"}},"stopConditions":{"type":"array","items":{"type":"string"}},"input":{"type":"object","required":["summary","scope","writeSurface","risk","authority","externalSystems","verification"],"properties":{"summary":{"type":"string","minLength":20,"maxLength":800},"scope":{"enum":["single","multi","independent"]},"writeSurface":{"enum":["none","one","many"]},"risk":{"enum":["low","medium","high","destructive"]},"authority":{"enum":["advisory","explicit","missing"]},"externalSystems":{"type":"boolean"},"verification":{"enum":["none","basic","full"]}},"additionalProperties":false},"advisory":{"const":true}},"additionalProperties":false},"Error":{"type":"object","required":["schema","error"],"additionalProperties":false,"properties":{"schema":{"const":"microsite.endpoint-error.v1"},"error":{"type":"object","required":["code","message","retryable","issues"],"additionalProperties":false,"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"issues":{"type":"array","items":{"type":"object","required":["path","code"],"additionalProperties":false,"properties":{"path":{"type":"string"},"code":{"type":"string"}}}}}}}}}},"x-limits":{"inputBytes":65536,"outputBytes":262144,"jsonDepth":12,"bodyMs":5000,"analysisMs":3000,"concurrency":2,"sharedRequestsPerMinute":30,"sharedRequestsPerUtcDay":500,"concurrencyScope":"per isolate"},"x-privacy":"Public/synthetic inputs only. Transient server processing, no application input/output logs or storage. One aggregate quota row is persisted; hosting metadata may be processed."}