{"openapi":"3.1.0","info":{"title":"shorrrt.com API","version":"1.0.0","description":"Manage shorrrt.com links with a Pro API key."},"servers":[{"url":"https://shorrrt.com/api/v1"}],"security":[{"bearerAuth":[]}],"paths":{"/links":{"get":{"summary":"List links","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}},{"name":"archived","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"A paginated link list"},"401":{"$ref":"#/components/responses/Unauthorized"}}},"post":{"summary":"Create a link","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLink"}}}},"responses":{"201":{"description":"Link created"},"400":{"description":"Invalid request"},"409":{"description":"Custom slug is taken"}}}},"/links/{shortId}":{"parameters":[{"name":"shortId","in":"path","required":true,"schema":{"type":"string"}}],"patch":{"summary":"Update a link title or archived state","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLink"}}}},"responses":{"200":{"description":"Updated link"},"404":{"description":"Link not found"}}},"delete":{"summary":"Delete a link","responses":{"200":{"description":"Link deleted"},"404":{"description":"Link not found"}}}},"/links/{shortId}/stats":{"get":{"summary":"Get click count","parameters":[{"name":"shortId","in":"path","required":true,"schema":{"type":"string"}},{"name":"raw","in":"query","description":"Include all stored traffic classifications","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Click count"},"404":{"description":"Link not found"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key"}},"schemas":{"CreateLink":{"type":"object","required":["originalUrl"],"properties":{"originalUrl":{"type":"string","format":"uri"},"customSlug":{"type":"string","minLength":3,"maxLength":50},"title":{"type":"string"}}},"UpdateLink":{"type":"object","properties":{"title":{"type":["string","null"]},"archived":{"type":"boolean"}}}},"responses":{"Unauthorized":{"description":"Missing or invalid API key"}}}}