{"openapi":"3.1.0","info":{"title":"Bolrach Trust & Data API","version":"1.0.0","description":"URL and threat intelligence for Bolrach Partners Trust & Data consumers. Grading is served by the in-house Trustiry engine, which fetches the live site at request time — allow a few seconds. The `trust:read` scope is granted at key-validation time only to keys whose partner holds an active consumer/trust data link, so the data-program seam gates a real capability rather than a label.","contact":{"url":"https://docs.bolrach.dev/trust"}},"servers":[{"url":"https://api.bolrach.io","description":"Production"}],"security":[{"bearerKey":[]},{"headerKey":[]}],"paths":{"/v1/trust/check-url":{"post":{"operationId":"trustCheckUrl","summary":"Grade a URL for threats","description":"Submits a URL to the Trustiry engine and returns its grading. The engine fetches the live site, so this is not a lookup against a static list and latency reflects the target's own response time.","tags":["trust"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Absolute http(s) URL to grade. Anything else is refused with `bad_url`.","examples":["https://example.com"]}},"required":["url"]}}}},"responses":{"200":{"description":"The engine's grading for the submitted URL.","content":{"application/json":{"schema":{"type":"object","description":"Trustiry grading payload."}}}},"400":{"description":"The body did not carry an absolute http(s) URL (`bad_url`).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}},"required":["code","message","status"]}},"required":["error"]}}}},"401":{"description":"Missing or invalid API key.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}},"required":["code","message","status"]}},"required":["error"]}}}},"403":{"description":"Key lacks the `trust:read` scope. This scope is granted only to developer keys whose partner holds an active consumer/trust data link — it is not self-serve.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}},"required":["code","message","status"]}},"required":["error"]}}}},"429":{"description":"Rate limit or daily quota exceeded.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}},"required":["code","message","status"]}},"required":["error"]}}}},"502":{"description":"The trust engine did not answer in time or could not grade the URL (`trust_unavailable`).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"integer"}},"required":["code","message","status"]}},"required":["error"]}}}}}}}},"components":{"securitySchemes":{"bearerKey":{"type":"http","scheme":"bearer","description":"Authorization: Bearer bt_..."},"headerKey":{"type":"apiKey","in":"header","name":"x-api-key"}}},"tags":[{"name":"trust","description":"URL and threat intelligence (partner scope)."}]}