{"openapi":"3.1.1","info":{"title":"NaughtyPass Public API","version":"1.0.0","description":"Read-only public catalogue metadata for NaughtyPass. This contract does not expose credentials, user data, or administrative operations.","termsOfService":"https://naughtypass.net/terms","contact":{"name":"NaughtyPass Support","url":"https://naughtypass.net/contact","email":"support@naughtypass.net"}},"servers":[{"url":"https://naughtypass.net","description":"Production"}],"tags":[{"name":"Catalogue","description":"Anonymous, read-only catalogue metadata."}],"paths":{"/api/site-stats":{"get":{"tags":["Catalogue"],"operationId":"getPublicSiteCatalogueStats","summary":"List public catalogue statistics","description":"Returns the public NaughtyPass site catalogue with aggregate account counts and freshness timestamps. It never returns usernames, passwords, private notes, or user information.","responses":{"200":{"description":"The current public catalogue snapshot.","headers":{"RateLimit-Policy":{"description":"Structured rate-limit policy hint using the current IETF RateLimit fields draft.","schema":{"type":"string"}},"RateLimit":{"description":"Current quota hint. Clients should use it to self-throttle.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogueResponse"}}}},"503":{"description":"The catalogue data source is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"CatalogueSite":{"type":"object","additionalProperties":false,"required":["id","name","url","slug","category_id","account_count","free_count","vip_count","elite_count","is_featured","created_at","updated_at","last_updated","category_name","category_slug","overall_last_update"],"properties":{"id":{"type":"string","format":"uuid","description":"Catalogue ID."},"name":{"type":"string","description":"Display name of the listed site."},"url":{"type":"string","format":"uri","description":"Official site URL."},"slug":{"type":"string","description":"NaughtyPass route slug."},"category_id":{"type":["string","null"],"format":"uuid"},"account_count":{"type":["integer","null"],"minimum":0},"free_count":{"type":["integer","null"],"minimum":0},"vip_count":{"type":["integer","null"],"minimum":0},"elite_count":{"type":["integer","null"],"minimum":0},"is_featured":{"type":["boolean","null"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"last_updated":{"type":["string","null"],"format":"date-time"},"category_name":{"type":["string","null"]},"category_slug":{"type":["string","null"]},"overall_last_update":{"type":["string","null"],"format":"date-time"}}},"CatalogueResponse":{"type":"object","additionalProperties":false,"required":["success","data","metadata"],"properties":{"success":{"const":true},"data":{"type":"array","items":{"$ref":"#/components/schemas/CatalogueSite"}},"metadata":{"type":"object","additionalProperties":false,"required":["count","fetchedAt"],"properties":{"count":{"type":"integer","minimum":0},"fetchedAt":{"type":"string","format":"date-time"}}}}},"ErrorResponse":{"type":"object","additionalProperties":false,"required":["success","error"],"properties":{"success":{"const":false},"error":{"type":"object","additionalProperties":false,"required":["code","message","resolution","documentationUrl"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"},"documentationUrl":{"type":"string","format":"uri"}}}}}}}}