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. read is every GET; a write names its own scope (research:write
    or exports). A key without the scope gets 403 missing_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
    carries X-RateLimit-Limit and X-RateLimit-Remaining, and a 429 resets on
    the hour.
  • Errors. JSON with a stable error code and a detail sentence:
    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.