{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://aidrivendev.com/api/v1/site.schema.json","type":"object","additionalProperties":false,"required":["schema_version","name","purpose","canonical_url","publisher","catalog_revision","provenance","interfaces","limitations"],"properties":{"schema_version":{"const":"1.0"},"name":{"type":"string","minLength":1},"purpose":{"type":"string","minLength":1},"canonical_url":{"type":"string","pattern":"^https://[^\\s]+$"},"publisher":{"type":"object","additionalProperties":false,"required":["name","id","url"],"properties":{"name":{"type":"string","minLength":1},"id":{"type":"string","pattern":"^https://[^\\s]+$"},"url":{"type":"string","pattern":"^https://[^\\s]+$"}}},"catalog_revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"provenance":{"type":"object","additionalProperties":false,"required":["source","source_url","source_revision","imported_at"],"properties":{"source":{"enum":["local-export","published-registry"]},"source_url":{"type":"string","pattern":"^https://[^\\s]+$"},"source_revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imported_at":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T"}}},"interfaces":{"type":"object","additionalProperties":false,"required":["documentation","catalog","schema","site_schema","text","llms","recommendation","mcp"],"properties":{"documentation":{"type":"string","pattern":"^https://[^\\s]+$"},"catalog":{"type":"string","pattern":"^https://[^\\s]+$"},"schema":{"type":"string","pattern":"^https://[^\\s]+$"},"site_schema":{"type":"string","pattern":"^https://[^\\s]+$"},"text":{"type":"string","pattern":"^https://[^\\s]+$"},"llms":{"type":"string","pattern":"^https://[^\\s]+$"},"recommendation":{"type":"string","pattern":"^https://[^\\s]+$"},"mcp":{"type":"string","pattern":"^https://[^\\s]+$"}}},"limitations":{"type":"array","items":{"type":"string","minLength":1},"minItems":1}}}