API documentation · Service-doc target for /.well-known/api-catalog

Premier Impact Windows & Roofing API

Public endpoints for free-assessment lead intake and service health. Designed to be discoverable and invocable by autonomous agents per the agents.md guide.

Discovery resources

ResourceURLType
OpenAPI 3.1 spec/.well-known/openapi.jsonapplication/openapi+json
API catalog (linkset)/.well-known/api-catalogapplication/linkset+json
OAuth protected resource/.well-known/oauth-protected-resourceapplication/json
OpenID Connect discovery/.well-known/openid-configurationapplication/json
MCP server card/.well-known/mcp/server-card.jsonapplication/json
Agent skills index/.well-known/agent-skills/index.jsonapplication/json
Agents guide/agents.mdtext/markdown
llms.txt/llms.txttext/plain

Endpoints

GET /api/health

Service health check. No auth required.

curl https://premierimpactwindowsandroofing.com/api/health

POST /api/leads

Submit a free-assessment lead. No auth required. Rate-limited.

curl -X POST https://premierimpactwindowsandroofing.com/api/leads \
  -H "content-type: application/json" \
  -d '{
    "name": "Jane Homeowner",
    "phone": "+15615551234",
    "email": "jane@example.com",
    "zip": "33314",
    "service": "impact-windows"
  }'

Required: name, phone, email. Optional: zip, service, notes, source_page.

GET /api/leads?token=...

List leads. Requires LEADS_ADMIN_TOKEN as a query param or Bearer header. Scope: leads:read.

POST /api/vitals

RUM Web Vitals beacon. No auth. Returns 204.

POST /api/csp-report

CSP violation report. No auth. Returns 204.

Content negotiation

All HTML pages on this site honor Accept: text/markdown and return a clean markdown version. The response includes a Content-Type: text/markdown header and an X-Markdown-Tokens header indicating the approximate token cost of the markdown body.

Authentication

See /.well-known/oauth-protected-resource for issuer and scope metadata, and /.well-known/openid-configuration for full OAuth/OIDC discovery.

Rate limits & usage

See /agents.md for usage guidelines. Do not submit synthetic leads. Honor Content Signals declared in /robots.txt.