{"openapi":"3.1.0","info":{"title":"ZoneProof API","version":"0.1.0","description":"REST and GraphQL adapters over the ZoneProof verification core. Public domain records are canonical JSON-LD zp:DomainRecord documents with zp:-qualified ZoneProof fields. MCP and the public domain record return the full representation; the domain embed returns a compact projection of its public entity, credentials, domain-set, verification, and record URLs."},"servers":[{"url":"https://zoneproof.org"}],"paths":{"/api/healthz":{"get":{"summary":"Health check","description":"Returns a lightweight backend health response.","responses":{"200":{"description":"Backend is healthy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LooseJson"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Record or tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/brandsets/{publicId}/embed":{"get":{"summary":"Get an embeddable ZoneProof BrandSet schema","description":"Returns one shared JavaScript embed for a verified BrandSet and all of its verified member domains. Use ?format=jsonld to retrieve it as application/ld+json. Deleted, unavailable, or unverified BrandSets return no data.","parameters":[{"name":"publicId","in":"path","required":true,"description":"Random public BrandSet identifier.","schema":{"type":"string"},"example":"bs_0123456789abcdefghijKL"},{"name":"format","in":"query","required":false,"description":"Optional response format. Defaults to JavaScript; use jsonld for application/ld+json or json for generic JSON.","schema":{"type":"string"},"example":"jsonld"}],"responses":{"200":{"description":"Shared embeddable ZoneProof JSON-LD schema for a BrandSet","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LooseJson"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Record or tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/entities/search":{"get":{"summary":"Search ZoneProof entities","description":"Searches entities using query parameters.","parameters":[{"name":"namespace","in":"query","required":false,"description":"Namespace/TLD to search.","schema":{"type":"string"},"example":"bank"},{"name":"domain","in":"query","required":false,"description":"Domain to match exactly.","schema":{"type":"string"},"example":"1901.bank"},{"name":"query","in":"query","required":false,"description":"Free-text search query.","schema":{"type":"string"},"example":"community lending"},{"name":"location","in":"query","required":false,"description":"Location text such as city, state, or postal code.","schema":{"type":"string"},"example":"Chicago, IL"},{"name":"city","in":"query","required":false,"description":"City filter.","schema":{"type":"string"},"example":"Chicago"},{"name":"region","in":"query","required":false,"description":"Region, state, or subdivision filter.","schema":{"type":"string"},"example":"IL"},{"name":"country","in":"query","required":false,"description":"Country filter.","schema":{"type":"string"},"example":"US"},{"name":"postal_code","in":"query","required":false,"description":"Postal code filter.","schema":{"type":"string"},"example":"60601"},{"name":"latitude","in":"query","required":false,"description":"Latitude for radius searches.","schema":{"type":"string"},"example":"41.8781"},{"name":"longitude","in":"query","required":false,"description":"Longitude for radius searches.","schema":{"type":"string"},"example":"-87.6298"},{"name":"radius_miles","in":"query","required":false,"description":"Radius in miles for location searches.","schema":{"type":"string"},"example":"20"},{"name":"services","in":"query","required":false,"description":"Service filter. Repeat the query parameter for multiple values.","schema":{"type":"string"},"example":"lending"},{"name":"industries","in":"query","required":false,"description":"Industry filter. Repeat the query parameter for multiple values.","schema":{"type":"string"},"example":"financial_services"},{"name":"credentials","in":"query","required":false,"description":"Credential filter. Repeat the query parameter for multiple values.","schema":{"type":"string"},"example":"Bank-Commercial"},{"name":"languages","in":"query","required":false,"description":"Language filter. Repeat the query parameter for multiple values.","schema":{"type":"string"},"example":"Spanish"},{"name":"limit","in":"query","required":false,"description":"Maximum result count.","schema":{"type":"integer"},"example":10}],"responses":{"200":{"description":"Entity search results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LooseJson"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Record or tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"summary":"Search ZoneProof entities with JSON","description":"Searches entities using a JSON request body.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"namespace":"bank","query":"community","limit":10}}}},"responses":{"200":{"description":"Entity search results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LooseJson"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Record or tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/entities/verify":{"post":{"summary":"Verify an entity","description":"Verifies an entity by domain, name, credential, credential identifier, or namespace.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"domain":"example.bank","credential_type":"any","namespace":"bank"}}}},"responses":{"200":{"description":"Entity verification results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LooseJson"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Record or tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/namespaces":{"get":{"summary":"List supported namespaces","description":"Lists loaded namespaces and optional coverage/classification filters.","parameters":[{"name":"classification","in":"query","required":false,"description":"Optional namespace classification filter.","schema":{"type":"string"},"example":"restricted"},{"name":"claimStatus","in":"query","required":false,"description":"Optional ZoneProof claim status filter.","schema":{"type":"string"},"example":"claimed"},{"name":"coverageStatus","in":"query","required":false,"description":"Optional namespace coverage scope filter: full or standard.","schema":{"type":"string"},"example":"standard"},{"name":"includePlaceholders","in":"query","required":false,"description":"Include placeholder/staged namespaces.","schema":{"type":"boolean"},"example":false}],"responses":{"200":{"description":"Supported namespace list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LooseJson"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Record or tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/openapi.json":{"get":{"summary":"OpenAPI document","description":"Returns the OpenAPI 3.1 JSON document for REST and GraphQL adapters.","responses":{"200":{"description":"OpenAPI 3.1 JSON document","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LooseJson"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Record or tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/docs":{"get":{"summary":"Swagger UI","description":"Renders Swagger UI for the OpenAPI document.","responses":{"200":{"description":"Swagger UI HTML"}}}},"/api/graphql":{"get":{"summary":"List GraphQL operations","description":"Returns supported GraphQL root operations and an example request.","responses":{"200":{"description":"GraphQL operation metadata","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LooseJson"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Record or tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"summary":"Call GraphQL adapter","description":"Dispatches one supported root field per request and passes variables to the matching core function.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"query":"query Search($namespace: String, $query: String) { searchEntities(namespace: $namespace, query: $query) }","variables":{"namespace":"bank","query":"community"}}}}},"responses":{"200":{"description":"GraphQL response envelope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LooseJson"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Record or tool not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"LooseJson":{"description":"ZoneProof response payload. Shape varies by endpoint and namespace.","type":["object","array","string","number","boolean","null"]},"ErrorResponse":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"}},"required":["type","message"]}},"required":["error"]}}}}