{"openapi":"3.1.0","info":{"title":"Voidex API","version":"1.0.0","description":"Connect agents to tools, control what they can do, and verify what actually happened. Errors share one shape with a machine-readable code and correlation id."},"servers":[{"url":"https://api.voidex.net"}],"components":{"securitySchemes":{"bearerApiKey":{"type":"http","scheme":"bearer","description":"Workspace API key: vdx_live_… or vdx_test_…"},"sessionCookie":{"type":"apiKey","in":"cookie","name":"voidex.session_token"}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","correlationId","retryable"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"correlationId":{"type":"string"},"retryable":{"type":"boolean"},"details":{}}}}}}},"paths":{"/api/v1/public/plans":{"get":{"tags":["Public"],"summary":"List public plans and price books","operationId":"get_public_plans","security":[],"parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/public/site":{"get":{"tags":["Public"],"summary":"Public company/site settings","operationId":"get_public_site","security":[],"parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/public/contact":{"post":{"tags":["Public"],"summary":"Submit a contact / support request","operationId":"post_public_contact","security":[],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"email":{"type":"string","maxLength":200,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"company":{"type":"string","maxLength":200},"topic":{"type":"string","enum":["sales","support","security","other"]},"message":{"type":"string","minLength":10,"maxLength":5000}},"required":["name","email","topic","message"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/providers":{"get":{"tags":["Connect"],"summary":"Model/agent providers and their configuration status","operationId":"get_providers","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/me":{"get":{"tags":["Organizations"],"summary":"Current user, organizations, workspace and permissions","operationId":"get_me","security":[{"sessionCookie":[]}],"parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/organizations":{"post":{"tags":["Organizations"],"summary":"Create an organization (onboarding)","operationId":"post_organizations","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":80},"workspaceName":{"default":"Default","type":"string","minLength":2,"maxLength":60}},"required":["name"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/organization":{"get":{"tags":["Organizations"],"summary":"Organization profile and settings","operationId":"get_organization","security":[{"sessionCookie":[]}],"x-voidex-permission":"org:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"tags":["Organizations"],"summary":"Update organization settings","operationId":"patch_organization","security":[{"sessionCookie":[]}],"x-voidex-permission":"org:manage","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string"},"retentionDays":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"payloadDisplay":{"type":"string","enum":["redacted","full"]},"notifyEmail":{"type":"string"}}}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workspaces":{"post":{"tags":["Organizations"],"summary":"Create a workspace","operationId":"post_workspaces","security":[{"sessionCookie":[]}],"x-voidex-permission":"workspace:manage","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string"}},"required":["name"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/members":{"get":{"tags":["Organizations"],"summary":"List members","operationId":"get_members","security":[{"sessionCookie":[]}],"x-voidex-permission":"org:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/members/{id}":{"patch":{"tags":["Organizations"],"summary":"Change a member role","operationId":"patch_members_id","security":[{"sessionCookie":[]}],"x-voidex-permission":"members:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"role":{"type":"string","enum":["owner","admin","developer","operator","approver","viewer"]}},"required":["role"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"tags":["Organizations"],"summary":"Remove a member (revokes their API keys)","operationId":"delete_members_id","security":[{"sessionCookie":[]}],"x-voidex-permission":"members:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/invitations":{"get":{"tags":["Organizations"],"summary":"List invitations","operationId":"get_invitations","security":[{"sessionCookie":[]}],"x-voidex-permission":"members:manage","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Organizations"],"summary":"Invite a member (returns a one-time link)","operationId":"post_invitations","security":[{"sessionCookie":[]}],"x-voidex-permission":"members:manage","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"email":{"type":"string","maxLength":200,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"role":{"type":"string","enum":["owner","admin","developer","operator","approver","viewer"]}},"required":["email","role"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/invitations/{id}":{"delete":{"tags":["Organizations"],"summary":"Revoke an invitation","operationId":"delete_invitations_id","security":[{"sessionCookie":[]}],"x-voidex-permission":"members:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/invitations/accept":{"post":{"tags":["Organizations"],"summary":"Accept an invitation","operationId":"post_invitations_accept","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"token":{"type":"string","minLength":10,"maxLength":200}},"required":["token"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/api-keys":{"get":{"tags":["Developer"],"summary":"List API keys (never shows secrets)","operationId":"get_api_keys","security":[{"sessionCookie":[]}],"x-voidex-permission":"apikeys:manage","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Developer"],"summary":"Create an API key (secret shown once)","operationId":"post_api_keys","security":[{"sessionCookie":[]}],"x-voidex-permission":"apikeys:manage","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":80},"scopes":{"minItems":1,"type":"array","items":{"type":"string","enum":["org:read","org:manage","members:manage","billing:read","billing:manage","workspace:read","workspace:manage","connectors:read","connectors:manage","secrets:manage","tools:read","tools:manage","workers:read","workers:manage","workflows:read","workflows:manage","workflows:activate","runs:read","runs:submit","runs:cancel","approvals:read","approvals:decide","policies:read","policies:manage","receipts:read","audit:read","audit:export","apikeys:manage","webhooks:manage","bench:read","bench:run","bench:manage","usage:read"]}},"expiresInDays":{"default":90,"anyOf":[{"type":"integer","minimum":1,"maximum":365},{"type":"null"}]}},"required":["name","scopes"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/api-keys/{id}":{"delete":{"tags":["Developer"],"summary":"Revoke an API key","operationId":"delete_api_keys_id","security":[{"sessionCookie":[]}],"x-voidex-permission":"apikeys:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/connectors":{"get":{"tags":["Connect"],"summary":"Connector catalogue (available, simulated, planned)","operationId":"get_connectors","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"connectors:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/connected-accounts":{"get":{"tags":["Connect"],"summary":"List connected accounts (no secrets)","operationId":"get_connected_accounts","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"connectors:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Connect"],"summary":"Connect an account (secret is write-only)","operationId":"post_connected_accounts","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"connectors:manage","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connectorKey":{"type":"string"},"name":{"type":"string","minLength":2,"maxLength":80},"environment":{"default":"test","type":"string","enum":["test","sandbox","production"]},"config":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"secret":{"type":"string","minLength":1,"maxLength":8192}},"required":["connectorKey","name"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/connected-accounts/{id}/test":{"post":{"tags":["Connect"],"summary":"Test a connected account","operationId":"post_connected_accounts_id_test","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"connectors:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/connected-accounts/{id}/rotate":{"post":{"tags":["Connect"],"summary":"Rotate the credential","operationId":"post_connected_accounts_id_rotate","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"secrets:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"secret":{"type":"string","minLength":1,"maxLength":8192}}}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/connected-accounts/{id}/revoke":{"post":{"tags":["Connect"],"summary":"Revoke the account and destroy its credential","operationId":"post_connected_accounts_id_revoke","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"connectors:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/tools":{"get":{"tags":["Connect"],"summary":"List registered tools and their schemas","operationId":"get_tools","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"tools:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Connect"],"summary":"Register a custom tool (generic HTTP connector)","operationId":"post_tools","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"tools:manage","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connectorKey":{"type":"string"},"spec":{"type":"object","properties":{"key":{"type":"string","minLength":3,"maxLength":100,"pattern":"^[a-z][a-z0-9_]*\\.[a-z][a-z0-9_]*$"},"name":{"type":"string","minLength":1,"maxLength":120},"description":{"default":"","type":"string","maxLength":1000},"riskClass":{"type":"string","enum":["read","low_write","sensitive_write","high_impact"]},"reversibility":{"type":"string","enum":["not_applicable","reversible","compensatable","irreversible"]},"idempotent":{"type":"boolean"},"forwardsIdempotencyKey":{"default":false,"type":"boolean"},"inputSchema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"operation":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"]},"path":{"type":"string","minLength":1,"maxLength":500,"format":"starts_with","pattern":"^\\/.*"},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"body":{}},"required":["method","path"]},"postconditions":{"default":[],"maxItems":20,"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"field_equals"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"field":{"type":"string","minLength":1},"expected":{"type":["string","number","boolean","null"]}},"required":["type","read","field","expected"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"record_exists"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"expectExists":{"default":true,"type":"boolean"}},"required":["type","read"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","enum":["count_equals","count_within_tolerance"]},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"field":{"default":"","type":"string"},"expected":{"type":["number","string"]},"tolerance":{"default":0,"type":"number","minimum":0}},"required":["type","read","expected"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"arithmetic_invariant"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"terms":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1},"sign":{"default":1,"anyOf":[{"type":"number","const":1},{"type":"number","const":-1}]}},"required":["path"]}},"equals":{"anyOf":[{"type":"object","properties":{"path":{"type":"string"}},"required":["path"]},{"type":"number"},{"type":"string"}]},"tolerance":{"default":0,"type":"number","minimum":0}},"required":["type","read","terms","equals"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"status_transition"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"field":{"type":"string","minLength":1},"from":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}},{"type":"null"}]},"to":{"type":"string"}},"required":["type","read","field","from","to"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"http_postcondition"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"expectStatus":{"default":200,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"assertions":{"default":[],"maxItems":30,"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"op":{"type":"string","enum":["eq","neq","exists","not_exists","gt","gte","lt","lte","contains"]},"value":{"type":["string","number","boolean","null"]}},"required":["path","op"]}}},"required":["type","read"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"artifact_exists_and_hash"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["type","read"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"human_attestation"},"question":{"type":"string","minLength":3,"maxLength":500}},"required":["type","question"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"model_assessment"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"question":{"type":"string","minLength":3,"maxLength":500},"provider":{"default":"demo","type":"string"}},"required":["type","read","question"]}]}},"sensitiveFields":{"default":[],"maxItems":50,"type":"array","items":{"type":"string"}},"compensation":{"type":"object","properties":{"tool":{"type":"string"},"inputMap":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["tool","inputMap"]},"timeoutMs":{"default":10000,"type":"integer","minimum":100,"maximum":60000}},"required":["key","name","riskClass","reversibility","idempotent","inputSchema","operation"]}},"required":["connectorKey","spec"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/tools/{key}":{"delete":{"tags":["Connect"],"summary":"Disable a custom tool","operationId":"delete_tools_key","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"tools:manage","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/runs":{"post":{"tags":["Runs"],"summary":"Submit a task: a single tool action or a workflow run","operationId":"post_runs","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"runs:submit","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","oneOf":[{"type":"object","properties":{"tool":{"type":"string","minLength":3,"maxLength":100},"connectedAccountId":{"type":"string","minLength":1},"input":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"environment":{"default":"test","type":"string","enum":["test","sandbox","production"]},"idempotencyKey":{"type":"string","minLength":8,"maxLength":200},"verify":{"default":[],"maxItems":10,"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"field_equals"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"field":{"type":"string","minLength":1},"expected":{"type":["string","number","boolean","null"]}},"required":["type","read","field","expected"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"record_exists"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"expectExists":{"default":true,"type":"boolean"}},"required":["type","read"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","enum":["count_equals","count_within_tolerance"]},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"field":{"default":"","type":"string"},"expected":{"type":["number","string"]},"tolerance":{"default":0,"type":"number","minimum":0}},"required":["type","read","expected"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"arithmetic_invariant"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"terms":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1},"sign":{"default":1,"anyOf":[{"type":"number","const":1},{"type":"number","const":-1}]}},"required":["path"]}},"equals":{"anyOf":[{"type":"object","properties":{"path":{"type":"string"}},"required":["path"]},{"type":"number"},{"type":"string"}]},"tolerance":{"default":0,"type":"number","minimum":0}},"required":["type","read","terms","equals"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"status_transition"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"field":{"type":"string","minLength":1},"from":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}},{"type":"null"}]},"to":{"type":"string"}},"required":["type","read","field","from","to"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"http_postcondition"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"expectStatus":{"default":200,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"assertions":{"default":[],"maxItems":30,"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"op":{"type":"string","enum":["eq","neq","exists","not_exists","gt","gte","lt","lte","contains"]},"value":{"type":["string","number","boolean","null"]}},"required":["path","op"]}}},"required":["type","read"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"artifact_exists_and_hash"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["type","read"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"human_attestation"},"question":{"type":"string","minLength":3,"maxLength":500}},"required":["type","question"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"model_assessment"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"question":{"type":"string","minLength":3,"maxLength":500},"provider":{"default":"demo","type":"string"}},"required":["type","read","question"]}]}},"reason":{"type":"string","maxLength":500},"kind":{"type":"string","const":"action"}},"required":["tool","connectedAccountId","kind"]},{"type":"object","properties":{"kind":{"type":"string","const":"workflow"},"workflowId":{"type":"string"},"input":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"accounts":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["kind","workflowId"]}]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"tags":["Runs"],"summary":"List runs with filters","operationId":"get_runs","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"runs:read","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["queued","running","awaiting_approval","blocked","succeeded","failed","needs_review","cancelled","timed_out"]}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","enum":["action","workflow","bench"]}},{"name":"environment","in":"query","required":false,"schema":{"type":"string","enum":["test","sandbox","production"]}},{"name":"workflowId","in":"query","required":false,"schema":{"type":"string"}},{"name":"workerId","in":"query","required":false,"schema":{"type":"string"}},{"name":"connector","in":"query","required":false,"schema":{"type":"string"}},{"name":"initiator","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":100}},{"name":"from","in":"query","required":false,"schema":{}},{"name":"to","in":"query","required":false,"schema":{}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/runs/{id}":{"get":{"tags":["Runs"],"summary":"Run detail with full timeline","operationId":"get_runs_id","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"runs:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/runs/{id}/cancel":{"post":{"tags":["Runs"],"summary":"Cancel a run (explains in-flight semantics)","operationId":"post_runs_id_cancel","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"runs:cancel","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/runs/{id}/receipt":{"get":{"tags":["Receipts"],"summary":"Verification receipts issued for a run","operationId":"get_runs_id_receipt","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"receipts:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/receipts/verify-chain":{"get":{"tags":["Receipts"],"summary":"Recompute the workspace receipt hash chain","operationId":"get_receipts_verify_chain","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"receipts:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/receipts/{id}":{"get":{"tags":["Receipts"],"summary":"Get a receipt with integrity check","operationId":"get_receipts_id","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"receipts:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/actions/{id}/amend":{"post":{"tags":["Approvals"],"summary":"Amend an action awaiting approval (invalidates prior approval)","operationId":"post_actions_id_amend","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"runs:submit","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["input"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/approvals/{id}/approve":{"post":{"tags":["Approvals"],"summary":"approve an approval request (bound to bindingHash)","operationId":"post_approvals_id_approve","security":[{"sessionCookie":[]}],"x-voidex-permission":"approvals:decide","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bindingHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"comment":{"type":"string","maxLength":2000}},"required":["bindingHash"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/actions/{id}/approve":{"post":{"tags":["Approvals"],"summary":"approve the pending approval of an action","operationId":"post_actions_id_approve","security":[{"sessionCookie":[]}],"x-voidex-permission":"approvals:decide","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bindingHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"comment":{"type":"string","maxLength":2000}},"required":["bindingHash"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/approvals/{id}/reject":{"post":{"tags":["Approvals"],"summary":"reject an approval request (bound to bindingHash)","operationId":"post_approvals_id_reject","security":[{"sessionCookie":[]}],"x-voidex-permission":"approvals:decide","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bindingHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"comment":{"type":"string","maxLength":2000}},"required":["bindingHash"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/actions/{id}/reject":{"post":{"tags":["Approvals"],"summary":"reject the pending approval of an action","operationId":"post_actions_id_reject","security":[{"sessionCookie":[]}],"x-voidex-permission":"approvals:decide","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bindingHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"comment":{"type":"string","maxLength":2000}},"required":["bindingHash"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/approvals/{id}/request-changes":{"post":{"tags":["Approvals"],"summary":"request changes an approval request (bound to bindingHash)","operationId":"post_approvals_id_request_changes","security":[{"sessionCookie":[]}],"x-voidex-permission":"approvals:decide","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bindingHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"comment":{"type":"string","maxLength":2000}},"required":["bindingHash"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/actions/{id}/request-changes":{"post":{"tags":["Approvals"],"summary":"request changes the pending approval of an action","operationId":"post_actions_id_request_changes","security":[{"sessionCookie":[]}],"x-voidex-permission":"approvals:decide","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bindingHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"comment":{"type":"string","maxLength":2000}},"required":["bindingHash"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/approvals":{"get":{"tags":["Approvals"],"summary":"Approval queue","operationId":"get_approvals","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"approvals:read","parameters":[{"name":"status","in":"query","required":false,"schema":{"default":"pending","type":"string","enum":["pending","all"]}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/approvals/{id}":{"get":{"tags":["Approvals"],"summary":"Approval detail for reviewers","operationId":"get_approvals_id","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"approvals:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/checks/{id}/attest":{"post":{"tags":["Verify"],"summary":"Human attestation of a verification check","operationId":"post_checks_id_attest","security":[{"sessionCookie":[]}],"x-voidex-permission":"approvals:decide","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"verdict":{"type":"string","enum":["passed","failed"]},"note":{"type":"string","minLength":3,"maxLength":1000}},"required":["verdict","note"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/policies":{"get":{"tags":["Verify"],"summary":"Active policy and version history","operationId":"get_policies","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"policies:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Verify"],"summary":"Publish a new policy version (tests must pass)","operationId":"post_policies","security":[{"sessionCookie":[]}],"x-voidex-permission":"policies:manage","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"document":{"type":"object","properties":{"schemaVersion":{"default":1,"type":"number","const":1},"defaultEffect":{"default":"deny","type":"string","enum":["deny","allow"]},"rules":{"default":[],"maxItems":200,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"default":"","type":"string","maxLength":300},"match":{"default":{},"type":"object","properties":{"tools":{"type":"array","items":{"type":"string"}},"connectors":{"type":"array","items":{"type":"string"}},"riskClasses":{"type":"array","items":{"type":"string","enum":["read","low_write","sensitive_write","high_impact"]}},"environments":{"type":"array","items":{"type":"string","enum":["test","sandbox","production"]}}}},"conditions":{"default":[],"maxItems":20,"type":"array","items":{"type":"object","properties":{"field":{"type":"string","minLength":1,"maxLength":200},"op":{"type":"string","enum":["eq","neq","gt","gte","lt","lte","in","not_in","exists","not_exists","matches"]},"value":{}},"required":["field","op"]}},"effect":{"type":"string","enum":["allow","deny","require_approval"]},"approval":{"type":"object","properties":{"minApprovers":{"default":1,"type":"integer","minimum":1,"maximum":5},"roles":{"default":["owner","admin","approver"],"minItems":1,"type":"array","items":{"type":"string","enum":["owner","admin","approver"]}},"expiresInMinutes":{"default":1440,"type":"integer","minimum":5,"maximum":10080}}}},"required":["id","effect"]}},"protectedResources":{"default":[],"maxItems":100,"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"values":{"minItems":1,"type":"array","items":{"type":["string","number"]}},"reason":{"default":"","type":"string"}},"required":["field","values"]}},"allowedDomains":{"default":[],"maxItems":200,"type":"array","items":{"type":"string"}}}},"testCases":{"default":[],"maxItems":100,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"tool":{"type":"string"},"connector":{"type":"string"},"riskClass":{"type":"string","enum":["read","low_write","sensitive_write","high_impact"]},"environment":{"type":"string","enum":["test","sandbox","production"]},"input":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"expect":{"type":"string","enum":["allow","deny","require_approval"]}},"required":["name","tool","connector","riskClass","environment","expect"]}},"comment":{"default":"","type":"string","maxLength":500}},"required":["document"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/policies/versions/{id}":{"get":{"tags":["Verify"],"summary":"A specific policy version","operationId":"get_policies_versions_id","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"policies:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/policies/preview":{"post":{"tags":["Verify"],"summary":"Safe preview: evaluate a draft policy without saving","operationId":"post_policies_preview","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"policies:read","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"document":{"type":"object","properties":{"schemaVersion":{"default":1,"type":"number","const":1},"defaultEffect":{"default":"deny","type":"string","enum":["deny","allow"]},"rules":{"default":[],"maxItems":200,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"default":"","type":"string","maxLength":300},"match":{"default":{},"type":"object","properties":{"tools":{"type":"array","items":{"type":"string"}},"connectors":{"type":"array","items":{"type":"string"}},"riskClasses":{"type":"array","items":{"type":"string","enum":["read","low_write","sensitive_write","high_impact"]}},"environments":{"type":"array","items":{"type":"string","enum":["test","sandbox","production"]}}}},"conditions":{"default":[],"maxItems":20,"type":"array","items":{"type":"object","properties":{"field":{"type":"string","minLength":1,"maxLength":200},"op":{"type":"string","enum":["eq","neq","gt","gte","lt","lte","in","not_in","exists","not_exists","matches"]},"value":{}},"required":["field","op"]}},"effect":{"type":"string","enum":["allow","deny","require_approval"]},"approval":{"type":"object","properties":{"minApprovers":{"default":1,"type":"integer","minimum":1,"maximum":5},"roles":{"default":["owner","admin","approver"],"minItems":1,"type":"array","items":{"type":"string","enum":["owner","admin","approver"]}},"expiresInMinutes":{"default":1440,"type":"integer","minimum":5,"maximum":10080}}}},"required":["id","effect"]}},"protectedResources":{"default":[],"maxItems":100,"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"values":{"minItems":1,"type":"array","items":{"type":["string","number"]}},"reason":{"default":"","type":"string"}},"required":["field","values"]}},"allowedDomains":{"default":[],"maxItems":200,"type":"array","items":{"type":"string"}}}},"testCases":{"default":[],"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"tool":{"type":"string"},"connector":{"type":"string"},"riskClass":{"type":"string","enum":["read","low_write","sensitive_write","high_impact"]},"environment":{"type":"string","enum":["test","sandbox","production"]},"input":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"expect":{"type":"string","enum":["allow","deny","require_approval"]}},"required":["name","tool","connector","riskClass","environment","expect"]}},"sample":{"type":"object","properties":{"tool":{"type":"string"},"connector":{"type":"string"},"riskClass":{"type":"string","enum":["read","low_write","sensitive_write","high_impact"]},"environment":{"type":"string","enum":["test","sandbox","production"]},"input":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["tool","connector","riskClass","environment"]}},"required":["document"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/verification-rules":{"get":{"tags":["Verify"],"summary":"Workspace verification rules","operationId":"get_verification_rules","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"policies:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Verify"],"summary":"Add a verification rule applied to matching tools","operationId":"post_verification_rules","security":[{"sessionCookie":[]}],"x-voidex-permission":"policies:manage","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":120},"toolPattern":{"type":"string","minLength":1,"maxLength":100},"spec":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"field_equals"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"field":{"type":"string","minLength":1},"expected":{"type":["string","number","boolean","null"]}},"required":["type","read","field","expected"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"record_exists"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"expectExists":{"default":true,"type":"boolean"}},"required":["type","read"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","enum":["count_equals","count_within_tolerance"]},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"field":{"default":"","type":"string"},"expected":{"type":["number","string"]},"tolerance":{"default":0,"type":"number","minimum":0}},"required":["type","read","expected"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"arithmetic_invariant"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"terms":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1},"sign":{"default":1,"anyOf":[{"type":"number","const":1},{"type":"number","const":-1}]}},"required":["path"]}},"equals":{"anyOf":[{"type":"object","properties":{"path":{"type":"string"}},"required":["path"]},{"type":"number"},{"type":"string"}]},"tolerance":{"default":0,"type":"number","minimum":0}},"required":["type","read","terms","equals"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"status_transition"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"field":{"type":"string","minLength":1},"from":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}},{"type":"null"}]},"to":{"type":"string"}},"required":["type","read","field","from","to"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"http_postcondition"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"expectStatus":{"default":200,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"assertions":{"default":[],"maxItems":30,"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"op":{"type":"string","enum":["eq","neq","exists","not_exists","gt","gte","lt","lte","contains"]},"value":{"type":["string","number","boolean","null"]}},"required":["path","op"]}}},"required":["type","read"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"artifact_exists_and_hash"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["type","read"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"human_attestation"},"question":{"type":"string","minLength":3,"maxLength":500}},"required":["type","question"]},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":300},"required":{"default":true,"type":"boolean"},"type":{"type":"string","const":"model_assessment"},"read":{"type":"object","properties":{"method":{"default":"GET","type":"string","const":"GET"},"path":{"type":"string","minLength":1,"maxLength":500},"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["path"]},"question":{"type":"string","minLength":3,"maxLength":500},"provider":{"default":"demo","type":"string"}},"required":["type","read","question"]}]}},"required":["name","toolPattern","spec"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/verification-rules/{id}":{"patch":{"tags":["Verify"],"summary":"Enable or disable a verification rule","operationId":"patch_verification_rules_id","security":[{"sessionCookie":[]}],"x-voidex-permission":"policies:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workflows":{"get":{"tags":["Workflows"],"summary":"List workflows","operationId":"get_workflows","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"workflows:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Workflows"],"summary":"Create a workflow draft","operationId":"post_workflows","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"workflows:manage","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":120},"description":{"default":"","type":"string","maxLength":1000},"spec":{}},"required":["name","spec"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workflows/{id}":{"get":{"tags":["Workflows"],"summary":"Workflow detail, versions and validation","operationId":"get_workflows_id","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"workflows:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"tags":["Workflows"],"summary":"Update the draft","operationId":"patch_workflows_id","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"workflows:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"spec":{}}}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"tags":["Workflows"],"summary":"Delete a workflow (history kept)","operationId":"delete_workflows_id","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"workflows:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workflows/{id}/validate":{"post":{"tags":["Workflows"],"summary":"Validate the draft","operationId":"post_workflows_id_validate","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"workflows:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workflows/{id}/activate":{"post":{"tags":["Workflows"],"summary":"Freeze the draft as a new immutable version and activate it","operationId":"post_workflows_id_activate","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"workflows:activate","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workflows/{id}/dry-run":{"post":{"tags":["Workflows"],"summary":"Dry run: plan + policy preview, no external calls","operationId":"post_workflows_id_dry_run","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"workflows:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"accounts":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"versionId":{"type":"string"}}}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workflows/{id}/disable":{"post":{"tags":["Workflows"],"summary":"Disable a workflow","operationId":"post_workflows_id_disable","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"workflows:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/worker-templates":{"get":{"tags":["Workforce"],"summary":"Worker template catalogue","operationId":"get_worker_templates","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"workers:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workers":{"get":{"tags":["Workforce"],"summary":"List workers","operationId":"get_workers","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"workers:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Workforce"],"summary":"Create a worker from a template","operationId":"post_workers","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"workers:manage","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"templateKey":{"type":"string"},"name":{"type":"string","minLength":2,"maxLength":120},"accounts":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}}},"required":["templateKey","name"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workers/{id}":{"get":{"tags":["Workforce"],"summary":"Worker detail and readiness checklist","operationId":"get_workers_id","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"workers:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"tags":["Workforce"],"summary":"Update worker configuration (creates a new version)","operationId":"patch_workers_id","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"workers:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string"},"accounts":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"defaultInput":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"notes":{"type":"string"}}}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workers/{id}/run":{"post":{"tags":["Workforce"],"summary":"Run a worker","operationId":"post_workers_id_run","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"runs:submit","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workers/{id}/status":{"post":{"tags":["Workforce"],"summary":"Activate (if ready), disable or delete a worker","operationId":"post_workers_id_status","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"workers:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"type":"string","enum":["active","disabled","deleted"]}},"required":["status"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/benchmarks":{"get":{"tags":["Bench"],"summary":"List benchmark suites","operationId":"get_benchmarks","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"bench:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/benchmarks/import":{"post":{"tags":["Bench"],"summary":"Import a suite (voidex.bench.v1)","operationId":"post_benchmarks_import","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"bench:manage","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/benchmarks/sample":{"post":{"tags":["Bench"],"summary":"Import the deterministic sample suite","operationId":"post_benchmarks_sample","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"bench:manage","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/benchmarks/{id}":{"get":{"tags":["Bench"],"summary":"Suite detail","operationId":"get_benchmarks_id","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"bench:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/benchmarks/{id}/export":{"get":{"tags":["Bench"],"summary":"Export a suite as JSON","operationId":"get_benchmarks_id_export","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"bench:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/benchmarks/{id}/cases":{"put":{"tags":["Bench"],"summary":"Replace cases (new suite version)","operationId":"put_benchmarks_id_cases","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"bench:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema"}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/benchmarks/{id}/runs":{"post":{"tags":["Bench"],"summary":"Start a benchmark run","operationId":"post_benchmarks_id_runs","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"bench:run","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"label":{"default":"Baseline","type":"string","minLength":1,"maxLength":120},"notes":{"default":"","type":"string","maxLength":1000}}}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/benchmark-runs/compare":{"get":{"tags":["Bench"],"summary":"Compare two benchmark runs","operationId":"get_benchmark_runs_compare","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"bench:read","parameters":[{"name":"a","in":"query","required":true,"schema":{"type":"string"}},{"name":"b","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/benchmark-runs/{id}":{"get":{"tags":["Bench"],"summary":"Benchmark run results","operationId":"get_benchmark_runs_id","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"bench:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/webhooks":{"get":{"tags":["Developer"],"summary":"Webhook endpoints and recent deliveries","operationId":"get_webhooks","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"webhooks:manage","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Developer"],"summary":"Create a webhook endpoint (signing secret shown once)","operationId":"post_webhooks","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"webhooks:manage","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string","maxLength":500,"format":"uri"},"description":{"default":"","type":"string","maxLength":200},"events":{"minItems":1,"maxItems":12,"type":"array","items":{"type":"string","enum":["run.succeeded","run.failed","run.needs_review","run.blocked","run.cancelled","run.timed_out","approval.requested","approval.resolved","receipt.issued","workflow.notification","benchmark.completed","*"]}}},"required":["url","events"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/webhooks/{id}/disable":{"post":{"tags":["Developer"],"summary":"Disable an endpoint","operationId":"post_webhooks_id_disable","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"webhooks:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/webhooks/test":{"post":{"tags":["Developer"],"summary":"Emit a test event to subscribed endpoints","operationId":"post_webhooks_test","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"webhooks:manage","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/overview":{"get":{"tags":["Runs"],"summary":"Dashboard aggregates from stored events","operationId":"get_overview","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"runs:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/usage":{"get":{"tags":["Billing"],"summary":"Usage for the current period vs entitlements","operationId":"get_usage","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"usage:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/usage/export.csv":{"get":{"tags":["Billing"],"summary":"Usage records as CSV","operationId":"get_usage_export_csv","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"usage:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/billing":{"get":{"tags":["Billing"],"summary":"Subscription, entitlements and invoices","operationId":"get_billing","security":[{"sessionCookie":[]}],"x-voidex-permission":"billing:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/billing/checkout":{"post":{"tags":["Billing"],"summary":"Start a checkout (test mode unless a provider is configured)","operationId":"post_billing_checkout","security":[{"sessionCookie":[]}],"x-voidex-permission":"billing:manage","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"planKey":{"type":"string"},"currency":{"default":"USD","type":"string","minLength":3,"maxLength":3}},"required":["planKey"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/billing/test-checkouts/{id}/simulate":{"post":{"tags":["Billing"],"summary":"TEST MODE: simulate a signed payment event","operationId":"post_billing_test_checkouts_id_simulate","security":[{"sessionCookie":[]}],"x-voidex-permission":"billing:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"outcome":{"type":"string","enum":["completed","failed"]}},"required":["outcome"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/audit":{"get":{"tags":["Audit"],"summary":"Audit events (append-only)","operationId":"get_audit","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"audit:read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":100,"type":"integer","minimum":1,"maximum":500}},{"name":"action","in":"query","required":false,"schema":{"type":"string","maxLength":60}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/audit/export.ndjson":{"get":{"tags":["Audit"],"summary":"Export audit events (NDJSON)","operationId":"get_audit_export_ndjson","security":[{"sessionCookie":[]}],"x-voidex-permission":"audit:export","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/environments":{"get":{"tags":["Provisioning"],"summary":"Runtime environments","operationId":"get_environments","security":[{"bearerApiKey":[]},{"sessionCookie":[]}],"x-voidex-permission":"workspace:read","parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Provisioning"],"summary":"Request an environment (idempotent per kind)","operationId":"post_environments","security":[{"sessionCookie":[]}],"x-voidex-permission":"workspace:manage","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"type":"string","enum":["sandbox","production"]}},"required":["kind"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/environments/{id}/retry":{"post":{"tags":["Provisioning"],"summary":"Retry a failed environment","operationId":"post_environments_id_retry","security":[{"sessionCookie":[]}],"x-voidex-permission":"workspace:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/environments/{id}":{"delete":{"tags":["Provisioning"],"summary":"Delete an environment and clean up","operationId":"delete_environments_id","security":[{"sessionCookie":[]}],"x-voidex-permission":"workspace:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/admin/health":{"get":{"tags":["Platform"],"summary":"Platform health and queues","operationId":"get_admin_health","security":[{"sessionCookie":[]}],"parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/admin/tenants":{"get":{"tags":["Platform"],"summary":"Tenant operational metadata (no payloads)","operationId":"get_admin_tenants","security":[{"sessionCookie":[]}],"parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/admin/jobs/{id}/retry":{"post":{"tags":["Platform"],"summary":"Retry a dead-lettered job","operationId":"post_admin_jobs_id_retry","security":[{"sessionCookie":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/admin/flags":{"get":{"tags":["Platform"],"summary":"Feature flags","operationId":"get_admin_flags","security":[{"sessionCookie":[]}],"parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Platform"],"summary":"Set a feature flag","operationId":"post_admin_flags","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"key":{"type":"string","pattern":"^[a-z0-9_.]{2,60}$"},"enabled":{"type":"boolean"},"description":{"type":"string","maxLength":200}},"required":["key","enabled"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/admin/break-glass":{"get":{"tags":["Platform"],"summary":"Break-glass grants","operationId":"get_admin_break_glass","security":[{"sessionCookie":[]}],"parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["Platform"],"summary":"Request break-glass access to a tenant","operationId":"post_admin_break_glass","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"organizationId":{"type":"string"},"reason":{"type":"string","maxLength":1000}},"required":["organizationId","reason"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/admin/break-glass/{id}/approve":{"post":{"tags":["Platform"],"summary":"Approve another operator’s break-glass request","operationId":"post_admin_break_glass_id_approve","security":[{"sessionCookie":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/admin/tenants/{id}/audit":{"get":{"tags":["Platform"],"summary":"Read a tenant audit log under an active grant","operationId":"get_admin_tenants_id_audit","security":[{"sessionCookie":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/admin/tenants/{id}/plan":{"post":{"tags":["Platform"],"summary":"Set a tenant plan (contracted customers)","operationId":"post_admin_tenants_id_plan","security":[{"sessionCookie":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"planKey":{"type":"string"},"reason":{"type":"string","minLength":10,"maxLength":500}},"required":["planKey","reason"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/admin/contact-requests":{"get":{"tags":["Platform"],"summary":"Inbound contact/support requests","operationId":"get_admin_contact_requests","security":[{"sessionCookie":[]}],"parameters":[],"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/admin/site":{"put":{"tags":["Platform"],"summary":"Edit public company/support settings","operationId":"put_admin_site","security":[{"sessionCookie":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"supportEmail":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"salesEmail":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"address":{"type":"string","maxLength":300},"statusNote":{"type":"string","maxLength":300}},"required":["name","supportEmail","salesEmail"]}}}},"responses":{"200":{"description":"Success"},"202":{"description":"Accepted for asynchronous execution"},"default":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}