{"openapi":"3.1.1","info":{"title":"Brittek Digital Public API","version":"2026.08.29","description":"Machine-readable contract for the public Brittek Digital HTTP interfaces intended for external automation. Private portal, webhook and payment-internal endpoints are deliberately excluded."},"servers":[{"url":"https://brittek.net","description":"Production"}],"tags":[{"name":"Inspection","description":"Bounded public-surface retrieval and symptom telemetry."},{"name":"Enquiries","description":"Qualified project enquiry submission."}],"paths":{"/api/inspect":{"get":{"operationId":"inspectSurfaceTelemetry","tags":["Inspection"],"summary":"Return bounded public-surface telemetry for one URL.","description":"Observes six public signal vectors and returns a 0–100 readiness index, deterministic signal states, anomaly counts and at most five descriptive evidence traces. The response reports observable symptoms only; it does not infer private architecture or prescribe remediation.","parameters":[{"name":"url","in":"query","required":true,"description":"Absolute public HTTP or HTTPS URL to inspect.","schema":{"type":"string","format":"uri","maxLength":2048}}],"responses":{"200":{"description":"Bounded Machine Inspector telemetry.","headers":{"RateLimit-Limit":{"description":"Maximum requests permitted in the current rate-limit window.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining in the current rate-limit window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current rate-limit window resets.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MachineInspectorPayload"}}}},"400":{"description":"Structured error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Structured error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"RateLimit-Limit":{"description":"Maximum requests permitted in the current rate-limit window.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining in the current rate-limit window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current rate-limit window resets.","schema":{"type":"integer","minimum":0}},"Retry-After":{"description":"Seconds before retrying.","schema":{"type":"integer","minimum":1}}}},"502":{"description":"Structured error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/scan":{"get":{"operationId":"inspectPublicUrl","tags":["Inspection"],"summary":"Fetch a bounded public representation for inspection clients.","description":"Validates that the target resolves publicly, refuses redirects, limits response type, size and duration, and returns the fetched public representation. This transport endpoint does not itself diagnose architecture or return remediation guidance. Its existing operation ID is retained for compatibility.","parameters":[{"name":"url","in":"query","required":true,"description":"Absolute public HTTP or HTTPS URL to fetch.","schema":{"type":"string","format":"uri","maxLength":2048}}],"responses":{"200":{"description":"Fetched public representation.","headers":{"RateLimit-Limit":{"description":"Maximum requests permitted in the current rate-limit window.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining in the current rate-limit window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current rate-limit window resets.","schema":{"type":"integer","minimum":0}}},"content":{"text/html":{"schema":{"type":"string"}},"text/plain":{"schema":{"type":"string"}},"application/xml":{"schema":{"type":"string"}}}},"400":{"description":"Structured error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"Structured error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"Structured error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Structured error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"RateLimit-Limit":{"description":"Maximum requests permitted in the current rate-limit window.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining in the current rate-limit window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current rate-limit window resets.","schema":{"type":"integer","minimum":0}},"Retry-After":{"description":"Seconds before retrying.","schema":{"type":"integer","minimum":1}}}},"502":{"description":"Structured error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"post":{"operationId":"submitInspectionRecord","tags":["Inspection"],"summary":"Submit an inspection record and contact details.","description":"Stores an explicitly submitted inspection record and the contact details required by the existing delivery or follow-up flow. This operation does not execute a new inspection.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InspectionSubmission"}}}},"responses":{"200":{"description":"Record accepted.","headers":{"RateLimit-Limit":{"description":"Maximum requests permitted in the current rate-limit window.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining in the current rate-limit window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current rate-limit window resets.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"type":"object","required":["success","id"],"properties":{"success":{"type":"boolean","const":true},"id":{"type":"string","format":"uuid"}}}}}},"400":{"description":"Structured error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Structured error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"RateLimit-Limit":{"description":"Maximum requests permitted in the current rate-limit window.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining in the current rate-limit window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current rate-limit window resets.","schema":{"type":"integer","minimum":0}},"Retry-After":{"description":"Seconds before retrying.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Structured error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/contact":{"post":{"operationId":"submitProjectEnquiry","tags":["Enquiries"],"summary":"Submit a qualified project enquiry.","description":"Accepts project contact details and a bounded brief. The operation returns a stable record identifier when accepted.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectEnquiry"}}}},"responses":{"200":{"description":"Enquiry accepted.","headers":{"RateLimit-Limit":{"description":"Maximum requests permitted in the current rate-limit window.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining in the current rate-limit window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current rate-limit window resets.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"type":"object","required":["success","id"],"properties":{"success":{"type":"boolean","const":true},"id":{"type":"string","format":"uuid"}}}}}},"400":{"description":"Structured error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Structured error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"RateLimit-Limit":{"description":"Maximum requests permitted in the current rate-limit window.","schema":{"type":"integer","minimum":0}},"RateLimit-Remaining":{"description":"Requests remaining in the current rate-limit window.","schema":{"type":"integer","minimum":0}},"RateLimit-Reset":{"description":"Seconds until the current rate-limit window resets.","schema":{"type":"integer","minimum":0}},"Retry-After":{"description":"Seconds before retrying.","schema":{"type":"integer","minimum":1}}}},"500":{"description":"Structured error response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}},"components":{"schemas":{"ApiError":{"type":"object","required":["error","code","message"],"properties":{"error":{"type":"string","description":"Backward-compatible human-readable error string."},"code":{"type":"string","pattern":"^[A-Z0-9_]+$","description":"Stable machine-readable error code."},"message":{"type":"string","description":"Human-readable explanation."},"hint":{"type":"string","description":"Optional resolution guidance."}}},"SignalVectorEvaluation":{"type":"object","additionalProperties":false,"required":["status","observable_signal","deterministic_target"],"properties":{"status":{"type":"string","enum":["PASS","ELEVATED_RISK","CRITICAL_ANOMALY"]},"observable_signal":{"type":"string"},"deterministic_target":{"type":"string"}}},"EvidenceTrace":{"type":"object","additionalProperties":false,"required":["id","severity","vector","symptom","raw_telemetry"],"properties":{"id":{"type":"string"},"severity":{"type":"string","enum":["CRITICAL","HIGH","MEDIUM"]},"vector":{"type":"string","enum":["RETRIEVAL","SEMANTICS","ENTITY_GRAPH","CANONICAL","DELIVERY","INDEXATION"]},"symptom":{"type":"string","description":"Descriptive public-surface symptom; not a prescribed fix."},"raw_telemetry":{"type":"string","maxLength":600}}},"MachineInspectorPayload":{"type":"object","additionalProperties":false,"required":["inspection_id","target_domain","timestamp","readiness_index","signal_vectors","metrics","evidence_traces"],"properties":{"inspection_id":{"type":"string","pattern":"^insp_[a-f0-9]{12}$"},"target_domain":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"readiness_index":{"type":"number","minimum":0,"maximum":100},"signal_vectors":{"type":"object","additionalProperties":false,"required":["retrieval_readiness","semantic_hierarchy","entity_graph","canonical_routing","technical_delivery","indexation_integrity"],"properties":{"retrieval_readiness":{"$ref":"#/components/schemas/SignalVectorEvaluation"},"semantic_hierarchy":{"$ref":"#/components/schemas/SignalVectorEvaluation"},"entity_graph":{"$ref":"#/components/schemas/SignalVectorEvaluation"},"canonical_routing":{"$ref":"#/components/schemas/SignalVectorEvaluation"},"technical_delivery":{"$ref":"#/components/schemas/SignalVectorEvaluation"},"indexation_integrity":{"$ref":"#/components/schemas/SignalVectorEvaluation"}}},"metrics":{"type":"object","additionalProperties":false,"required":["total_anomalies_detected","unverified_architectural_dependencies"],"properties":{"total_anomalies_detected":{"type":"integer","minimum":0},"unverified_architectural_dependencies":{"type":"integer","minimum":0}}},"evidence_traces":{"type":"array","maxItems":5,"items":{"$ref":"#/components/schemas/EvidenceTrace"}}}},"InspectionSubmission":{"type":"object","required":["email"],"additionalProperties":false,"properties":{"name":{"type":"string","maxLength":128},"email":{"type":"string","format":"email","maxLength":320},"company":{"type":"string","maxLength":128},"target":{"type":"string","format":"uri","maxLength":512},"score":{"type":["number","null"],"minimum":0,"maximum":100},"pillars":{"type":["object","null"],"additionalProperties":true},"failedChecks":{"type":["array","null"],"items":{"type":"object","additionalProperties":true}}}},"ProjectEnquiry":{"type":"object","required":["email"],"additionalProperties":false,"properties":{"source":{"type":"string","maxLength":64},"name":{"type":"string","maxLength":128},"email":{"type":"string","format":"email","maxLength":320},"company":{"type":"string","maxLength":128},"scope":{"type":"string","maxLength":64},"brief":{"type":"string","maxLength":2000}}}}}}