Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.esheria.ai/llms.txt

Use this file to discover all available pages before exploring further.

The API is designed for deterministic, source-backed workflows. Client code should use bounded timeouts, conservative retries, and idempotency keys on mutating requests.
SettingRecommended value
Request timeout30 seconds
Retry count2 for transient network failures
Retry methodsSafe GET requests and idempotent POST retries with the same idempotency key
Page sizeStart with limit=25; increase only when needed
The CLI uses:
export ESHERIA_TIMEOUT_SECONDS="30"
export ESHERIA_RETRY_COUNT="2"
You can override per command:
esheria --timeout 8 --retry-count 0 packs list --format json

Pagination

List endpoints use limit and offset.
curl --compressed -sS \
  "$ESHERIA_API_BASE_URL/api/v1/domain-packs/KE-DATA-PROTECTION/obligations?limit=25&offset=0" \
  -H "x-api-key: $ESHERIA_API_KEY" | jq

Failure Modes

SymptomMeaningAction
HTTP timeoutRuntime, network, or reverse-proxy issueRetry with bounded attempts and store the failed trace_id if present
429 or rate-limit responsePer-instance rate limit was exceededBack off and reduce request concurrency
409 idempotency_key_conflictSame key reused with different payloadGenerate a new idempotency key
Large responses are slowFull export or broad queryUse filters and pagination before exporting a whole pack

Production Notes

Current rate limiting is process-local. Horizontally scaled deployments should use a shared limiter at the gateway or reverse-proxy layer.