Skip to main content

Autentificare

Endpoint-uri de autentificare și acces API.

  • Publice: magic link, Google OAuth, API key -> JWT exchange, înregistrare programatică
  • Autentificate: management chei API (/auth/api-keys*)

POST /auth/request

Solicita un email cu magic link.

curl -X POST https://api.paylinks.ro/api/v1/auth/request \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]","redirectTo":"https://app.paylinks.ro/auth/callback"}'

Corpul cererii:

CampTipObligatoriuDescriere
emailstringDaAdresa de email
redirectTostring (URL)NuURL callback frontend (același origin)

Raspuns (200):

{"ok": true}

GET /auth/verify

Verifica un token magic link si primeste un JWT.

curl "https://api.paylinks.ro/api/v1/auth/verify?token=abc123"

Parametri query:

ParametruTipObligatoriuDescriere
tokenstringDaToken-ul magic link din email
redirectTostring (URL)NuURL callback frontend (același origin)

Raspuns (200):

{
"token": "eyJhbGciOiJIUzI1NiIs...",
"needsOnboarding": false
}

POST /auth/api/token

Schimbă credențialele API key pentru un JWT short-lived.

curl -X POST https://api.paylinks.ro/api/v1/auth/api/token \
-H "Content-Type: application/json" \
-d '{"keyId":"plk_xxx","keySecret":"pls_xxx"}'

Corpul cererii:

CampTipObligatoriuDescriere
keyIdstringDaAPI key ID (plk_...)
keySecretstringDaAPI key secret (pls_...)

Raspuns (200):

{
"token": "eyJhbGciOiJIUzI1NiIs...",
"tokenType": "Bearer",
"expiresInSeconds": 3600,
"user": {
"id": "user_123",
"email": "[email protected]",
"role": "USER"
}
}

POST /auth/api/signup

Creează cont + prima cheie API într-un singur request (onboarding programatic).

curl -X POST https://api.paylinks.ro/api/v1/auth/api/signup \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","name":"Dev","keyName":"Primary integration"}'

Corpul cererii:

CampTipObligatoriuDescriere
emailstringDaEmail nou pentru cont
namestringNuNume afișat
keyNamestringNuNumele primei chei API

Raspuns (201):

{
"user": {
"id": "user_123",
"email": "[email protected]"
},
"apiKey": {
"id": "key_123",
"name": "Primary integration",
"keyId": "plk_xxx"
},
"keySecret": "pls_xxx",
"token": "eyJhbGciOiJIUzI1NiIs...",
"tokenType": "Bearer",
"expiresInSeconds": 3600,
"needsOnboarding": true
}

GET /auth/api-keys

Listează cheile API pentru utilizatorul autentificat.

curl https://api.paylinks.ro/api/v1/auth/api-keys \
-H "Authorization: Bearer YOUR_JWT"

POST /auth/api-keys

Creează o cheie API nouă.

curl -X POST https://api.paylinks.ro/api/v1/auth/api-keys \
-H "Authorization: Bearer YOUR_JWT" \
-H "Content-Type: application/json" \
-d '{"name":"Zapier"}'

Răspunsul include keySecret o singură dată.


POST /auth/api-keys/:id/revoke

Revocă o cheie API.

curl -X POST https://api.paylinks.ro/api/v1/auth/api-keys/<id>/revoke \
-H "Authorization: Bearer YOUR_JWT"

GET /auth/google/start

Initiaza fluxul Google OAuth. Redirectioneaza catre ecranul de consimtamant Google.

curl -L "https://api.paylinks.ro/api/v1/auth/google/start?redirectTo=https://yourapp.com/callback"

Parametri query:

ParametruTipObligatoriuDescriere
redirectTostringNuURL de redirectionare dupa autentificare

Raspuns: 302 redirect catre Google.


GET /auth/google/callback

Callback Google OAuth. Apelat de Google dupa ce utilizatorul consimte.

Parametri query:

ParametruTipObligatoriuDescriere
codestringDaCodul de autorizare OAuth
statestringDaParametrul state OAuth

Raspuns (200):

{
"token": "eyJhbGciOiJIUzI1NiIs...",
"needsOnboarding": false,
"user": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"email": "[email protected]",
"role": "USER"
}
}

POST /auth/google/onetap

Autentificare prin Google One Tap.

curl -X POST https://api.paylinks.ro/api/v1/auth/google/onetap \
-H "Content-Type: application/json" \
-d '{"credential": "GOOGLE_JWT_CREDENTIAL"}'

Corpul cererii:

CampTipObligatoriuDescriere
credentialstringDaJWT Google One Tap

Raspuns (200):

{
"token": "eyJhbGciOiJIUzI1NiIs...",
"user": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"email": "[email protected]",
"role": "USER"
}
}