From 79eb1ee0399a3eec4815000617f27d05d8351572 Mon Sep 17 00:00:00 2001 From: Soam Desai Date: Sun, 20 Sep 2026 20:50:58 -0700 Subject: [PATCH 1/3] docs(nav): fix docs.json navigation, redirects, and OpenAPI wiring gaps - docs.json: add 4 missing Developer Portal OpenAPI operations (create-incognito-action, get-action-metadata, get-jwk-keys, graphql-proxy) to the "Developer Portal" nav group's pages array - docs.json: add the missing recovery-agent endpoints to the World ID Indexer (/pending-recovery-agent, /recovery-agent) and Gateway (/health, /initiate-recovery-agent-update, /execute-recovery-agent-update, /cancel-recovery-agent-update) API reference groups so they match the live OpenAPI specs already linked in docs.json - docs.json: repoint 12 redirect rules that 308'd to destinations which themselves 404 on production (e.g. /idkit, /js, /zkp, /further-reading/*, /reference/errors, /try, /world-id/quick-start/templates, /world-id/id/web-react) to pages that actually exist - docs.json: repoint 3 legacy "#legacy-presets" redirects to the correct two-hop-free destination /world-id/idkit/credentials#other-legacy-presets - docs.json: add mini-apps/sharing/world-chat-qa to the Quick Actions nav group and mini-apps/reference/credit-api to the Mini Apps Technical Reference group so these already-written, live pages are reachable from the sidebar - world-id/idkit/build-with-llms.mdx: link to the previously orphaned world-id/idkit/integration-prompt.mdx as a supplementary resource - openapi/world-id.json: delete stale, unreferenced legacy spec superseded by openapi/developer-portal.json --- docs.json | 50 +++--- openapi/world-id.json | 263 ----------------------------- world-id/idkit/build-with-llms.mdx | 3 + 3 files changed, 34 insertions(+), 282 deletions(-) delete mode 100644 openapi/world-id.json diff --git a/docs.json b/docs.json index c4001f9..1fe8378 100644 --- a/docs.json +++ b/docs.json @@ -129,7 +129,9 @@ "POST /inclusion-proof", "POST /packed-account", "POST /signature-nonce", - "POST /authenticator-pubkeys" + "POST /authenticator-pubkeys", + "POST /pending-recovery-agent", + "POST /recovery-agent" ] }, { @@ -142,7 +144,11 @@ "POST /remove-authenticator", "POST /recover-account", "GET /is-valid-root", - "GET /status/{id}" + "GET /status/{id}", + "GET /health", + "POST /initiate-recovery-agent-update", + "POST /execute-recovery-agent-update", + "POST /cancel-recovery-agent-update" ] }, { @@ -214,6 +220,7 @@ "mini-apps/reference/status-page", "mini-apps/reference/payment-methods", "mini-apps/reference/microphone", + "mini-apps/reference/credit-api", { "group": "Quick Actions", "pages": [ @@ -222,7 +229,8 @@ "mini-apps/sharing/swap-qa", "mini-apps/sharing/earn-wld-qa", "mini-apps/sharing/dna-qa", - "mini-apps/sharing/sage-qa" + "mini-apps/sharing/sage-qa", + "mini-apps/sharing/world-chat-qa" ] } ] @@ -359,7 +367,11 @@ "GET /api/v2/minikit/userop/{user_op_hash}", "GET /api/v2/minikit/transaction/debug", "GET /api/v2/minikit/user-grant-cycle", - "GET /public/v1/miniapps/prices" + "GET /public/v1/miniapps/prices", + "POST /api/v2/create-action/{app_id}", + "POST /api/v1/precheck/{app_id}", + "GET /api/v1/jwks", + "POST /api/v1/graphql" ] } ] @@ -492,11 +504,11 @@ }, { "source": "/idkit", - "destination": "/world-id/cloud" + "destination": "/world-id/idkit/integrate" }, { "source": "/js", - "destination": "/world-id/cloud" + "destination": "/world-id/idkit/integrate" }, { "source": "/id", @@ -524,7 +536,7 @@ }, { "source": "/zkp", - "destination": "/world-id/further-reading/zero-knowledge-proofs" + "destination": "/world-id/concepts" }, { "source": "/id/anonymous-actions", @@ -552,7 +564,7 @@ }, { "source": "/advanced/zero-knowledge-proofs", - "destination": "/world-id/further-reading/zero-knowledge-proofs" + "destination": "/world-id/concepts" }, { "source": "/advanced/privacy", @@ -584,15 +596,15 @@ }, { "source": "/further-reading/protocol-internals", - "destination": "/world-id/further-reading/protocol-internals" + "destination": "/world-id/concepts" }, { "source": "/further-reading/world-id-reset", - "destination": "/world-id/further-reading/world-id-reset" + "destination": "/world-id/concepts" }, { "source": "/further-reading/zero-knowledge-proofs", - "destination": "/world-id/further-reading/zero-knowledge-proofs" + "destination": "/world-id/concepts" }, { "source": "/id/cloud", @@ -664,7 +676,7 @@ }, { "source": "/reference/errors", - "destination": "/world-id/reference/errors" + "destination": "/world-id/idkit/error-codes" }, { "source": "/reference/idkit", @@ -680,11 +692,11 @@ }, { "source": "/reference/world-id-2-migration-guide", - "destination": "/world-id/reference/world-id-2-migration-guide" + "destination": "/world-id/4-0-migration" }, { "source": "/try", - "destination": "/world-id/try" + "destination": "/world-id/overview" }, { "source": "/use-cases", @@ -744,7 +756,7 @@ }, { "source": "/world-id/quick-start/templates", - "destination": "/world-id/quick-start" + "destination": "/world-id/idkit/integrate" }, { "source": "/world-id/reference/address-book", @@ -776,7 +788,7 @@ }, { "source": "/world-id/id/web-react", - "destination": "/world-id/idkit/react-widget-and-hooks" + "destination": "/world-id/idkit/react" }, { "source": "/world-id/id/web-vanilla", @@ -816,7 +828,7 @@ }, { "source": "/world-id/credentials/presets", - "destination": "/world-id/credentials#legacy-presets" + "destination": "/world-id/idkit/credentials#other-legacy-presets" }, { "source": "/world-id/selfie-check/overview", @@ -828,11 +840,11 @@ }, { "source": "/world-id/face-check/web-integration", - "destination": "/world-id/credentials#legacy-presets" + "destination": "/world-id/idkit/credentials#other-legacy-presets" }, { "source": "/world-id/face-check/testing", - "destination": "/world-id/credentials#legacy-presets" + "destination": "/world-id/idkit/credentials#other-legacy-presets" }, { "source": "/world-id/credentials", diff --git a/openapi/world-id.json b/openapi/world-id.json deleted file mode 100644 index 090de63..0000000 --- a/openapi/world-id.json +++ /dev/null @@ -1,263 +0,0 @@ -{ - "openapi": "3.0.3", - "info": { - "title": "World ID API", - "version": "1.0.0" - }, - "servers": [{ "url": "https://developer.worldcoin.org" }], - "paths": { - "/api/v2/verify/{app_id}": { - "post": { - "summary": "Verify Proof", - "description": "Verify a World ID proof for a Cloud action.", - "parameters": [ - { - "name": "app_id", - "in": "path", - "required": true, - "schema": { "type": "string" }, - "description": "Your app ID from the Developer Portal" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/VerifyRequest" - }, - "example": { - "nullifier_hash": "0x2bf8406809dcefb1486dadc96c0a897db9bab002053054cf64272db512c6fbd8", - "merkle_root": "0x2264a66d162d7893e12ea8e3c072c51e785bc085ad655f64c10c1a61e00f0bc2", - "proof": "0x1aa8b8f3b2d2de5ff452c0e1a83e29d6bf46fb83ef35dc5957121ff3d3698a1119090fb...", - "verification_level": "orb", - "action": "my_action", - "signal_hash": "0x00c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4" - } - } - } - }, - "responses": { - "200": { - "description": "Verified", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "success": { "type": "boolean" }, - "action": { "type": "string" }, - "nullifier_hash": { "type": "string" }, - "created_at": { "type": "string" } - } - }, - "examples": { - "200 OK": { - "value": { - "success": true, - "action": "my_action", - "nullifier_hash": "0x2bf8406809dcefb1486dadc96c0a897db9bab002053054cf64272db512c6fbd8", - "created_at": "2023-02-18T11:20:39.530041+00:00" - } - } - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/ErrorResponse" }, - "examples": { - "Invalid Proof": { - "value": { - "code": "invalid_proof", - "detail": "The provided proof is invalid and it cannot be verified. Please check all inputs and try again.", - "attribute": null - } - }, - "Invalid Merkle Root": { - "value": { - "code": "invalid_merkle_root", - "detail": "The provided Merkle root is invalid. User appears to be unverified.", - "attribute": null - } - } - } - } - } - } - } - } - }, - "/api/v1/precheck/{app_id}": { - "post": { - "summary": "Get Action Metadata", - "description": "Fetch information about a particular app/action to determine eligibility for verification.", - "parameters": [ - { - "name": "app_id", - "in": "path", - "required": true, - "schema": { "type": "string" }, - "description": "Your app ID from the Developer Portal" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "action": { - "type": "string", - "description": "Same action identifier as passed to IDKit" - }, - "nullifier_hash": { - "type": "string", - "description": "ZKP's nullifier hash, as provided by IDKit" - }, - "external_nullifier": { - "type": "string", - "description": "Deprecated. Use action instead." - } - }, - "required": ["action"] - }, - "example": { - "action": "my_custom_action", - "nullifier_hash": "0x2bf8406809dcefb1486dadc96c0a897db9bab002053054cf64272db512c6fbd8", - "external_nullifier": "0x00949dd9a8c5b600304d010ce3a3cf012352070ae4b77504e17af77ee894cda" - } - } - } - }, - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { "type": "object", "additionalProperties": true }, - "example": { - "id": "app_staging_4cfd049031b0da1e8b62084b09a9f430", - "is_staging": true, - "is_verified": false, - "name": "Default App", - "verified_app_logo": "", - "engine": "cloud", - "__typename": "app", - "sign_in_with_world_id": true, - "can_user_verify": "yes", - "action": { - "external_nullifier": "0x00949dd9a8c5b600304d010ce3a3cf012352070ae4b77504e17af77ee894cda", - "name": "My action", - "action": "my_custom_action", - "description": "My action", - "max_verifications": 0, - "max_accounts_per_user": 1, - "__typename": "action" - } - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { "$ref": "#/components/schemas/ErrorResponse" }, - "example": { - "code": "required", - "detail": "This attribute is required.", - "attribute": "action" - } - } - } - } - } - } - }, - "/api/v1/jwks": { - "get": { - "summary": "Get JWK Keys", - "description": "Retrieve JWKs (public keys) used to verify JWT signatures for verification requests.", - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "keys": { - "type": "array", - "items": { - "type": "object", - "properties": { - "e": { "type": "string" }, - "n": { "type": "string" }, - "kty": { "type": "string" }, - "kid": { "type": "string" } - } - } - } - } - } - } - } - } - } - } - } - }, - "components": { - "schemas": { - "VerifyRequest": { - "type": "object", - "properties": { - "nullifier_hash": { - "type": "string", - "description": "Unique user identifier, provided by IDKit" - }, - "proof": { - "type": "string", - "description": "Zero-knowledge proof from IDKit" - }, - "merkle_root": { - "type": "string", - "description": "Merkle root proving credential membership" - }, - "verification_level": { - "type": "string", - "description": "Verification level returned by IDKit" - }, - "action": { - "type": "string", - "description": "Action identifier used in IDKit" - }, - "signal_hash": { - "type": "string", - "description": "Hash of the signal used to generate the proof" - } - }, - "required": [ - "nullifier_hash", - "proof", - "merkle_root", - "verification_level", - "action" - ] - }, - "ErrorResponse": { - "type": "object", - "properties": { - "code": { "type": "string" }, - "detail": { "type": "string" }, - "attribute": { "type": "string", "nullable": true } - } - } - } - } -} diff --git a/world-id/idkit/build-with-llms.mdx b/world-id/idkit/build-with-llms.mdx index 82e44a8..a10b78a 100644 --- a/world-id/idkit/build-with-llms.mdx +++ b/world-id/idkit/build-with-llms.mdx @@ -19,6 +19,9 @@ Copy this prompt and paste it into Codex, Claude, Cursor, or your preferred AI c Read world.id/SKILL.md and add World ID to my app ``` +Already have an app configured and just need the integration steps spelled out? Use the +[standalone integration prompt](/world-id/idkit/integration-prompt) instead. + ## World MCP You can also connect your AI assistant to World with MCP servers: From 7a0b554b3c9845a2372b7cebfb4b6851ee60412b Mon Sep 17 00:00:00 2001 From: Soam Desai Date: Mon, 21 Sep 2026 10:18:40 -0700 Subject: [PATCH 2/3] polish: tighten wording, match house style Shorten the standalone integration prompt callout in build-with-llms.mdx to match the terse, single-sentence style used elsewhere in the file. --- world-id/idkit/build-with-llms.mdx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/world-id/idkit/build-with-llms.mdx b/world-id/idkit/build-with-llms.mdx index a10b78a..bb8c22c 100644 --- a/world-id/idkit/build-with-llms.mdx +++ b/world-id/idkit/build-with-llms.mdx @@ -19,8 +19,7 @@ Copy this prompt and paste it into Codex, Claude, Cursor, or your preferred AI c Read world.id/SKILL.md and add World ID to my app ``` -Already have an app configured and just need the integration steps spelled out? Use the -[standalone integration prompt](/world-id/idkit/integration-prompt) instead. +Already have an app configured? Use the [standalone integration prompt](/world-id/idkit/integration-prompt) instead. ## World MCP From 1a2f6ef63ce4385804f1be81db2e539f562083d4 Mon Sep 17 00:00:00 2001 From: Soam Desai Date: Wed, 23 Sep 2026 14:52:01 -0700 Subject: [PATCH 3/3] docs(nav): keep credit-api and world-chat-qa out of the nav - Both pages were de-listed on purpose: credit-api in #27 ("remove credit scoring nav") and world-chat-qa in #5. Re-listing them needs owner sign-off, so this PR no longer adds them back. --- docs.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs.json b/docs.json index 181afb4..e8d8517 100644 --- a/docs.json +++ b/docs.json @@ -221,7 +221,6 @@ "mini-apps/reference/status-page", "mini-apps/reference/payment-methods", "mini-apps/reference/microphone", - "mini-apps/reference/credit-api", { "group": "Quick Actions", "pages": [ @@ -230,8 +229,7 @@ "mini-apps/sharing/swap-qa", "mini-apps/sharing/earn-wld-qa", "mini-apps/sharing/dna-qa", - "mini-apps/sharing/sage-qa", - "mini-apps/sharing/world-chat-qa" + "mini-apps/sharing/sage-qa" ] } ]