{"schema":"bitterlog.api.index.v1","name":"BitterLog","description":"Append-only evidence workbench for agent-run logs, raw artifacts, annotations, and analytics.","docs_url":"https://bitterlog.com","request_access_url":"https://bitter.sh/signup","account_login_url":"https://bitter.sh/login","status_url":"https://api.bitterlog.com/api/v1/status","authentication":{"type":"Bearer token","account_authority":"bitterhub","account_authority_label":"Bitter account","default_path":"Use one Bitter account through the Bitter CLI or a relying-party service; the account runtime delegates short-lived account-scoped BitterLog credentials.","hub_delegation":{"endpoint":"/api/v1/auth/bitterhub/log/delegation","audience":"bitterlog","bundle_schema":"bitter.credential.bundle.v0","token_scopes":["read","write"],"display_safe":false,"note":"Delegation exchanges return bearer material for machines. Do not print, log, or display the returned credential bundle."},"header":"Authorization: Bearer <token>","alternate_header":"X-Bitterlog-Token: <token>","scopes":{"read":{"env":"BITTERLOG_READ_TOKEN","fallback_env":"BITTERLOG_INGEST_TOKEN","note":"Reads accept the read token, or the ingest token if no read token is configured."},"write":{"env":"BITTERLOG_INGEST_TOKEN","note":"Writes require the ingest token."}}},"endpoints":[{"method":"GET","path":"/api/v1","auth":"none","description":"This index. Lists endpoints, auth scopes, and where to request access."},{"method":"GET","path":"/api/v1/status","auth":"none","description":"Service status, version, ledger counts, and analytics availability."},{"method":"GET","path":"/api/v1/auth/session","auth":"optional_bearer","description":"Display-safe summary of the current BitterLog auth context without returning token material."},{"method":"POST","path":"/api/v1/auth/bitterhub/log/delegation","auth":"hub_assertion","description":"Exchange a Bitter account assertion for a short-lived account-scoped BitterLog credential bundle."},{"method":"GET","path":"/api/v1/agent_runs","auth":"read","description":"List recent agent run groups and their attached evidence."},{"method":"GET","path":"/api/v1/agent_runs/:run_id","auth":"read","description":"Inspect one agent run group with artifacts and source handles."},{"method":"GET","path":"/api/v1/events","auth":"read","description":"Search and list events from the append-only ledger."},{"method":"GET","path":"/api/v1/events/:id","auth":"read","description":"Read a single event by id."},{"method":"POST","path":"/api/v1/events","auth":"write","description":"Ingest one event or a batch of events."},{"method":"GET","path":"/api/v1/annotations","auth":"read","description":"List annotations attached to evidence."},{"method":"POST","path":"/api/v1/annotations","auth":"write","description":"Append an annotation over an event or bucket object."},{"method":"GET","path":"/api/v1/buckets/:bucket/objects","auth":"read","description":"List bucket objects (raw evidence) for a bucket."},{"method":"GET","path":"/api/v1/buckets/:bucket/objects/:id","auth":"read","description":"Read one bucket object, optionally body-only."},{"method":"POST","path":"/api/v1/buckets/:bucket/objects","auth":"write","description":"Store a bucket object (raw evidence) with a stable digest."},{"method":"GET","path":"/api/v1/analytics/patterns","auth":"read","description":"List the canned ClickHouse research patterns. Account-delegated reads are allowed."},{"method":"POST","path":"/api/v1/analytics/query","auth":"operator_read","description":"Run a read-only SELECT/WITH/SHOW/EXPLAIN/DESCRIBE against ClickHouse. Requires the configured read token; account-delegated credentials cannot run raw SQL."},{"method":"POST","path":"/api/v1/analytics/similar","auth":"account_read","description":"Project text and return nearest evidence by similarity. Account-delegated credentials are forced to their Bitter account scope."}],"secret_material_returned":false,"body_returned":false}