{"openapi":"3.0.3","info":{"title":"QR Maker API","version":"1.0.0","description":"Pelan Business ke atas. Header: Authorization: Bearer qrm_…  Had: 120 permintaan/min per kunci."},"servers":[{"url":"/api/v1"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/codes":{"get":{"summary":"Senarai kod","parameters":[{"name":"limit","in":"query","schema":{"type":"integer"}},{"name":"offset","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"}}},"post":{"summary":"Cipta kod dinamik","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["name","destination"],"properties":{"name":{"type":"string"},"destination":{"type":"string"},"type":{"type":"string"},"password":{"type":"string"},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"}}}}}},"responses":{"201":{"description":"Dicipta"},"402":{"description":"Had pelan"}}}},"/codes/{id}":{"get":{"summary":"Dapatkan kod","responses":{"200":{"description":"OK"},"404":{"description":"Tiada"}}},"patch":{"summary":"Kemas kini destinasi/status/jadual","responses":{"200":{"description":"OK"}}},"delete":{"summary":"Padam kod","responses":{"204":{"description":"Dipadam"}}}},"/codes/{id}/stats":{"get":{"summary":"Statistik imbasan","parameters":[{"name":"days","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"}}}},"/codes/bulk":{"post":{"summary":"Pukal: badan CSV name,destination; balas ZIP","requestBody":{"content":{"text/csv":{"schema":{"type":"string"}}}},"responses":{"200":{"description":"ZIP"}}}}}}