Autentificare
Fiecare apel are nevoie de cheia ta API (începe cu efc_). O generezi din aplicație: Cont → Setări → tab API. Tratează-o ca pe o parolă.
Trimite cheia ca Authorization: Bearer sau, alternativ, ca X-Api-Key.
curl https://eficio.ro/api/v2/account \
-H "Authorization: Bearer efc_cheia_ta"Convenții
Toate răspunsurile sunt JSON (UTF-8). Un rezultat singular vine în plicul { "data": … }, iar o listă vine cu { "data": […], "meta": … }. Trimite corpurile POST/PATCH ca JSON cu antetul Content-Type: application/json.
{
"data": { "id": 12, "name": "Tricou bumbac organic", "price": 99.90 }
}Paginare
Listele acceptă per_page (1–100, implicit 50) și page. Obiectul meta îți spune unde te afli.
GET https://eficio.ro/api/v2/products?per_page=20&page=2
{
"data": [ … ],
"meta": { "current_page": 2, "per_page": 20, "total": 134, "last_page": 7 }
}Erori
La eroare primești un cod HTTP corespunzător și un plic { "error": …, "message": … }. Câmpul error e un cod stabil pentru cod, iar message e text pentru oameni.
{ "error": "validation_error", "message": "Trimite cel puțin un câmp de actualizat." }| Cod HTTP | error | Când |
|---|---|---|
| 401 | missing_token | Lipsește antetul cu cheia. |
| 401 | invalid_token | Cheie invalidă sau revocată. |
| 403 | no_user | Firma nu are niciun utilizator asociat. |
| 404 | not_found | Resursa nu există. |
| 422 | validation_error | Date invalide în corpul cererii. |
Cont & statistici
Profilul firmei tale: nume, CUI, adresă, plan și statusul abonamentului.
Numărători rapide: produse, comenzi pe status, clienți și valoarea comenzilor.
Produse
Listă paginată a catalogului.
| Câmp | Tip | Descriere | |
|---|---|---|---|
| search | string | opț. | Caută în nume, SKU, EAN, MPN. |
| status | string | opț. | Filtru: active | draft | archived. |
| updated_after | date | opț. | Doar produse modificate după această dată (ISO 8601). |
| per_page | int | opț. | Elemente pe pagină, 1–100 (implicit 50). |
| page | int | opț. | Numărul paginii. |
Creează un produs. „name" e singurul obligatoriu; SKU și slug se generează automat dacă lipsesc.
| Câmp | Tip | Descriere | |
|---|---|---|---|
| name | string | oblig. | Denumirea produsului (max 191). |
| type | string | opț. | simple | variable (implicit simple). |
| status | string | opț. | active | draft | archived (implicit draft). |
| sku | string | opț. | Cod intern unic în firmă. |
| ean | string | opț. | Cod de bare EAN. |
| mpn | string | opț. | Cod producător. |
| brand_id | int | opț. | Brandul (trebuie să existe în firmă). |
| category_id | int | opț. | Categoria (trebuie să existe în firmă). |
| price | number | opț. | Preț de vânzare. |
| sale_price | number | opț. | Preț redus. |
| cost_price | number | opț. | Preț de achiziție. |
| vat_rate | int | opț. | Cotă TVA, 0–100. |
| stock_quantity | int | opț. | Stoc inițial. |
| track_stock | bool | opț. | Urmărește stocul. |
| highlights | array | opț. | Listă de bullet-uri (string-uri). |
| short_description | string | opț. | Descriere scurtă. |
| long_description | string | opț. | Descriere lungă. |
| weight_grams | int | opț. | Greutate (g) — plus length_mm, width_mm, height_mm. |
| meta_title | string | opț. | SEO — plus meta_description. |
{
"name": "Tricou bumbac organic",
"sku": "TRI-BMB-01",
"price": 99.90,
"vat_rate": 21,
"stock_quantity": 50,
"status": "active"
}Un produs cu relațiile complete (brand, categorie, variante, imagini, etichete).
Actualizează câmpurile produsului (oricare de mai sus, fără „type"). Minim un câmp.
Actualizează doar prețurile. Trimite cel puțin un câmp.
| Câmp | Tip | Descriere | |
|---|---|---|---|
| price | number | opț. | Preț de vânzare. |
| sale_price | number | opț. | Preț redus. |
| cost_price | number | opț. | Preț de achiziție. |
| vat_rate | int | opț. | Cotă TVA, 0–100. |
Actualizează prețuri în masă, după id SAU sku. Răspuns: {updated, not_found}.
{
"items": [
{ "id": 12, "price": 89.90 },
{ "sku": "TRI-BMB-01", "sale_price": 79.90 }
]
}Setează stocul absolut („quantity") sau aplică o ajustare relativă („delta").
| Câmp | Tip | Descriere | |
|---|---|---|---|
| quantity | int | opț. | Setează stocul la această valoare (≥0). |
| delta | int | opț. | Ajustare relativă (poate fi negativă). |
| variant_id | int | opț. | Pentru o variantă anume a produsului. |
{ "delta": -3 }Stoc în masă. Fiecare element: id|sku, opțional variant_id|variant_sku, plus quantity sau delta.
{
"items": [
{ "sku": "TRI-BMB-01", "quantity": 40 },
{ "id": 18, "delta": 5 }
]
}Listă cu stocurile tuturor produselor (filtru search, paginare).
Comenzi
Listă paginată de comenzi (paginare per_page/page, filtru search/status).
Creează o comandă. Clientul: „customer_id" existent SAU obiect „customer" (creat după email). Minim o linie în „items".
| Câmp | Tip | Descriere | |
|---|---|---|---|
| customer_id | int | opț. | Client existent al firmei. |
| customer | object | opț. | Client nou: name (oblig.), email, phone, company_name, cui, reg_com. |
| items | array | oblig. | Liniile comenzii (vezi mai jos). |
| items[].product_id | int | opț. | Produsul — obligatoriu dacă lipsește „sku". |
| items[].sku | string | opț. | Alternativă la product_id. |
| items[].quantity | int | oblig. | Cantitate (≥1). |
| items[].variant_id | int | opț. | Obligatoriu dacă produsul are variante. |
| items[].unit_price | number | opț. | Preț unitar (implicit din produs/variantă). |
| items[].tax_rate | number | opț. | Cotă TVA pe linie, 0–100. |
| status | string | opț. | new | confirmed | processing | shipped | cancelled | returned. |
| payment_status | string | opț. | unpaid | paid | partial | refunded. |
| currency | string | opț. | Cod ISO din 3 litere. |
| shipping_total | number | opț. | Cost transport. |
| discount_total | number | opț. | Discount total. |
| source_order_id | string | opț. | ID-ul comenzii în sistemul tău extern. |
{
"customer": { "name": "Ion Popescu", "email": "ion@exemplu.ro", "phone": "0712345678" },
"payment_status": "paid",
"items": [
{ "sku": "TRI-BMB-01", "quantity": 2, "unit_price": 99.90 }
]
}O comandă cu liniile, totalurile, clientul, AWB-ul și factura.
Actualizează comanda. Schimbarea de „status" trece prin fluxul intern (istoric + notificări). Minim un câmp.
| Câmp | Tip | Descriere | |
|---|---|---|---|
| status | string | opț. | Tranziție de status (vezi valorile de mai sus). |
| payment_status | string | opț. | Status plată. |
| payment_method | string | opț. | Metodă de plată. |
| shipping_method | string | opț. | Metodă de livrare. |
| note | string | opț. | Notă atașată la schimbarea de status (max 500). |
| notes | string | opț. | Notele comenzii. |
| labels | array | opț. | Etichete (string-uri, max 60). |
{ "status": "confirmed", "note": "Confirmată telefonic" }Generează AWB pentru comandă. Idempotent — dacă există deja AWB, îl returnează. Dacă nu ai curier conectat, se emite un AWB local de test.
| Câmp | Tip | Descriere | |
|---|---|---|---|
| courier | string | opț. | fan | sameday | cargus | dpd | gls | dragonstar | urgent | posta | other (implicit fan). |
| weight | number | opț. | Greutate colet (kg). |
| parcels | int | opț. | Număr de colete (≥1). |
| cod_amount | number | opț. | Ramburs (implicit: 0 dacă e plătită, altfel totalul). |
{ "courier": "sameday", "weight": 1.2, "parcels": 1 }Emite factura comenzii. Fără corp. Idempotent — dacă factura există deja, o returnează (status 200).
Clienți
Listă paginată de clienți (filtru search).
Un client cu datele complete.
Actualizează datele clientului.
| Câmp | Tip | Descriere | |
|---|---|---|---|
| name | string | opț. | Nume (dacă e trimis, nu poate fi gol). |
| string | opț. | Email. | |
| phone | string | opț. | Telefon. |
| company_name | string | opț. | Denumire firmă. |
| cui | string | opț. | CUI. |
| reg_com | string | opț. | Nr. registrul comerțului. |
| notes | string | opț. | Note (max 2000). |
Etichete
Listă de etichete (filtru search).
Creează o etichetă.
| Câmp | Tip | Descriere | |
|---|---|---|---|
| name | string | oblig. | Denumire (max 60). |
| color | string | opț. | Culoare (hex sau nume, max 32). |
Redenumește / recolorează eticheta.
Șterge eticheta.
Atașează eticheta la produse.
| Câmp | Tip | Descriere | |
|---|---|---|---|
| product_ids | array | oblig. | Listă de id-uri de produse. |
{ "product_ids": [12, 18, 25] }Detașează eticheta de la produse (același corp ca attach).
Categorii
Arborele de categorii al catalogului.
O categorie.
Retururi
Listă de cereri de retur.
O cerere de retur cu liniile ei.
Oferte marketplace
Listă de oferte pe marketplace-uri.
O ofertă.
Canale & conexiuni
Marketplace-urile conectate (fără credențiale).
Curierii configurați.
Software-urile de facturare conectate.
Magazinele online conectate.
Depozitele / fulfillment-urile disponibile.
Date de referință
Lista de valute.
Lista de limbi.
Lista de țări.