API eficio
Свържи своя ERP, собствения си сайт или която и да е система с акаунта си в eficio чрез API ключ. Отговори в JSON, контекстът на фирмата се задава автоматично от ключа. По-долу имаш всички endpoints, с параметри и примери.
Удостоверяване в API
Всяка заявка изисква твоя API ключ (започва с efc_). Генерираш го от приложението: „Cont → Setări → API“ (Акаунт → Настройки → раздел API). Пази го като парола.
Изпращай ключа като Authorization: Bearer или, алтернативно, като X-Api-Key.
curl https://eficio.ro/api/v2/account \
-H "Authorization: Bearer efc_cheia_ta"Конвенции
Всички отговори са в JSON (UTF-8). Единичен резултат идва в обвивката { "data": … }, а списък идва с { "data": […], "meta": … }. Изпращай телата на POST/PATCH заявките като JSON с хедъра Content-Type: application/json.
{
"data": { "id": 12, "name": "Tricou bumbac organic", "price": 99.90 }
}Странициране
Списъците приемат per_page (1–100, по подразбиране 50) и page. Обектът meta ти показва къде се намираш.
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 }
}Грешки
При грешка получаваш съответния HTTP код и обвивка { "error": …, "message": … }. Полето error е стабилен код за програмна обработка, а message е текст за хората.
{ "error": "validation_error", "message": "Trimite cel puțin un câmp de actualizat." }| HTTP код | error | Кога |
|---|---|---|
| 401 | missing_token | Липсва хедърът с ключа. |
| 401 | invalid_token | Невалиден или отменен ключ. |
| 403 | no_user | Фирмата няма свързан потребител. |
| 404 | not_found | Ресурсът не съществува. |
| 422 | validation_error | Невалидни данни в тялото на заявката. |
Акаунт & статистика
Профилът на фирмата ти: име, ЕИК, адрес, план и статус на абонамента.
Бърза статистика: продукти, поръчки по статус, клиенти и стойността на поръчките.
Продукти
Списък на каталога по страници.
| Поле | Тип | Описание | |
|---|---|---|---|
| search | string | по избор | Търси в името, SKU, EAN, MPN. |
| status | string | по избор | Филтър: active | draft | archived. |
| updated_after | date | по избор | Само продукти, променени след тази дата (ISO 8601). |
| per_page | int | по избор | Елементи на страница, 1–100 (по подразбиране 50). |
| page | int | по избор | Номерът на страницата. |
Създава продукт. „name“ е единственото задължително поле; SKU и slug се генерират автоматично, ако липсват.
| Поле | Тип | Описание | |
|---|---|---|---|
| name | string | задълж. | Наименованието на продукта (макс. 191). |
| type | string | по избор | simple | variable (по подразбиране simple). |
| status | string | по избор | active | draft | archived (по подразбиране draft). |
| sku | string | по избор | Вътрешен код, уникален във фирмата. |
| ean | string | по избор | EAN баркод. |
| mpn | string | по избор | Код на производителя. |
| brand_id | int | по избор | Марката (трябва да съществува във фирмата). |
| category_id | int | по избор | Категорията (трябва да съществува във фирмата). |
| price | number | по избор | Продажна цена. |
| sale_price | number | по избор | Намалена цена. |
| cost_price | number | по избор | Доставна цена. |
| vat_rate | int | по избор | Ставка на ДДС, 0–100. |
| stock_quantity | int | по избор | Начална наличност. |
| track_stock | bool | по избор | Следи наличността. |
| highlights | array | по избор | Списък с булет точки (низове). |
| short_description | string | по избор | Кратко описание. |
| long_description | string | по избор | Подробно описание. |
| weight_grams | int | по избор | Тегло (г) — плюс length_mm, width_mm, height_mm. |
| meta_title | string | по избор | SEO — плюс meta_description. |
{
"name": "Tricou bumbac organic",
"sku": "TRI-BMB-01",
"price": 99.90,
"vat_rate": 21,
"stock_quantity": 50,
"status": "active"
}Един продукт с всички свързани данни (марка, категория, варианти, изображения, етикети).
Обновява полетата на продукта (всяко от горните, без „type“). Минимум едно поле.
Обновява само цените. Изпрати поне едно поле.
| Поле | Тип | Описание | |
|---|---|---|---|
| price | number | по избор | Продажна цена. |
| sale_price | number | по избор | Намалена цена. |
| cost_price | number | по избор | Доставна цена. |
| vat_rate | int | по избор | Ставка на ДДС, 0–100. |
Обновява цени масово, по id ИЛИ sku. Отговор: {updated, not_found}.
{
"items": [
{ "id": 12, "price": 89.90 },
{ "sku": "TRI-BMB-01", "sale_price": 79.90 }
]
}Задава абсолютна наличност („quantity“) или прилага относителна корекция („delta“).
| Поле | Тип | Описание | |
|---|---|---|---|
| quantity | int | по избор | Задава наличността на тази стойност (≥0). |
| delta | int | по избор | Относителна корекция (може да е отрицателна). |
| variant_id | int | по избор | За конкретен вариант на продукта. |
{ "delta": -3 }Масова промяна на наличности. Всеки елемент: id|sku, по избор variant_id|variant_sku, плюс quantity или delta.
{
"items": [
{ "sku": "TRI-BMB-01", "quantity": 40 },
{ "id": 18, "delta": 5 }
]
}Списък с наличностите на всички продукти (филтър search, странициране).
Поръчки
Списък с поръчки по страници (странициране per_page/page, филтър search/status).
Създава поръчка. Клиентът: съществуващ „customer_id“ ИЛИ обект „customer“ (създава се по имейл). Минимум един ред в „items“.
| Поле | Тип | Описание | |
|---|---|---|---|
| customer_id | int | по избор | Съществуващ клиент на фирмата. |
| customer | object | по избор | Нов клиент: name (задълж.), email, phone, company_name, cui, reg_com. |
| items | array | задълж. | Редовете на поръчката (виж по-долу). |
| items[].product_id | int | по избор | Продуктът — задължително, ако липсва „sku“. |
| items[].sku | string | по избор | Алтернатива на product_id. |
| items[].quantity | int | задълж. | Количество (≥1). |
| items[].variant_id | int | по избор | Задължително, ако продуктът има варианти. |
| items[].unit_price | number | по избор | Единична цена (по подразбиране от продукта/варианта). |
| items[].tax_rate | number | по избор | Ставка на ДДС за реда, 0–100. |
| status | string | по избор | new | confirmed | processing | shipped | cancelled | returned. |
| payment_status | string | по избор | unpaid | paid | partial | refunded. |
| currency | string | по избор | ISO код от 3 букви. |
| shipping_total | number | по избор | Цена на доставката. |
| discount_total | number | по избор | Обща отстъпка. |
| source_order_id | string | по избор | ID на поръчката във външната ти система. |
{
"customer": { "name": "Ion Popescu", "email": "ion@exemplu.ro", "phone": "0712345678" },
"payment_status": "paid",
"items": [
{ "sku": "TRI-BMB-01", "quantity": 2, "unit_price": 99.90 }
]
}Една поръчка с редовете, общите суми, клиента, товарителницата и фактурата.
Обновява поръчката. Промяната на „status“ минава през вътрешния поток (история + известия). Минимум едно поле.
| Поле | Тип | Описание | |
|---|---|---|---|
| status | string | по избор | Преход на статуса (виж стойностите по-горе). |
| payment_status | string | по избор | Статус на плащането. |
| payment_method | string | по избор | Метод на плащане. |
| shipping_method | string | по избор | Начин на доставка. |
| note | string | по избор | Бележка към промяната на статуса (макс. 500). |
| notes | string | по избор | Бележките към поръчката. |
| labels | array | по избор | Етикети (низове, макс. 60). |
{ "status": "confirmed", "note": "Confirmată telefonic" }Генерира товарителница за поръчката. Идемпотентна заявка — ако вече има товарителница, я връща. Ако нямаш свързан куриер, се издава локална тестова товарителница.
| Поле | Тип | Описание | |
|---|---|---|---|
| courier | string | по избор | fan | sameday | cargus | dpd | gls | dragonstar | urgent | posta | other (по подразбиране fan). |
| weight | number | по избор | Тегло на колета (кг). |
| parcels | int | по избор | Брой колети (≥1). |
| cod_amount | number | по избор | Наложен платеж (по подразбиране: 0, ако поръчката е платена, иначе общата сума). |
{ "courier": "sameday", "weight": 1.2, "parcels": 1 }Издава фактурата на поръчката. Без тяло на заявката. Идемпотентна заявка — ако фактурата вече съществува, я връща (статус 200).
Клиенти
Списък с клиенти по страници (филтър search).
Един клиент с пълните данни.
Обновява данните на клиента.
| Поле | Тип | Описание | |
|---|---|---|---|
| name | string | по избор | Име (ако е изпратено, не може да е празно). |
| string | по избор | Имейл. | |
| phone | string | по избор | Телефон. |
| company_name | string | по избор | Наименование на фирмата. |
| cui | string | по избор | ЕИК (CUI). |
| reg_com | string | по избор | Номер в търговския регистър. |
| notes | string | по избор | Бележки (макс. 2000). |
Етикети
Списък с етикети (филтър search).
Създава етикет.
| Поле | Тип | Описание | |
|---|---|---|---|
| name | string | задълж. | Наименование (макс. 60). |
| color | string | по избор | Цвят (hex или име, макс. 32). |
Преименува / сменя цвета на етикета.
Изтрива етикета.
Прикрепя етикета към продукти.
| Поле | Тип | Описание | |
|---|---|---|---|
| product_ids | array | задълж. | Списък с идентификатори на продукти. |
{ "product_ids": [12, 18, 25] }Премахва етикета от продукти (същото тяло като при attach).
Категории
Дървото на категориите в каталога.
Една категория.
Връщания
Списък със заявки за връщане.
Една заявка за връщане с нейните редове.
Оферти в маркетплейси
Списък с оферти в маркетплейсите.
Една оферта.
Канали & връзки
Свързаните маркетплейси (без данните за достъп).
Настроените куриери.
Свързаните програми за фактуриране.
Свързаните онлайн магазини.
Достъпните складове / fulfillment центрове.
Справочни данни
Списъкът с валути.
Списъкът с езици.
Списъкът с държави.