Cheia API
Cum funcționează cheia de tip bearer: un set de chei pentru fiecare client, cu domenii.
- În sandbox
În cuvinte simple
Cheia API este modul prin care un sistem apelant dovedește că are dreptul să folosească serviciul. Fiecare client are propriile chei, iar fiecare cheie are domenii care spun ce are voie să facă. Emitem prima cheie de sandbox la cerere.
Trimiteți cheia ca token de tip bearer la fiecare apel.
Authorization: Bearer <your-api-key>Ce face serviciul cu ea
Serviciul calculează hash-ul SHA-256 al cheii pe care o trimiteți și îl compară cu cel pe care îl deține. Nu stochează nicio valoare a cheii. Fiecare utilizare scrie un rând de audit, iar nici acel rând nu conține vreo valoare. O cheie de sandbox începe cu eik_test_, iar una de producție cu eik_live_.
O cheie validă
Un apel care necesită o cheie, cu o cheie validă. Lista de gestionare este goală pentru că nu s-a respins nimic.
curl "https://api-sandbox-eu.eurinvoice.com/care" \
-H "Authorization: Bearer <your-api-key>"import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api-sandbox-eu.eurinvoice.com/care"))
.header("Authorization", "Bearer <your-api-key>")
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}const response = await fetch('https://api-sandbox-eu.eurinvoice.com/care', {
headers: {
Authorization: 'Bearer <your-api-key>',
},
});
console.log(response.status);
console.log(await response.text());{
"data": []
}O cheie lipsă sau greșită
Răspunsul este 401, înainte de a se citi orice altceva.
curl "https://api-sandbox-eu.eurinvoice.com/invoices/inv_unknown"import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder(URI.create("https://api-sandbox-eu.eurinvoice.com/invoices/inv_unknown"))
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}const response = await fetch('https://api-sandbox-eu.eurinvoice.com/invoices/inv_unknown', {
});
console.log(response.status);
console.log(await response.text());{
"type": "https://eurinvoice.com/problems/unauthorized",
"title": "Missing or unknown API key",
"status": 401
}Chei și domenii
O cheie aparține unui singur client și vede doar datele acelui client. Factura altui client primește 404.
| Domeniu | Ce are voie să facă cheia |
|---|---|
submit | Să trimită facturi (POST /invoices, POST /invoices/xml), să facă o rulare de probă (POST /validate) și să anuleze o factură. |
read | Să citească facturi, evenimente și documente, lista de gestionare și catalogul. |
admin | Să gestioneze webhookul, datele de autentificare pentru rețele și cheile API ale clientului. |
Un apel fără domeniul de care are nevoie primește 403. Fiecare domeniu are propria limită de rată.
Crearea și revocarea cheilor
O cheie este afișată o singură dată, în răspunsul care o creează. Păstrăm doar SHA-256-ul ei, deci o cheie pierdută nu mai poate fi afișată: revocați-o și creați una nouă.
- O cheie cu domeniul
admincreează chei pentru propriul client, cu oricare dintre domeniile pe care le deține ea însăși, și le revocă. Revocarea unei chei revocă și toate cheile create de ea. - Un client poate avea până la 20 de chei active. Fiecare apel se contorizează pentru client, nu pentru cheie, deci mai multe chei nu aduc mai multe cereri.
- O cheie revocată nu mai funcționează imediat.
Prima cheie a unui client vine de la noi. Cheile următoare se creează prin POST /keys.
Atenție
Nu includeți chei reale în exemple, tichete sau e-mailuri.