Sari la conținut

Prezentare generală API

Prezentare generală API

API-ul REST qr3.app este disponibil la https://qr3.app/v1/.

Versionare

API-ul este versionat prin calea URL-ului (/v1/). Modificările majore (breaking changes) duc întotdeauna la o nouă versiune principală.

Formatul cererii

  • Content-Type: application/json
  • Autentificare: Authorization: Bearer qr3_sk_xxx
  • Idempotență: Cererile POST pot fi făcute idempotente folosind Idempotency-Key: <uuid>

Formatul răspunsului

Toate răspunsurile de succes returnează JSON:

{
"id": "qr_abc123",
"type": "url",
"url": "https://example.com",
"short_url": "https://qr3.app/r7f3Kx",
"created_at": "2026-03-15T10:00:00.000Z"
}

Răspunsurile de tip listă au întotdeauna o structură meta.pagination:

{
"data": [...],
"meta": {
"request_id": "req_xxx",
"pagination": {
"has_more": true,
"next_cursor": "qr_abc",
"total_count": 142
}
}
}

Formatul erorilor (RFC 7807)

Toate erorile respectă standardul 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"
}
StatusTip eroareDescriere
400bad-requestJSON nevalid sau câmpuri obligatorii lipsă
401authenticationCheie API lipsă sau nevalidă
403forbiddenLipsă permisiuni pentru această resursă
404not-foundResursă negăsită
409conflictConflict Idempotency-Key
422validation-errorDate de intrare eronate (cu matricea errors)
429rate-limitedLimită de rată depășită
500internalEroare internă de server

Paginare

API-ul utilizează paginare bazată pe cursor:

Terminal window
# Erste Seite
GET /v1/codes?limit=20
# Nächste Seite
GET /v1/codes?limit=20&cursor=qr_lastid

Limite de rată

Fiecare răspuns conține:

X-RateLimit-Limit: 30
X-RateLimit-Remaining: 28
X-RateLimit-Reset: 1742040120

Referință API interactivă

Testează toate endpoint-urile direct în browser:

→ Deschide referința API (Scalar, interactiv, cu Try-it-out)

Contract DPP (Faza 4a)

Pentru fluxul de lucru al bateriilor, qr3.app documentează suplimentar aceste rute:

  • POST /v1/dpp
  • GET /v1/dpp
  • GET /v1/dpp/:id
  • POST /v1/dpp/validate
  • GET /v1/dpp/:id/qr.svg
  • GET /v1/dpp/:id/qr.png
  • GET /v1/dpp/:id/qr.pdf
  • GET /v1/dpp/:id/qr.eps
  • GET /01/...
  • GET /dpp/:gtin/:serial?lot=...

Paginile de dashboard, SDK-urile și această documentație utilizează același contract de date.