HydraCore
API by router

Approvals

List Pending Approvals

GET
/internal/v1/instances/{instance_id}/approvals/pending

Path Parameters

instance_id*Instance Id
Formatuuid

Query Parameters

customer_id*Customer Id
Formatuuid

Response Body

Successful Response

response?unknownapplication/json
Example Request
curl -X GET 'https://example.com/internal/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/approvals/pending?customer_id=497f6eca-6276-4993-bfeb-53cbbbba6f08'
Example Response
null

Create Approval Request

POST
/internal/v1/instances/{instance_id}/approvals/request

Path Parameters

instance_id*Instance Id
Formatuuid

Request Body

application/json
  1. body
action*Action
Lengthlength <= 100
approver_person_id?|null
approver_role?Approver Role

Must be 'owner' or 'customer'

Match^(owner|customer)$
Default"customer"
customer_id*Customer Id
Formatuuid
expires_in_hours?Expires In Hours
Range1 <= value <= 168
Default24
idempotency_key?|

Caller-provided idempotency key for safe retries

notify_channel?|null
rule_id?|null
serialized_intent*

Full params to replay on approval

skill_slug*Skill Slug
Lengthlength <= 100

Response Body

Successful Response

response?unknownapplication/json
Example Request
curl -X POST 'https://example.com/internal/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/approvals/request' \  -H 'Content-Type: application/json' \  -d '{  "action": "string",  "customer_id": "160c0c4b-9966-4dc1-a916-8407eb10d74e",  "serialized_intent": {},  "skill_slug": "string"}'
Example Response
null

Resolve Approval

POST
/internal/v1/instances/{instance_id}/approvals/resolve

Path Parameters

instance_id*Instance Id
Formatuuid

Request Body

application/json
  1. body
action*Action

Must be 'approve' or 'reject'

Match^(approve|reject)$
approval_ref*Approval Ref

APR-xxxx reference

pin_verified*Pin Verified

Whether PIN was verified by caller — required, no default

resolution_channel?|null
resolved_by?|null
resolver_person_id?|

Person ID if approval targets a specific person

resolver_role*Resolver Role

Role of resolver

Match^(owner|customer)$

Response Body

Successful Response

response?unknownapplication/json
Example Request
curl -X POST 'https://example.com/internal/v1/instances/497f6eca-6276-4993-bfeb-53cbbbba6f08/approvals/resolve' \  -H 'Content-Type: application/json' \  -d '{  "action": "string",  "approval_ref": "string",  "pin_verified": true,  "resolver_role": "string"}'
Example Response
null

Tenant List Approvals

GET
/v1/approvals

Authorization

HTTPBearer
headerAuthorizationBearer <token>

Query Parameters

customer_id?|null
status?string|null
limit?Limit
Range1 <= value <= 200
Default50
offset?Offset
Range0 <= value
Default0

Response Body

Successful Response

response?unknownapplication/json
Example Request
curl -X GET 'https://example.com/v1/approvals'
Example Response
null