API-yleiskatsaus
API-yleiskatsaus
qr3.app REST-API on saatavilla osoitteessa https://qr3.app/v1/.
Versiointi
API on versioitu URL-polun kautta (/v1/). Rikkova muutokset (breaking changes) johtavat aina uuteen pääversioon.
Pyyntömuoto
- Content-Type:
application/json - Autentikointi:
Authorization: Bearer qr3_sk_xxx - Idempotenssi: POST-pyynnöistä voidaan tehdä idempotentteja käyttämällä otsikkoa
Idempotency-Key: <uuid>
Vastauksen muoto
Kaikki onnistuneet vastaukset palauttavat JSON-muotoista dataa:
{ "id": "qr_abc123", "type": "url", "url": "https://example.com", "short_url": "https://qr3.app/r7f3Kx", "created_at": "2026-03-15T10:00:00.000Z"}Listavastauksissa on aina meta.pagination-rakenne:
{ "data": [...], "meta": { "request_id": "req_xxx", "pagination": { "has_more": true, "next_cursor": "qr_abc", "total_count": 142 } }}Virhemuotoilu (RFC 7807)
Kaikki virheet noudattavat standardia RFC 7807 Problem Details:
{ "type": "https://docs.qr3.app/errors/not-found", "title": "Not Found", "status": 404, "detail": "QR code qr_xxx not found", "instance": "/v1/codes/qr_xxx"}| Status | Virhetyyppi | Kuvaus |
|---|---|---|
| 400 | bad-request | Virheellinen JSON tai puuttuvia pakollisia kenttiä |
| 401 | authentication | Puuttuva tai virheellinen API-avain |
| 403 | forbidden | Ei oikeutta tähän resurssiin |
| 404 | not-found | Resurssia ei löytynyt |
| 409 | conflict | Idempotency-Key-konflikti |
| 422 | validation-error | Virheelliset syötetiedot (sisältää errors-taulukon) |
| 429 | rate-limited | Kutsurajoitus ylittynyt |
| 500 | internal | Sisäinen palvelinvirhe |
Sivutus
API käyttää kursoriperusteista sivutusta:
# Erste SeiteGET /v1/codes?limit=20
# Nächste SeiteGET /v1/codes?limit=20&cursor=qr_lastidKutsurajat
Jokainen vastaus sisältää:
X-RateLimit-Limit: 30X-RateLimit-Remaining: 28X-RateLimit-Reset: 1742040120Interaktiivinen API-viite
Testaa kaikkia päätepisteitä suoraan selaimessa:
→ Avaa API-viite (Scalar, interaktiivinen, Try-it-out-toiminnolla)
DPP-Contract (Vaihe 4a)
Akkutyönkulkua varten qr3.app dokumentoi lisäksi seuraavat reitit:
POST /v1/dppGET /v1/dppGET /v1/dpp/:idPOST /v1/dpp/validateGET /v1/dpp/:id/qr.svgGET /v1/dpp/:id/qr.pngGET /v1/dpp/:id/qr.pdfGET /v1/dpp/:id/qr.epsGET /01/...GET /dpp/:gtin/:serial?lot=...
Dashboard-sivut, SDK:t ja tämä dokumentaatio käyttävät samaa tietosopimusta.