Autentikacija
DEXPIRY koristi JWT bearer tokene. API ključ trenutačno ne postoji. Odaberite tok koji odgovara ulozi.
| Tok | Uloga | Endpoint |
|---|---|---|
| E-mail + lozinka | Trgovac, admin | POST /v1/auth/login |
| Claim link | Kupac | POST /v1/customer/auth/claim |
| Magic link | Kupac | POST /v1/customer/auth/magic-link |
| Zahtjev za pristup | Kupac (novi link na e-mail) | POST /v1/customer/auth/request-access |
Svaka zaštićena ruta:
Authorization: Bearer <jwt>
Nedostajući ili neispravan token vraća 401 s error: "unauthorized". Pogrešna uloga (npr. token kupca na ruti trgovca) vraća 403 s error: "forbidden".
Prijava trgovca i admina
curl -X POST https://api.dexpiry.com/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "vasaLozinka"}'
Odgovor 200 (oblik):
{
"token": "eyJhbGciOiJIUzI1NiIs...",
"user": {
"id": "...",
"name": "...",
"email": "user@example.com",
"role": "MERCHANT_USER",
"merchantId": "...",
"merchantName": "...",
"merchantRole": "OWNER"
}
}
role je jedan od ADMIN, MERCHANT_USER, CUSTOMER, SERVICE_PROVIDER. Payload trgovca uključuje merchantId i merchantRole (OWNER | ADMIN | USER). Admin payload uključuje adminRole.
Greške:
| HTTP | error |
Kada |
|---|---|---|
| 400 | validation_error (ili Zod detalji) |
Neispravno tijelo zahtjeva |
| 401 | invalid_credentials |
Nepoznat e-mail ili kriva lozinka |
| 403 | account_suspended |
Status korisnika je SUSPENDED |
| 403 | merchant_suspended |
Organizacija trgovca nije ACTIVE |
Promjena lozinke (autentificirano):
curl -X PUT https://api.dexpiry.com/v1/auth/change-password \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"currentPassword": "stara", "newPassword": "novaLoz1"}'
Claim link kupca
Koristi ga landing stranica /u/[claimId] nakon što trgovac izda jamstvo i kupac otvori e-mail.
- Provjera (samo čitanje) —
GET /v1/customer/auth/validate-claim?claimId=<id> - Potrošnja i JWT —
POST /v1/customer/auth/claim
curl -X POST https://api.dexpiry.com/v1/customer/auth/claim \
-H "Content-Type: application/json" \
-d '{"claimId": "<claim-id>"}'
Opcionalni focusWarrantyId (UUID) ističe određeno jamstvo u vraćenom novčaniku.
Istekli linkovi vraćaju 401 expired. Neispravni vraćaju 401 invalid_link. Ponovno slanje:
curl -X POST https://api.dexpiry.com/v1/customer/auth/resend-link \
-H "Content-Type: application/json" \
-d '{"claimId": "<claim-id>"}'
Ponovno slanje je ograničeno (429 too_many_requests).
Magic link kupca
Koristi se kad kupac zatraži pristup novčaniku iz aplikacije (POST /v1/customer/auth/request-access s { "email": "..." }). E-mail sadrži jednokratni token.
Provjera bez potrošnje:
curl "https://api.dexpiry.com/v1/customer/auth/validate?token=<token>"
Potrošnja i JWT:
curl -X POST https://api.dexpiry.com/v1/customer/auth/magic-link \
-H "Content-Type: application/json" \
-d '{"token": "<token>"}'
| HTTP | error |
Kada |
|---|---|---|
| 401 | invalid_token |
Nepoznat ili neispravan |
| 401 | expired_token |
Istekao |
| 401 | token_used |
Već iskorišten |
Korištenje tokena
curl https://api.dexpiry.com/v1/merchant/stats \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
curl https://api.dexpiry.com/v1/customer/warranties \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Javne rute (bez JWT-a)
GET /health,GET /ready,GET /v1/versionGET /openapi.json,GET /docsGET /v1/global/products- Customer auth validate/request/claim/magic-link/resend
POST /v1/customer/receipts/ocr(OCR pomoć; spremanje računa na račun i dalje zahtijeva JWT kupca)