{"openapi":"3.1.0","info":{"title":"paseo.cafe directory API","version":"1.0.0","description":"An independent, community-run directory of paseo.sh plugins, generated straight from each plugin's own GitHub repo."},"servers":[{"url":"https://paseo.cafe"}],"paths":{"/api/plugins":{"get":{"summary":"List every plugin","operationId":"listPlugins","responses":{"200":{"description":"The generated plugin catalog","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginCatalog"}}}}}}},"/api/plugin/{id}.json":{"get":{"summary":"Get one plugin","operationId":"getPlugin","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"One generated plugin record","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plugin"}}}},"404":{"description":"Plugin not found"}}}}},"components":{"schemas":{"Plugin":{"type":"object","properties":{"id":{"type":"string","maxLength":200},"repo":{"type":"string","maxLength":200},"path":{"type":"string","maxLength":500},"url":{"type":"string","maxLength":2048,"format":"uri"},"name":{"type":"string","maxLength":200},"description":{"type":"string","maxLength":1000},"author":{"type":"string","maxLength":200},"license":{"type":"string","maxLength":100},"paseoVersionRequirement":{"type":"string","maxLength":200},"categories":{"maxItems":32,"type":"array","items":{"type":"string","maxLength":100}},"platforms":{"maxItems":32,"type":"array","items":{"type":"string","maxLength":100}},"caveats":{"maxItems":64,"type":"array","items":{"type":"string","maxLength":1000}},"manifest":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"repoMeta":{"type":"object","properties":{"stars":{"type":"integer","minimum":0,"maximum":9007199254740991},"defaultBranch":{"type":"string","maxLength":255},"pushedAt":{"type":"string","maxLength":100}},"required":["stars","defaultBranch","pushedAt"],"additionalProperties":false},"owner":{"type":"object","properties":{"login":{"type":"string","maxLength":100},"avatarUrl":{"type":"string","maxLength":2048,"format":"uri"}},"required":["login","avatarUrl"],"additionalProperties":false},"installNotesHtml":{"type":"string"},"limitationsNotesHtml":{"type":"string"},"security":{"type":"object","properties":{"status":{"type":"string","enum":["passed","failed"]},"blockingFindings":{"type":"integer","minimum":0,"maximum":9007199254740991},"advisoryFindings":{"type":"integer","minimum":0,"maximum":9007199254740991},"scannedAt":{"type":"string","maxLength":100},"commit":{"type":"string","pattern":"^[0-9a-f]{40}$"},"reportUrl":{"type":"string","maxLength":2048,"format":"uri"}},"required":["status","blockingFindings","advisoryFindings"],"additionalProperties":false},"images":{"maxItems":32,"type":"array","items":{"type":"string","maxLength":2048,"format":"uri"}},"readmeText":{"type":"string","maxLength":16000},"scanError":{"type":"string","maxLength":4000},"scannedAt":{"type":"string","maxLength":100},"health":{"type":"object","properties":{"manifestValid":{"type":"boolean"},"hasReadme":{"type":"boolean"},"hasLicense":{"type":"boolean"},"hasTests":{"type":"boolean"},"hasTypecheckScript":{"type":"boolean"},"updatedRecently":{"type":"boolean"}},"required":["manifestValid","hasReadme","hasLicense","hasTests","hasTypecheckScript","updatedRecently"],"additionalProperties":false}},"required":["id","repo","url","name","description","categories","platforms","caveats","images","scannedAt","health"],"additionalProperties":false},"PluginCatalog":{"type":"object","properties":{"plugins":{"maxItems":500,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":200},"repo":{"type":"string","maxLength":200},"path":{"type":"string","maxLength":500},"url":{"type":"string","maxLength":2048,"format":"uri"},"name":{"type":"string","maxLength":200},"description":{"type":"string","maxLength":1000},"author":{"type":"string","maxLength":200},"license":{"type":"string","maxLength":100},"paseoVersionRequirement":{"type":"string","maxLength":200},"categories":{"maxItems":32,"type":"array","items":{"type":"string","maxLength":100}},"platforms":{"maxItems":32,"type":"array","items":{"type":"string","maxLength":100}},"caveats":{"maxItems":64,"type":"array","items":{"type":"string","maxLength":1000}},"manifest":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"repoMeta":{"type":"object","properties":{"stars":{"type":"integer","minimum":0,"maximum":9007199254740991},"defaultBranch":{"type":"string","maxLength":255},"pushedAt":{"type":"string","maxLength":100}},"required":["stars","defaultBranch","pushedAt"],"additionalProperties":false},"owner":{"type":"object","properties":{"login":{"type":"string","maxLength":100},"avatarUrl":{"type":"string","maxLength":2048,"format":"uri"}},"required":["login","avatarUrl"],"additionalProperties":false},"installNotesHtml":{"type":"string"},"limitationsNotesHtml":{"type":"string"},"security":{"type":"object","properties":{"status":{"type":"string","enum":["passed","failed"]},"blockingFindings":{"type":"integer","minimum":0,"maximum":9007199254740991},"advisoryFindings":{"type":"integer","minimum":0,"maximum":9007199254740991},"scannedAt":{"type":"string","maxLength":100},"commit":{"type":"string","pattern":"^[0-9a-f]{40}$"},"reportUrl":{"type":"string","maxLength":2048,"format":"uri"}},"required":["status","blockingFindings","advisoryFindings"],"additionalProperties":false},"images":{"maxItems":32,"type":"array","items":{"type":"string","maxLength":2048,"format":"uri"}},"readmeText":{"type":"string","maxLength":16000},"scanError":{"type":"string","maxLength":4000},"scannedAt":{"type":"string","maxLength":100},"health":{"type":"object","properties":{"manifestValid":{"type":"boolean"},"hasReadme":{"type":"boolean"},"hasLicense":{"type":"boolean"},"hasTests":{"type":"boolean"},"hasTypecheckScript":{"type":"boolean"},"updatedRecently":{"type":"boolean"}},"required":["manifestValid","hasReadme","hasLicense","hasTests","hasTypecheckScript","updatedRecently"],"additionalProperties":false}},"required":["id","repo","url","name","description","categories","platforms","caveats","images","scannedAt","health"],"additionalProperties":false}},"count":{"type":"integer","minimum":0,"maximum":500},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["plugins","count","generatedAt"],"additionalProperties":false}}}}