The base URL is https://dfrds.com/api/v1 (https://sandbox.dfrds.com/api/v1
on the sandbox, whose keys are separate). Every request carries
Authorization: Bearer dfk_…, except the keyless ones. The citation
resolver and GET /public/status, the status page as JSON (up to
60 times a minute per address, cacheable for a minute with an ETag), are
public. So are the other /public/… endpoints, the data behind the explorer,
prices, tracking and timeline pages: no key, the pages’ own rules (a module
staff switched off is off here too), up to 600 requests a minute per address
and 120 for the explorer’s address and event lenses, and cacheable for a
minute. /session and /session/search answer for the person signed in at
dfrds.com, with the browser’s session: they are what the new app at /app
reads, not an integration surface. The
interactive reference has request and response examples for each
row below and the OpenAPI document is the source of
both: this page is generated from it when it is rendered, so it cannot list an
endpoint we no longer have or miss one we do. If you are new to the API, start
with the first call.
Conventions
- Scopes.
readis every GET; a write names its own scope (research:write
orexports). A key without the scope gets 403missing_scope, naming the
scope it lacks. - Pages. Lists page by opaque cursor: pass back
next_cursor(or follow the
Link: <…>; rel="next"header) until it is null. No list returns more than
500 rows. - Rate limits. Per key, per clock hour, from the plan; every response
carriesX-RateLimit-LimitandX-RateLimit-Remaining, and a 429 resets on
the hour. - Errors. JSON with a stable
errorcode and adetailsentence:
invalid_or_revoked_key,plan_has_no_api_access,missing_scope,
ip_not_allowed,rate_limited,invalid_cursor,not_found,
data_source_unavailable, and per endpoint the codes its row in the
reference names. - Nulls are unknowns. A null figure means it could not be derived. It never
means zero.
Endpoints
Path parameters are shown in braces; everything else is a query parameter or a
body field.
Account
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /me |
The organization, plan, entitlements and limits behind this key | read |
|
GET /status |
Warehouse reachability and ingest lag | read |
|
GET /session/organizations/{organization_id}/api_keys |
An organization’s API keys (its admins) | none (public) | {organization_id} |
POST /session/organizations/{organization_id}/api_keys |
Mint an API key (its admins) | none (public) | {organization_id}, X-CSRF-Token |
DELETE /session/organizations/{organization_id}/api_keys/{id} |
Revoke an API key (its admins) | none (public) | {organization_id}, {id}, X-CSRF-Token |
GET /session/organizations/{organization_id}/webhooks |
An organization’s webhook endpoints (its admins) | none (public) | {organization_id} |
POST /session/organizations/{organization_id}/webhooks |
Add a webhook endpoint (its admins) | none (public) | {organization_id}, X-CSRF-Token |
PATCH /session/organizations/{organization_id}/webhooks/{id} |
Re-enable a webhook endpoint (its admins) | none (public) | {organization_id}, {id}, X-CSRF-Token |
DELETE /session/organizations/{organization_id}/webhooks/{id} |
Remove a webhook endpoint (its admins) | none (public) | {organization_id}, {id}, X-CSRF-Token |
POST /session/organizations/{organization_id}/api_keys/{id}/rotate |
Rotate an API key (its admins) | none (public) | {organization_id}, {id}, X-CSRF-Token |
POST /session/organizations/{organization_id}/webhooks/{id}/rotate_secret |
Give a webhook endpoint a new signing secret (its admins) | none (public) | {organization_id}, {id}, X-CSRF-Token |
GET /session/account |
The signed-in person’s account page | none (public) | |
PATCH /session/account |
Save the profile | none (public) | X-CSRF-Token |
DELETE /session/account |
Delete the account | none (public) | X-CSRF-Token |
PATCH /session/account/password |
Change the password | none (public) | X-CSRF-Token |
DELETE /session/account/sessions |
Sign out everywhere else | none (public) | X-CSRF-Token |
POST /session/account/export |
Export my data | none (public) | X-CSRF-Token |
POST /session/account/two_factor/setup |
Start (or resume) two-factor setup | none (public) | X-CSRF-Token |
POST /session/account/two_factor |
Confirm the authenticator with a code | none (public) | X-CSRF-Token |
DELETE /session/account/two_factor |
Turn two-factor off | none (public) | X-CSRF-Token |
POST /session/account/two_factor/recovery_codes |
New recovery codes | none (public) | X-CSRF-Token |
POST /session/account/two_factor/replace |
Replace the authenticator | none (public) | X-CSRF-Token |
DELETE /session/account/two_factor/replace |
Keep the current authenticator | none (public) | X-CSRF-Token |
Platform
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /public/status |
The status page as JSON (public, no key) | none (public) | |
GET /public/auth |
How the SPA signs in (public, no key) | none (public) | |
GET /public/site |
The public site’s facts (public, no key) | none (public) | |
GET /public/home |
The landing page (public, no key) | none (public) | |
GET /public/plans |
The pricing page’s plans (public, no key) | none (public) | |
GET /public/about |
What the about page lists as covered today (public, no key) | none (public) | |
GET /public/api_reference |
The API reference page (public, no key) | none (public) | |
GET /public/docs |
The documentation index (public, no key) | none (public) | q, audience |
GET /public/docs/{slug} |
One guide (public, no key) | none (public) | {slug} |
GET /public/legal |
The legal documents (public, no key) | none (public) | |
GET /public/legal/{slug} |
One legal document (public, no key) | none (public) | {slug} |
GET /public/blog |
The blog’s published articles (public, no key) | none (public) | category |
GET /public/blog/{slug} |
One published article (public, no key) | none (public) | {slug} |
Markets
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /tokens |
Token symbols that trade in a tracked market | read |
q, limit, cursor |
GET /pairs |
Pools trading a pair, ranked by activity | read |
base, quote, q, source, limit |
GET /pools/{address}/prices |
OHLC and volume bars for one pool | read |
{address}, period, from, to |
Lending
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /liquidations |
Aave-style liquidations, newest first | read |
protocol, collateral, from, to, block_from, block_to, limit, cursor |
GET /health_factors |
Aave-style health factors at a snapshot block | read |
protocol, block, account, min_hf, max_hf, limit, cursor |
GET /absorptions |
Compound v3 absorptions, newest first | read |
market, from, to, limit, cursor |
Events
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /events |
The sourced event registry (the timeline) | read |
category, chain, from, to, limit, cursor |
Charts
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /charts/{source} |
The series behind a research chart, by source | read |
{source}, protocol, deployment, block, pool, period, from, to, category, events |
Datasets
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /datasets |
The data catalogue | read |
|
POST /datasets/{key}/requests |
Create and submit an export | exports |
{key} |
GET /datasets/requests/{id} |
Poll an export | exports |
{id} |
GET /datasets/requests/{id}/download |
Fetch a completed export | exports |
{id}, format |
Citations
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /session/citations/transactions/{hash} |
The citable fields of one transaction | none (public) | {hash} |
POST /session/citations |
Cite one decoded field | none (public) | X-CSRF-Token |
DELETE /session/citations/{id} |
Remove a citation of the active space | none (public) | {id}, X-CSRF-Token |
GET /public/citations/{hash} |
One citation record as its page prints it (public, no key) | none (public) | {hash} |
POST /citations |
Cite a price series, a dataset query or a computed figure | research:write |
|
GET /citations/{hash} |
Resolve a citation hash (public, no key) | none (public) | {hash} |
Research
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /session/research |
The research workspace index | none (public) | |
GET /session/research/trash |
Discarded projects and pages, and how long they are kept | none (public) | |
POST /session/research/projects |
Start a project in the active space | none (public) | X-CSRF-Token |
GET /session/research/projects/{id} |
A project’s folder tree, its pages and the space’s templates | none (public) | {id} |
PATCH /session/research/projects/{id} |
Rename a project or change its description (editors) | none (public) | {id}, X-CSRF-Token |
DELETE /session/research/projects/{id} |
Move a project to the trash (owners) | none (public) | {id}, X-CSRF-Token |
PATCH /session/research/projects/{id}/restore |
Bring a project back from the trash (owners) | none (public) | {id}, X-CSRF-Token |
POST /session/research/projects/{id}/folders |
Make a folder in a project (editors) | none (public) | {id}, X-CSRF-Token |
PATCH /session/research/projects/{id}/folders/{folder_id} |
Rename a folder (editors) | none (public) | {id}, {folder_id}, X-CSRF-Token |
DELETE /session/research/projects/{id}/folders/{folder_id} |
Delete a folder and the pages in it (editors) | none (public) | {id}, {folder_id}, X-CSRF-Token |
POST /session/research/projects/{project_id}/pages |
Make a page in a project (editors), optionally from a template | none (public) | {project_id}, X-CSRF-Token |
GET /session/research/pages/{id} |
A research page as its reader sees it | none (public) | {id} |
PATCH /session/research/pages/{id} |
Change a page’s own fields (editors) | none (public) | {id}, X-CSRF-Token |
DELETE /session/research/pages/{id} |
Move a page to the trash (owners) | none (public) | {id}, X-CSRF-Token |
PATCH /session/research/pages/{id}/restore |
Bring a page back from the trash (editors) | none (public) | {id}, X-CSRF-Token |
GET /session/research/pages/{id}/export |
Download the page | none (public) | {id}, format |
PATCH /session/research/pages/{id}/verify |
Claim the page was checked against chain data (owners) | none (public) | {id}, X-CSRF-Token |
PATCH /session/research/pages/{id}/publish |
Publish the page (owners) | none (public) | {id}, X-CSRF-Token |
PATCH /session/research/pages/{id}/unpublish |
Withdraw a published page (owners) | none (public) | {id}, X-CSRF-Token |
GET /session/research/pages/{id}/document |
The page body as the editor’s document | none (public) | {id} |
POST /session/research/pages/{id}/document |
Save the editor’s document as the tab closes (a beacon) | none (public) | {id} |
PUT /session/research/pages/{id}/document |
Save the editor’s document (editors) | none (public) | {id}, X-CSRF-Token |
GET /session/research/pages/{id}/comments |
Every comment on the page, oldest first | none (public) | {id}, limit, cursor |
POST /session/research/pages/{id}/comments |
Comment on a block, reply, or add to the page discussion (commenters) | none (public) | {id}, X-CSRF-Token |
PATCH /session/research/pages/{id}/comments/{comment_id}/resolve |
Resolve a thread (commenters) | none (public) | {id}, {comment_id}, X-CSRF-Token |
PATCH /session/research/pages/{id}/comments/{comment_id}/reopen |
Reopen a resolved thread (commenters) | none (public) | {id}, {comment_id}, X-CSRF-Token |
DELETE /session/research/pages/{id}/comments/{comment_id} |
Remove your own comment | none (public) | {id}, {comment_id}, X-CSRF-Token |
POST /session/research/pages/{id}/guest_passes |
Create a review link for one outside reader (owners) | none (public) | {id}, X-CSRF-Token |
DELETE /session/research/pages/{id}/guest_passes/{pass_id} |
Revoke a review link (owners) | none (public) | {id}, {pass_id}, X-CSRF-Token |
POST /session/research/blocks/{id}/refresh |
Fetch now (a chain-native block) or Re-derive now (a live value) | none (public) | {id}, X-CSRF-Token |
GET /public/review/{token} |
One unpublished page for the outside reviewer holding its link | none (public) | {token} |
GET /public/published_pages/{slug} |
A published research page (public, no key) | none (public) | {slug} |
GET /research/pages |
Research pages this key can reach, newest first | read |
limit, cursor |
POST /research/pages |
Create a research page in a project | research:write |
|
GET /research/pages/{id} |
One research page, its blocks and its cited values | read |
{id} |
PATCH /research/pages/{id} |
Rename a page, move its status, or retag it | research:write |
{id} |
DELETE /research/pages/{id} |
Move a page to the trash | research:write |
{id} |
GET /research/pages/{id}/document |
The page body as one document | read |
{id} |
PUT /research/pages/{id}/document |
Put a whole document back | research:write |
{id} |
GET /research/pages/{id}/comments |
The review comments on a page, oldest first | read |
{id}, limit, cursor |
POST /research/pages/{id}/comments |
Open a thread on a block, or reply in one | research:write |
{id} |
POST /research/pages/{id}/export |
Download the page’s bundle | exports |
{id}, format |
GET /research/projects |
Research projects this key can reach, newest first | read |
limit, cursor |
POST /research/pages/{id}/blocks |
Append a block to a research page | research:write |
{id} |
GET /session/research/pages/{id}/pick |
What @ and [[ list from a page |
none (public) | {id}, kind, q |
POST /session/research/pages/{id}/pick |
Create page, from the [[ picker (editors) |
none (public) | {id}, X-CSRF-Token |
GET /session/research/pages/{id}/citable_fields |
The decoded fields “Cite a field” lists | none (public) | {id}, tx_hash, chain |
POST /session/research/pages/{id}/cite |
Cite one decoded field into the page’s space (editors) | none (public) | {id}, X-CSRF-Token |
GET /session/research/pages/{id}/editor_options |
The derived builder’s choices and the viewer’s upload rules | none (public) | {id} |
POST /session/research/pages/{id}/derived_preview |
Preview a derived value | none (public) | {id}, X-CSRF-Token |
POST /session/research/pages/{id}/derive |
Insert as live value (editors) | none (public) | {id}, X-CSRF-Token |
POST /session/research/pages/{id}/uploads |
Sign a direct upload for an image or file block (editors) | none (public) | {id}, X-CSRF-Token |
GET /session/research/pages/{id}/history |
A page’s history (any member of its space) | none (public) | {id} |
PATCH /session/research/pages/{id}/versions/{version_id}/restore |
Put one block back to a past state (editors) | none (public) | {id}, {version_id}, X-CSRF-Token |
GET /session/research/pages/{id}/page-versions/compare |
Two states of a page compared, block by block | none (public) | {id}, from, to |
POST /session/research/pages/{id}/page-versions |
Name this version (editors) | none (public) | {id}, X-CSRF-Token |
GET /session/research/pages/{id}/page-versions/{version_id} |
A page version, read-only | none (public) | {id}, {version_id} |
POST /session/research/pages/{id}/page-versions/{version_id}/restore |
Put the whole page back to a version (editors) | none (public) | {id}, {version_id}, X-CSRF-Token |
POST /session/research/pages/{id}/templates |
Save the page’s blocks as a template of its space (editors) | none (public) | {id}, X-CSRF-Token |
POST /session/research/pages/{id}/import |
Import markdown into the page (editors) | none (public) | {id}, X-CSRF-Token |
GET /session/research/projects/{id}/board |
A project’s pipeline board | none (public) | {id}, group_by, view_id |
GET /session/research/projects/{id}/table |
A project’s pages as a table | none (public) | {id}, view_id, q, sort, columns[], properties |
GET /session/research/projects/{id}/tags |
The tag field’s completions | none (public) | {id}, q |
GET /session/research/pages/{id}/properties |
A page’s property values | none (public) | {id} |
PATCH /session/research/pages/{id}/properties |
Set a page’s property values (editors) | none (public) | {id}, X-CSRF-Token |
GET /session/research/property_definitions/{id}/candidates |
The relation picker’s candidates | none (public) | {id}, q, except |
POST /session/research/views |
Save a view of a project | none (public) | X-CSRF-Token |
DELETE /session/research/views/{id} |
Remove a saved view (its creator) | none (public) | {id}, X-CSRF-Token |
PATCH /session/research/views/{id}/toggle_shared |
Share a saved view with the space, or take it back (its creator) | none (public) | {id}, X-CSRF-Token |
GET /session/research/search |
Search your research (the long form) | none (public) | q |
GET /session/research/pages/{id}/saved_items |
The page’s saved-item cards, ten to a page | none (public) | {id}, page |
POST /session/research/pages/{id}/presence |
The presence heartbeat, and who else is on the page | none (public) | {id}, X-CSRF-Token |
GET /session/research/pages/{id}/threads |
One thread group as the rail shows it | none (public) | {id}, block_id |
GET /session/research/assistant |
Ask your own research | none (public) | q |
GET /session/research/pages/{id}/assistant |
The assistant panel’s opening state | none (public) | {id} |
POST /session/research/pages/{id}/assistant |
One turn of the assistant, as Server-Sent Events | none (public) | {id}, X-CSRF-Token |
POST /session/research/pages/{id}/assistant/apply |
Apply an assistant proposal (editors) | none (public) | {id}, X-CSRF-Token |
GET /session/research/pages/{id}/suggest_metadata |
Suggested tags and a one-line finding (editors) | none (public) | {id} |
Explorer
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /public/resolve |
What a typed string names on chain (public, no key) | none (public) | q, as |
GET /public/explorer |
The explorer’s idle console (public, no key) | none (public) | chain |
GET /public/explorer/address/{address} |
Logs touching an address (public, no key) | none (public) | {address}, chain, block_from, block_to, date_from, date_to, topic0, before, after |
GET /public/explorer/events/{topic} |
Logs carrying an event signature (public, no key) | none (public) | {topic}, chain, block_from, block_to, date_from, date_to, before, after |
GET /public/blocks/{number} |
One block and its transactions (public, no key) | none (public) | {number}, chain, expect_hash, cursor, limit |
GET /public/transactions/{hash} |
One transaction, its receipt and decoded logs (public, no key) | none (public) | {hash}, chain |
Prices
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /public/prices |
The price finder (public, no key) | none (public) | base, quote, source, chain |
GET /public/prices/{address} |
One pool’s price chart (public, no key) | none (public) | {address}, period, range, from, to, invert, compare, chain |
Tracking
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /public/tracking |
The tracked protocols, live and planned (public, no key) | none (public) | |
GET /public/tracking/{slug} |
One protocol’s tracking page (public, no key) | none (public) | {slug}, chain, range, from, to |
GET /public/tracking/{slug}/liquidations |
A pool lender’s liquidation dataset (public, no key) | none (public) | {slug}, chain, symbol, from, to, range, cursor, limit |
GET /public/tracking/{slug}/accounts/{address} |
One account’s position on a pool lender (public, no key) | none (public) | {slug}, {address}, chain |
Timeline
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /public/timeline |
The event timeline as JSON (public, no key) | none (public) | category, chain, from, to, verified, limit, cursor |
GET /public/timeline/{id} |
One timeline event with its provenance (public, no key) | none (public) | {id} |
Session
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /session |
Who the SPA is talking to (the Rails session) | none (public) | |
GET /session/search |
The search bar’s results for the signed-in person | none (public) | q |
POST /auth/exchange |
Redeem an Accounts sign-in (the SPA’s BFF) | none (public) | X-DFRDS-Client |
POST /auth/refresh |
Rotate the Accounts refresh token (the SPA’s BFF) | none (public) | X-DFRDS-Client |
POST /auth/logout |
Sign out of Accounts here (the SPA’s BFF) | none (public) | X-DFRDS-Client |
GET /session/cable_token |
A ticket for the next Action Cable connection | none (public) | |
GET /session/billing |
The billing page of an organization the viewer admins | none (public) | organization_id |
GET /session/billing/dunning |
The dunning banner | none (public) | |
POST /session/billing/checkout |
Start Stripe Checkout for a plan | none (public) | X-CSRF-Token |
POST /session/billing/portal |
Open the Stripe Billing Portal | none (public) | X-CSRF-Token |
POST /session/billing/seats |
Change the seat count, or buy more seats | none (public) | X-CSRF-Token |
GET /session/billing/seat_quote |
BILLING_PROVIDER=crm: what more seats cost | none (public) | organization_id, seats |
GET /session/billing/bundles |
BILLING_PROVIDER=crm: the bundles on sale | none (public) | organization_id |
POST /session/billing/bundles |
BILLING_PROVIDER=crm: buy a bundle | none (public) | X-CSRF-Token |
GET /session/organizations/{id}/invoicing |
An institution’s invoicing details | none (public) | {id} |
PATCH /session/organizations/{id}/invoicing |
Save an institution’s invoicing details | none (public) | {id}, X-CSRF-Token |
GET /session/sudo |
The recent-password window | none (public) | |
POST /session/sudo |
Confirm the password, opening the window | none (public) | X-CSRF-Token |
POST /session/admin/impersonations |
View as a user (staff) | none (public) | X-CSRF-Token |
DELETE /session/admin/impersonation |
Return to your own account | none (public) | X-CSRF-Token |
GET /session/admin/blog_posts |
The blog’s editorial desk (staff) | none (public) | category |
POST /session/admin/blog_posts |
Write a post (staff) | none (public) | X-CSRF-Token |
GET /session/admin/blog_posts/new |
What a new post starts as (staff) | none (public) | |
POST /session/admin/blog_posts/preview |
Preview a post as /blog will show it (staff) | none (public) | X-CSRF-Token |
GET /session/admin/blog_posts/{id} |
A post, as the edit form reads it (staff) | none (public) | |
PATCH /session/admin/blog_posts/{id} |
Edit a post (staff) | none (public) | X-CSRF-Token |
DELETE /session/admin/blog_posts/{id} |
Delete a post (staff) | none (public) | X-CSRF-Token |
PATCH /session/admin/blog_posts/{id}/publish |
Publish a post (staff) | none (public) | X-CSRF-Token |
PATCH /session/admin/blog_posts/{id}/unpublish |
Withdraw a post from the blog (staff) | none (public) | X-CSRF-Token |
GET /session/admin/chain_events |
The timeline’s curation desk (staff) | none (public) | q, category |
POST /session/admin/chain_events |
Add an event (staff) | none (public) | X-CSRF-Token |
GET /session/admin/chain_events/new |
What a new event starts as (staff) | none (public) | |
POST /session/admin/chain_events/import |
Import from the provider registry (staff) | none (public) | X-CSRF-Token |
GET /session/admin/chain_events/{id} |
An event, as the edit form reads it (staff) | none (public) | |
PATCH /session/admin/chain_events/{id} |
Edit an event (staff) | none (public) | X-CSRF-Token |
DELETE /session/admin/chain_events/{id} |
Remove an event from the timeline (staff) | none (public) | X-CSRF-Token |
PATCH /session/admin/chain_events/{id}/score |
Score an event’s severity (staff) | none (public) | X-CSRF-Token |
PATCH /session/admin/chain_events/{id}/verify_anchors |
Check an event’s transactions against the chain (staff) | none (public) | X-CSRF-Token |
POST /session/admin/status_notes |
Post a notice to the status page (staff) | none (public) | X-CSRF-Token |
PATCH /session/admin/status_notes/{id}/resolve |
Resolve a status notice (staff) | none (public) | X-CSRF-Token |
GET /session/admin/demo_sessions |
The demonstration accounts (alpha, development and sandbox) | none (public) | |
POST /session/admin/demo_sessions |
Review the platform as a demonstration account (alpha) | none (public) | X-CSRF-Token |
GET /session/admin/users |
The user roster (staff) | none (public) | q |
PATCH /session/admin/users/{id}/update_role |
Change a user’s platform role (staff) | none (public) | {id}, X-CSRF-Token |
PATCH /session/admin/users/{id}/update_subscription |
Grant or cancel a courtesy subscription (staff) | none (public) | {id}, X-CSRF-Token |
PATCH /session/admin/users/{id}/toggle_disabled |
Disable or re-enable an account (staff) | none (public) | {id}, X-CSRF-Token |
PATCH /session/admin/users/{id}/reset_two_factor |
Clear a user’s second factor (staff) | none (public) | {id}, X-CSRF-Token |
PATCH /session/admin/users/{id}/sign_out_everywhere |
End every session a user has open (staff) | none (public) | {id}, X-CSRF-Token |
PATCH /session/admin/users/{id}/revoke_api_keys |
Revoke the API keys of a user’s organizations (staff) | none (public) | {id}, X-CSRF-Token |
GET /session/admin/organizations |
The tenant list (staff) | none (public) | q, kind, status |
GET /session/admin/organizations/{id} |
One tenant in depth (staff) | none (public) | {id} |
PATCH /session/admin/organizations/{id} |
Edit the staff settings (staff) | none (public) | {id}, X-CSRF-Token |
PATCH /session/admin/organizations/{id}/update_subscription |
Grant or cancel a courtesy subscription (staff) | none (public) | {id}, X-CSRF-Token |
POST /session/admin/organizations/{id}/invoice_subscription |
Start an invoiced subscription (staff) | none (public) | {id}, X-CSRF-Token |
PATCH /session/admin/organizations/{id}/override_entitlement |
Override one feature whatever the plan says (staff) | none (public) | {id}, X-CSRF-Token |
PATCH /session/admin/organizations/{id}/suspend |
Suspend an organization (staff) | none (public) | {id}, X-CSRF-Token |
PATCH /session/admin/organizations/{id}/restore |
Lift a suspension (staff) | none (public) | {id}, X-CSRF-Token |
DELETE /session/admin/organizations/{id}/clear_overrides |
Clear the entitlement overrides (staff) | none (public) | {id}, X-CSRF-Token |
GET /session/admin/staff |
Who is staff (alpha) | none (public) | |
GET /session/admin/staff/{id} |
One staff member’s permissions (alpha) | none (public) | {id} |
PATCH /session/admin/staff/{id} |
Edit a staff member’s permissions (alpha) | none (public) | {id}, X-CSRF-Token |
PATCH /session/admin/staff/{id}/promote |
Make someone staff (alpha) | none (public) | {id}, X-CSRF-Token |
DELETE /session/admin/staff/{id}/demote |
Remove someone’s staff access (alpha) | none (public) | {id}, X-CSRF-Token |
GET /session/partner |
The partner console’s front page | none (public) | |
GET /session/partner/organizations |
The institutions a partner sponsors | none (public) | |
POST /session/partner/organizations |
Set up an institution | none (public) | X-CSRF-Token |
GET /session/partner/organizations/new |
The new-institution form | none (public) | |
GET /session/partner/organizations/{id} |
One institution a partner sponsors | none (public) | {id} |
POST /session/partner/organizations/{id}/invite |
Invite an institution’s first admin | none (public) | X-CSRF-Token, {id} |
GET /session/partner/sales |
A partner’s sales and earnings | none (public) | |
POST /session/partner/sales |
Sell a bundle to an institution | none (public) | X-CSRF-Token |
GET /session/partner/sales/new |
The sell-a-bundle form | none (public) | |
GET /session/partner/statements |
A partner’s monthly statements | none (public) | |
GET /session/partner/statements/{id} |
One monthly statement | none (public) | {id} |
GET /session/admin/partners |
The partners (staff) | none (public) | |
POST /session/admin/partners |
Create a partner (staff) | none (public) | X-CSRF-Token |
GET /session/admin/partners/new |
The new-partner form (staff) | none (public) | |
GET /session/admin/partners/{id} |
A partner’s page (staff) | none (public) | {id} |
PATCH /session/admin/partners/{id} |
Change a partner’s terms (staff) | none (public) | X-CSRF-Token, {id} |
PATCH /session/admin/partners/{id}/end_partnership |
End a partnership (staff) | none (public) | X-CSRF-Token, {id} |
POST /session/admin/partners/{id}/assign_user |
Make someone a partner administrator (staff) | none (public) | X-CSRF-Token, {id} |
DELETE /session/admin/partners/{id}/unassign_user |
Return a partner administrator to a member (staff) | none (public) | X-CSRF-Token, {id} |
POST /session/admin/partners/{partner_id}/statements |
Build and issue a month’s statement (staff) | none (public) | X-CSRF-Token, {partner_id} |
GET /session/admin/partners/{partner_id}/statements/{id} |
One partner statement (staff) | none (public) | {partner_id}, {id} |
POST /session/admin/partners/{partner_id}/statements/{id}/mark_paid |
Record a statement’s payout (staff) | none (public) | X-CSRF-Token, {partner_id}, {id} |
GET /session/admin/bundles |
The bundle catalogue (staff) | none (public) | |
POST /session/admin/bundles |
Create a bundle (staff) | none (public) | X-CSRF-Token |
GET /session/admin/bundles/new |
The new-bundle form (staff) | none (public) | |
GET /session/admin/bundles/{id} |
A bundle’s page (staff) | none (public) | {id} |
PATCH /session/admin/bundles/{id} |
Change a bundle (staff) | none (public) | X-CSRF-Token, {id} |
POST /session/admin/bundles/{id}/authorize_partner |
Let a partner sell a bundle (staff) | none (public) | X-CSRF-Token, {id} |
DELETE /session/admin/bundles/{id}/revoke_partner |
Stop a partner selling a bundle (staff) | none (public) | X-CSRF-Token, {id} |
GET /session/admin/dashboard |
The staff overview (any staff) | none (public) | |
GET /session/admin/plans |
Every plan (plans_manage) | none (public) | |
POST /session/admin/plans |
Create a plan (plans_manage) | none (public) | X-CSRF-Token |
GET /session/admin/plans/new |
A new plan’s form (plans_manage) | none (public) | |
GET /session/admin/plans/{id} |
One plan’s form (plans_manage) | none (public) | {id} |
PATCH /session/admin/plans/{id} |
Change a plan (plans_manage) | none (public) | {id}, X-CSRF-Token |
GET /session/admin/modules |
The platform’s modules (modules_manage) | none (public) | |
PATCH /session/admin/modules/{id}/toggle |
Switch a module on or off (modules_manage) | none (public) | {id}, X-CSRF-Token |
GET /session/admin/billing |
The payments monitor’s overview (billing_manage) | none (public) | |
GET /session/admin/billing/receivables |
The receivables ledger (billing_manage) | none (public) | |
GET /session/admin/clickhouse |
Warehouse health (audit_view) | none (public) | |
GET /session/admin/clickhouse/decode_coverage |
Decode coverage of the recent log stream (audit_view) | none (public) | |
GET /session/admin/audit |
The whole audit log (audit_view) | none (public) | actor, action_filter, target_type, target_id, organization_id, from, to, cursor, limit |
GET /session/admin/coverage |
The protocol candidate registry (audit_view) | none (public) | chain |
GET /session/admin/spa_routes |
The SPA routes switchboard (modules_manage) | none (public) | |
PATCH /session/admin/spa_routes/{key}/toggle |
Switch one SPA route on or off (modules_manage) | none (public) | {key}, X-CSRF-Token |
Library
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /session/library |
The signed-in person’s library (saved views and favourite pairs) | none (public) | |
POST /session/saved_queries |
Save a finder search or a chart view | none (public) | X-CSRF-Token |
DELETE /session/saved_queries/{id} |
Remove a saved view | none (public) | {id}, X-CSRF-Token |
POST /session/watchlist |
Favourite a pair (a tracked market, by pool address) | none (public) | X-CSRF-Token |
DELETE /session/watchlist/{id} |
Remove a favourite | none (public) | {id}, X-CSRF-Token |
Alerts
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /session/alerts |
The alert centre (the Rails session) | none (public) | |
PATCH /session/alerts/email_frequency |
Set the alert email cadence | none (public) | X-CSRF-Token |
POST /session/alerts/prices |
Set a price threshold on a pool | none (public) | X-CSRF-Token |
PATCH /session/alerts/prices/{id}/rearm |
Re-arm a fired price threshold | none (public) | {id}, X-CSRF-Token |
DELETE /session/alerts/prices/{id} |
Remove a price threshold for the whole space | none (public) | {id}, X-CSRF-Token |
POST /session/alerts/watches |
Watch a token’s liquidations, or the timeline | none (public) | X-CSRF-Token |
PATCH /session/alerts/watches/{id}/rearm |
Re-arm a fired watch | none (public) | {id}, X-CSRF-Token |
DELETE /session/alerts/watches/{id} |
Remove a watch for the whole space | none (public) | {id}, X-CSRF-Token |
Notifications
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /session/notifications |
The inbox (the newest 100) | none (public) | |
PATCH /session/notifications/read_all |
Mark every notification read | none (public) | X-CSRF-Token |
PATCH /session/notifications/{id}/read |
Mark one notification read | none (public) | {id}, X-CSRF-Token |
Data
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /session/data |
The data catalogue for the signed-in reader (the SPA’s /app/data) | none (public) | |
GET /session/data/categories/{category} |
One category’s datasets | none (public) | {category} |
GET /session/data/datasets/{key} |
A dataset’s query manager | none (public) | {key} |
POST /session/data/datasets/{key}/requests |
Build and size a draft export | none (public) | {key}, X-CSRF-Token |
GET /session/data/requests |
The reader’s exports, newest first (/data/exports) | none (public) | |
GET /session/data/requests/{id} |
One export as its page shows it | none (public) | {id} |
POST /session/data/requests/{id}/submit |
Run a draft export | none (public) | {id}, X-CSRF-Token |
GET /session/data/requests/{id}/download |
The export’s download link, as JSON | none (public) | {id} |
Classroom
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /session/classroom |
The viewer’s assignments and the organizations they may pin for | none (public) | |
POST /session/classroom |
Pin a price series or a dataset query for a class | none (public) | X-CSRF-Token |
GET /session/classroom/{join_code} |
One assignment, by its join code | none (public) | {join_code} |
Onboarding
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /session/onboarding |
The first-steps checklist | none (public) | |
PATCH /session/onboarding/dismiss |
Put the checklist away | none (public) | X-CSRF-Token |
Spaces
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /session/spaces |
The signed-in person’s research spaces | none (public) | |
POST /session/spaces |
Make a space | none (public) | X-CSRF-Token |
GET /session/spaces/{id} |
One space, its members and its property schema | none (public) | {id} |
PATCH /session/spaces/{id} |
Rename a space (owners) | none (public) | {id}, X-CSRF-Token |
POST /session/spaces/{id}/activate |
Work in this space | none (public) | {id}, X-CSRF-Token |
POST /session/spaces/{id}/leave |
Leave a space | none (public) | {id}, X-CSRF-Token |
POST /session/spaces/{space_id}/memberships |
Invite a member by the email of an existing account (owners) | none (public) | {space_id}, X-CSRF-Token |
DELETE /session/spaces/{space_id}/memberships/{id} |
Remove a member (owners) | none (public) | {space_id}, {id}, X-CSRF-Token |
POST /session/spaces/{space_id}/properties |
Add a page property to the space’s schema (owners and editors) | none (public) | {space_id}, X-CSRF-Token |
PATCH /session/spaces/{space_id}/properties/{id} |
Rename a property or change a select’s options (owners and editors) | none (public) | {space_id}, {id}, X-CSRF-Token |
DELETE /session/spaces/{space_id}/properties/{id} |
Remove a property and every value it held (owners and editors) | none (public) | {space_id}, {id}, X-CSRF-Token |
Organizations
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /session/organizations |
The organizations the signed-in person can open | none (public) | |
GET /session/organizations/{id} |
One organization’s page | none (public) | {id} |
PATCH /session/organizations/{id} |
Change the organization’s settings (admins) | none (public) | {id}, X-CSRF-Token |
GET /session/organizations/{id}/audit |
What happened in the organization (admins) | none (public) | {id}, action_filter, from, to |
POST /session/organizations/{id}/verify_domain |
Check the email domain’s TXT record now (admins) | none (public) | {id}, X-CSRF-Token |
POST /session/organizations/{id}/rotate_domain_token |
Generate a new TXT record for the email domain (admins) | none (public) | {id}, X-CSRF-Token |
PATCH /session/organizations/{organization_id}/memberships/{id} |
Change a member’s role (admins, staff with orgs_manage) | none (public) | {organization_id}, {id}, X-CSRF-Token |
DELETE /session/organizations/{organization_id}/memberships/{id} |
Remove a member, or leave | none (public) | {organization_id}, {id}, X-CSRF-Token |
POST /session/organizations/{organization_id}/invitations |
Invite by email (admins) | none (public) | {organization_id}, X-CSRF-Token |
DELETE /session/organizations/{organization_id}/invitations/{id} |
Withdraw a pending invitation (admins) | none (public) | {organization_id}, {id}, X-CSRF-Token |
PATCH /session/organizations/{organization_id}/sso |
Save the identity provider (admins) | none (public) | {organization_id}, X-CSRF-Token |
POST /session/organizations/{organization_id}/sso/test |
Start a test connection with the identity provider (admins) | none (public) | {organization_id}, X-CSRF-Token |
Notes
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
POST /session/notes/lookup |
The notes the viewer’s space holds on a page’s values | none (public) | X-CSRF-Token |
POST /session/value_notes |
A global note on a value | none (public) | X-CSRF-Token |
PATCH /session/value_notes/{id} |
Change a global note’s words or colour | none (public) | {id}, X-CSRF-Token |
DELETE /session/value_notes/{id} |
Remove a global note everywhere | none (public) | {id}, X-CSRF-Token |
POST /session/annotations |
Annotate a field of a research block or a saved copy | none (public) | X-CSRF-Token |
PATCH /session/annotations/{id} |
Change an annotation | none (public) | {id}, X-CSRF-Token |
DELETE /session/annotations/{id} |
Remove an annotation | none (public) | {id}, X-CSRF-Token |
GET /session/research/pages/{id}/annotations |
A page’s annotation view | none (public) | {id} |
Saved_items
| Endpoint | What it does | Scope | Parameters |
|---|---|---|---|
GET /session/saved_items |
The copies of one transaction or block already in the viewer’s research | none (public) | hash |
POST /session/saved_items |
Save a transaction or a block to research | none (public) | X-CSRF-Token |
GET /session/saved_items/destinations |
Where “Save to research” may file a snapshot | none (public) | |
PATCH /session/saved_items/{id} |
Change a saved copy’s notes | none (public) | {id}, X-CSRF-Token |
DELETE /session/saved_items/{id} |
Remove a saved copy (and its annotations) | none (public) | {id}, X-CSRF-Token |
The research endpoints
The research rows above are the workspace over REST: the interface’s own
policies decide what a key may do, on behalf of the member who minted it. The
first call guide walks through the loop (create a page,
put its document, comment, cite, export) and the conflict rule on document
saves.