mirror of
https://github.com/hanzo-apps/hanzo.ai.git
synced 2026-10-29 07:20:43 +00:00
Four platform pages printed a call that answers nothing. /v1/agents, /v1/functions, /v1/integrations and /v1/wallets are all zero paths on the served document, and the deck said them nine slides after the tour correctly said POST /v1/agent. The cause is one fact, not four: THE API SINGULARISED ITS SEGMENTS and the commerce catalog still advertises the plural. Sixteen of the seventeen products whose advertised path now 404s answer at the singular — /v1/agents at /v1/agent, /v1/evals/datasets at /v1/eval/datasets, /v1/bots at /v1/bot — so `singular` is a rule in scripts/catalog.mjs rather than sixteen rows somebody keeps. It replaces twelve hand-written renames, four of which had themselves gone stale and pointed at paths that no longer answer either; prompts was aimed at /v1/agents and referrals at /v1/commerce/referrals, both dead. No candidate is believed on its shape: it goes through `serves` exactly like the advertised path, so a word that merely ends in "s" costs nothing. The families gate now refuses an IMPLAUSIBLE read rather than a smaller one. It refused any shrink at all, which is a gate against change and not against corruption, and it had frozen that snapshot for three weeks while the document regrouped 183 tags into 120 by merging four families into `ai`. What the gate is for is a truncated document or an error body that still parses, and those arrive at almost nothing rather than at two thirds. Below half of the last good read is the refusal; a shrink above it is written and announced. THE PRODUCT GATE STAYS SHUT and the comment says why. Opening it drops five products and half the hero tour's beats: /v1/sandboxes, /v1/vector, /v1/bot/connect and three more answer at no spelling, and replacing them is a product decision. Two of the five, /sdks and /api, have pages and are lost only because the catalog moved them to /cloud/sdks while `bespoke` resolves one segment. Flipping it is one word once those are settled. A family's layer is now keyed by the path that answers too. Keying by the advertised one filed every layer under a family the document no longer declares and left `agent` in none, which is what the deck's own resolver refused to print. EVERY CALL THIS DECK PRINTS IS NOW PUT TO THE API AT SYNC, through the same reader sync-catalog probes with, and the sync throws rather than shrugging when it cannot reach it — every other number here degrades to a committed snapshot safely, but a dead path fails silently and lands in front of an investor. That check found six more: the hero's tour is twelve beats in the snapshot and six of them are retired, so the page now reads "Six calls, and the shop is open" with the count spelled from what survived rather than typed. The score slide said "the field's best score, at a fraction of the price". The first half holds and the second does not: the model we beat on score, Gemini 3.1 Pro, is $12 against Enso Ultra's $25. It now claims the two ends the column actually shows — the best score outright, and Enso Flash within half a point of GPT-5.2 Pro at a forty-second of its price — and the footnote names the rung we lose rather than leaving a reader to find it. deck/sync.mjs also resolves app/(app) into assets/rooms.json here, which the slide after this one draws. Co-authored-by: Hanzo Dev <[email protected]>
677 lines
9.4 KiB
JSON
677 lines
9.4 KiB
JSON
{
|
|
"document": "https://api.hanzo.ai/v1/openapi.json",
|
|
"catalog": "https://api.hanzo.ai/v1/commerce/catalog?brand=hanzo",
|
|
"host": "api.hanzo.ai",
|
|
"taken": "August 16, 2026",
|
|
"families": 120,
|
|
"operations": 2290,
|
|
"products": 79,
|
|
"surface": [
|
|
[
|
|
"o11y",
|
|
381
|
|
],
|
|
[
|
|
"ai",
|
|
293
|
|
],
|
|
[
|
|
"commerce",
|
|
179
|
|
],
|
|
[
|
|
"iam",
|
|
156
|
|
],
|
|
[
|
|
"integration",
|
|
56
|
|
],
|
|
[
|
|
"git",
|
|
51
|
|
],
|
|
[
|
|
"billing",
|
|
48
|
|
],
|
|
[
|
|
"agent",
|
|
39
|
|
],
|
|
[
|
|
"platform",
|
|
36
|
|
],
|
|
[
|
|
"marketing",
|
|
35
|
|
],
|
|
[
|
|
"cloudflare",
|
|
32
|
|
],
|
|
[
|
|
"captable",
|
|
31
|
|
],
|
|
[
|
|
"compute",
|
|
30
|
|
],
|
|
[
|
|
"project",
|
|
29
|
|
],
|
|
[
|
|
"pricing",
|
|
28
|
|
],
|
|
[
|
|
"provisioning",
|
|
28
|
|
],
|
|
[
|
|
"dataroom",
|
|
26
|
|
],
|
|
[
|
|
"books",
|
|
25
|
|
],
|
|
[
|
|
"company",
|
|
24
|
|
],
|
|
[
|
|
"team",
|
|
21
|
|
],
|
|
[
|
|
"deploy",
|
|
20
|
|
],
|
|
[
|
|
"guide",
|
|
19
|
|
],
|
|
[
|
|
"sandbox",
|
|
19
|
|
],
|
|
[
|
|
"tool",
|
|
19
|
|
],
|
|
[
|
|
"ingress",
|
|
18
|
|
],
|
|
[
|
|
"auto",
|
|
17
|
|
],
|
|
[
|
|
"compliance",
|
|
17
|
|
],
|
|
[
|
|
"index",
|
|
17
|
|
],
|
|
[
|
|
"trust",
|
|
17
|
|
],
|
|
[
|
|
"eval",
|
|
16
|
|
],
|
|
[
|
|
"framework",
|
|
16
|
|
],
|
|
[
|
|
"mq",
|
|
15
|
|
],
|
|
[
|
|
"plan",
|
|
14
|
|
],
|
|
[
|
|
"esign",
|
|
13
|
|
],
|
|
[
|
|
"social",
|
|
13
|
|
],
|
|
[
|
|
"todo",
|
|
13
|
|
],
|
|
[
|
|
"dns",
|
|
12
|
|
],
|
|
[
|
|
"event",
|
|
12
|
|
],
|
|
[
|
|
"campaign",
|
|
11
|
|
],
|
|
[
|
|
"function",
|
|
11
|
|
],
|
|
[
|
|
"legal",
|
|
11
|
|
],
|
|
[
|
|
"licensing",
|
|
11
|
|
],
|
|
[
|
|
"link",
|
|
11
|
|
],
|
|
[
|
|
"metrics",
|
|
11
|
|
],
|
|
[
|
|
"risk",
|
|
11
|
|
],
|
|
[
|
|
"account",
|
|
10
|
|
],
|
|
[
|
|
"affiliate",
|
|
10
|
|
],
|
|
[
|
|
"knowledge",
|
|
10
|
|
],
|
|
[
|
|
"tel",
|
|
10
|
|
],
|
|
[
|
|
"benchmark",
|
|
9
|
|
],
|
|
[
|
|
"channel",
|
|
9
|
|
],
|
|
[
|
|
"graph",
|
|
9
|
|
],
|
|
[
|
|
"flag",
|
|
8
|
|
],
|
|
[
|
|
"flow",
|
|
8
|
|
],
|
|
[
|
|
"network",
|
|
8
|
|
],
|
|
[
|
|
"wallet",
|
|
8
|
|
],
|
|
[
|
|
"webhook",
|
|
8
|
|
],
|
|
[
|
|
"ad",
|
|
7
|
|
],
|
|
[
|
|
"code",
|
|
7
|
|
],
|
|
[
|
|
"dataset",
|
|
7
|
|
],
|
|
[
|
|
"domain",
|
|
7
|
|
],
|
|
[
|
|
"experiment",
|
|
7
|
|
],
|
|
[
|
|
"label",
|
|
7
|
|
],
|
|
[
|
|
"meet",
|
|
7
|
|
],
|
|
[
|
|
"ml",
|
|
7
|
|
],
|
|
[
|
|
"security",
|
|
7
|
|
],
|
|
[
|
|
"seo",
|
|
7
|
|
],
|
|
[
|
|
"space",
|
|
7
|
|
],
|
|
[
|
|
"websearch",
|
|
7
|
|
],
|
|
[
|
|
"content",
|
|
6
|
|
],
|
|
[
|
|
"kv",
|
|
6
|
|
],
|
|
[
|
|
"marketplace",
|
|
6
|
|
],
|
|
[
|
|
"prompt",
|
|
6
|
|
],
|
|
[
|
|
"reference",
|
|
6
|
|
],
|
|
[
|
|
"registry",
|
|
6
|
|
],
|
|
[
|
|
"s3",
|
|
6
|
|
],
|
|
[
|
|
"sync",
|
|
6
|
|
],
|
|
[
|
|
"world",
|
|
6
|
|
],
|
|
[
|
|
"author",
|
|
5
|
|
],
|
|
[
|
|
"bot",
|
|
5
|
|
],
|
|
[
|
|
"destination",
|
|
5
|
|
],
|
|
[
|
|
"kms",
|
|
5
|
|
],
|
|
[
|
|
"leaderboard",
|
|
5
|
|
],
|
|
[
|
|
"lsp",
|
|
5
|
|
],
|
|
[
|
|
"market",
|
|
5
|
|
],
|
|
[
|
|
"openapi",
|
|
5
|
|
],
|
|
[
|
|
"tasks",
|
|
5
|
|
],
|
|
[
|
|
"taxonomy",
|
|
5
|
|
],
|
|
[
|
|
"template",
|
|
5
|
|
],
|
|
[
|
|
"usage",
|
|
5
|
|
],
|
|
[
|
|
"engine",
|
|
4
|
|
],
|
|
[
|
|
"exec",
|
|
4
|
|
],
|
|
[
|
|
"help",
|
|
4
|
|
],
|
|
[
|
|
"node",
|
|
4
|
|
],
|
|
[
|
|
"notify",
|
|
4
|
|
],
|
|
[
|
|
"validator",
|
|
4
|
|
],
|
|
[
|
|
"web3",
|
|
4
|
|
],
|
|
[
|
|
"authz",
|
|
3
|
|
],
|
|
[
|
|
"base",
|
|
3
|
|
],
|
|
[
|
|
"blueprint",
|
|
3
|
|
],
|
|
[
|
|
"entitlement",
|
|
3
|
|
],
|
|
[
|
|
"gateway",
|
|
3
|
|
],
|
|
[
|
|
"translate",
|
|
3
|
|
],
|
|
[
|
|
"ask",
|
|
2
|
|
],
|
|
[
|
|
"ci",
|
|
2
|
|
],
|
|
[
|
|
"explorer",
|
|
2
|
|
],
|
|
[
|
|
"pref",
|
|
2
|
|
],
|
|
[
|
|
"pubsub",
|
|
2
|
|
],
|
|
[
|
|
"referral",
|
|
2
|
|
],
|
|
[
|
|
"sbom",
|
|
2
|
|
],
|
|
[
|
|
"settings",
|
|
2
|
|
],
|
|
[
|
|
"share",
|
|
2
|
|
],
|
|
[
|
|
"treasury",
|
|
2
|
|
],
|
|
[
|
|
"allowance",
|
|
1
|
|
],
|
|
[
|
|
"audit",
|
|
1
|
|
],
|
|
[
|
|
"catalog",
|
|
1
|
|
],
|
|
[
|
|
"crawl",
|
|
1
|
|
],
|
|
[
|
|
"search",
|
|
1
|
|
],
|
|
[
|
|
"standing",
|
|
1
|
|
],
|
|
[
|
|
"x402",
|
|
1
|
|
]
|
|
],
|
|
"layers": [
|
|
{
|
|
"label": "AI",
|
|
"products": 7
|
|
},
|
|
{
|
|
"label": "Compute",
|
|
"products": 8
|
|
},
|
|
{
|
|
"label": "Data",
|
|
"products": 8
|
|
},
|
|
{
|
|
"label": "Network",
|
|
"products": 6
|
|
},
|
|
{
|
|
"label": "Security",
|
|
"products": 6
|
|
},
|
|
{
|
|
"label": "Dev",
|
|
"products": 7
|
|
},
|
|
{
|
|
"label": "Infrastructure",
|
|
"products": 6
|
|
},
|
|
{
|
|
"label": "Observe",
|
|
"products": 17
|
|
},
|
|
{
|
|
"label": "Web3",
|
|
"products": 7
|
|
},
|
|
{
|
|
"label": "Apps",
|
|
"products": 7
|
|
}
|
|
],
|
|
"tour": {
|
|
"story": "One org, one afternoon: a spaceship shop that did not exist this morning.",
|
|
"beats": [
|
|
{
|
|
"line": "Start with the models.",
|
|
"method": "GET",
|
|
"path": "/v1/models",
|
|
"summary": "Returns the list of available models from the routing table."
|
|
},
|
|
{
|
|
"line": "Blend them behind one route.",
|
|
"method": "POST",
|
|
"path": "/v1/ai/routes",
|
|
"summary": "Create a model-route"
|
|
},
|
|
{
|
|
"line": "Ask it something.",
|
|
"method": "POST",
|
|
"path": "/v1/chat/completions",
|
|
"summary": "Implements the OpenAI-compatible chat completions API"
|
|
},
|
|
{
|
|
"line": "Hand it your own tools.",
|
|
"method": "POST",
|
|
"path": "/v1/agent",
|
|
"summary": "Run one tool-calling round against your org's own tools"
|
|
},
|
|
{
|
|
"line": "Open the store.",
|
|
"method": "POST",
|
|
"path": "/v1/commerce/product/",
|
|
"summary": "Create a product"
|
|
},
|
|
{
|
|
"line": "Watch what it cost.",
|
|
"method": "GET",
|
|
"path": "/v1/billing/usage",
|
|
"summary": "Every billed call the caller's org made, attributed to a product"
|
|
}
|
|
]
|
|
},
|
|
"core": [
|
|
{
|
|
"family": "agent",
|
|
"name": "Agents",
|
|
"layer": "AI",
|
|
"path": "/v1/agent",
|
|
"operations": 39,
|
|
"summary": "Autonomous agents for your org: define them, run them, keep every run.",
|
|
"page": "/agents",
|
|
"repo": "hanzoai/agent"
|
|
},
|
|
{
|
|
"family": "function",
|
|
"name": "Functions",
|
|
"layer": "Compute",
|
|
"path": "/v1/function",
|
|
"operations": 11,
|
|
"summary": "Your serverless code: publish it, call it over HTTP, watch every run and what it cost.",
|
|
"page": "/functions",
|
|
"repo": "hanzoai/functions"
|
|
},
|
|
{
|
|
"family": "s3",
|
|
"name": "Object Storage",
|
|
"layer": "Data",
|
|
"path": "/v1/s3",
|
|
"operations": 6,
|
|
"summary": "Object storage: your buckets and the files in them, with signed URLs for upload and download.",
|
|
"page": "/s3",
|
|
"repo": "hanzoai/s3"
|
|
},
|
|
{
|
|
"family": "dns",
|
|
"name": "DNS",
|
|
"layer": "Network",
|
|
"path": "/v1/dns",
|
|
"operations": 12,
|
|
"summary": "Your DNS records: the zones and records behind every name you point at Hanzo.",
|
|
"page": "/dns",
|
|
"repo": "hanzoai/dns"
|
|
},
|
|
{
|
|
"family": "iam",
|
|
"name": "IAM",
|
|
"layer": "Security",
|
|
"path": "/v1/iam",
|
|
"operations": 156,
|
|
"summary": "Hanzo's identity provider: users, organizations, applications, and the OIDC/OAuth2 endpoints every Hanzo service authenticates against.",
|
|
"page": "/iam",
|
|
"repo": "hanzoai/iam"
|
|
},
|
|
{
|
|
"family": "integration",
|
|
"name": "Integrations",
|
|
"layer": "Dev",
|
|
"path": "/v1/integration",
|
|
"operations": 56,
|
|
"summary": "How your org connects third-party accounts like Slack, and revokes them.",
|
|
"page": "/integrations",
|
|
"repo": "hanzoai/console"
|
|
},
|
|
{
|
|
"family": "registry",
|
|
"name": "Registry",
|
|
"layer": "Infrastructure",
|
|
"path": "/v1/registry",
|
|
"operations": 6,
|
|
"summary": "Your container and package registry: push images, pull them back, see what you store.",
|
|
"page": "/registry",
|
|
"repo": "hanzoai/registry"
|
|
},
|
|
{
|
|
"family": "o11y",
|
|
"name": "Traces",
|
|
"layer": "Observe",
|
|
"path": "/v1/o11y",
|
|
"operations": 381,
|
|
"summary": "Your logs, metrics and traces: ship them in, query them, chart them.",
|
|
"page": "/o11y",
|
|
"repo": "hanzoai/o11y"
|
|
},
|
|
{
|
|
"family": "wallet",
|
|
"name": "Wallets",
|
|
"layer": "Web3",
|
|
"path": "/v1/wallet",
|
|
"operations": 8,
|
|
"summary": "Blockchain key custody: create wallets, rotate their keys, and sign with them.",
|
|
"page": "/cloud/wallet",
|
|
"repo": "hanzoai/billing"
|
|
},
|
|
{
|
|
"family": "bot",
|
|
"name": "Bot",
|
|
"layer": "Apps",
|
|
"path": "/v1/bot",
|
|
"operations": 5,
|
|
"summary": "A bot doing your work on a real desktop, live, while you watch.",
|
|
"page": "/bot",
|
|
"repo": "hanzoai/bot"
|
|
}
|
|
]
|
|
}
|