API за връзка с програма ЯНАК

Основният URL за всички заявки е: https://api.eyanak.com:5555/e-shop/api/

#Заявка за взимане на JWT Bearer токен: POST https://api.eyanak.com:5555/e-shop/api/login
[
’email’ => string [‘required’]
‘username’ => string [‘required’]
]
— Токен-а е валиден 12 часа и след изтичането му, всяка заявка към api-то ще връща грешка 401 или 500.
— Всяка следваща заявка към api-то, трябва да изпраща хедър:
“Authorization: Bearer token”

Контролери за стоки и групи.

# Заявка за взимане на групи GET https://api.eyanak.com:5555//e-shop/api/groups

# Взимане на информация за стока GET https://api.eyanak.com:5555//e-shop/api/stock

[
‘stockID’ => int,
‘selbuy_id’ => int,
];

# Заявка за взимане на всички стоки GET https://api.eyanak.com:5555/e-shop/api/getstocks
[
‘warehouseID’ => 0,
‘groups’ => [],
‘filters’ => [],
‘filterByName’ => ”,
‘currentPage’ => 1,
‘itemsPerPage’ => 1000000,
‘countItems’ => true,
‘showFilters’ => true,
‘orderBy’ => 1,
‘minPrice’ => -1,
‘maxPrice’ => -1
]

Respons:
“items”: [
{
“quantity” => int
-количество
“id” => int,
-номер на стоката за последващи заявки
“name” => string
-име на стоката
“description” => string
описание ( попълва се в програма Янак)
“groupID” => int
-номер на групата
“basicPrice” => int
-базова цена на стоката
“price” => int
-цена след ценова листа
“specification” => int

“stkType” => int
-тип на стоката
1=>Стандартна
2=>Пакетна
3=>Рецепта
4=>Производствена
7=>Услуга
14=>Пакет за избор
15=>Пакетно меню по изборът с фиксирана цена

“code” => int
-1-ви баркод на стоката
“code_2” => int
-2-ри баркод на стоката
“stk_sellprice_2” => int
-2-ра продажна цена
“stk_sellprice_3” => int
-3-та продажна цена
},

# Заявка за взимане на всички стоки (лека версия) POST https://api.eyanak.com:5555//e-shop/api/getstockslite

[

‘includepricelist” = true

‘last_change_date’ = дд.мм.гггг чч:мм:сс

‘stock_list_ids’ = [int]

#От коя дата напред да гледа за промяна в стоката.

‘warehouse_id’=int

#Ако искаме да филтрираме по определен склад. Това id се взима чрез https://api.eyanak.com:5555//e-shop/api/getwarehouseid/

]

# Заявка за взимане всички складове POST https://api.eyanak.com:5555//e-shop/api/getwarehouseid/

[]

# Заявка за взимане на стоки от група GET https://api.eyanak.com:5555//e-shop/api/stocks

[
current_page => int,
posts_per_page => int,
filter_by_name => string,
groups => [],
ys_filters => array,
min_price => double,
max_price => double,
orderby: int
];

— Пример
[
current_page => 1,
posts_per_page => 100000,
filter_by_name => “”,
groups => [10],
ys_filters => [],
min_price => -1,
max_price => -1,
orderby => 1,
]

# Заявка за добавяне на стока към количка POST https://api.eyanak.com:5555//e-shop/api/cart

[
'sessionID' => уникална сесия за потребителя генерирана от сайта
'stockID' => int,
'customerID' => int (праща се или id-то на фирмата, ако няма 0)
'quantity' => float
'information' => '' (празен стринг)
'additions' => [] (празен масив)
'is_eshop' => bool (true)
'rootStockID' => 0
];

# Заявка за добавяне на стока към количка със свободна цена. POST https://api.eyanak.com:5555//e-shop/api/cart_b

[
‘sessionID’ => уникална сесия за потребителя генерирана от сайта
‘stockID’ => int,
‘customerID’ => int (праща се или id-то на фирмата, ако няма 0)
‘quantity’ => float
‘information’ => ” (празен String)
‘additions’ => [] (празен масив)
‘rootStockID’ => 0
‘is_eshop’ => bool (true)
‘price’ => int, (свободна цена на артикула)
];

# Заявка за редактиране на количеството на стока в количката PUT https://api.eyanak.com:5555//e-shop/api/cart
[
‘id’ => int (id-то на реда на стоката в количката)
‘quantity’ => (новото количество)
]

# Заявка за изтриване на стока от количката DELETE https://api.eyanak.com:5555//e-shop/api/cart
[
‘id’ => int (id-то на реда на стоката в количката)
]

# Заявка за взимане на всички стоки в количката GET https://api.eyanak.com:5555//e-shop/api/cart
[
‘sessionID’ => уникална сесия за потребителя генерирана от сайта,
‘customerID’ => int (id на фирмата, ако няма 0)
]

# Заявка за информация на направената поръчка GET http://eyanak.com/e-shop/api/order
[
‘docID’ => int (id-to на ордера)
]

# Заявка за създаване на поръчка POST https://api.eyanak.com:5555//e-shop/api/order

[
‘sessionID’ => уникална сесия за потребителя генерирана от сайта
‘ip’ => ip на потребителя [‘required’]
‘warehouseID’ => ip на потребителя [‘required’]
’email’ => email на потребителя [‘required’]
‘customerID’ => id на фирмата, ако няма 0 [‘required’]
‘total’ => Обща сума за плащане [‘required’]
‘paymentMethod’ => 1 [‘required’]
‘orderInfo’ => String; [‘required’]
‘FiscalDevice’ => 1 (Тремол) 2 (Елтрейд) 3(Датекс) [‘required’]
‘FiscalDeviceID’ => Номер на ФУ в FiscalServer (програма за комуникация между ФУ и програма Янак) [‘required’]
‘IPAdress’ => IP на компютър където е закачено ФУ [‘required’]
‘port’ => Порт на FiscalServer. Принципно е 9009 [‘required’]
]

# Заявка за добавяне на отстъпка към цялата количка POST https://api.eyanak.com:5555//e-shop/api/order/coupon-discount

[
“isPercent”: => bool, —> типа отстъпка.
“discountValue”: => double, —-> количеството отстъпка ( може да е отрицателно тогава е надбавка)
“sessionId”:  =>string, —> номер на заявката с която работим
“customerID”: => int , —-> клиентско ID ако има такова
“information”:  => string, —-> код на отстъпката ( записва се като име на стоката ако не е процентна отстъпката)

“yanak_coupon”: => bool —-> дали кода който се използва е създаден през модул “Код за отстъпка”
]

Контролери за вход на потребител. Използват се за прихващане на персонални промоции.

# Заявка за вход на потребител: POST https://api.eyanak.com:5555//e-shop/api/user/login

[
’email’ => string [‘required’]
‘password’ => string [‘required’]
];

# Заявка за регистрация на потребител: POST https://api.eyanak.com:5555//e-shop/api/user
[
’email’ => string [‘required’]
‘password’ => string [‘required’, ‘minlength’ => 6, ‘maxlength’ => 50]
‘password_2’ => string
‘full_name’ => string [‘required’, ‘maxlength’ => 50]
‘phone’ => string [‘required’]
‘delivery_address’ string [‘required’, ‘minlength’ => 6, ‘maxlength’ => 500]
‘is_company’ => boolean
];

–Ако user-a има фирма параметъра ‘is_company’ се сетва на true и се добавят:
[
‘company_name’ => string [‘required’, ‘minlength’ => 2, ‘maxlength’ => 500]
‘company_mol’ => string [‘required’, ‘minlength’ => 2, ‘maxlength’ => 50]
‘company_bulstat’ => string [‘required’]
‘dds’ => boolean
‘vatnumber’ => string [‘required’]
‘company_address’ string [‘required’, ‘minlength’ => 6, ‘maxlength’ => 500]
]

— ВАЖНО. Ако има такава фирма в базата данни , ще обвърже потребителя към тази фирма. Ако такава фирма няма ще върне съобщение че трябва да се обърне към оператор за да бъде добавен към дадена фирма и ще запише данните като ‘Забележка’ към потребителя за фактуриране.

# Заявка за взимане на всички контрагент GET https://api.eyanak.com:5555//e-shop/api/customer

$inputs = [];

# Заявка за добавяне на фирма към потребител POST https://api.eyanak.com:5555//e-shop/api/customer

$inputs = [
‘userID’ => int (id на потребителя)
‘company_name’ => string [‘required’, ‘minlength’ => 2, ‘maxlength’ => 500]
‘company_mol’ => string [‘required’, ‘minlength’ => 2, ‘maxlength’ => 50]
‘company_bulstat’ => string [‘required’]
‘company_address’ => string [‘required’, ‘minlength’ => 6, ‘maxlength’ => 500]
‘dds’ => boolean
‘vatnumber’ => string [‘required’]
‘company_address’ => string [‘required’, ‘minlength’ => 6, ‘maxlength’ => 500],
];

$result  = ако има такава фирма в базата данни , ще върне информация за фирмата и ще обвърже потребителя към тази фирма. Ако такава фирма няма ще върне съобщение че трябва да се обърне към оператор за да бъде добавен към дадена фирма и ще запише данните като ‘Забележка’ към потребителя за фактуриране.

# Заявка за редактиране на фирма потребител PUT https://api.eyanak.com:5555//e-shop/api/customer

$inputs = [
‘userID’ => int (id на потребителя)
‘company_name’ => string [‘required’, ‘minlength’ => 2, ‘maxlength’ => 500]
‘company_mol’ => string [‘required’, ‘minlength’ => 2, ‘maxlength’ => 50]
‘company_bulstat’ => string [‘required’]
‘company_address’ => string [‘required’, ‘minlength’ => 6, ‘maxlength’ => 500]
‘dds’ => boolean
‘vatnumber’ => string [‘required’]
‘company_address’ => string [‘required’, ‘minlength’ => 6, ‘maxlength’ => 500],
];

# Заявка за редактиране на Име и Телефон на потребител PUT https://api.eyanak.com:5555//e-shop/api/user
[
‘full_name’ => string [‘required’, ‘maxlength’ => 50]
‘phone’ => string [‘required’]
]

# Заявка за добавяне на адрес на потребител POST https://api.eyanak.com:5555//e-shop/api/user/address
[
‘address’ => string [‘required’, ‘minlength’ => 6, ‘maxlength’ => 500],
]

# Заявка за редактиране на адрес на потребител PUT https://api.eyanak.com:5555//e-shop/api/user/address
[
‘address’ => string [‘required’, ‘minlength’ => 6, ‘maxlength’ => 500],
]

# Заявка за изтриване на адрес на потребител DELETE https://api.eyanak.com:5555//e-shop/api/user/address
[
‘userID’ => int (id на потребителя)
‘id’ => int (id на адреса),
‘delivery_address’ => string (адреса)
]

# Заявка за смяна на парола на потребител PUT https://api.eyanak.com:5555//e-shop/api/user/password

[
’email’ => string [‘required’]
‘password’ => string [‘required’]
];

***** Контролери за ЕКСПОРТ на продажби *******

# Заявка за извличане на данни за продажби за период от време с филтри POST https://api.eyanak.com:5555//api/reports/get-desktop-data

{
    “showStockRows”:true,
    //Rows that the API returns
    “rows_count”: 10000000,
    // Skip rows
    “begin_row_number”:0,
    //Shwo Anulled docs / sales
    “show_anulirani_rows”:false,
    //Show cancled docs / sales
    “show_canceled_rows”:false,
    //Show edited docs / sales
    “show_edited_rows”:false,
    “otchet_filter_where_”:[
        //Docs  from – to date MANDATORY
        {“name”:”P_DATE”,”value”:”01.01.2022 00:00:00″,”value_b”:”21.01.2022 23:59:59″}
        //All other params are OPTIONAL
        //// Pay desk
        // ,{“name”:”kasa”,”value”:0},
        ////Warehouse id (Store id)
        // {“name”:”stores”,”value”:0},
        ////User Id that made the sell
        // {“name”:”users”,”value”:0},
        // {“name”:”doc_number”,”value”:0},
        // {“name”:”doc_note”,”value”:””},
        // {“name”:”plasior”,”value”:0},
        // {“name”:”sell_representetive”,”value”:0},
        // {“name”:”stock_name”,”value”:””},
        // {“name”:”stock_barcode”,”value”:””},
        // {“name”:”stock_kat_number”,”value”:0},
        //// Stock Batch
        // {“name”:”stock_partida”,”value”:””},
        ////If fitering with client name sellbuy_id can’t be null . You must send it as {“name”:”selbuy_id”,”value”:0},;
        // {“name”:”selbuy_name”,”value”:””},
        //// Selbuy = Client
        // {“name”:”selbuy_id”,”value”:0},
        // {“name”:”serial_number”,”value”:””}
        ],
    //Type of report
    “otchet_id”: 1
}
# Заявка за извличане на данни за конкретен документ POST https://api.eyanak.com:5555//api/reports/get-desktop-doc
{
        //Rows that the API returns
    “rows_count”: int,
    // Skip rows
    “begin_row_number”:int,
   //id of the document .
    “id”: bigInt/long
}
# Контролери за добавяне , триене ,взимане и преименуване на снимки чрез интерфейс в програма Янак.
 Чрез тези контролери  може да обвържете стока ,която е част от номенклатурата на клиент и участва в онлайн магазина, със снимки които се намират на ваш сървър. По този начин оператора не е нужно да влиза в портала на изградения онлайн магазин, а може всичко да извърши през ‘Картон на стоката’ в програма Янак. За целта разработчика на онлайн платформата трябва да създаде 4 контролера като всеки един от тях трябва да очаква долу посочения request и да върне съответния response.
“https://домайн/път-до-апи” трябва да бъде предоставена на наш оператор за да бъде попълнена в картона на клиента.
Програма Янак ще изпраща заявки към https://домайн/път-до-апи/../..
#get_images : POST https://домайн/път-до-апи/images
request: {
            stock_id: integer
        }
response: {
    error: String (Празен String ако всичко ОК),
    data: Array[
                    {
                        image_name:String,
                        image_data:String(Base64)
                    }
                ]
            }
#add_image :POST https://домайн/път-до-апи/image/set
request: {
            stock_id: integer,
            image_name:String,
            image_data:String(Base64)
        }
response: {
    error: string (Празен String ако всичко ОК),
    data:Array[
                    {
                        image_name:String,
                        image_data:String(Base64)
                    }
                ]
            }
#delete_image :POST https://домайн/път-до-апи/image/remove
request: {
            stock_id: integer,
            image_name:String
        }
response: {
            error: String (Празен String ако всичко ОК),
            data:{
                error: String (Празен String ако всичко ОК),
                }
            }
#rename_image : POST https://домайн/път-до-апи/image/rename
request: {
            stock_id: integer,
            old_image_name:String,
            new_image_name:String
        }
response: {
            error: String (Празен String ако всичко ОК),
            data:{
                error: String (Празен String ако всичко ОК),
                result: String (New image name)
                }
            }