{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://forge.smol.ai/spec/deploy/v1/repository-config.schema.json","title":"Forge repository configuration v1","type":"object","additionalProperties":false,"required":["version","defaults","projects"],"properties":{"$schema":{"const":"https://forge.smol.ai/spec/deploy/v1/repository-config.schema.json"},"version":{"const":1},"defaults":{"type":"object","additionalProperties":false,"required":["production_branch","publication_mode"],"properties":{"production_branch":{"$ref":"#/$defs/branch"},"publication_mode":{"$ref":"#/$defs/publicationMode"}}},"projects":{"type":"array","minItems":1,"maxItems":100,"items":{"$ref":"#/$defs/project"}}},"$defs":{"branch":{"type":"string","minLength":1,"maxLength":255},"publicationMode":{"enum":["auto","manual"]},"project":{"type":"object","additionalProperties":false,"required":["root","slug"],"properties":{"root":{"type":"string","minLength":1,"maxLength":512},"slug":{"type":"string","pattern":"^(?!preview-)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$"},"production_branch":{"$ref":"#/$defs/branch"},"publication_mode":{"$ref":"#/$defs/publicationMode"},"cloudflare":{"$ref":"#/$defs/cloudflare"}}},"cloudflare":{"type":"object","additionalProperties":false,"required":["zone_name","hostname","bindings"],"properties":{"zone_name":{"type":"string","minLength":3,"maxLength":253},"hostname":{"type":"string","minLength":3,"maxLength":253},"bindings":{"type":"array","maxItems":100,"items":{"oneOf":[{"type":"object","additionalProperties":false,"required":["kind"],"properties":{"kind":{"const":"custom_domain"}}},{"type":"object","additionalProperties":false,"required":["kind","route_path"],"properties":{"kind":{"const":"path_route"},"route_path":{"type":"string","pattern":"^/(?!/)(?!.*\\*)(?!.*[?#]).+$","maxLength":512},"match_mode":{"enum":["exact_and_descendants","reserved_prefix"],"default":"exact_and_descendants"}}}]}}}}}}