Operations
Submit, retrieve, and verify signed operation records. Operations are the core unit of accountability in Elydora — each one cryptographically captures a single agent action.
Submit Operation
POST
/v1/operations
Submit a signed Elydora Operation Record (EOR).
Auth: integration_engineer
Request Body (EOR)
| Field | Type | Required | Description |
|---|---|---|---|
| op_version | number | Yes | Protocol version (currently 1) |
| operation_id | string | Yes | Client-generated unique operation ID (UUID v4) |
| org_id | string | Yes | Organization identifier |
| agent_id | string | Yes | Submitting agent identifier |
| issued_at | string | Yes | ISO 8601 timestamp of operation creation |
| ttl_ms | number | Yes | Time-to-live in milliseconds (max window for submission) |
| nonce | string | Yes | Random nonce for replay protection |
| operation_type | string | Yes | Domain-specific operation type (e.g. loan.approve) |
| subject | string | Yes | Subject of the operation |
| action | string | Yes | Action performed |
| payload | object | Yes | Arbitrary JSON payload |
| payload_hash | string | Yes | SHA-256 hash of canonicalized payload |
| prev_chain_hash | string | Yes | Previous chain hash for this agent (or null for first) |
| agent_pubkey_kid | string | Yes | Key ID of the agent's signing key |
| signature | string | Yes | Ed25519 signature over the canonical EOR |
Example Request
bash
curl -X POST https://api.elydora.com/v1/operations \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"op_version": 1,
"operation_id": "550e8400-e29b-41d4-a716-446655440000",
"org_id": "org_acme",
"agent_id": "agent_underwriter",
"issued_at": "2026-02-28T14:00:00Z",
"ttl_ms": 30000,
"nonce": "a1b2c3d4e5f6",
"operation_type": "loan.approve",
"subject": "LN-2026-001",
"action": "approve",
"payload": { "loanId": "LN-2026-001", "amount": 50000 },
"payload_hash": "sha256:abc123...",
"prev_chain_hash": "sha256:def456...",
"agent_pubkey_kid": "kid_abc123",
"signature": "base64-ed25519-signature..."
}'Response
Returns an Elydora Acknowledgement Receipt (EAR) confirming the operation was received and sequenced.
json
{
"receipt_id": "rcpt_xyz789",
"operation_id": "550e8400-e29b-41d4-a716-446655440000",
"seq_no": 42,
"chain_hash": "sha256:ghi789...",
"server_received_at": "2026-02-28T14:00:01Z",
"elydora_signature": "base64-elydora-sig..."
}Get Operation
GET
/v1/operations/:operation_id
Retrieve a full operation record by ID.
Auth: readonly_investigator
Path Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| operation_id | string | Yes | UUID of the operation |
Response
json
{
"eor": {
"op_version": 1,
"operation_id": "550e8400-e29b-41d4-a716-446655440000",
"org_id": "org_acme",
"agent_id": "agent_underwriter",
"operation_type": "loan.approve",
"issued_at": "2026-02-28T14:00:00Z",
"payload": { "loanId": "LN-2026-001", "amount": 50000 },
"signature": "base64-ed25519-signature..."
},
"ear": {
"receipt_id": "rcpt_xyz789",
"seq_no": 42,
"chain_hash": "sha256:ghi789...",
"elydora_signature": "base64-elydora-sig..."
}
}Verify Operation
POST
/v1/operations/:operation_id/verify
Server-side verification of operation signature and chain integrity.
Auth: readonly_investigator
Response
json
{
"valid": true,
"checks": {
"signature_valid": true,
"chain_hash_valid": true,
"ttl_valid": true,
"replay_check": true,
"agent_status": "active"
}
}