{"message":{"openapi":"3.0.3","info":{"title":"AXK Network API","description":"Verified commodity trade \u2014 farm to payment. AXK Network provides transparent, blockchain-anchored traceability for agricultural commodities (coffee, cocoa) from cooperative to buyer. All Lot, Order, and Escrow operations are anchored to the Xahau ledger.","version":"2.0.0","contact":{"name":"AXK Network Platform","url":"https://app.axk.org","email":"api@axk.org"},"license":{"name":"Proprietary","url":"https://app.axk.org/terms"},"x-axk-network":{"issuer_did":"did:axk:xahau:r34qv2ALLNBetUhijFDeWbfYBB7mrt8Bgj","xrpl_network":"xahau-testnet","eudr_compliance":true}},"servers":[{"url":"https://app.axk.org","description":"Primary server"},{"url":"https://app.axk.org","description":"Production"}],"components":{"securitySchemes":{"sessionAuth":{"type":"apiKey","in":"cookie","name":"sid","description":"Frappe session cookie (obtain via /api/method/login)"},"partnerApiKey":{"type":"http","scheme":"bearer","bearerFormat":"ApiKey <key_id>:<secret>","description":"Partner API Key authentication. Header format: `Authorization: ApiKey <key_id>:<secret>`. Obtain a key via /partners/signup."}},"schemas":{"LotRef":{"type":"string","description":"Lot document name (e.g. LOT-2026-00001)","example":"LOT-2026-00001"},"DID":{"type":"string","description":"W3C DID \u2014 did:axk:xahau:<address>","example":"did:axk:xahau:r34qv2ALLNBetUhijFDeWbfYBB7mrt8Bgj"},"CryptoVerifyResponse":{"type":"object","properties":{"verified":{"type":"boolean"},"signer_did":{"$ref":"#/components/schemas/DID"},"signed_at":{"type":"string","format":"date-time","nullable":true},"payload_hash":{"type":"string","description":"SHA-256 hex digest"},"anchored_xrpl_tx":{"type":"string","nullable":true},"error":{"type":"string","description":"Only present on failure"}}},"DIDResolutionResponse":{"type":"object","properties":{"didResolutionMetadata":{"type":"object","properties":{"contentType":{"type":"string"},"error":{"type":"string"}}},"didDocument":{"type":"object","nullable":true},"didDocumentMetadata":{"type":"object"}}},"Error":{"type":"object","properties":{"exc_type":{"type":"string"},"exception":{"type":"string"}}}}},"paths":{"/api/method/axk_network.api.verify.lookup_lot":{"post":{"summary":"Lookup lot anchor metadata","description":"Public endpoint \u2014 no authentication required. Returns lot commodity, cooperative, XRPL anchor hash, EUDR compliance status, and quality inspections.","operationId":"lookup_lot","tags":["verify"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"lot_name":{"type":"string","description":"Lot document name","example":"LOT-2026-00001"},"tx_hash":{"type":"string","description":"XRPL transaction hash (64 uppercase hex)","example":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"}}}}}},"responses":{"200":{"description":"Lot anchor metadata","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"lot":{"type":"object"},"anchor":{"type":"object"},"inspections":{"type":"array","items":{"type":"object"}},"eudr":{"type":"object","nullable":true}}}}}}}}},"/api/method/axk_network.api.verify.cryptographic_verify":{"post":{"summary":"Cryptographic verification of a Lot anchor","description":"Verifies a Lot's payload hash against the platform DID public key. Returns whether the lot is cryptographically attested on-chain. No authentication required.","operationId":"cryptographic_verify","tags":["verify"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["lot_ref"],"properties":{"lot_ref":{"$ref":"#/components/schemas/LotRef"}}}}}},"responses":{"200":{"description":"Cryptographic verification result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CryptoVerifyResponse"}}}}}}},"/api/method/axk_network.did.api.resolve":{"get":{"summary":"Resolve a did:axk DID Document","description":"W3C DID Resolution 1.0. Returns the DID Document JSON-LD with public key and verification methods. Response content-type: application/did+ld+json. No auth required.","operationId":"did_resolve","tags":["did"],"parameters":[{"name":"did","in":"query","required":true,"schema":{"$ref":"#/components/schemas/DID"},"example":"did:axk:xahau:r34qv2ALLNBetUhijFDeWbfYBB7mrt8Bgj"}],"responses":{"200":{"description":"DID Document resolution response","content":{"application/did+ld+json":{"schema":{"$ref":"#/components/schemas/DIDResolutionResponse"}}}},"400":{"description":"Invalid DID format"},"404":{"description":"DID not found"}}}},"/api/partner/verify/{lot_ref}":{"get":{"summary":"Partner: verify lot (authenticated)","description":"Partner-authenticated endpoint. Returns the same payload as cryptographic_verify but requires a valid Partner API Key. Header: `Authorization: ApiKey <key_id>:<secret>`","operationId":"partner_verify_lot","tags":["verify"],"security":[{"partnerApiKey":[]}],"parameters":[{"name":"lot_ref","in":"path","required":true,"schema":{"$ref":"#/components/schemas/LotRef"}}],"responses":{"200":{"description":"Cryptographic verification result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CryptoVerifyResponse"}}}},"401":{"description":"Invalid or missing API key"},"429":{"description":"Rate limit exceeded"}}}},"/api/method/axk_network.api.admin_console.snapshot":{"post":{"summary":"Single payload for /app/axk-admin-console.","description":"Single payload for /app/axk-admin-console.","operationId":"axk_network_api_admin_console_snapshot","tags":["admin_console"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.admin_console.tenant_drilldown":{"post":{"summary":"Per-tenant detail panel for the Admin Console drill-down.","description":"Returns the full Tenant doc + this month's SLA report + recent activity (anchor events, KYC submissions, payment events scoped to this tenant if linkages exist).","operationId":"axk_network_api_admin_console_tenant_drilldown","tags":["admin_console"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"tenant_name":{"type":"string","description":""}},"required":["tenant_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.admin_portal.backups_view":{"post":{"summary":"Backup state for /admin/backups: recent files + GCS posture.","description":"Backup state for /admin/backups: recent files + GCS posture.","operationId":"axk_network_api_admin_portal_backups_view","tags":["admin_portal"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"site":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.admin_portal.compliance_view":{"post":{"summary":"Controls grid + roadmap + residency map. Used by /admin/compliance.","description":"Controls grid + roadmap + residency map. Used by /admin/compliance.","operationId":"axk_network_api_admin_portal_compliance_view","tags":["admin_portal"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.admin_portal.incidents_view":{"post":{"summary":"Recent incidents + anchor/email failure rollups for /admin/incidents.","description":"Recent incidents + anchor/email failure rollups for /admin/incidents.","operationId":"axk_network_api_admin_portal_incidents_view","tags":["admin_portal"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"days":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.admin_portal.schema_diagram":{"post":{"summary":"Return Mermaid ER-diagram source for the AXK schema.","description":"Mermaid v11 erDiagram syntax \u2014 auto-generated from doctype meta. The /admin/schema page hydrates this into an SVG.","operationId":"axk_network_api_admin_portal_schema_diagram","tags":["admin_portal"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"modules":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.admin_portal.schema_tables":{"post":{"summary":"Return structured doctype metadata for the AXK schema.","description":"`modules` is a comma-separated allowlist; defaults to AXK Network + AXK Mobility. Used by the ERD page's table panels.","operationId":"axk_network_api_admin_portal_schema_tables","tags":["admin_portal"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"modules":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.admin_portal.setup_view":{"post":{"summary":"Setup-health checklist driven by admin_console snapshot. Used by /admin/setup.","description":"Setup-health checklist driven by admin_console snapshot. Used by /admin/setup.","operationId":"axk_network_api_admin_portal_setup_view","tags":["admin_portal"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.admin_portal.sla_view":{"post":{"summary":"SLA tiers + tenant list for /admin/sla picker.","description":"SLA tiers + tenant list for /admin/sla picker.","operationId":"axk_network_api_admin_portal_sla_view","tags":["admin_portal"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.admin_portal.snapshot":{"post":{"summary":"Snapshot","description":"","operationId":"axk_network_api_admin_portal_snapshot","tags":["admin_portal"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.admin_portal.tenants_view":{"post":{"summary":"List tenants with optional filters. Used by /admin/tenants.","description":"List tenants with optional filters. Used by /admin/tenants.","operationId":"axk_network_api_admin_portal_tenants_view","tags":["admin_portal"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"search":{"type":"string","description":""},"status":{"type":"string","description":""},"tier":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.ai.chat":{"post":{"summary":"Send a chat message to AXK AI and return the response.","description":"Creates or appends to a persistent thread. dict with content, suggested_actions, metadata, thread_id","operationId":"axk_network_api_ai_chat","tags":["ai"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"user_input":{"type":"string","description":"The user's message"},"context":{"type":"string","description":"Page context label (e.g. 'Commodity Trade', 'Home')"},"thread_id":{"type":"string","description":"Optional existing thread ID to continue"}},"required":["user_input"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.ai.delete_thread":{"post":{"summary":"Delete a thread and all its messages.","description":"Delete a thread and all its messages.","operationId":"axk_network_api_ai_delete_thread","tags":["ai"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"thread_id":{"type":"string","description":""}},"required":["thread_id"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.ai.extract_document":{"post":{"summary":"Extract structured data from an uploaded document using AXK AI vision.","description":"Optionally cross-references against the linked Frappe record.","operationId":"axk_network_api_ai_extract_document","tags":["ai"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"file_url":{"type":"string","description":""},"doctype":{"type":"string","description":""},"docname":{"type":"string","description":""}},"required":["file_url"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.ai.get_thread_messages":{"post":{"summary":"Get all messages for a specific thread.","description":"Get all messages for a specific thread.","operationId":"axk_network_api_ai_get_thread_messages","tags":["ai"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"thread_id":{"type":"string","description":""}},"required":["thread_id"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.ai.get_threads":{"post":{"summary":"Get the current user's chat threads, most recent first.","description":"Get the current user's chat threads, most recent first.","operationId":"axk_network_api_ai_get_threads","tags":["ai"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"search":{"type":"string","description":""},"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.ai.new_thread":{"post":{"summary":"Create a new empty thread.","description":"Create a new empty thread.","operationId":"axk_network_api_ai_new_thread","tags":["ai"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.ai.rename_thread":{"post":{"summary":"Rename a thread.","description":"Rename a thread.","operationId":"axk_network_api_ai_rename_thread","tags":["ai"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"thread_id":{"type":"string","description":""},"title":{"type":"string","description":""}},"required":["thread_id","title"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.ai.toggle_pin":{"post":{"summary":"Toggle the pinned status of a thread.","description":"Toggle the pinned status of a thread.","operationId":"axk_network_api_ai_toggle_pin","tags":["ai"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"thread_id":{"type":"string","description":""}},"required":["thread_id"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.ai_compliance.list_decisions_for":{"post":{"summary":"Return AXK AI Decision rows for a given subject \u2014 drives the","description":"'Compliance' tab on the subject's form.","operationId":"axk_network_api_ai_compliance_list_decisions_for","tags":["ai_compliance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"subject_doctype":{"type":"string","description":""},"subject_name":{"type":"string","description":""}},"required":["subject_doctype","subject_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.ai_compliance.run_compliance_check":{"post":{"summary":"Run an AI compliance check against a subject record.","description":"Returns the saved AXK AI Decision name + the parsed decision so the caller can show it inline. Failed AI calls are still recorded as Decision rows with `decision='Error'` so the audit trail is complete.","operationId":"axk_network_api_ai_compliance_run_compliance_check","tags":["ai_compliance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"subject_doctype":{"type":"string","description":""},"subject_name":{"type":"string","description":""},"decision_type":{"type":"string","description":""}},"required":["subject_doctype","subject_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.ai_test.catalogue":{"post":{"summary":"Return provider \u2192 models[] for the picker UI.","description":"Return provider \u2192 models[] for the picker UI.","operationId":"axk_network_api_ai_test_catalogue","tags":["ai_test"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.ai_test.run_compare":{"post":{"summary":"Fan out the same prompt across N (provider, model) combos in parallel.","description":"`combos` is a JSON string like: [{\"provider\": \"gemini\", \"model\": \"gemini-2.5-flash\"}, {\"provider\": \"anthropic\", \"model\": \"claude-haiku-4-5\"}]","operationId":"axk_network_api_ai_test_run_compare","tags":["ai_test"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"combos":{"type":"string","description":""},"prompt":{"type":"string","description":""},"system":{"type":"string","description":""},"max_tokens":{"type":"string","description":""}},"required":["combos","prompt"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.ai_test.run_once":{"post":{"summary":"Run a single (provider, model) call. Returns text + latency + cost.","description":"Run a single (provider, model) call. Returns text + latency + cost.","operationId":"axk_network_api_ai_test_run_once","tags":["ai_test"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"type":"string","description":""},"model":{"type":"string","description":""},"prompt":{"type":"string","description":""},"system":{"type":"string","description":""},"max_tokens":{"type":"string","description":""}},"required":["provider","model","prompt"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.announcements.delete_comment":{"post":{"summary":"Soft-delete (sets is_deleted, blanks body). Author or admin only.","description":"Soft-delete (sets is_deleted, blanks body). Author or admin only.","operationId":"axk_network_api_announcements_delete_comment","tags":["announcements"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":""}},"required":["name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.announcements.get":{"post":{"summary":"Detail view of a single announcement; respects DocType perms.","description":"Detail view of a single announcement; respects DocType perms.","operationId":"axk_network_api_announcements_get","tags":["announcements"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":""}},"required":["name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.announcements.list_active":{"post":{"summary":"Active (Published, not expired) announcements visible to the","description":"caller's audience. Sorted newest first. Each row carries comment_count + reaction_counts + my_reactions (the kinds the caller has placed on it) so the client can render the social affordances without a follow-up call per row.","operationId":"axk_network_api_announcements_list_active","tags":["announcements"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"vertical":{"type":"string","description":""},"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.announcements.list_comments":{"post":{"summary":"List comments under an announcement, oldest first. Pinned","description":"comments float to the top regardless of creation order. Replies nest under their parent_comment via the ``replies`` key.","operationId":"axk_network_api_announcements_list_comments","tags":["announcements"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"announcement":{"type":"string","description":""},"include_deleted":{"type":"string","description":""}},"required":["announcement"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.announcements.post_comment":{"post":{"summary":"Append a comment to an announcement. Reply by setting","description":"parent_comment. One-level threading only.","operationId":"axk_network_api_announcements_post_comment","tags":["announcements"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"announcement":{"type":"string","description":""},"body":{"type":"string","description":""},"parent_comment":{"type":"string","description":""}},"required":["announcement","body"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.announcements.react":{"post":{"summary":"Add or refresh a reaction for the calling user. Idempotent on","description":"(announcement, user, kind) via the doctype's expression-based name \u2014 re-reacting is a no-op.","operationId":"axk_network_api_announcements_react","tags":["announcements"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"announcement":{"type":"string","description":""},"kind":{"type":"string","description":""}},"required":["announcement"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.announcements.unreact":{"post":{"summary":"Remove the caller's reaction of the given kind. No-op if absent.","description":"Remove the caller's reaction of the given kind. No-op if absent.","operationId":"axk_network_api_announcements_unreact","tags":["announcements"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"announcement":{"type":"string","description":""},"kind":{"type":"string","description":""}},"required":["announcement"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.atlas.concept_detail":{"post":{"summary":"Single concept + its aliases (platform + tenant + ai-learned).","description":"Single concept + its aliases (platform + tenant + ai-learned).","operationId":"axk_network_api_atlas_concept_detail","tags":["atlas"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"concept_id":{"type":"string","description":""}},"required":["concept_id"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.atlas.list_concepts":{"post":{"summary":"Filtered concept list for the browser.","description":"Filtered concept list for the browser.","operationId":"axk_network_api_atlas_list_concepts","tags":["atlas"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","description":""},"bundle":{"type":"string","description":""},"search":{"type":"string","description":""},"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.atlas.overview":{"post":{"summary":"Top-level counts + per-bundle + per-domain stats for the landing view.","description":"Top-level counts + per-bundle + per-domain stats for the landing view.","operationId":"axk_network_api_atlas_overview","tags":["atlas"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.authority.authority_summary":{"post":{"summary":"KPI hero strip for /app/authority-home.","description":"Returns: flagged lot count, verified this month, anomalies rate (flagged / total), active exporters (distinct on non- Draft lots), volume this month, anchor events last 24h (anchor pipeline health).","operationId":"axk_network_api_authority_authority_summary","tags":["authority"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.authority.export_flagged_lots_csv":{"post":{"summary":"Download the flagged-lots queue as CSV. Same scope as","description":"list_flagged_lots; capped at 5000 rows.","operationId":"axk_network_api_authority_export_flagged_lots_csv","tags":["authority"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.authority.list_flagged_lots":{"post":{"summary":"Paginated list of Lots in 'Flagged' status \u2014 the authority","description":"triage queue. The Flagged status is set by event handlers when an anomaly is detected (anchor mismatch, GPS divergence, AI score drop, dispute escalation). Authority reviews and resolves with either Resolved (back to previous status) or Cancelled.","operationId":"axk_network_api_authority_list_flagged_lots","tags":["authority"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit_start":{"type":"string","description":""},"limit_page_length":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.authority.resolve_flagged_lot":{"post":{"summary":"Authority resolves a Flagged lot.","description":"decision = \"verified\" \u2192 lot.status = 'Verified' (clear) decision = \"cancelled\" \u2192 lot.status = 'Cancelled' (kill) Note is recorded as a Frappe comment so the audit trail is preserved. State precondition: lot must be Flagged.","operationId":"axk_network_api_authority_resolve_flagged_lot","tags":["authority"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"lot_name":{"type":"string","description":""},"decision":{"type":"string","description":""},"note":{"type":"string","description":""}},"required":["lot_name","decision"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.backup_admin.force_backup":{"post":{"summary":"Run `bench --site <site> backup` synchronously. Captures","description":"stdout/stderr so the operator sees what happened.","operationId":"axk_network_api_backup_admin_force_backup","tags":["backup_admin"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.backup_admin.gcs_status":{"post":{"summary":"Where do off-site copies live + when was the last successful upload?","description":"Where do off-site copies live + when was the last successful upload?","operationId":"axk_network_api_backup_admin_gcs_status","tags":["backup_admin"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.backup_admin.list_recent_backups":{"post":{"summary":"List Recent Backups","description":"","operationId":"axk_network_api_backup_admin_list_recent_backups","tags":["backup_admin"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"site":{"type":"string","description":""},"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.backup_admin.run_restore_drill":{"post":{"summary":"Restore the latest backup into a temporary tenant, validate","description":"record counts, tear down. Reports actual RTO. Steps: 1. Take a fresh backup of the source site (so the drill exercises the most recent state). 2. Create the temp tenant via the standard provisioning path. 3. Restore the backup files into the new site. 4. Compare record counts between source + restored across a representative set of doctypes. 5. Drop the drill site (always, even if validation fails). 6. Return RTO + validation result. Drill itself is best-effort: a partial-restore failure surfaces in the response, doesn't crash the running site.","operationId":"axk_network_api_backup_admin_run_restore_drill","tags":["backup_admin"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"drill_slug":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.bank.bank_summary":{"post":{"summary":"KPI hero strip for the bank dashboard.","description":"Returns portfolio-level numbers the bank cares about: total profiles, mean score, prime count, recent updates, total volume, total verified shipments.","operationId":"axk_network_api_bank_bank_summary","tags":["bank"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.bank.export_finance_profiles_csv":{"post":{"summary":"Download the FEP portfolio as CSV.","description":"Same band + entity + corridor + search filters as list_finance_profiles. Capped at 5000 rows.","operationId":"axk_network_api_bank_export_finance_profiles_csv","tags":["bank"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"score_band":{"type":"string","description":""},"entity_type":{"type":"string","description":""},"corridor":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.bank.list_finance_profiles":{"post":{"summary":"Paginated FEP list for the bank dashboard.","description":"Paginated FEP list for the bank dashboard.","operationId":"axk_network_api_bank_list_finance_profiles","tags":["bank"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit_start":{"type":"string","description":""},"limit_page_length":{"type":"string","description":""},"score_band":{"type":"string","description":""},"entity_type":{"type":"string","description":""},"corridor":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.buyer.buyer_onboard_options":{"post":{"summary":"Bundle of dropdowns + the caller's existing membership status.","description":"Returned in one round-trip so the wizard renders all steps without per-step fetches.","operationId":"axk_network_api_buyer_buyer_onboard_options","tags":["buyer"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.buyer.create_buyer_org":{"post":{"summary":"Create a Buyer org from the wizard payload.","description":"Payload shape (all string-coerced through Frappe's whitelist): { \"buyer_name\":            str  (required, 2\u2013140 chars) \"business_type\":         str  (required, one of _VALID_BUSINESS_TYPES) \"country\":               str  (required, must exist in tabCountry) \"preferred_commodities\": list[str]  (optional) \"preferred_grades\":      list[str]  (optional) } Side effects: - Insert Buyer doc. - Append the caller as a Buyer Member with role=Owner so they get full visibility + management rights immediately. - Grant the AXK Buyer role on their User doc if missing. Refuses to create a second Buyer org if the user already has a Buyer Member row anywhere \u2014 admin bypass for support cases.","operationId":"axk_network_api_buyer_create_buyer_org","tags":["buyer"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"payload":{"type":"string","description":""}},"required":["payload"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cart.cart_add":{"post":{"summary":"Cart Add","description":"","operationId":"axk_network_api_cart_cart_add","tags":["cart"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"lot":{"type":"string","description":""},"quantity":{"type":"string","description":""},"unit_price":{"type":"string","description":""},"currency":{"type":"string","description":""},"incoterms":{"type":"string","description":""},"notes":{"type":"string","description":""}},"required":["lot","quantity","unit_price"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cart.cart_checkout":{"post":{"summary":"Convert the Active cart into N AXK Orders (one per cart item),","description":"then mark the cart Checked Out. Atomicity: a SELECT ... FOR UPDATE lock on the cart row serialises concurrent checkout attempts (double-click, two tabs, two devices). All AXK Order inserts and the cart status flip happen in the same transaction, so a failure mid-loop rolls everything back \u2014 there is no path that leaves some AXK Orders created with the cart still Active. Multi-org buyers: a user in multiple Buyer organisations must pass `buyer` explicitly. If they belong to only one, it is inferred. The previous behaviour silently filed every order under the first Buyer Member row, which was wrong for users with multiple affiliations. `delivery` / `payment` arrive as JSON strings from the JS layer.","operationId":"axk_network_api_cart_cart_checkout","tags":["cart"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"delivery":{"type":"string","description":""},"payment":{"type":"string","description":""},"buyer":{"type":"string","description":""}},"required":["delivery","payment"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cart.cart_clear":{"post":{"summary":"Cart Clear","description":"","operationId":"axk_network_api_cart_cart_clear","tags":["cart"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cart.cart_get":{"post":{"summary":"Cart Get","description":"","operationId":"axk_network_api_cart_cart_get","tags":["cart"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cart.cart_remove":{"post":{"summary":"Cart Remove","description":"","operationId":"axk_network_api_cart_cart_remove","tags":["cart"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"item_name":{"type":"string","description":""}},"required":["item_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cart.cart_update_price":{"post":{"summary":"Cart Update Price","description":"","operationId":"axk_network_api_cart_cart_update_price","tags":["cart"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"item_name":{"type":"string","description":""},"unit_price":{"type":"string","description":""}},"required":["item_name","unit_price"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cart.cart_update_qty":{"post":{"summary":"Cart Update Qty","description":"","operationId":"axk_network_api_cart_cart_update_qty","tags":["cart"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"item_name":{"type":"string","description":""},"quantity":{"type":"string","description":""}},"required":["item_name","quantity"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.checkout.create_order_checkout":{"post":{"summary":"Create a Stripe Checkout Session for direct-fiat payment of an order.","description":"On Stripe success the order webhook (``stripe_order_webhook``) marks the order Paid and funds the linked escrow. Returns ``{ok, checkout_url, session_id}`` or an error dict.","operationId":"axk_network_api_checkout_create_order_checkout","tags":["checkout"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_name":{"type":"string","description":""}},"required":["order_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.checkout.get_checkout_options":{"post":{"summary":"Return everything the checkout modal needs to render.","description":"Shape:: { \"ok\": True, \"order\": {name, total_amount, currency, lot, exporter_name, ...}, \"wallet\": {balance_axkt, can_pay_with_wallet, axkt_required}, \"fiat\":   {stripe_available, currency, total_amount}, \"topup_tiers\": [1, 5, 10, 25, 50, 100], \"rate\":   {axkt_per_usd, usd_per_order_currency}, }","operationId":"axk_network_api_checkout_get_checkout_options","tags":["checkout"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_name":{"type":"string","description":""}},"required":["order_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.checkout.pay_with_wallet":{"post":{"summary":"Burn AXKT from the buyer's wallet to settle the order.","description":"Side effects: - AXKT debited from buyer wallet via burn_for_action(action_code=\"order_settle\") - AXK Order.status: Draft \u2192 Escrow Created - AXK Order.payment_rail: forced to ``crypto_direct`` (for audit clarity) - Linked Escrow Contract.status: Pending \u2192 Funded (if escrow exists) Idempotent \u2014 a second call on a non-Draft order returns the already- settled state.","operationId":"axk_network_api_checkout_pay_with_wallet","tags":["checkout"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_name":{"type":"string","description":""}},"required":["order_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.checkout.topup_and_pay":{"post":{"summary":"Top up the wallet just enough to cover the order, then return the","description":"Stripe Checkout URL. After the buyer completes the top-up Stripe redirects to ``/app/axk-order/<name>?topup=success`` where the form auto-fires ``pay_with_wallet``. The actual top-up flow is the existing ``onboarding.topup.create_topup_checkout``; this endpoint just sizes the top-up correctly and tags the redirect so the form knows to retry.","operationId":"axk_network_api_checkout_topup_and_pay","tags":["checkout"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_name":{"type":"string","description":""}},"required":["order_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cooperative.accept_invite":{"post":{"summary":"Accept a Cooperative Invite token.","description":"The acceptor must be logged in (Guest throws) and the email on the invite must match their account email \u2014 we will not let a different user redeem a token addressed to someone else, even if they happen to share access to the inbox. Side effects: appends a Cooperative Member row for the user, grants the AXK Cooperative role, marks the invite Accepted + stamps accepted_at + created_user. Idempotent: already-Accepted invite returns success without re-adding the member row.","operationId":"axk_network_api_cooperative_accept_invite","tags":["cooperative"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":""}},"required":["token"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cooperative.cooperative_summary":{"post":{"summary":"Aggregate stats for the dashboard hero strip.","description":"- status-group counts (on-marketplace / in-flight / settled / other) - settled revenue per currency (from linked AXK Orders that reached Settled status against this co-op's lots \u2014 that's the actual money landed) - pipeline value per currency (sum of asking_price for marketplace-visible lots \u2014 the supply value sitting in the showroom waiting for a buyer)","operationId":"axk_network_api_cooperative_cooperative_summary","tags":["cooperative"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cooperative.create_lot":{"post":{"summary":"Create a Lot from the wizard payload.","description":"Payload shape (everything as strings \u2014 Frappe whitelist coerces): { \"cooperative\":       str (required for admin; auto-resolved otherwise), \"commodity_type\":    str (required), \"corridor\":          str (required), \"quantity\":          float (required, > 0), \"unit\":              \"kg\" | \"MT\" (default kg), \"grade\":             str (optional), \"processing_method\": \"Washed\"|\"Natural\"|\"Honey\" (optional), \"exporter\":          str (optional), \"lot_reference\":     str (optional) } Validation ---------- - Auth: caller must be a Cooperative Member (admin bypass). - Cooperative resolution: - Non-admin with exactly 1 membership \u2192 that coop is forced. - Non-admin with multiple memberships \u2192 caller must specify a value matching one of their memberships. - Admin must specify a cooperative explicitly. - All linked records (commodity, corridor, exporter, grade) validated by `frappe.db.exists` before doc creation so a typo from a hand-rolled call produces a clear 400. - Quantity must be a positive number. Returns the new Lot doc name so the wizard can route to the listing page or admin form.","operationId":"axk_network_api_cooperative_create_lot","tags":["cooperative"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"payload":{"type":"string","description":""}},"required":["payload"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cooperative.export_incoming_orders_csv":{"post":{"summary":"Download the cooperative-side incoming-orders list as CSV.","description":"Same filter semantics as list_incoming_orders. Capped at 5000.","operationId":"axk_network_api_cooperative_export_incoming_orders_csv","tags":["cooperative"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cooperative.export_lots_csv":{"post":{"summary":"Download the cooperative's lot list as CSV.","description":"Respects the active filter + search term, same as list_lots. Capped at 5000 rows.","operationId":"axk_network_api_cooperative_export_lots_csv","tags":["cooperative"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cooperative.invite_member":{"post":{"summary":"Send an invite to join `cooperative` as a member.","description":"Auth: caller must be an Owner of the target cooperative, or an admin (System Manager / AXK Admin). Owner is enforced via a direct SQL probe on the Cooperative Member table so a Manager cannot escalate by adding more Owners. Idempotency ----------- If a Pending invite for (cooperative, invitee_email) already exists, we resend the email + bump expires_at instead of creating a duplicate row. Accepted / Revoked rows do not block a new invite \u2014 sometimes you really do want to re-invite. Returns the invite name + status so the front-end can render a confirmation toast.","operationId":"axk_network_api_cooperative_invite_member","tags":["cooperative"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"cooperative":{"type":"string","description":""},"invitee_email":{"type":"string","description":""},"role":{"type":"string","description":""}},"required":["cooperative","invitee_email"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cooperative.list_incoming_orders":{"post":{"summary":"Page of AXK Orders against this cooperative's lots.","description":"Producers care about \"who is buying my stuff\" \u2014 this is the demand side of the cooperative dashboard. Mirrors the my-orders / exporter-home envelope shape so the front-end is consistent.","operationId":"axk_network_api_cooperative_list_incoming_orders","tags":["cooperative"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit_start":{"type":"string","description":""},"limit_page_length":{"type":"string","description":""},"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cooperative.list_invites":{"post":{"summary":"Return Pending invites for the cooperative.","description":"Visible to Owners + admins. Pending only \u2014 Accepted/Revoked/ Expired live on the doctype list view for audit.","operationId":"axk_network_api_cooperative_list_invites","tags":["cooperative"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"cooperative":{"type":"string","description":""}},"required":["cooperative"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cooperative.list_lot":{"post":{"summary":"Flip a Draft Lot to Listed so buyers can see it on the","description":"marketplace. The Lot doctype controller enforces the forward-only status progression (Draft \u2192 Listed \u2192 Notarized \u2192 ...) so we just call `db.set_value` after the membership + state checks. The Xahau anchor lifecycle is handled by the existing retry_checkpoint_proof scheduler once the lot is Listed, so this RPC does NOT trigger an inline anchor \u2014 that would block the user on a slow ledger round-trip. Auth: caller must be a Cooperative Member of the lot's cooperative (admin bypass). Idempotent: re-listing a Listed lot returns success without an extra DB write.","operationId":"axk_network_api_cooperative_list_lot","tags":["cooperative"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":""}},"required":["name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cooperative.list_lots":{"post":{"summary":"Page of Lots the session user can see as a cooperative.","description":"Mirrors the buyer / exporter envelope shape so the front-end pattern is the same across all three dashboards.","operationId":"axk_network_api_cooperative_list_lots","tags":["cooperative"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit_start":{"type":"string","description":""},"limit_page_length":{"type":"string","description":""},"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cooperative.lot_wizard_options":{"post":{"summary":"Pre-flight bundle for the Lot creation wizard.","description":"Returns the dropdown sets and the caller's cooperative membership in a single round-trip so the wizard renders all steps without per-step fetches. Admins see ALL cooperatives so they can create lots on behalf of any producer.","operationId":"axk_network_api_cooperative_lot_wizard_options","tags":["cooperative"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cooperative.recent_settlements":{"post":{"summary":"Return the cooperative's most recently settled orders.","description":"Used on /app/cooperative-home as a \"money in\" feed at the top of the page \u2014 what the producer cares about most. Returns just the last `limit` settled orders (default 5), newest first, with the lot reference + buyer + commodity + amount + currency + settled date so the cooperative can recognise each payout at a glance. Tap-through opens the order detail page via the existing card click handler on the front-end.","operationId":"axk_network_api_cooperative_recent_settlements","tags":["cooperative"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cooperative.revoke_invite":{"post":{"summary":"Flip a Pending invite to Revoked.","description":"Auth: Owner of the parent cooperative, or admin. Idempotent \u2014 revoking an already-Revoked or Accepted invite returns success without an extra write.","operationId":"axk_network_api_cooperative_revoke_invite","tags":["cooperative"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"invite_name":{"type":"string","description":""}},"required":["invite_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cooperative.settled_revenue_trend":{"post":{"summary":"Daily settled revenue for this cooperative over the last N days.","description":"Powers the sparkline in the Settled revenue summary card. Returns one series per currency so a co-op trading USD + EUR sees two sparklines instead of a mixed line that loses meaning. Shape: { \"days\":    int, \"series\":  { \"USD\": [{\"day\": \"2026-05-01\", \"value\": 12345.67}, ...], \"EUR\": [...] } } Each series has exactly N entries (oldest first, today last), zero-filled for days with no settlements so the front-end can render a continuous line without gap detection. Window clamped [7, 90] so a malicious caller cannot make us aggregate years.","operationId":"axk_network_api_cooperative_settled_revenue_trend","tags":["cooperative"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"days":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.cooperative.settlement_detail":{"post":{"summary":"Payout details for a single settled order.","description":"Used by the Recent settlements row drawer on cooperative-home \u2014 surfaces the rail (XRPL / SWIFT / etc.), the release tx hash, the AXKT mint hash, and the settlement timestamp so the producer can confirm money arrived without opening a separate page. Scope: same Cooperative Member filter as the rest of the cooperative APIs. Returns {} if the user cannot see the order.","operationId":"axk_network_api_cooperative_settlement_detail","tags":["cooperative"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_name":{"type":"string","description":""}},"required":["order_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.did.get_did_document":{"post":{"summary":"Resolve the platform issuer DID document.","description":"Resolve the platform issuer DID document.","operationId":"axk_network_api_did_get_did_document","tags":["did"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.dns_admin.add_tenant_a_record":{"post":{"summary":"Per-tenant A record (alternative to wildcard if you want","description":"per-name records, e.g. to enable Let's Encrypt per subdomain).","operationId":"axk_network_api_dns_admin_add_tenant_a_record","tags":["dns_admin"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"tenant_slug":{"type":"string","description":""},"target_ip":{"type":"string","description":""}},"required":["tenant_slug"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.dns_admin.ensure_wildcard_a_record":{"post":{"summary":"Add `*.axk.org A <target_ip>` if not already present. Defaults","description":"to the AXK prod LB IP. Idempotent.","operationId":"axk_network_api_dns_admin_ensure_wildcard_a_record","tags":["dns_admin"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"target_ip":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.dns_admin.status":{"post":{"summary":"Diagnostic \u2014 does cPanel accept our token, is wildcard already set?","description":"Diagnostic \u2014 does cPanel accept our token, is wildcard already set?","operationId":"axk_network_api_dns_admin_status","tags":["dns_admin"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.documents.compose":{"post":{"summary":"AI-compose a new document; optionally ground in a Mesh ConceptQuery.","description":"AI-compose a new document; optionally ground in a Mesh ConceptQuery.","operationId":"axk_network_api_documents_compose","tags":["documents"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":""},"instruction":{"type":"string","description":""},"mesh_query":{"type":"string","description":""},"format":{"type":"string","description":""},"audience":{"type":"string","description":""},"tenant":{"type":"string","description":""},"tags":{"type":"string","description":""},"provider":{"type":"string","description":""},"model":{"type":"string","description":""},"max_tokens":{"type":"string","description":""}},"required":["title","instruction"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.documents.generate":{"post":{"summary":"Render a Print Format against a record into a PDF.","description":"Render a Print Format against a record into a PDF.","operationId":"axk_network_api_documents_generate","tags":["documents"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"template":{"type":"string","description":""},"source_doctype":{"type":"string","description":""},"source_name":{"type":"string","description":""},"title":{"type":"string","description":""},"audience":{"type":"string","description":""},"tenant":{"type":"string","description":""},"tags":{"type":"string","description":""}},"required":["template","source_doctype","source_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.documents.share":{"post":{"summary":"Mint a public share token without anchoring.","description":"Mint a public share token without anchoring.","operationId":"axk_network_api_documents_share","tags":["documents"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"document_name":{"type":"string","description":""},"expires_in_days":{"type":"string","description":""}},"required":["document_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.documents.sign":{"post":{"summary":"Anchor an existing AXK Document on Xahau + mint share token.","description":"Anchor an existing AXK Document on Xahau + mint share token.","operationId":"axk_network_api_documents_sign","tags":["documents"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"document_name":{"type":"string","description":""}},"required":["document_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.documents.status":{"post":{"summary":"Lightweight status poll for the compose page.","description":"Lightweight status poll for the compose page.","operationId":"axk_network_api_documents_status","tags":["documents"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"document_name":{"type":"string","description":""}},"required":["document_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.erp.ingest_po":{"post":{"summary":"Single inbound endpoint.","description":"The request body is whatever the ERP sent \u2014 XML or JSON. We read `frappe.request` directly so the raw bytes are intact for HMAC verification (Frappe's argument parsing would normalise + drop the signature surface). 200 OK : {ok: True, mandate_name, mandate_status, idempotent_replay} 4xx   : PermissionError / ValidationError raised \u2192 frappe renders an exception JSON 5xx   : genuine infra failure \u2014 corporate ESB will retry","operationId":"axk_network_api_erp_ingest_po","tags":["erp"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"payload":{"type":"string","description":""},"buyer_org":{"type":"string","description":""},"external_system":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.erp_intake.submit_order":{"post":{"summary":"Public POST entry \u2014 auth via HMAC headers, never via session.","description":"Reads the raw request body so the HMAC signature can be recomputed against the exact bytes the partner sent. Verifies integration + signature + timestamp, validates the payload, short-circuits on duplicate external_ref, then creates the AXK Order and submits it (which fires the escrow-creation hook). Returns the order + escrow + funding instructions.","operationId":"axk_network_api_erp_intake_submit_order","tags":["erp_intake"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.events.confirm_event":{"post":{"summary":"Two-party confirmation. Called by exporter linked to the lot.","description":"Accepts quantity, grade, and GPS for independent dual-entry comparison.","operationId":"axk_network_api_events_confirm_event","tags":["events"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"event_name":{"type":"string","description":""},"lot_name":{"type":"string","description":""},"quantity":{"type":"string","description":""},"grade":{"type":"string","description":""},"gps":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.events.create_harvest_record":{"post":{"summary":"Append a harvest entry to a Farm Plot from the field-agent app.","description":"The Farm Plot `harvest_history` child table (Farm Plot Harvest Row) is read-only in the desk and is an `istable` doctype, so it cannot be inserted standalone via /api/resource. This whitelisted method is the supported write path for offline field captures. Caller must be able to write the Farm Plot (AXK Farmer / AXK Cooperative / AXK Inspector / admin per the doctype perms). GPS + notes are stashed on a document comment since the child row has no geo fields.","operationId":"axk_network_api_events_create_harvest_record","tags":["events"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"farm_plot":{"type":"string","description":""},"harvest_date":{"type":"string","description":""},"quantity_kg":{"type":"string","description":""},"quality_grade":{"type":"string","description":""},"notes":{"type":"string","description":""},"gps_lat":{"type":"string","description":""},"gps_lng":{"type":"string","description":""},"gps_accuracy_m":{"type":"string","description":""}},"required":["farm_plot","harvest_date","quantity_kg"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.events.get_lot_timeline":{"post":{"summary":"Get verification timeline for a lot. Respects row-level permissions","description":"and blind-entry rules \u2014 the actor's pre-confirmation submission is only revealed to the actor themselves and to privileged roles.","operationId":"axk_network_api_events_get_lot_timeline","tags":["events"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"lot_name":{"type":"string","description":""}},"required":["lot_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.events.trigger_anhur_manual":{"post":{"summary":"Manual AXK AI trigger \u2014 restricted to System Manager and AXK Admin.","description":"Manual AXK AI trigger \u2014 restricted to System Manager and AXK Admin.","operationId":"axk_network_api_events_trigger_anhur_manual","tags":["events"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"lot_name":{"type":"string","description":""}},"required":["lot_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.events.trigger_xrpl_manual":{"post":{"summary":"Manual XRPL trigger \u2014 restricted to System Manager and AXK Admin.","description":"Manual XRPL trigger \u2014 restricted to System Manager and AXK Admin.","operationId":"axk_network_api_events_trigger_xrpl_manual","tags":["events"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"lot_name":{"type":"string","description":""}},"required":["lot_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.exporter.accept_order":{"post":{"summary":"Exporter clicks Accept \u2192 order moves Draft \u2192 Escrow Created.","description":"Mechanics: AXK Order is a submittable doctype. `events.order.on_submit` auto-creates the Escrow Contract from the order's totals + the corridor's fee config, flips the order's status to 'Escrow Created', marks the lot as Sold, and enqueues the escrow-service mirror. So \"accepting\" the order is just submitting it \u2014 every downstream side effect already lives in that hook. Permission posture ------------------ Auth: caller must be an Exporter Member of the order's exporter org (admin / System Manager bypass). The membership check runs BEFORE we touch the order so a wrong-buyer attempt never produces a Frappe audit-log entry under the attacker's name. Inside the lock we re-verify status to defend against a double-tap (two browser tabs both clicking Accept on the same Draft). Concurrency ----------- SELECT ... FOR UPDATE on the order row inside the transaction. If two exporters race the same Draft, the second one waits for the first to commit, then sees status='Escrow Created' and exits with a clean already-accepted message rather than creating a second Escrow Contract or double-firing the on_submit hook. { \"name\":      \"ORD-...\", \"status\":    \"Escrow Created\", \"escrow\":    \"ESC-...\" | None, \"message\":   user-friendly summary string, }","operationId":"axk_network_api_exporter_accept_order","tags":["exporter"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_name":{"type":"string","description":""}},"required":["order_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.exporter.decline_order":{"post":{"summary":"Exporter declines a Draft order they do not want to fulfil.","description":"Without this RPC, an exporter who reviews an inbound Draft and decides they cannot ship it has no clean exit \u2014 they either leave it sitting in Draft forever or wait for the buyer to cancel. Decline flips the order to Cancelled and surfaces the reason back to the buyer so they can retry with another exporter. Auth: caller must be an Exporter Member of the order's exporter org (admin / System Manager bypass). Membership SQL runs FIRST so a wrong-exporter attempt never produces an audit-log entry under the attacker's name. Safety: - order.status MUST be 'Draft'. Once the escrow has opened ('Escrow Created') the exporter cannot decline \u2014 they must either ship or go through the dispute path. - Idempotent: if the order is already Cancelled, return success with the existing state rather than fighting the state machine.","operationId":"axk_network_api_exporter_decline_order","tags":["exporter"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_name":{"type":"string","description":""},"reason":{"type":"string","description":""}},"required":["order_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.exporter.export_csv":{"post":{"summary":"Download the exporter's order list as CSV.","description":"Respects the current status_filter + search term. Honours the same Exporter Member visibility filter as list_orders. Capped at 5000 rows so a single click cannot accidentally pull a multi-GB dump.","operationId":"axk_network_api_exporter_export_csv","tags":["exporter"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.exporter.exporter_summary":{"post":{"summary":"Aggregate stats for the dashboard header.","description":"Returns status counts + total pipeline value per currency. Used by the front-end to render the hero strip (awaiting action / in escrow / settled / total pipeline) in a single round-trip.","operationId":"axk_network_api_exporter_exporter_summary","tags":["exporter"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.exporter.list_orders":{"post":{"summary":"Page of AXK Orders the session user can see as an exporter.","description":"Returns the same envelope shape as axk_network.api.orders.list_orders.","operationId":"axk_network_api_exporter_list_orders","tags":["exporter"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit_start":{"type":"string","description":""},"limit_page_length":{"type":"string","description":""},"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.exporter.mark_shipped":{"post":{"summary":"Exporter marks the order shipped \u2192 creates AXK Shipment in","description":"`In Transit` state and stamps the order with the shipment link. This unlocks the \"In Transit\" step on the order timeline that until now was always blank \u2014 the buyer can finally see WHERE their goods are. Auth: caller must be an Exporter Member of the order's exporter org (admin / System Manager bypass). Membership SQL FIRST. Safety: - Order must be in 'Escrow Created' (escrow has been funded). Marking shipped before escrow is funded would mean the exporter is shipping uncovered goods \u2014 we block that with a clear error. - If a shipment already exists on the order, return idempotent success with the existing shipment name. Stops a double-tap from creating two shipments. - All fields except order_name are optional. Carrier + tracking are strongly recommended in the UI but technically not required (some exporters use unbranded carriers).","operationId":"axk_network_api_exporter_mark_shipped","tags":["exporter"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_name":{"type":"string","description":""},"carrier":{"type":"string","description":""},"tracking_ref":{"type":"string","description":""},"departure_time":{"type":"string","description":""}},"required":["order_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.exporter.recent_settlements":{"post":{"summary":"The exporter's most recently settled orders.","description":"Same money-in lens the cooperative dashboard ships. Scoped through Exporter Member (admin bypass), 1\u201320 clamp, newest first. Returns the columns needed to render a tap-through row on /app/exporter-home.","operationId":"axk_network_api_exporter_recent_settlements","tags":["exporter"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.exporter.release_order_escrow":{"post":{"summary":"Exporter clicks Release \u2192 escrow flips Funded \u2192 Released, funds","description":"settle, AXK Order moves to Settled via the existing release pipeline in axk_network.escrow. Auth: caller must be an Exporter Member of the order's exporter org (admin / System Manager bypass). Membership check runs BEFORE we touch the escrow so a wrong-exporter attempt never produces audit-log noise under the attacker's name. Safety ------ - Escrow status MUST be 'Funded'. Released / Disputed / Cancelled return an idempotent message instead of fighting the state machine. Pending = \"not yet funded by buyer\", which is a genuine error worth surfacing. - The actual release goes through axk_network.escrow.release \u2014 same code path the existing buyer-side release_escrow uses. That means atomic state mutation, audit log entry, settlement event chain (AXKT burn, corridor node earning, exporter payout). We never touch the money directly here. - ignore_permissions on the inner release because the exporter membership check above is the auth boundary. The release function still validates the from/to state transition.","operationId":"axk_network_api_exporter_release_order_escrow","tags":["exporter"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_name":{"type":"string","description":""}},"required":["order_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.exporter.settled_revenue_trend":{"post":{"summary":"Daily settled revenue per currency over the last N days.","description":"Mirrors `cooperative.settled_revenue_trend` for the exporter side. Scope = Exporter Member (admin bypass). Window clamped [7, 90]. Zero-fills missing days so the front-end can render a continuous polyline without gap logic.","operationId":"axk_network_api_exporter_settled_revenue_trend","tags":["exporter"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"days":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.exporter_onboard.create_exporter_org":{"post":{"summary":"Create an Exporter org from the wizard payload.","description":"Payload shape: { \"exporter_name\":        str  (required, 2\u2013140 chars) \"country\":              str  (required, must exist in tabCountry) \"registration_number\":  str  (optional) \"customs_code\":         str  (optional) } Side effects: - Insert Exporter doc. - Append the caller as an Exporter Member with role=Owner. - Grant the AXK Exporter role on their User doc if missing. Refuses to create a second Exporter org if the user already has any Exporter Member row \u2014 admin bypass for support cases.","operationId":"axk_network_api_exporter_onboard_create_exporter_org","tags":["exporter_onboard"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"payload":{"type":"string","description":""}},"required":["payload"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.exporter_onboard.exporter_onboard_options":{"post":{"summary":"Bundle of dropdowns + the caller's existing membership status.","description":"Bundle of dropdowns + the caller's existing membership status.","operationId":"axk_network_api_exporter_onboard_exporter_onboard_options","tags":["exporter_onboard"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.farmer.export_my_lots_csv":{"post":{"summary":"Download the farmer's lot list as CSV. Same scope as","description":"list_my_lots.","operationId":"axk_network_api_farmer_export_my_lots_csv","tags":["farmer"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.farmer.farmer_summary":{"post":{"summary":"KPI hero strip for /app/farmer-home.","description":"Returns: active plots, total area, lots produced (lifetime), total volume kg, FEP score if the farmer has a profile.","operationId":"axk_network_api_farmer_farmer_summary","tags":["farmer"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.farmer.list_my_lots":{"post":{"summary":"Paginated Lot list scoped to the caller's farm plots.","description":"Paginated Lot list scoped to the caller's farm plots.","operationId":"axk_network_api_farmer_list_my_lots","tags":["farmer"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit_start":{"type":"string","description":""},"limit_page_length":{"type":"string","description":""},"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.farmer.list_my_plots":{"post":{"summary":"Paginated Farm Plot list for the calling farmer.","description":"Paginated Farm Plot list for the calling farmer.","operationId":"axk_network_api_farmer_list_my_plots","tags":["farmer"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit_start":{"type":"string","description":""},"limit_page_length":{"type":"string","description":""},"q":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.fep.get_by_token":{"post":{"summary":"Return a Finance Eligibility Profile by its opaque shareable token.","description":"The token is a UUID4 hex string generated when the FEP is first issued (or rotated via ``regenerate_shareable_link``). It is the only secret that distinguishes a lender who has been granted a view from a stranger; FEPs are not enumerable by URL otherwise. Tokens honour ``shareable_link_expires_at`` (post-expiry \u2192 reject) and ``shareable_link_revoked`` (manual revocation \u2192 reject). Both rejections still log to the audit trail for forensic purposes. The response is watermarked per caller and the watermark is HMAC- bound to the platform key so a stripped or forged watermark fails verification. ``{ok, profile, watermark, watermark_hmac, verification, \u2026}`` on success; ``{ok: False, error, code}`` on miss / expiry / revocation.","operationId":"axk_network_api_fep_get_by_token","tags":["fep"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"opaque UUID4 hex that identifies a FEP for sharing."}},"required":["token"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.fep.get_by_token_vc":{"post":{"summary":"Return a W3C VC 2.0 credential for a FEP by its shareable token.","description":"Same access semantics as ``get_by_token`` (revocation + expiry + rate limit + access log), but the payload is a standards-compliant Verifiable Credential 2.0 with an Ed25519Signature2020 proof. Lenders using off-the-shelf VC verifiers (SpruceID, Trinsic, Microsoft Entra Verified ID) can validate this without writing AXK Network-specific code: 1. Resolve issuer DID (did:web:<host>) \u2192 /.well-known/did.json 2. Pick verificationMethod by kid in proof 3. Run Ed25519Signature2020 verification","operationId":"axk_network_api_fep_get_by_token_vc","tags":["fep"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":""},"recipient_id":{"type":"string","description":""}},"required":["token"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.fep.get_my_advice":{"post":{"summary":"Return concrete actions the owner of this FEP can take to raise","description":"their eligibility score. Surfaces the FEP as a behavioural lever, not a black box: each suggestion comes with the points it would unlock and the underlying record the owner needs to add (a verified shipment, an inspection, a new buyer, a dispute resolution, etc.).","operationId":"axk_network_api_fep_get_my_advice","tags":["fep"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":""}},"required":["name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.fep.get_status":{"post":{"summary":"Lightweight credential-status endpoint per the VC's","description":"credentialStatus.id. Returns ``{revoked: bool, expires_at?}``.","operationId":"axk_network_api_fep_get_status","tags":["fep"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"profile":{"type":"string","description":""}},"required":["profile"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.fep.regenerate_shareable_link":{"post":{"summary":"Rotate the shareable token. Old token instantly stops resolving.","description":"Used after a suspected leak, after a deal closes, or on a routine rotation cadence.","operationId":"axk_network_api_fep_regenerate_shareable_link","tags":["fep"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"FEP name."},"ttl_days":{"type":"string","description":"lifespan for the new token. Defaults to 90 days."}},"required":["name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.fep.revoke_shareable_link":{"post":{"summary":"Mark the current token as revoked. Subsequent reads via the token","description":"return ``code: revoked``. Use after a suspected leak to surface the revocation reason to the recipient. Regenerate to issue a new one.","operationId":"axk_network_api_fep_revoke_shareable_link","tags":["fep"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":""}},"required":["name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.fep.set_link_expiry":{"post":{"summary":"Adjust the current token's expiry without rotating the token","description":"itself. Use to extend a deal-in-progress or cut a leaked link short.","operationId":"axk_network_api_fep_set_link_expiry","tags":["fep"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":""},"days_from_now":{"type":"string","description":""}},"required":["name","days_from_now"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.fep.verify":{"post":{"summary":"Verify an ED25519 signature on a FEP score JSON or release manifest.","description":"Pure offline verification \u2014 no DB read of FEP rows. The caller posts the canonical ``score_json`` (or release manifest JSON) and the hex signature. The server walks **current + retired platform keys** looking for one that validates \u2014 so signatures from a previously-active key continue to verify after rotation. The caller can override which key to try via ``public_key_hex``; otherwise we try the kid embedded in the canonical payload first, then fall back to walking every known key. Returns ``{verified, computed_hash, signer, kid, error?}``.","operationId":"axk_network_api_fep_verify","tags":["fep"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"score_json":{"type":"string","description":""},"signature":{"type":"string","description":""},"public_key_hex":{"type":"string","description":""}},"required":["score_json","signature"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.fep.verify_artefact":{"post":{"summary":"Verify a recipient artefact.","description":"The artefact embeds (canonical_score_json, watermark, watermark_hmac, profile, token, issued_at, kid) under a single ED25519 signature. Tampering with any field \u2014 including stripping the watermark \u2014 breaks verification. Returns ``{verified, kid, computed_hash, embedded: {...}, error?}``.","operationId":"axk_network_api_fep_verify_artefact","tags":["fep"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"artefact_json":{"type":"string","description":""},"signature":{"type":"string","description":""}},"required":["artefact_json","signature"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.fep.verify_vc":{"post":{"summary":"Verify a W3C VC 2.0 credential issued by AXK Network.","description":"Accepts the credential as either a JSON string (POST body) or a dict (when called from Python). Returns the standard ``{verified, kid, signer, computed_digest, ...}`` shape.","operationId":"axk_network_api_fep_verify_vc","tags":["fep"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"credential":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.fep.verify_watermark":{"post":{"summary":"Verify a watermark / hmac pair was issued by AXK Network.","description":"Useful in litigation: \"this artefact was received by lender X on date Y\" \u2014 recompute the HMAC and confirm it matches. Returns ``{verified, expected_hmac, error?}``.","operationId":"axk_network_api_fep_verify_watermark","tags":["fep"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"watermark":{"type":"string","description":""},"watermark_hmac":{"type":"string","description":""},"profile_name":{"type":"string","description":""},"token":{"type":"string","description":""}},"required":["watermark","watermark_hmac","profile_name","token"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.finance.get_exporter_profile":{"post":{"summary":"Get exporter's finance eligibility profile \u2014 public, restricted fields.","description":"Get exporter's finance eligibility profile \u2014 public, restricted fields.","operationId":"axk_network_api_finance_get_exporter_profile","tags":["finance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"exporter":{"type":"string","description":""},"profile_ref":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.finance.get_public_lot_verification":{"post":{"summary":"Public API for lot verification \u2014 restricted fields, no emails.","description":"Public API for lot verification \u2014 restricted fields, no emails.","operationId":"axk_network_api_finance_get_public_lot_verification","tags":["finance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"lot_ref":{"type":"string","description":""}},"required":["lot_ref"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.finance.get_workspace_stats":{"post":{"summary":"Get dashboard statistics scoped to the calling user's own data.","description":"`role` was historically honoured from the request payload as a \"filter to this role's view\" hint. That allowed any authenticated caller to request the stats of a higher-privilege role (e.g. AXK Bank) because the response builder trusted the string rather than re-deriving from the session. The parameter is kept in the signature for backwards compatibility but is now treated as an optional narrowing filter: it can only restrict to a role the caller already holds; any other value is ignored.","operationId":"axk_network_api_finance_get_workspace_stats","tags":["finance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.health.system_health":{"post":{"summary":"Standardised system health check for AXK Network (Platform Admin-gated).","description":"dict: { \"status\": \"healthy\" | \"degraded\", \"timestamp\": str, \"checks\": { \"database\": str, \"cache\": str, \"ai_provider\": str, \"workers\": str, \"xahau_chain\": str, \"axk_ai_provider\": str, \"recent_ai_call_log_error_rate\": str, } } frappe.PermissionError: When caller lacks Platform Admin role.","operationId":"axk_network_api_health_system_health","tags":["health"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.inspector.admin_approve_inspection":{"post":{"summary":"Admin approves a Submitted inspection \u2192 Approved.","description":"Optional note recorded as a Frappe comment on the inspection doc so the audit trail is preserved. Refuses to act on anything other than Submitted \u2014 admins cannot accidentally \"approve\" a Draft or re-approve an already-approved record.","operationId":"axk_network_api_inspector_admin_approve_inspection","tags":["inspector"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":""},"note":{"type":"string","description":""}},"required":["name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.inspector.admin_reject_inspection":{"post":{"summary":"Admin rejects a Submitted inspection \u2192 Rejected.","description":"Reason is required \u2014 a rejection without a written reason is unhelpful and leaves the inspector no way to fix the issue. Same state precondition as approve.","operationId":"axk_network_api_inspector_admin_reject_inspection","tags":["inspector"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":""},"reason":{"type":"string","description":""}},"required":["name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.inspector.export_my_inspections_csv":{"post":{"summary":"Download the inspector's inspection list as CSV.","description":"Honours the same visibility filter as list_my_inspections \u2014 inspectors see their own work, admin sees all. Capped at 5000 rows.","operationId":"axk_network_api_inspector_export_my_inspections_csv","tags":["inspector"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.inspector.list_my_inspections":{"post":{"summary":"Paginated AXK Quality Inspection list for the calling inspector.","description":"Envelope shape mirrors list_orders / list_my_disputes so the same prev/next pill component habits apply. JOINs Lot so the UI can show the commodity + cooperative without an extra round-trip.","operationId":"axk_network_api_inspector_list_my_inspections","tags":["inspector"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit_start":{"type":"string","description":""},"limit_page_length":{"type":"string","description":""},"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.inspector.submit_inspection":{"post":{"summary":"Inspector flips their own Draft inspection \u2192 Submitted.","description":"Auth: caller must be the inspector on record (admin / System Manager bypass). Once Submitted the row is read-only for the inspector; only an admin can Approve or Reject. Idempotent on already-Submitted/Approved/Rejected \u2014 returns success with the current status rather than fighting the state machine.","operationId":"axk_network_api_inspector_submit_inspection","tags":["inspector"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":""}},"required":["name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.insurance_dashboard.agent_approve_claim":{"post":{"summary":"Insurance Agent approves a Filed / Under Review claim.","description":"Records `approved_amount` and transitions the claim to Approved (the payout itself happens via a subsequent pay_claim call from the insurance api). Auth: caller must be an Insurance Agent on the policy's insurer company (or admin). State precondition: Filed or Under Review only.","operationId":"axk_network_api_insurance_dashboard_agent_approve_claim","tags":["insurance_dashboard"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":""},"approved_amount":{"type":"string","description":""},"note":{"type":"string","description":""}},"required":["name","approved_amount"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.insurance_dashboard.agent_reject_claim":{"post":{"summary":"Insurance Agent rejects a Filed / Under Review claim.","description":"Reason is required \u2014 a rejection without a written reason leaves the insured no path to dispute or refile.","operationId":"axk_network_api_insurance_dashboard_agent_reject_claim","tags":["insurance_dashboard"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":""},"reason":{"type":"string","description":""}},"required":["name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.insurance_dashboard.export_my_policies_csv":{"post":{"summary":"Download the insurance agent's policy portfolio as CSV.","description":"Download the insurance agent's policy portfolio as CSV.","operationId":"axk_network_api_insurance_dashboard_export_my_policies_csv","tags":["insurance_dashboard"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status_filter":{"type":"string","description":""},"policy_type":{"type":"string","description":""},"risk_band":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.insurance_dashboard.insurance_summary":{"post":{"summary":"KPI hero strip for /app/insurance-home.","description":"Returns: active policies, total coverage, premium collected, claims pending count, claims paid total, loss ratio (paid / premium).","operationId":"axk_network_api_insurance_dashboard_insurance_summary","tags":["insurance_dashboard"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.insurance_dashboard.list_my_policies":{"post":{"summary":"Paginated Insurance Policy list scoped to the agent's","description":"insurer company.","operationId":"axk_network_api_insurance_dashboard_list_my_policies","tags":["insurance_dashboard"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit_start":{"type":"string","description":""},"limit_page_length":{"type":"string","description":""},"status_filter":{"type":"string","description":""},"policy_type":{"type":"string","description":""},"risk_band":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.insurance_dashboard.list_pending_claims":{"post":{"summary":"Claims in Filed / Under Review state on policies the agent","description":"insures. Ordered oldest-first so the longest-waiting claim rises to the top.","operationId":"axk_network_api_insurance_dashboard_list_pending_claims","tags":["insurance_dashboard"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.integration.check_all_services":{"post":{"summary":"Trigger immediate health check on all services.","description":"Trigger immediate health check on all services.","operationId":"axk_network_api_integration_check_all_services","tags":["integration"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.integration.get_hub_data":{"post":{"summary":"Get all data needed to render the Integration Hub dashboard.","description":"Get all data needed to render the Integration Hub dashboard.","operationId":"axk_network_api_integration_get_hub_data","tags":["integration"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.integration.get_service_logs":{"post":{"summary":"Get recent logs for a specific service.","description":"Get recent logs for a specific service.","operationId":"axk_network_api_integration_get_service_logs","tags":["integration"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"service_key":{"type":"string","description":""},"limit":{"type":"string","description":""}},"required":["service_key"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.integration.retry_log":{"post":{"summary":"Re-queue a failed integration log entry.","description":"Re-queue a failed integration log entry.","operationId":"axk_network_api_integration_retry_log","tags":["integration"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"log_name":{"type":"string","description":""}},"required":["log_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.integration.rotate_service_credential":{"post":{"summary":"Rotate API/JWT/Webhook/OAuth credentials and verify health.","description":"Rotate API/JWT/Webhook/OAuth credentials and verify health.","operationId":"axk_network_api_integration_rotate_service_credential","tags":["integration"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"service_key":{"type":"string","description":""},"credential_field":{"type":"string","description":""},"new_value":{"type":"string","description":""}},"required":["service_key","credential_field","new_value"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.integration.test_service":{"post":{"summary":"Test connectivity to a single service. Returns status and response time.","description":"Test connectivity to a single service. Returns status and response time.","operationId":"axk_network_api_integration_test_service","tags":["integration"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"service_key":{"type":"string","description":""}},"required":["service_key"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.iot.device_status":{"post":{"summary":"Device Status","description":"","operationId":"axk_network_api_iot_device_status","tags":["iot"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"device":{"type":"string","description":""}},"required":["device"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.iot.force_cross_ref":{"post":{"summary":"Re-run cross-reference for one Reading.","description":"Re-run cross-reference for one Reading.","operationId":"axk_network_api_iot_force_cross_ref","tags":["iot"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"reading":{"type":"string","description":""}},"required":["reading"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.iot.ingest":{"post":{"summary":"Single-reading ingest. Authenticates via X-AXK-Device-* headers.","description":"Single-reading ingest. Authenticates via X-AXK-Device-* headers.","operationId":"axk_network_api_iot_ingest","tags":["iot"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"reading_type":{"type":"string","description":""},"captured_at":{"type":"string","description":""},"value_num":{"type":"string","description":""},"value_unit":{"type":"string","description":""},"value_text":{"type":"string","description":""},"value_json":{"type":"string","description":""},"lat":{"type":"string","description":""},"lng":{"type":"string","description":""},"accuracy_m":{"type":"string","description":""},"location_label":{"type":"string","description":""},"raw_payload":{"type":"string","description":""},"device_signature":{"type":"string","description":""},"transport_protocol":{"type":"string","description":""},"ingest_request_id":{"type":"string","description":""},"battery_pct":{"type":"string","description":""},"signal_dbm":{"type":"string","description":""}},"required":["reading_type"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.iot.ingest_bulk":{"post":{"summary":"Batch ingest. `readings` may be a JSON list or a list of dicts.","description":"Batch ingest. `readings` may be a JSON list or a list of dicts.","operationId":"axk_network_api_iot_ingest_bulk","tags":["iot"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"readings":{"type":"string","description":""}},"required":["readings"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.iot.list_readings":{"post":{"summary":"List Readings","description":"","operationId":"axk_network_api_iot_list_readings","tags":["iot"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"device":{"type":"string","description":""},"reading_type":{"type":"string","description":""},"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.iot.overview":{"post":{"summary":"Summary for the /admin/iot page.","description":"Summary for the /admin/iot page.","operationId":"axk_network_api_iot_overview","tags":["iot"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.iot.register":{"post":{"summary":"Register a new IoT Device. Returns the device_token (shown ONCE).","description":"Register a new IoT Device. Returns the device_token (shown ONCE).","operationId":"axk_network_api_iot_register","tags":["iot"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","description":""},"device_type":{"type":"string","description":""},"model":{"type":"string","description":""},"serial_number":{"type":"string","description":""},"firmware_version":{"type":"string","description":""},"protocol":{"type":"string","description":""},"owner_tenant":{"type":"string","description":""},"owned_by_user":{"type":"string","description":""},"location_label":{"type":"string","description":""},"lat":{"type":"string","description":""},"lng":{"type":"string","description":""},"linked_warehouse":{"type":"string","description":""},"linked_washing_station":{"type":"string","description":""},"installed_at":{"type":"string","description":""},"notes":{"type":"string","description":""}},"required":["title","device_type"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.iot.rotate_device_token":{"post":{"summary":"Rotate a device's token. The plaintext is returned ONCE.","description":"Rotate a device's token. The plaintext is returned ONCE.","operationId":"axk_network_api_iot_rotate_device_token","tags":["iot"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"device":{"type":"string","description":""}},"required":["device"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.iot.run_anchor_sweep":{"post":{"summary":"Force a Merkle-checkpoint anchor of pending readings.","description":"Force a Merkle-checkpoint anchor of pending readings.","operationId":"axk_network_api_iot_run_anchor_sweep","tags":["iot"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.lead_intake.send_invite_for_lead":{"post":{"summary":"Send an Onboarding Invitation email for an existing AXK Lead.","description":"Reads the Lead, derives the entity_type, creates an Onboarding Invitation, generates a token, fires the branded invite email, and posts a Comment back on the Lead with the invitation reference. Returns the new invitation name + the kyc URL. Whitelisted, requires a real session (not allow_guest). Used by the Lead client script \"Send Onboarding Invite\" button.","operationId":"axk_network_api_lead_intake_send_invite_for_lead","tags":["lead_intake"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"lead_name":{"type":"string","description":""}},"required":["lead_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.lead_intake.submit":{"post":{"summary":"Receive onboarding form submission. Creates a Lead with type-aware","description":"naming, attaches a structured comment, and emails confirmation + admin notification. Backward compatible with the legacy `/enterprise` payload (which didn't include `client_type`) \u2014 defaults to `other` in that case.","operationId":"axk_network_api_lead_intake_submit","tags":["lead_intake"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"kwargs":{"type":"string","description":""}},"required":["kwargs"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.mandates.create_mandate":{"post":{"summary":"Create a Purchase Mandate from the buyer wizard payload.","description":"Payload shape: { \"buyer_org\":          str (required; admin must specify, non-admin must be Owner of it) \"kind\":               \"Open\" | \"Bounded\" (required) \"title\":              str (optional, defaults to \"Mandate <kind> \u00b7 <DATE>\") \"currency\":           \"USD\"|\"EUR\"|\"GBP\" (required for Bounded) \"budget_ceiling\":     float (required for Bounded, > 0) \"approved_quantity\":  float (optional, > 0 if present) \"quantity_uom\":       \"kg\" | \"MT\" (optional) \"commodity_scope\":    str (optional, must exist in tabCommodity) \"valid_from\":         \"YYYY-MM-DD\" (optional) \"valid_to\":           \"YYYY-MM-DD\" (optional, must be after valid_from) } Mandate created in Active status with holder_user = the caller so all spend under this mandate is attributable. source set to Manual.","operationId":"axk_network_api_mandates_create_mandate","tags":["mandates"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"payload":{"type":"string","description":""}},"required":["payload"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.mandates.export_csv":{"post":{"summary":"Download the buyer's mandate list as CSV.","description":"Respects the current status_filter + search term. Honours the same Buyer Member visibility filter as list_mandates. Capped at 5000 rows.","operationId":"axk_network_api_mandates_export_csv","tags":["mandates"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.mandates.list_mandates":{"post":{"summary":"Page of Purchase Mandates the session user can see.","description":"Returns the same envelope shape as axk_network.api.orders.list_orders so the page client code can be a near-clone of /my-orders. Envelope: { \"rows\":              [<projection>, ...], \"total_count\":       int, \"limit_start\":       int, \"limit_page_length\": int, \"has_more\":          bool, \"status_filter\":     str, }","operationId":"axk_network_api_mandates_list_mandates","tags":["mandates"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit_start":{"type":"string","description":""},"limit_page_length":{"type":"string","description":""},"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.mandates.mandate_summary":{"post":{"summary":"Aggregate stats for the dashboard header.","description":"Returns total counts split by kind + status, total remaining budget across all Active Bounded mandates (per currency, since mandates can be denominated in different currencies and summing naively across them is wrong).","operationId":"axk_network_api_mandates_mandate_summary","tags":["mandates"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.mandates.mandate_wizard_options":{"post":{"summary":"Pre-flight bundle for /app/mandate-new.","description":"Returns the caller's buyer-orgs they own, currency allow-list, commodity dropdown, and the is_admin flag in a single round-trip so the wizard renders all steps without per-step fetches.","operationId":"axk_network_api_mandates_mandate_wizard_options","tags":["mandates"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.mesh_explorer.explore_concept":{"post":{"summary":"Resolve ONE concept into a readable kernel view.","description":"{ concept, is_a:        [<self>, <ancestor>, ...]   (classes_of chain), attributes:  [<concept id>, ...]         (has_attribute, inherited), attestations:[<concept id>, ...]         (requires_attestation, inherited), direct_relations: [{predicate, object, object_text, tenant}, ...], states:      [<state label>, ...], transitions: [{from, to, from_full, to_full, guard, on_enter}, ...], found:       bool } The state machine is resolved by reading every in-force `(<concept>.<state>, transitions_to, <concept>.<next>)` triple, then looking up the matching guard triple `(<concept>.<from>_to_<to>, guard, ...)` and any on_enter action on the target state. This is the automated transitions_to resolution that the raw Concept Relation list view cannot give an operator.","operationId":"axk_network_api_mesh_explorer_explore_concept","tags":["mesh_explorer"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"concept":{"type":"string","description":""}},"required":["concept"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.mesh_explorer.list_concepts":{"post":{"summary":"Paginated, searchable, sortable list of distinct subjects in the","description":"Concept Relation table \u2014 the explorable concepts. Each row is one distinct in-force `subject_concept` decorated with its in-force relation count and a flag for whether it declares an is_a edge (i.e. it is a class node rather than a state / guard node). only_classes=1 hides the synthetic `<class>.<state>` and `<class>.<from>_to_<to>` rows so the operator sees just the class catalogue. Search matches the subject id. Returns the standard envelope: {rows, total_count, limit_start, limit_page_length, has_more, q, sort, only_classes}","operationId":"axk_network_api_mesh_explorer_list_concepts","tags":["mesh_explorer"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit_start":{"type":"string","description":""},"limit_page_length":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""},"only_classes":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.mesh_import.analyse_file":{"post":{"summary":"Parse + match headers. Returns proposed mapping for the user to confirm.","description":"Parse + match headers. Returns proposed mapping for the user to confirm.","operationId":"axk_network_api_mesh_import_analyse_file","tags":["mesh_import"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"file_text":{"type":"string","description":""},"file_kind":{"type":"string","description":""},"tenant":{"type":"string","description":""}},"required":["file_text"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.mesh_import.commit_mapping":{"post":{"summary":"Run the import. `mappings` is a JSON string of [{header, concept}].","description":"Returns {created, updated, skipped, errors[]}.","operationId":"axk_network_api_mesh_import_commit_mapping","tags":["mesh_import"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"file_text":{"type":"string","description":""},"file_kind":{"type":"string","description":""},"mappings":{"type":"string","description":""},"target_doctype":{"type":"string","description":""},"tenant":{"type":"string","description":""},"external_id_header":{"type":"string","description":""}},"required":["file_text","file_kind","mappings","target_doctype"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.mesh_oversight.list_mesh_activity":{"post":{"summary":"Paginated, searchable, sortable list of recent mesh fact","description":"entities \u2014 the regulator activity feed. Each row is a Fact Entity decorated with: its tenant region (jurisdiction), count of current fact values, count of those that are anchored (attested), and whether it has been projected to a native doctype. Filters by sector (entity_type), jurisdiction (tenant region) and commodity (current agri.commodity fact value). Search matches entity name / external id / DID / entity_type. Returns the standard envelope: {rows, total_count, limit_start, limit_page_length, has_more, q, sort, sector, jurisdiction, commodity}","operationId":"axk_network_api_mesh_oversight_list_mesh_activity","tags":["mesh_oversight"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit_start":{"type":"string","description":""},"limit_page_length":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""},"sector":{"type":"string","description":""},"jurisdiction":{"type":"string","description":""},"commodity":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.mesh_oversight.mesh_facets":{"post":{"summary":"Distinct filter values for the toolbar dropdowns.","description":"sectors      \u2014 distinct Fact Entity.entity_type jurisdictions\u2014 distinct AXK Tenant.region across entities commodities  \u2014 distinct current agri.commodity Fact Value.value_text Each facet is capped so a pathological mesh cannot blow up the response. Used only to populate the UI selects; the actual filtering is enforced server-side in list_mesh_activity.","operationId":"axk_network_api_mesh_oversight_mesh_facets","tags":["mesh_oversight"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.mesh_oversight.mesh_summary":{"post":{"summary":"KPI hero strip for /app/mesh-oversight.","description":"Returns network-wide mesh counts: total fact entities, total current fact values, in-force concept relations, anchored attestations (fact values + verified answers that carry a cryptographic anchor), entities seen in the last 24h (indexing pipeline liveness) and the anchored-attestation coverage rate.","operationId":"axk_network_api_mesh_oversight_mesh_summary","tags":["mesh_oversight"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.notification_prefs.get_my_preferences":{"post":{"summary":"Return the caller's bell + email preference flags.","description":"Return the caller's bell + email preference flags.","operationId":"axk_network_api_notification_prefs_get_my_preferences","tags":["notification_prefs"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.notification_prefs.set_my_preferences":{"post":{"summary":"Update the caller's preference flags.","description":"Payload accepts any subset of the eight known keys (four bell + four email). Missing keys keep their current value. Values are normalised to 0/1 so the client can pass booleans, \"true\"/\"false\", or \"0\"/\"1\".","operationId":"axk_network_api_notification_prefs_set_my_preferences","tags":["notification_prefs"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"prefs":{"type":"string","description":""}},"required":["prefs"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.onboarding.admin_otp_recovery":{"post":{"summary":"System-Manager lever to unblock a user stuck on OTP delivery \u2014","description":"without the old practice of writing live OTPs to the Error Log. Default (reveal falsy): re-trigger normal OTP delivery for the invitation and report which channel handled it (admin-initiated resend). reveal truthy: break-glass for when no phone channel is configured / reachable \u2014 mint a fresh OTP, store only its hash, and return the code ONLY in this authenticated System-Manager response (it is never written to any log). The reveal is recorded as a security event (admin + invitation + time; the code itself is NOT stored), so every break-glass use is traceable. The admin relays the code out-of-band.","operationId":"axk_network_api_onboarding_admin_otp_recovery","tags":["onboarding"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"invitation":{"type":"string","description":""},"reveal":{"type":"string","description":""}},"required":["invitation"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.onboarding.approve_invitation":{"post":{"summary":"Admin approves a KYC-reviewed invitation: create User + send welcome email.","description":"dict: {success, user_email, message}","operationId":"axk_network_api_onboarding_approve_invitation","tags":["onboarding"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"invitation_name":{"type":"string","description":"The Onboarding Invitation document name."},"role_profile":{"type":"string","description":"Override role profile (defaults by entity_type)."}},"required":["invitation_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.onboarding.bulk_invite":{"post":{"summary":"Create invitations from a list of dicts (CSV upload).","description":"Create invitations from a list of dicts (CSV upload).","operationId":"axk_network_api_onboarding_bulk_invite","tags":["onboarding"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"rows":{"type":"string","description":""},"parent_institution":{"type":"string","description":""}},"required":["rows"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.onboarding.check_progress":{"post":{"summary":"Poll for onboarding completion status.","description":"Poll for onboarding completion status.","operationId":"axk_network_api_onboarding_check_progress","tags":["onboarding"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"invitation":{"type":"string","description":""}},"required":["invitation"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.onboarding.cold_register":{"post":{"summary":"Self-serve registration without an invitation.","description":"Self-serve registration without an invitation.","operationId":"axk_network_api_onboarding_cold_register","tags":["onboarding"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"entity_name":{"type":"string","description":""},"entity_type":{"type":"string","description":""},"phone":{"type":"string","description":""},"email":{"type":"string","description":""},"parent_search":{"type":"string","description":""}},"required":["entity_name","entity_type","phone"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.onboarding.create_invitation":{"post":{"summary":"Create an onboarding invitation and return the token URL.","description":"Create an onboarding invitation and return the token URL.","operationId":"axk_network_api_onboarding_create_invitation","tags":["onboarding"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"entity_name":{"type":"string","description":""},"entity_type":{"type":"string","description":""},"phone":{"type":"string","description":""},"email":{"type":"string","description":""},"parent_institution":{"type":"string","description":""},"invited_by":{"type":"string","description":""},"region":{"type":"string","description":""},"registration_number":{"type":"string","description":""}},"required":["entity_name","entity_type"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.onboarding.reject_invitation":{"post":{"summary":"Mark an invitation Rejected and email the applicant the reason.","description":"Called from the Onboarding Invitation form Reject button. Doesn't create or modify a User row.","operationId":"axk_network_api_onboarding_reject_invitation","tags":["onboarding"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"invitation_name":{"type":"string","description":""},"reason":{"type":"string","description":""}},"required":["invitation_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.onboarding.resend_invitation":{"post":{"summary":"Re-send the original invitation email (e.g. after a delivery","description":"failure or applicant losing the link). Same token, same URL \u2014 so we don't invalidate prior submissions in flight.","operationId":"axk_network_api_onboarding_resend_invitation","tags":["onboarding"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"invitation_name":{"type":"string","description":""}},"required":["invitation_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.onboarding.search_institutions":{"post":{"summary":"Search for institutions by name (for cold cooperative registration).","description":"Search for institutions by name (for cold cooperative registration).","operationId":"axk_network_api_onboarding_search_institutions","tags":["onboarding"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","description":""}},"required":["query"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.onboarding.send_otp":{"post":{"summary":"Send OTP via WhatsApp, then SMS fallback (dev-log only in dev mode).","description":"Send OTP via WhatsApp, then SMS fallback (dev-log only in dev mode).","operationId":"axk_network_api_onboarding_send_otp","tags":["onboarding"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"invitation":{"type":"string","description":""},"phone":{"type":"string","description":""}},"required":["invitation","phone"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.onboarding.submit_invitation":{"post":{"summary":"Public form submission: create Onboarding Invitation + send branded email with token link.","description":"This is the unauthenticated public form at /onboarding-invite. Anyone can request an invitation; the AXK team reviews and sends the KYC link. dict: {success, message}","operationId":"axk_network_api_onboarding_submit_invitation","tags":["onboarding"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"entity_name":{"type":"string","description":"Organization or individual name."},"entity_type":{"type":"string","description":"Cooperative | Farmer | Buyer | Institution"},"email":{"type":"string","description":"Contact email (used to send the invitation link)."},"phone":{"type":"string","description":"Contact phone."},"region":{"type":"string","description":"Geographic region."}},"required":["entity_name","entity_type"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.onboarding.submit_kyc":{"post":{"summary":"Token-gated KYC submission: upload document for manual review.","description":"Called from /onboarding-invite?token=... after the user clicks their link. Stores the document as a Frappe File attachment and queues the invitation for manual review (status \u2192 'Opened', review queue picks it up). The user does NOT set a password here. After the admin approves the application, an email lands with a single-use Frappe password reset link so they can set their own. This matches how regulated platforms onboard (no plaintext password in transit before vetting + Frappe's own password-reset cryptography). The legacy `password` kwarg is accepted but ignored for back-compat with old form versions still cached on devices. dict: {success, message}","operationId":"axk_network_api_onboarding_submit_kyc","tags":["onboarding"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"Secure invitation token from the email link."},"legal_name":{"type":"string","description":"Full legal name as on ID."},"id_number":{"type":"string","description":"National ID or business registration number."},"file_name":{"type":"string","description":"Original filename of the uploaded document."},"file_content":{"type":"string","description":"Base64-encoded file content."},"password":{"type":"string","description":"Legacy field, no longer used."}},"required":["token","legal_name","id_number"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.onboarding.validate_token":{"post":{"summary":"Validate an invitation token. Returns pre-fill data.","description":"Validate an invitation token. Returns pre-fill data.","operationId":"axk_network_api_onboarding_validate_token","tags":["onboarding"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":""}},"required":["token"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.onboarding.verify_and_complete":{"post":{"summary":"Verify OTP and trigger complete onboarding.","description":"API-002 guard: after _OTP_FAIL_LIMIT wrong OTPs within _OTP_FAIL_WINDOW_SECONDS, the invitation is locked for _OTP_LOCKOUT_SECONDS. A valid OTP verification clears both the failure counter and the lockout flag.","operationId":"axk_network_api_onboarding_verify_and_complete","tags":["onboarding"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"invitation":{"type":"string","description":""},"otp":{"type":"string","description":""},"entity_name":{"type":"string","description":""},"entity_type":{"type":"string","description":""},"phone":{"type":"string","description":""},"email":{"type":"string","description":""}},"required":["invitation","otp"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.ops_dashboard.snapshot":{"post":{"summary":"One call \u2014 everything the dashboard needs.","description":"One call \u2014 everything the dashboard needs.","operationId":"axk_network_api_ops_dashboard_snapshot","tags":["ops_dashboard"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.orders.admin_resolve_dispute_refund":{"post":{"summary":"Admin closes the dispute in favour of the buyer \u2014 escrow","description":"flips Disputed \u2192 Cancelled and the buyer's funds refund. Same shape as release. The transition runs through `escrow.cancel` so the refund hits the same atomic state mutation + audit + settlement-event pipeline.","operationId":"axk_network_api_orders_admin_resolve_dispute_refund","tags":["orders"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_name":{"type":"string","description":""},"note":{"type":"string","description":""}},"required":["order_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.orders.admin_resolve_dispute_release":{"post":{"summary":"Admin closes the dispute in favour of the exporter \u2014 escrow","description":"flips Disputed \u2192 Released and the buyer's funds settle. The note is required and persists in the Escrow Audit Log so we have a written justification for the resolution. See `_resolve_escrow_for_order` for the safety guarantees: the escrow must already be Disputed and the order/escrow must exist. The actual transition runs through `escrow.release` which handles tx_hash recording, settlement events, and audit log.","operationId":"axk_network_api_orders_admin_resolve_dispute_release","tags":["orders"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_name":{"type":"string","description":""},"note":{"type":"string","description":""}},"required":["order_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.orders.buyer_cancel_draft_order":{"post":{"summary":"Buyer cancels their own Draft order before the exporter accepts.","description":"A Draft order has no escrow yet \u2014 accept() is what opens the escrow contract \u2014 so there is no money to claw back. The lot is still on the marketplace, the exporter has not committed to the deal. Cancelling here is a clean state flip with no settlement side-effects. Auth: caller must be a Buyer Member of the order's buyer org (admin / System Manager bypass). Membership SQL runs FIRST so a wrong-buyer attempt never produces an audit-log entry under the attacker's name. Safety: - order.status == 'Draft'          \u2192 flip to 'Cancelled' - order.status == 'Cancelled'      \u2192 idempotent success - any other status                 \u2192 refuse (escrow already opened; buyer must dispute instead)","operationId":"axk_network_api_orders_buyer_cancel_draft_order","tags":["orders"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_name":{"type":"string","description":""},"reason":{"type":"string","description":""}},"required":["order_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.orders.buyer_summary":{"post":{"summary":"Compact KPI bundle for the /app/my-orders header.","description":"- counts: orders by status (Draft / Escrow Created / Settled) - committed_by_currency: SUM(total_amount) on orders whose escrow is currently Funded \u2014 the buyer's money locked in escrow right now, awaiting exporter delivery + release. This is the buyer-side mirror of the exporter open-exposure KPI. Distinct from \"spent\" (Settled) and \"draft\" (un-funded). - settled_by_currency: SUM on Settled orders (money already released to the exporter on the buyer's behalf). Scoped through the same Buyer Member filter as list_orders; admin bypasses.","operationId":"axk_network_api_orders_buyer_summary","tags":["orders"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.orders.dispute_order":{"post":{"summary":"Buyer-side wrapper around the canonical escrow.dispute path.","description":"The buyer hits \"Dispute order\" on the order detail page when goods have not arrived, or arrived in a state they cannot accept. The escrow flips Funded \u2192 Disputed which freezes the funds pending AXK support resolution. No money moves automatically \u2014 disputed escrows wait on a human. Auth: caller must be a Buyer Member of the order's buyer org (admin / System Manager bypass). Membership SQL runs BEFORE any escrow lookup so an outsider attempt never leaks existence info. Safety state machine: - escrow.status == 'Disputed'           \u2192 idempotent success \"already disputed\" - escrow.status == 'Pending'            \u2192 \"cannot dispute, not yet funded\" - escrow.status in 'Released', 'Settled' \u2192 \"already released, contact support to raise a post-release dispute\" - escrow.status == 'Cancelled'          \u2192 \"cannot dispute a cancelled escrow\" - escrow.status == 'Funded'             \u2192 delegate to escrow.dispute reason is REQUIRED and stripped \u2014 the canonical dispute path enforces it but we surface a friendlier error sooner.","operationId":"axk_network_api_orders_dispute_order","tags":["orders"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_name":{"type":"string","description":""},"reason":{"type":"string","description":""}},"required":["order_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.orders.dispute_timeline":{"post":{"summary":"Dispute audit rows for an order, newest-first.","description":"Used by the Dispute panel on /app/order/<NAME> when the escrow is in Disputed state. Reads every Escrow Audit Log row whose to_state is 'Disputed' OR from_state is 'Disputed' so the panel can render the open \u2192 resolution sequence. Visibility uses the shared order-party filter: buyer, exporter, cooperative-via-lot, or admin. Each row carries actor (who did it), ts (when), reason (free-text), and the state transition.","operationId":"axk_network_api_orders_dispute_timeline","tags":["orders"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_name":{"type":"string","description":""}},"required":["order_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.orders.export_csv":{"post":{"summary":"Download the buyer's order list as CSV.","description":"Respects the current status_filter + search term. Honours the same Buyer Member visibility filter as list_orders. Capped at 5000 rows \u2014 wider scope is an admin Frappe report concern, not an in-app export.","operationId":"axk_network_api_orders_export_csv","tags":["orders"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.orders.export_my_disputes_csv":{"post":{"summary":"Download the caller's dispute list as CSV.","description":"Same visibility filter as list_my_disputes \u2014 buyers see their own disputes, exporters see disputes against them, admin sees everything. Capped at 5000 rows for the same reason as the other CSV exports: wider scope belongs to a Frappe report, not an in-app download.","operationId":"axk_network_api_orders_export_my_disputes_csv","tags":["orders"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.orders.list_my_disputes":{"post":{"summary":"Paginated cross-order dispute list for buyers and exporters.","description":"Each row is an escrow currently or formerly in `Disputed`, joined with its order so the page can show the parties, the amount, and the dispute's open/resolved state at a glance. Visibility runs through `_dispute_party_filter_sql` \u2014 buyers see disputes they raised, exporters see disputes raised against them. Admin sees all. status_filter: - \"all\"      \u2192 every dispute the user can see - \"open\"     \u2192 escrow.status = 'Disputed' - \"resolved\" \u2192 escrow has a Disputed audit-log row but is no longer in Disputed state (i.e. an admin moved it to Released or Cancelled) sort: one of _DISPUTE_SORT_MAP keys. Unknown falls back to newest. Envelope shape mirrors list_orders so the client uses the same prev/next pill component.","operationId":"axk_network_api_orders_list_my_disputes","tags":["orders"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit_start":{"type":"string","description":""},"limit_page_length":{"type":"string","description":""},"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.orders.list_orders":{"post":{"summary":"Page of AXK Orders the session user can see, newest first.","description":"Returns a paginated envelope so the client can render a list without loading every order in one shot. Production users hit hundreds of orders; the previous unbounded variant would have pushed a 5MB+ DOM and a 4s render on a 200-order account. Envelope shape: { \"rows\":              [<projection>, ...], \"total_count\":       int, \"limit_start\":       int,    # echoed for the client \"limit_page_length\": int,    # echoed for the client \"has_more\":          bool, \"status_filter\":     str,    # echoed (normalised) } status_filter: \"all\" | \"draft\" | \"escrow\" | \"settled\". Unknown values fall back to \"all\" rather than erroring \u2014 the UI may add new pills before the backend knows about them.","operationId":"axk_network_api_orders_list_orders","tags":["orders"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit_start":{"type":"string","description":""},"limit_page_length":{"type":"string","description":""},"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""},"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.orders.order_detail":{"post":{"summary":"Single AXK Order projection for /app/order/<NAME>.","description":"Includes lot snapshot, parties, terms, delivery destination, and a derived stage so the buyer page can render a status pill + progress indicator without touching internal escrow fields.","operationId":"axk_network_api_orders_order_detail","tags":["orders"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":""}},"required":["name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.orders.purchase_detail":{"post":{"summary":"Payout detail for a single buyer-settled order.","description":"Mirrors cooperative.settlement_detail \u2014 same Escrow + Lot join, same explorer-URL handling (strip path \u2192 append /tx/HASH) \u2014 but scoped through Buyer Member instead of Cooperative Member. Used by the inline drawer on /app/my-orders. Returns {} when the buyer cannot see the order so the client renders a clean error rather than leaking a 403.","operationId":"axk_network_api_orders_purchase_detail","tags":["orders"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_name":{"type":"string","description":""}},"required":["order_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.orders.recent_purchases":{"post":{"summary":"The buyer's most recently settled orders.","description":"Mirrors cooperative.recent_settlements + exporter.recent_settlements for the buyer side \u2014 the money-out feed on /app/my-orders. Scoped through Buyer Member (admin bypass). Returns the last N (clamped 1-20) settled orders, newest first, with the lot snapshot needed for the row preview.","operationId":"axk_network_api_orders_recent_purchases","tags":["orders"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.oversight.oversight_disputes":{"post":{"summary":"Open disputed escrows \u2014 the lead's \"must-action\" list.","description":"Open disputed escrows \u2014 the lead's \"must-action\" list.","operationId":"axk_network_api_oversight_oversight_disputes","tags":["oversight"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.oversight.oversight_notification_health":{"post":{"summary":"Per-event opt-out + 7-day order-notification volume.","description":"Two operational signals for the lead: (1) Per-event muted count \u2014 if many users have muted `notify_order_disputed`, dispute volume is too high or the bell is too noisy. (2) 7-day Notification Log volume scoped to `document_type = 'AXK Order'` \u2014 proves the gate from #427 is still firing for everything that is not muted.","operationId":"axk_network_api_oversight_oversight_notification_health","tags":["oversight"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.oversight.oversight_nudge_exporter":{"post":{"summary":"Admin-only nudge sent to every Exporter Member of a stalled","description":"order. Use case: a Funded escrow has gone N days without a shipment and the lead wants to prod the exporter without bouncing to a separate email tool. The nudge writes a bell entry per recipient and sends an email using the same plumbing as dispute notifications. Idempotent in spirit \u2014 there is no per-day dedup because admins intentionally re-nudge, but we cap the note at 280 chars to keep emails sensible. Why admin-only: a nudge from a buyer would conflict with the dispute path. Buyers express grievance via dispute, admins nudge via this endpoint.","operationId":"axk_network_api_oversight_oversight_nudge_exporter","tags":["oversight"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_name":{"type":"string","description":""},"note":{"type":"string","description":""}},"required":["order_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.oversight.oversight_pending_claims":{"post":{"summary":"Insurance Claims sitting in Filed / Under Review across the","description":"whole platform \u2014 the admin queue for triage. Same shape as the other oversight panels: admin-only, oldest- first ordering, limit clamped to [1, 50].","operationId":"axk_network_api_oversight_oversight_pending_claims","tags":["oversight"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.oversight.oversight_pending_inspections":{"post":{"summary":"Submitted inspections waiting on admin review.","description":"These are the inspections an admin is supposed to land on /app/my-inspections and approve or reject. Surfacing them on /app/oversight gives the lead the same single-screen view they get for disputes + stalled escrows.","operationId":"axk_network_api_oversight_oversight_pending_inspections","tags":["oversight"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.oversight.oversight_recent_orders":{"post":{"summary":"Most recently created / modified AXK Orders across the platform.","description":"Most recently created / modified AXK Orders across the platform.","operationId":"axk_network_api_oversight_oversight_recent_orders","tags":["oversight"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.oversight.oversight_stalled_escrows":{"post":{"summary":"Funded escrows with no shipment after `days` days.","description":"These are the escrows that are most likely to convert into disputes. Surfacing them on the oversight dashboard lets the lead nudge the exporter (or the buyer) before the situation deteriorates. Caller-supplied `days` is clamped to [1, 30] \u2014 never trust incoming numerics, and a 0-day window would flood the panel on every freshly-funded escrow.","operationId":"axk_network_api_oversight_oversight_stalled_escrows","tags":["oversight"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"days":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.oversight.oversight_stalled_shipments":{"post":{"summary":"Shipments in Preparing / Delayed past N days. Same trigger","description":"as the daily digest section so admins clicking through from the email see consistent data. days clamped to [1, 30]. limit clamped to [1, 50].","operationId":"axk_network_api_oversight_oversight_stalled_shipments","tags":["oversight"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"days":{"type":"string","description":""},"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.oversight.oversight_summary":{"post":{"summary":"One-shot bundle for the oversight hero strip.","description":"Returns counts that the lead engineer asks for at a glance: - escrows by status (Pending / Funded / Released / Disputed) - orders by status (Draft / Escrow Created / Settled / Cancelled) - lots by status group (marketplace / inflight / settled / other) - actor counts (cooperatives, buyers, exporters, total users) - total pipeline + total settled value per currency","operationId":"axk_network_api_oversight_oversight_summary","tags":["oversight"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.profile.email_finance_profile":{"post":{"summary":"Email a Finance Eligibility Profile shareable link to a lender/bank.","description":"Email a Finance Eligibility Profile shareable link to a lender/bank.","operationId":"axk_network_api_profile_email_finance_profile","tags":["profile"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"profile_name":{"type":"string","description":""},"recipient_email":{"type":"string","description":""},"recipient_name":{"type":"string","description":""}},"required":["profile_name","recipient_email"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.profile.get_axk_profile":{"post":{"summary":"Get Axk Profile","description":"","operationId":"axk_network_api_profile_get_axk_profile","tags":["profile"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.profile.get_feature_flags":{"post":{"summary":"Return enabled feature flags for the current user's company.","description":"Return enabled feature flags for the current user's company.","operationId":"axk_network_api_profile_get_feature_flags","tags":["profile"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.profile.revoke_finance_profile_share":{"post":{"summary":"Revoke Finance Profile Share","description":"","operationId":"axk_network_api_profile_revoke_finance_profile_share","tags":["profile"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"profile_name":{"type":"string","description":""}},"required":["profile_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.profile.share_finance_profile":{"post":{"summary":"Share Finance Profile","description":"","operationId":"axk_network_api_profile_share_finance_profile","tags":["profile"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"profile_name":{"type":"string","description":""}},"required":["profile_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.readiness.production_readiness":{"post":{"summary":"Run every readiness check. Admin-gated \u2014 exposes AXK Settings","description":"posture (env, payment mode, AI key presence, wallet balance) which a Website User shouldn't be able to enumerate. { \"summary\":  \"ok\" | \"warn\" | \"bad\", \"ok\": int, \"warn\": int, \"bad\": int, \"items\": [ ... per-check rows ... ], }","operationId":"axk_network_api_readiness_production_readiness","tags":["readiness"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.receivables.assign_receivable":{"post":{"summary":"Assign the receivable on an order to a financier (factoring).","description":"On success: {ok: True, event: \"<VE name>\", content_hash, obligor_did, payload: {...}, already_assigned: False} If the receivable is already assigned (idempotent no-op): {ok: True, event, already_assigned: True, ...} On failure: {ok: False, code, error} Auth: the caller must own the receivable (member of the lot's cooperative or the order's exporter) or hold an admin role. The assignor is derived from the order \u2014 never trusted from the client.","operationId":"axk_network_api_receivables_assign_receivable","tags":["receivables"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"receivable_ref":{"type":"string","description":"name of the AXK Order whose receivable is assigned."},"financier":{"type":"string","description":"the assignee \u2014 the user/org id of the bank / factor that"},"amount":{"type":"string","description":"assigned amount. Defaults to the order's total_amount."},"currency":{"type":"string","description":"ISO currency. Defaults to the order currency."}},"required":["receivable_ref","financier"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.release.get_by_token":{"post":{"summary":"Public read of an AXK Release by its shareable token.","description":"Public read of an AXK Release by its shareable token.","operationId":"axk_network_api_release_get_by_token","tags":["release"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":""}},"required":["token"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.release.list_recent":{"post":{"summary":"List the N most recent published releases.","description":"Returns lightweight metadata only (no canonical JSON / signature) so an enumeration pull stays cheap; full detail comes from ``get_by_token``.","operationId":"axk_network_api_release_list_recent","tags":["release"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.settlement_charges.compute_statutory_charges":{"post":{"summary":"Compute statutory royalty + withholding tax on an order's value.","description":"Read-only. Returns the charge amounts, the rates + their source, and a net-to-seller figure. ``royalty_pct`` / ``withholding_pct`` override the configured rate card when supplied (operator override). Returns {ok, order, base_amount, currency, royalty:{pct, amount, source}, withholding:{pct, amount, source}, total_charges, net_to_seller, rate_configured} or {ok: False, code, error}.","operationId":"axk_network_api_settlement_charges_compute_statutory_charges","tags":["settlement_charges"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"order_ref":{"type":"string","description":""},"royalty_pct":{"type":"string","description":""},"withholding_pct":{"type":"string","description":""}},"required":["order_ref"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.sla_report.monthly_sla_report":{"post":{"summary":"Compute the monthly SLA report.","description":"`tenant_name` is optional \u2014 when omitted, reports against the platform-level SLA (uses the default tier as the binding).","operationId":"axk_network_api_sla_report_monthly_sla_report","tags":["sla_report"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"tenant_name":{"type":"string","description":""},"year":{"type":"string","description":""},"month":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.status_subscribe.subscribe":{"post":{"summary":"Add an email to the AXK Status Updates list.","description":"Add an email to the AXK Status Updates list.","operationId":"axk_network_api_status_subscribe_subscribe","tags":["status_subscribe"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","description":""}},"required":["email"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.tenant.add_custom_domain":{"post":{"summary":"Append a custom domain to the tenant + queue the cert expansion.","description":"The actual nginx + certbot work runs as a follow-up task on the box (admin runs `bin/expand-cert <domain>` once DNS resolves) \u2014 we don't expand certs synchronously because it requires sudo + waits for the Let's Encrypt challenge.","operationId":"axk_network_api_tenant_add_custom_domain","tags":["tenant"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"tenant_name":{"type":"string","description":""},"domain":{"type":"string","description":""}},"required":["tenant_name","domain"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.tenant.enqueue_provision":{"post":{"summary":"Schedule provisioning on the long-worker queue.","description":"Schedule provisioning on the long-worker queue.","operationId":"axk_network_api_tenant_enqueue_provision","tags":["tenant"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"tenant_name":{"type":"string","description":""}},"required":["tenant_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.tenant.resume":{"post":{"summary":"Resume","description":"","operationId":"axk_network_api_tenant_resume","tags":["tenant"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"tenant_name":{"type":"string","description":""}},"required":["tenant_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.tenant.suspend":{"post":{"summary":"Flip tenant to Suspended \u2014 bench-level maintenance mode prevents","description":"new logins and most writes. Existing sessions get bumped on next request. Reverse with `resume`.","operationId":"axk_network_api_tenant_suspend","tags":["tenant"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"tenant_name":{"type":"string","description":""}},"required":["tenant_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.tenant.terminate":{"post":{"summary":"Mark Terminated. Does NOT drop the site automatically \u2014 that's","description":"a one-shot ops action so an accident doesn't cost data.","operationId":"axk_network_api_tenant_terminate","tags":["tenant"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"tenant_name":{"type":"string","description":""},"confirm_slug":{"type":"string","description":""}},"required":["tenant_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.token.get_metrics":{"post":{"summary":"Return live AXKT token metrics. Public, no auth.","description":"Return live AXKT token metrics. Public, no auth.","operationId":"axk_network_api_token_get_metrics","tags":["token"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.transport.accept_bid":{"post":{"summary":"Exporter accepts a transport bid. Caller must be the exporter who posted the request.","description":"Exporter accepts a transport bid. Caller must be the exporter who posted the request.","operationId":"axk_network_api_transport_accept_bid","tags":["transport"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"bid_name":{"type":"string","description":""}},"required":["bid_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.transport.confirm_delivery":{"post":{"summary":"Confirm delivery. Caller must be the logistics provider or the buyer.","description":"Confirm delivery. Caller must be the logistics provider or the buyer.","operationId":"axk_network_api_transport_confirm_delivery","tags":["transport"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"shipment_name":{"type":"string","description":""}},"required":["shipment_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.transport.find_shipment":{"post":{"summary":"Resolve a user-typed reference (shipment ref/name, or a lot ref) to","description":"a shipment the caller can track. Returns {shipment} or {error}.","operationId":"axk_network_api_transport_find_shipment","tags":["transport"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ref":{"type":"string","description":""}},"required":["ref"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.transport.get_available_loads":{"post":{"summary":"Get transport requests available for bidding.","description":"Get transport requests available for bidding.","operationId":"axk_network_api_transport_get_available_loads","tags":["transport"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.transport.get_eta":{"post":{"summary":"Return current ETA snapshot for a Shipment.","description":"Return current ETA snapshot for a Shipment.","operationId":"axk_network_api_transport_get_eta","tags":["transport"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"shipment_name":{"type":"string","description":""}},"required":["shipment_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.transport.get_shipment_tracking_snapshot":{"post":{"summary":"One-shot tracking payload for the shipment tracker UI: header,","description":"derived status timeline, GPS breadcrumb trail, current position, route, and the dual delivery confirmation. Read-only.","operationId":"axk_network_api_transport_get_shipment_tracking_snapshot","tags":["transport"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"shipment_name":{"type":"string","description":""}},"required":["shipment_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.transport.list_scored_bids":{"post":{"summary":"Full list of Pending bids with scores \u2014 for the exporter","description":"review screen.","operationId":"axk_network_api_transport_list_scored_bids","tags":["transport"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"transport_request":{"type":"string","description":""}},"required":["transport_request"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.transport.mark_arrived":{"post":{"summary":"Driver marks arrival at destination \u2014 In Transit \u2192 Arrived.","description":"Buyer still needs to confirm via confirm_delivery for full Delivery Confirmed state.","operationId":"axk_network_api_transport_mark_arrived","tags":["transport"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"shipment_name":{"type":"string","description":""}},"required":["shipment_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.transport.mark_exception":{"post":{"summary":"Driver flags an exception \u2014 sets status to Delayed / Lost / Damaged.","description":"Triggers the insurance parametric handler via Shipment.on_update.","operationId":"axk_network_api_transport_mark_exception","tags":["transport"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"shipment_name":{"type":"string","description":""},"kind":{"type":"string","description":""},"reason":{"type":"string","description":""}},"required":["shipment_name","kind"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.transport.recommend_bid":{"post":{"summary":"Return the top-scored Pending bid + breakdown. Exporter UI","description":"surfaces this as the suggested accept; the exporter still has to call accept_bid manually.","operationId":"axk_network_api_transport_recommend_bid","tags":["transport"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"transport_request":{"type":"string","description":""}},"required":["transport_request"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.transport.start_trip":{"post":{"summary":"Driver marks departure \u2014 Preparing \u2192 In Transit. Records","description":"departure_time. Idempotent if already In Transit.","operationId":"axk_network_api_transport_start_trip","tags":["transport"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"shipment_name":{"type":"string","description":""}},"required":["shipment_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.transport.submit_bid":{"post":{"summary":"Submit a bid for a transport request. Caller must have AXK Logistics role.","description":"Submit a bid for a transport request. Caller must have AXK Logistics role.","operationId":"axk_network_api_transport_submit_bid","tags":["transport"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"transport_request":{"type":"string","description":""},"proposed_rate":{"type":"string","description":""},"currency":{"type":"string","description":""},"eta":{"type":"string","description":""},"vehicle_reg":{"type":"string","description":""},"notes":{"type":"string","description":""}},"required":["transport_request","proposed_rate"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.transporter.export_my_shipments_csv":{"post":{"summary":"Download the transporter's shipment list as CSV.","description":"Same visibility filter as list_my_shipments. Capped at 5000 rows.","operationId":"axk_network_api_transporter_export_my_shipments_csv","tags":["transporter"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.transporter.list_my_shipments":{"post":{"summary":"Paginated AXK Shipment list for the calling transporter.","description":"Paginated AXK Shipment list for the calling transporter.","operationId":"axk_network_api_transporter_list_my_shipments","tags":["transporter"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"limit_start":{"type":"string","description":""},"limit_page_length":{"type":"string","description":""},"status_filter":{"type":"string","description":""},"q":{"type":"string","description":""},"sort":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.transporter.transporter_summary":{"post":{"summary":"KPI hero strip for /app/my-shipments.","description":"Counts the caller's shipments grouped by status_filter so the dashboard can render four big-number cards without an extra round-trip.","operationId":"axk_network_api_transporter_transporter_summary","tags":["transporter"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.ussd.request_signature":{"post":{"summary":"Mint a USSD signing challenge for ``phone`` against ``action_ref``.","description":"Authenticated: only an operator / business flow may request a signature (a guest cannot mint challenges for arbitrary phones).","operationId":"axk_network_api_ussd_request_signature","tags":["ussd"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"action_ref":{"type":"string","description":""},"action_type":{"type":"string","description":""},"phone":{"type":"string","description":""},"summary":{"type":"string","description":""}},"required":["action_ref","action_type","phone"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.ussd.ussd_callback":{"post":{"summary":"Africa's Talking USSD webhook.","description":"Register this as the USSD callback URL in the Africa's Talking dashboard:: https://app.axk.org/api/method/axk_network.api.ussd.ussd_callback Africa's Talking POSTs form-encoded ``sessionId``, ``phoneNumber``, ``text`` and ``serviceCode`` and expects a plain-text body that begins with ``CON`` (keep the session open) or ``END`` (close it). We always return such a string and never raise \u2014 a failure closes the session with a generic ``END`` so the user is never stuck mid-session.","operationId":"axk_network_api_ussd_ussd_callback","tags":["ussd"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string","description":""},"phoneNumber":{"type":"string","description":""},"text":{"type":"string","description":""},"serviceCode":{"type":"string","description":""},"_ignored":{"type":"string","description":""}},"required":["_ignored"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.ussd.verify":{"post":{"summary":"Return whether ``action_ref`` has been USSD-authorized + by whom.","description":"Return whether ``action_ref`` has been USSD-authorized + by whom.","operationId":"axk_network_api_ussd_verify","tags":["ussd"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"action_ref":{"type":"string","description":""}},"required":["action_ref"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.verification.anchor_to_xrpl":{"post":{"summary":"Manually trigger XRPL anchoring. Restricted to System Manager and AXK Admin.","description":"Manually trigger XRPL anchoring. Restricted to System Manager and AXK Admin.","operationId":"axk_network_api_verification_anchor_to_xrpl","tags":["verification"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"event_name":{"type":"string","description":""}},"required":["event_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.verification.check_revocation":{"post":{"summary":"Public endpoint: check if a VC has been revoked.","description":"Queries the local Anchor Event journal for a VC_REVOKED event whose payload contains the vc_hash. Revocation is anchored in-process via axk_network.tasks.credentials.revoke_vc which writes an Anchor Event row and submits to Xahau.","operationId":"axk_network_api_verification_check_revocation","tags":["verification"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"vc_hash":{"type":"string","description":""}},"required":["vc_hash"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.verification.trigger_anhur":{"post":{"summary":"Manually trigger AXK AI analysis. Restricted to System Manager and AXK Admin.","description":"Manually trigger AXK AI analysis. Restricted to System Manager and AXK Admin.","operationId":"axk_network_api_verification_trigger_anhur","tags":["verification"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"event_name":{"type":"string","description":""}},"required":["event_name"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.verification.verify_credential":{"post":{"summary":"Public endpoint: verify a credential by hash or lot reference.","description":"Third parties can verify at verify.axk.org without trusting AXK \u2014 the proof chain goes: VC hash \u2192 XRPL Ledger event \u2192 Xahau L1 anchor.","operationId":"axk_network_api_verification_verify_credential","tags":["verification"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"vc_hash":{"type":"string","description":""},"lot":{"type":"string","description":""}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.verify.stats":{"post":{"summary":"Public counters \u2014 totals visible on the verify landing page.","description":"Public counters \u2014 totals visible on the verify landing page.","operationId":"axk_network_api_verify_stats","tags":["verify"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}}}},"/api/method/axk_network.api.workspace_dashboards.ai_platform":{"post":{"summary":"AI Platform / AXK AI Intelligence \u2014 call telemetry, cost, latency.","description":"AI Platform / AXK AI Intelligence \u2014 call telemetry, cost, latency.","operationId":"axk_network_api_workspace_dashboards_ai_platform","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.axk_ai_knowledge_pillar":{"post":{"summary":"Axk Ai Knowledge Pillar","description":"","operationId":"axk_network_api_workspace_dashboards_axk_ai_knowledge_pillar","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.axk_operations":{"post":{"summary":"Platform-ops dashboard \u2014 drives the silky AXK Operations workspace.","description":"Hero:    last-24h anchored events + spark KPIs:    anchor idle min, batch backlog, KYC awaiting, error log 24h Chart:   anchor events daily 28d (current 14 vs prior 14 cumulative) Breakdown: tenants by status Feed:    last failed events + ageing KYC + recent tenant lifecycle Actions: Open Ops Dashboard, Production Readiness, AXK Tenants","operationId":"axk_network_api_workspace_dashboards_axk_operations","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.buyer_marketplace":{"post":{"summary":"Buyer view \u2014 verified lots, open bids, price trends.","description":"Buyer view \u2014 verified lots, open bids, price trends.","operationId":"axk_network_api_workspace_dashboards_buyer_marketplace","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.commodity_trade":{"post":{"summary":"Commodity Trade","description":"","operationId":"axk_network_api_workspace_dashboards_commodity_trade","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.compliance_and_verification":{"post":{"summary":"Compliance And Verification","description":"","operationId":"axk_network_api_workspace_dashboards_compliance_and_verification","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.content_and_knowledge":{"post":{"summary":"Content And Knowledge","description":"","operationId":"axk_network_api_workspace_dashboards_content_and_knowledge","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.cooperative_manager":{"post":{"summary":"Cooperative network health \u2014 members, plots, forecast, approvals.","description":"Cooperative network health \u2014 members, plots, forecast, approvals.","operationId":"axk_network_api_workspace_dashboards_cooperative_manager","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.corridor_authority":{"post":{"summary":"Border / corridor clearance dashboard.","description":"Border / corridor clearance dashboard.","operationId":"axk_network_api_workspace_dashboards_corridor_authority","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.exporter_portal":{"post":{"summary":"Exporter view \u2014 orders, shipments, margins.","description":"Exporter view \u2014 orders, shipments, margins.","operationId":"axk_network_api_workspace_dashboards_exporter_portal","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.farm_pillar":{"post":{"summary":"Farm Pillar","description":"","operationId":"axk_network_api_workspace_dashboards_farm_pillar","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.farmer_dashboard":{"post":{"summary":"Farmer's view of their plots, forecasts, and recent payouts.","description":"Farmer's view of their plots, forecasts, and recent payouts.","operationId":"axk_network_api_workspace_dashboards_farmer_dashboard","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.finance_and_credit":{"post":{"summary":"Finance And Credit","description":"","operationId":"axk_network_api_workspace_dashboards_finance_and_credit","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.finance_intelligence":{"post":{"summary":"Finance Intelligence","description":"","operationId":"axk_network_api_workspace_dashboards_finance_intelligence","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.home":{"post":{"summary":"Network-wide pulse. Total users, live value, recent throughput.","description":"Network-wide pulse. Total users, live value, recent throughput.","operationId":"axk_network_api_workspace_dashboards_home","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.home_overview":{"post":{"summary":"Home \u2014 platform jump-off.","description":"Light, welcoming shape \u2014 no deep stats. The page is: - hero          : date + greeting + AI-flavoured one-liner + status pill - quick_actions : chips beside the primary Ask AXK AI CTA - pillars       : eight pillar shortcut tiles (nav, not metrics) - pulse         : live cross-platform stream + needs-you action list - ledger        : recent Xahau anchor pills - footer_status : uptime / Xahau / AI / anchor queue","operationId":"axk_network_api_workspace_dashboards_home_overview","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.identity_compliance_pillar":{"post":{"summary":"Identity Compliance Pillar","description":"","operationId":"axk_network_api_workspace_dashboards_identity_compliance_pillar","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.inspections":{"post":{"summary":"Inspections","description":"","operationId":"axk_network_api_workspace_dashboards_inspections","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.inspector_dashboard":{"post":{"summary":"Quality Inspector workload \u2014 assigned inspections + SLA.","description":"Quality Inspector workload \u2014 assigned inspections + SLA.","operationId":"axk_network_api_workspace_dashboards_inspector_dashboard","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.insurance":{"post":{"summary":"Insurance","description":"","operationId":"axk_network_api_workspace_dashboards_insurance","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.kyc_dashboard":{"post":{"summary":"KYC Reviews \u2014 submission queue, decision throughput, doc-type mix.","description":"All queries are guarded by _table_exists so this endpoint is safe on sites that haven't migrated the KYC module yet.","operationId":"axk_network_api_workspace_dashboards_kyc_dashboard","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.logistics_marketplace":{"post":{"summary":"Fleet pulse \u2014 Transport Requests, Bids, Shipments in motion.","description":"Fleet pulse \u2014 Transport Requests, Bids, Shipments in motion.","operationId":"axk_network_api_workspace_dashboards_logistics_marketplace","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.logistics_pillar":{"post":{"summary":"Logistics Pillar","description":"","operationId":"axk_network_api_workspace_dashboards_logistics_pillar","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.marketing":{"post":{"summary":"Marketing / CRM pulse \u2014 leads, campaigns, deals.","description":"Marketing / CRM pulse \u2014 leads, campaigns, deals.","operationId":"axk_network_api_workspace_dashboards_marketing","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.member_harvests":{"post":{"summary":"Member Harvests","description":"","operationId":"axk_network_api_workspace_dashboards_member_harvests","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.mobility_dashboard":{"post":{"summary":"Mobility (rideshare) pulse \u2014 bookings, drivers, vehicles, trips.","description":"Mobility (rideshare) pulse \u2014 bookings, drivers, vehicles, trips.","operationId":"axk_network_api_workspace_dashboards_mobility_dashboard","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.my_farm_season":{"post":{"summary":"My Farm Season","description":"","operationId":"axk_network_api_workspace_dashboards_my_farm_season","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.my_farms":{"post":{"summary":"My Farms","description":"","operationId":"axk_network_api_workspace_dashboards_my_farms","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.my_harvests":{"post":{"summary":"My Harvests","description":"","operationId":"axk_network_api_workspace_dashboards_my_harvests","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.network_pillar":{"post":{"summary":"Network Pillar","description":"","operationId":"axk_network_api_workspace_dashboards_network_pillar","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.operations_pillar":{"post":{"summary":"Operations Pillar","description":"","operationId":"axk_network_api_workspace_dashboards_operations_pillar","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.orders_and_escrow":{"post":{"summary":"Orders + Escrow joint view \u2014 trade + capital flow.","description":"Orders + Escrow joint view \u2014 trade + capital flow.","operationId":"axk_network_api_workspace_dashboards_orders_and_escrow","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.platform_administration":{"post":{"summary":"Admin-only platform pulse \u2014 users, live escrow, AI spend.","description":"Admin-only platform pulse \u2014 users, live escrow, AI spend.","operationId":"axk_network_api_workspace_dashboards_platform_administration","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.pre_finance_pipeline":{"post":{"summary":"Pre-finance pipeline \u2014 eligibility profiles + coverage.","description":"Pre-finance pipeline \u2014 eligibility profiles + coverage.","operationId":"axk_network_api_workspace_dashboards_pre_finance_pipeline","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.pre_harvest_marketplace":{"post":{"summary":"Pre-harvest order flow \u2014 open pre-orders, matched, forecasts.","description":"Pre-harvest order flow \u2014 open pre-orders, matched, forecasts.","operationId":"axk_network_api_workspace_dashboards_pre_harvest_marketplace","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.shipments_and_logistics":{"post":{"summary":"Shipments And Logistics","description":"","operationId":"axk_network_api_workspace_dashboards_shipments_and_logistics","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.tokens":{"post":{"summary":"Tokens dashboard \u2014 issuance volume, holders, market activity.","description":"Tokens dashboard \u2014 issuance volume, holders, market activity.","operationId":"axk_network_api_workspace_dashboards_tokens","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.tokens_forge":{"post":{"summary":"Data shape for the Tokens workspace dashboard block.","description":"Function name is preserved (tokens_forge) so the Custom HTML Block wired to it via tier1 stays valid; user-facing copy uses plain English (mint / token / concept) \u2014 no internal jargon.","operationId":"axk_network_api_workspace_dashboards_tokens_forge","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.trade_settlement_pillar":{"post":{"summary":"Trade Settlement Pillar","description":"","operationId":"axk_network_api_workspace_dashboards_trade_settlement_pillar","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.user_support":{"post":{"summary":"User Support \u2014 issues, tickets, response times.","description":"User Support \u2014 issues, tickets, response times.","operationId":"axk_network_api_workspace_dashboards_user_support","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_dashboards.verification_ledger":{"post":{"summary":"Verification Ledger","description":"","operationId":"axk_network_api_workspace_dashboards_verification_ledger","tags":["workspace_dashboards"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.api.workspace_guide.build":{"post":{"summary":"Return the Guide launchpad for `workspace` (its display name).","description":"Return the Guide launchpad for `workspace` (its display name).","operationId":"axk_network_api_workspace_guide_build","tags":["workspace_guide"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"workspace":{"type":"string","description":""}},"required":["workspace"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.did.api.create":{"post":{"summary":"Create","description":"","operationId":"axk_network_did_api_create","tags":["did"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"subject":{"type":"string","description":""},"chain":{"type":"string","description":""},"address":{"type":"string","description":""},"controller_key":{"type":"string","description":""}},"required":["subject","chain","address"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.did.api.deactivate":{"post":{"summary":"Deactivate","description":"","operationId":"axk_network_did_api_deactivate","tags":["did"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"did":{"type":"string","description":""},"reason":{"type":"string","description":""}},"required":["did","reason"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.did.api.update":{"post":{"summary":"Update","description":"","operationId":"axk_network_did_api_update","tags":["did"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"did":{"type":"string","description":""},"patch":{"type":"string","description":""}},"required":["did","patch"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.insurance.api.apply_for_policy":{"post":{"summary":"Create a new Insurance Policy in Applied status. Risk score","description":"and quoted premium are auto-filled by the policy controller's before_insert hook.","operationId":"axk_network_insurance_api_apply_for_policy","tags":["insurance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"policy_type":{"type":"string","description":""},"coverage_amount":{"type":"string","description":""},"insured_company":{"type":"string","description":""},"insurer":{"type":"string","description":""},"lot":{"type":"string","description":""},"transport_request":{"type":"string","description":""},"forecast":{"type":"string","description":""},"coverage_start":{"type":"string","description":""},"coverage_end":{"type":"string","description":""},"currency":{"type":"string","description":""},"terms":{"type":"string","description":""}},"required":["policy_type","coverage_amount","insured_company"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.insurance.api.bind_policy":{"post":{"summary":"Move a quoted policy from Applied / Under Review \u2192 Active.","description":"Admin-only. The premium must be collected separately via collect_premium for the policy to remain in good standing.","operationId":"axk_network_insurance_api_bind_policy","tags":["insurance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"policy":{"type":"string","description":""}},"required":["policy"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.insurance.api.collect_premium":{"post":{"summary":"Collect Premium","description":"","operationId":"axk_network_insurance_api_collect_premium","tags":["insurance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"policy":{"type":"string","description":""},"period":{"type":"string","description":""},"amount":{"type":"string","description":""},"currency":{"type":"string","description":""}},"required":["policy","period","amount"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.insurance.api.get_quote":{"post":{"summary":"Public read-only quote \u2014 pure function, never mutates DB.","description":"Available to any signed-in user; the underwriter can't expose private claim history because compute_risk only counts rows the caller already has read access to via the existing perm hooks.","operationId":"axk_network_insurance_api_get_quote","tags":["insurance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"policy_type":{"type":"string","description":""},"coverage_amount":{"type":"string","description":""},"insured_company":{"type":"string","description":""},"lot":{"type":"string","description":""},"transport_request":{"type":"string","description":""},"currency":{"type":"string","description":""}},"required":["policy_type","coverage_amount"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.insurance.api.ingest_oracle_reading":{"post":{"summary":"Webhook for external feeds. Restricted to AXK Admin / System","description":"Manager \u2014 providers should authenticate via a service-account user with that role, then POST to this endpoint.","operationId":"axk_network_insurance_api_ingest_oracle_reading","tags":["insurance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","description":""},"kind":{"type":"string","description":""},"value":{"type":"string","description":""},"unit":{"type":"string","description":""},"observed_at":{"type":"string","description":""},"region":{"type":"string","description":""},"lot":{"type":"string","description":""},"payload":{"type":"string","description":""}},"required":["source","kind","value"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.insurance.api.pay_claim":{"post":{"summary":"Pay Claim","description":"","operationId":"axk_network_insurance_api_pay_claim","tags":["insurance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"claim":{"type":"string","description":""},"approved_amount":{"type":"string","description":""}},"required":["claim","approved_amount"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.insurance.api.query_claim_history":{"post":{"summary":"Paginated list of claims under a policy.","description":"Paginated list of claims under a policy.","operationId":"axk_network_insurance_api_query_claim_history","tags":["insurance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"policy":{"type":"string","description":""},"limit":{"type":"string","description":""},"offset":{"type":"string","description":""}},"required":["policy"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.insurance.api.query_policy_status":{"post":{"summary":"Public read \u2014 policy perm hook enforces company scoping.","description":"Public read \u2014 policy perm hook enforces company scoping.","operationId":"axk_network_insurance_api_query_policy_status","tags":["insurance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"policy":{"type":"string","description":""}},"required":["policy"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.insurance.api.submit_claim":{"post":{"summary":"Submit Claim","description":"","operationId":"axk_network_insurance_api_submit_claim","tags":["insurance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"policy":{"type":"string","description":""},"reason":{"type":"string","description":""},"harvest_record":{"type":"string","description":""},"yield_shortfall":{"type":"string","description":""},"claimed_amount":{"type":"string","description":""}},"required":["policy"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}},"/api/method/axk_network.insurance.api.transition_claim":{"post":{"summary":"Transition Claim","description":"","operationId":"axk_network_insurance_api_transition_claim","tags":["insurance"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"claim":{"type":"string","description":""},"to_state":{"type":"string","description":""},"reason":{"type":"string","description":""}},"required":["claim","to_state"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"object","description":"The API response payload"}}}}}},"403":{"description":"Forbidden \u2014 insufficient permissions"},"429":{"description":"Rate limit exceeded (Partner API only)"}},"security":[{"sessionAuth":[]},{"partnerApiKey":[]}]}}},"tags":[{"name":"verify","description":"Public lot verification \u2014 no auth required. Cryptographic verification of Lot anchors using the platform DID."},{"name":"did","description":"W3C DID Core 1.0 \u2014 did:axk method resolution and management."},{"name":"events","description":"Verification Event CRUD and confirmation flow."},{"name":"finance","description":"Finance Eligibility Profile and scoring."},{"name":"insurance","description":"Insurance policy, claims, and premium operations."},{"name":"api","description":"Miscellaneous platform API endpoints."},{"name":"admin_console","description":"Admin Console endpoints."},{"name":"admin_portal","description":"Admin Portal endpoints."},{"name":"ai","description":"Ai endpoints."},{"name":"ai_compliance","description":"Ai Compliance endpoints."},{"name":"ai_test","description":"Ai Test endpoints."},{"name":"announcements","description":"Announcements endpoints."},{"name":"atlas","description":"Atlas endpoints."},{"name":"authority","description":"Authority endpoints."},{"name":"backup_admin","description":"Backup Admin endpoints."},{"name":"bank","description":"Bank endpoints."},{"name":"buyer","description":"Buyer endpoints."},{"name":"cart","description":"Cart endpoints."},{"name":"checkout","description":"Checkout endpoints."},{"name":"cooperative","description":"Cooperative endpoints."},{"name":"dns_admin","description":"Dns Admin endpoints."},{"name":"documents","description":"Documents endpoints."},{"name":"erp","description":"Erp endpoints."},{"name":"erp_intake","description":"Erp Intake endpoints."},{"name":"exporter","description":"Exporter endpoints."},{"name":"exporter_onboard","description":"Exporter Onboard endpoints."},{"name":"farmer","description":"Farmer endpoints."},{"name":"fep","description":"Fep endpoints."},{"name":"health","description":"Health endpoints."},{"name":"inspector","description":"Inspector endpoints."},{"name":"insurance_dashboard","description":"Insurance Dashboard endpoints."},{"name":"integration","description":"Integration endpoints."},{"name":"iot","description":"Iot endpoints."},{"name":"lead_intake","description":"Lead Intake endpoints."},{"name":"mandates","description":"Mandates endpoints."},{"name":"mesh_explorer","description":"Mesh Explorer endpoints."},{"name":"mesh_import","description":"Mesh Import endpoints."},{"name":"mesh_oversight","description":"Mesh Oversight endpoints."},{"name":"notification_prefs","description":"Notification Prefs endpoints."},{"name":"onboarding","description":"Onboarding endpoints."},{"name":"ops_dashboard","description":"Ops Dashboard endpoints."},{"name":"orders","description":"Orders endpoints."},{"name":"oversight","description":"Oversight endpoints."},{"name":"profile","description":"Profile endpoints."},{"name":"readiness","description":"Readiness endpoints."},{"name":"receivables","description":"Receivables endpoints."},{"name":"release","description":"Release endpoints."},{"name":"settlement_charges","description":"Settlement Charges endpoints."},{"name":"sla_report","description":"Sla Report endpoints."},{"name":"status_subscribe","description":"Status Subscribe endpoints."},{"name":"tenant","description":"Tenant endpoints."},{"name":"token","description":"Token endpoints."},{"name":"transport","description":"Transport endpoints."},{"name":"transporter","description":"Transporter endpoints."},{"name":"ussd","description":"Ussd endpoints."},{"name":"verification","description":"Verification endpoints."},{"name":"workspace_dashboards","description":"Workspace Dashboards endpoints."},{"name":"workspace_guide","description":"Workspace Guide endpoints."}]}}