{
  "openapi": "3.1.0",
  "info": {
    "title": "Trust Centers API",
    "version": "2026-06-16",
    "description": "Canonical API for public B2B trust-center, compliance posture, document catalog, subprocessor, control, and security update data. Anonymous access is rate-limited; verified email API keys use higher Blue Door RPS/RPM limits."
  },
  "servers": [
    {
      "url": "https://api.bluedoor.sh/trust-centers"
    },
    {
      "url": "http://0.0.0.0:8080"
    }
  ],
  "paths": {
    "/health": {
      "get": {
        "summary": "Health check",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/llms.txt": {
      "get": {
        "summary": "LLM-readable API and dataset map",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/openapi.json": {
      "get": {
        "summary": "OpenAPI document",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/openapi.json": {
      "get": {
        "summary": "OpenAPI document",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/meta": {
      "get": {
        "summary": "Dataset metadata and aggregate counts",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/usage": {
      "get": {
        "summary": "Current caller identity and rate-limit state",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/auth/otp": {
      "post": {
        "summary": "Request an email verification code for a free API key",
        "responses": {
          "202": {
            "description": "Verification code accepted for delivery"
          }
        }
      }
    },
    "/v1/auth/verify": {
      "post": {
        "summary": "Verify an email code and mint a free API key",
        "responses": {
          "200": {
            "description": "API key minted"
          }
        }
      }
    },
    "/v1/auth/limits/requests": {
      "post": {
        "summary": "Request higher API rate limits",
        "responses": {
          "202": {
            "description": "Rate-limit request accepted"
          },
          "401": {
            "description": "Verified email API key required"
          }
        }
      }
    },
    "/v1/scorecard": {
      "get": {
        "summary": "Top-level trust-center corpus scorecard",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/resolve": {
      "get": {
        "summary": "Resolve company names, domains, URLs, and trust-center hosts to stable IDs",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/search": {
      "get": {
        "summary": "Search companies, trust centers, controls, certifications, subprocessors, documents, and security updates",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/companies": {
      "get": {
        "summary": "List companies with compact trust-center coverage summaries",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/companies/{id}": {
      "get": {
        "summary": "Read one company summary",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/companies/{id}/profile": {
      "get": {
        "summary": "Read one company profile with bounded trust-center sections",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/companies/{id}/coverage": {
      "get": {
        "summary": "Read one company's trust-center data-surface scorecard",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/companies/{id}/trust-centers": {
      "get": {
        "summary": "List trust centers for one company",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/companies/{id}/certifications": {
      "get": {
        "summary": "List certifications for one company",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/companies/{id}/controls": {
      "get": {
        "summary": "List controls for one company",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/companies/{id}/subprocessors": {
      "get": {
        "summary": "List subprocessors for one company",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/companies/{id}/documents": {
      "get": {
        "summary": "List trust-center documents for one company",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/companies/{id}/security-updates": {
      "get": {
        "summary": "List security updates for one company",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/companies/{id}/sources": {
      "get": {
        "summary": "List provenance sources for one company",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/trust-centers": {
      "get": {
        "summary": "List trust centers",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/trust-centers/{id}": {
      "get": {
        "summary": "Read one trust center",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/trust-centers/{id}/profile": {
      "get": {
        "summary": "Read one trust-center profile with bounded sections",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/trust-centers/{id}/certifications": {
      "get": {
        "summary": "List certifications for one trust center",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/trust-centers/{id}/controls": {
      "get": {
        "summary": "List controls for one trust center",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/trust-centers/{id}/subprocessors": {
      "get": {
        "summary": "List subprocessors for one trust center",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/trust-centers/{id}/documents": {
      "get": {
        "summary": "List documents for one trust center",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/trust-centers/{id}/security-updates": {
      "get": {
        "summary": "List security updates for one trust center",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/trust-centers/{id}/sources": {
      "get": {
        "summary": "List provenance sources for one trust center",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/certifications": {
      "get": {
        "summary": "List certifications/frameworks",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/certifications/{id}": {
      "get": {
        "summary": "Read one certification/framework row",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/controls": {
      "get": {
        "summary": "List security controls",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/controls/{id}": {
      "get": {
        "summary": "Read one security control",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/subprocessors": {
      "get": {
        "summary": "List subprocessors",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/subprocessors/{id}": {
      "get": {
        "summary": "Read one subprocessor row",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/documents": {
      "get": {
        "summary": "List document catalog rows",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/documents/{id}": {
      "get": {
        "summary": "Read one document row",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/security-updates": {
      "get": {
        "summary": "List security advisories and update feed rows",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/security-updates/{id}": {
      "get": {
        "summary": "Read one security update",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/events": {
      "get": {
        "summary": "Latest security update events",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/sources": {
      "get": {
        "summary": "List provenance source rows",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/sources/{id}": {
      "get": {
        "summary": "Read one source row",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/providers": {
      "get": {
        "summary": "List supported trust-center vendors",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/providers/{provider_id}": {
      "get": {
        "summary": "Read one provider",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/providers/{provider_id}/companies": {
      "get": {
        "summary": "List companies for one provider",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/providers/{provider_id}/trust-centers": {
      "get": {
        "summary": "List trust centers for one provider",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/providers/{provider_id}/coverage": {
      "get": {
        "summary": "Read one provider coverage scorecard",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/coverage/providers": {
      "get": {
        "summary": "List provider-level coverage scorecards",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/coverage/providers/{provider_id}": {
      "get": {
        "summary": "Read one provider coverage scorecard",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/coverage/companies": {
      "get": {
        "summary": "List company-level coverage scorecards",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/coverage/companies/{id}": {
      "get": {
        "summary": "Read one company coverage scorecard",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/coverage/fields": {
      "get": {
        "summary": "List normalized field coverage",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/coverage/fields/{entity}": {
      "get": {
        "summary": "List normalized field coverage for one entity",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/insights/data-surfaces/companies": {
      "get": {
        "summary": "List company data-surface insight rows",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    },
    "/v1/insights/data-surfaces/companies/{id}": {
      "get": {
        "summary": "Read one company data-surface insight row",
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad request"
          },
          "404": {
            "description": "Not found"
          },
          "429": {
            "description": "Rate limited"
          }
        }
      }
    }
  }
}
