{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://www.codefrost.dev/api/v1/ecosystem.schema.json","title":"Codefrost public ecosystem v1","type":"object","additionalProperties":false,"required":["schema_version","schema_url","canonical_url","revision","entries"],"properties":{"schema_version":{"const":"1.0"},"schema_url":{"type":"string","pattern":"^https://[^\\s]+$"},"canonical_url":{"type":"string","pattern":"^https://[^\\s]+$"},"revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"entries":{"type":"array","minItems":1,"maxItems":200,"items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"name":{"type":"string","minLength":1},"description":{"type":"string","minLength":1},"kind":{"enum":["product","service","media","hub","utility"]},"public_catalog":{"const":true},"developer_hub":{"type":"boolean"},"canonical_url":{"anyOf":[{"type":"string","pattern":"^https://[^\\s]+$"},{"type":"null"}]},"publisher_id":{"const":"https://www.codefrost.dev/#organization"},"availability":{"enum":["available","coming-soon"]},"availability_note":{"type":"string"},"pricing_note":{"type":"string"},"limitations":{"type":"array","items":{"type":"string"}},"links":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["label","url"],"properties":{"label":{"type":"string"},"url":{"type":"string","pattern":"^https://[^\\s]+$"}}}},"related":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["id","relationship"],"properties":{"id":{"type":"string"},"relationship":{"enum":["publisher","ecosystem","planning","validation","connectivity","support","learning"]}}}}},"required":["id","name","description","kind","public_catalog","developer_hub","canonical_url","publisher_id","availability","availability_note","pricing_note","limitations","links","related"],"allOf":[{"if":{"properties":{"availability":{"const":"coming-soon"}}},"then":{"properties":{"canonical_url":{"type":"null"},"links":{"maxItems":0}}}},{"if":{"properties":{"availability":{"const":"available"}}},"then":{"properties":{"canonical_url":{"type":"string","pattern":"^https://[^\\s]+$"}}}}]}}}}