API
Every path is also an API. Reads are public, writes need a token from Settings.
Read
GET https://dirs.159-69-177-246.sslip.io/fish.json | node, effective schema, entries (aggregated, ?page=, ?scope=here) |
GET https://dirs.159-69-177-246.sslip.io/fish.csv | all entries as a spreadsheet |
GET https://dirs.159-69-177-246.sslip.io/fish.rss | feed of new entries |
GET https://dirs.159-69-177-246.sslip.io/_chain.json?path=fish | ownership ledger + verification |
GET https://dirs.159-69-177-246.sslip.io/_og/fish.png | share image |
Write
Send your token as Authorization: Bearer dt_…. Values are validated against the path's schema, exactly like the web form.
curl -X POST https://dirs.159-69-177-246.sslip.io/fish.json \
-H "Authorization: Bearer $DIRS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"values": {"length": 64, "caught": "2026-10-11"}}' With a photo, post multipart fields named f_<key>:
curl -X POST https://dirs.159-69-177-246.sslip.io/fish.json \
-H "Authorization: Bearer $DIRS_TOKEN" \
-F f_length=64 -F f_photo=@catch.jpg Delete an entry you wrote or moderate:
curl -X DELETE "https://dirs.159-69-177-246.sslip.io/fish.json?entry=42" -H "Authorization: Bearer $DIRS_TOKEN" Responses: 201 with the entry, 400 with per-field errors, 401/403/404, 429 above 120 requests per minute.
Embed
<iframe src="https://app.dirs.159-69-177-246.sslip.io/embed/fish" width="100%" height="460" style="border:0"></iframe> Options: ?n=10 entries, ?theme=dark|light.
Ledger
Each ownership event is hashed as sha256(prev_hash|id|type|path|actor|canonical_json(payload)|created_at). Re-compute the chain from _chain.json to verify the history independently.
Paths
Segments are a-z 0-9 -, up to 32 levels deep. Children inherit fields from their parents and may add their own.
Availability and prices
GET https://dirs.159-69-177-246.sslip.io/_search?check=crypto/bitcoin Returns exists, reserved, parentMissing and, while the market is on, price (one-time, or the sale
price of an existing path), yearly and currency. Amounts are in minor units (Rappen). Every node's JSON carries its market terms: salePrice, acceptOffers, expiresAt, renewPrice and subPaths (price, yearly, sovereign or delegated).
Read-only endpoints send Access-Control-Allow-Origin: *.