АПИ

OBS ERP API позволява интеграция и обмен на данни с профукти и софтуери на трети страни, като други ERP системи, shell scripts, планувани задачи и други системи. Изходните данни са в JSON формат, а модул "Привилегии" контролира достъпа. Последната версия на OBS ERP API позволява следните операции:

I. Добавяне на записи
II. Получаване на данни
III. Актуализиране на записи
IV. Изтриване на записи
V. Копиране на даден запис
VI. Специфични операции - генериране на фактура, нулиране на поредни номера и т.н.

За да използвате услугати API, във вашата инстанция трябва да просъства модул "Конструктор". Във всяко извикване на API трябва да бъдат включени Every call to the API should include идентикифационни данни в следния формат: username и pwd.

I. Добавяне на записи

Пример: добавяме нов запис за компания на име "TestCompany" в модул "Фирми":

shell# curl -d 'name=TestCompany&username=jhon&pwd=smith' "https://acme.obs2go.com/api/companies/add"


Параметри:
1.1. acme - домейн на ERP инстанцията;
1.2. api - използваме OBS ERP API;
1.3. companies - целевия модул. Списък с всички налични модули може да бъде намерен в модул "Конструктор;
1.4. add - вида операция, използван за добавяне на данни;
1.5. username & pwd - идентификационни данни за достъп;
1.6. name - име на полето. Списък с всички налични полета може да бъде намерен в модул "Конструктор" ⇨ "целевия модул" ⇨ "Полета";

Резултат - резултатът е JSON string в следния формат:

{"ExitCode":0,"Error":"","Data":{"message":"Record 54 created","object":54}}

Описание на JSON ключови думи:

1.7. ExitCode: 0 - операцията е успешна; 1 - операцията е неуспешна;
1.8. Error - в случай, че Exit Code е 1, съдържа информация за грешката, която е възпрепятствала успешната операция.
1.9. Data.message - съдържа данни, взависимост от контекста, въз основа на вида операция. Съобщението ще е преведено на езика, според настройките на потребителя;
1.10. Data.object - уникалния идентификатор (пореден номер) на новосъздадения запис 


II. Получаване на данни 

1. Обикновен филтър:
1.1 Пример - да изведем всички фактури, генерирани на 16-02-04:

# curl -d 'filter__=[{"invoices_issue_date":"2016-02-04"}]&username=john&pwd=smith' 
"https://acme.obs2go.com/api/invoices/all"


1.2. Описание:
Извикването на API се състои от следните елементи:
1.2.1. acme - домейн на ERP инстанцията;
1.2.2. api - използваме OBS ERP API;
1.2.3. invoices - целевия модул. Списък с всички налични модули може да бъде намерен в модул "Конструктор;
1.2.4. all - вида операция, използван за получаване на информация;
1.2.5. filter__ - извикване на обикновения филтър, който лимитира резултатите на база посочени параметри тип ключ ⇨ стойност
1.2.6. invoices_issue_date - filter key_value pair - Името на ключа, който се състои от две части, свързани с долна черта (_);
1.2.6.1. invoices - името на модула;
1.2.6.2. issue_date - името на полето, както е описано в модул "Конструктор";

1.3. Резултат - Резултатът е JSON string в следния формат:

{"ExitCode":0,"Error":"", "Data":{"data":[[10,"Open Business Solutions", "100.00", "20.00","120.00", "2016-3-5 0:0:0"],["id","company","base_amount", "tax_amount", "total_amount","due_date"]]}}



Описание на JSON ключове:
1.3.1. ExitCode: 0 - операцията е успешна; 1 - операцията е неуспешна
1.3.2. Error - в случай, че Exit Code е 1, съдържа информация за грешката, която е възпрепятствала успешната операция.
1.3.3. Data.data - съдържа данни, взависимост от контекста на вида операция. В този случай е списък с фактурите, създадени на 2016-02-04. Последният елемент, съдържа имената на полетата.

В допълнение, елементи от определени фактури, могат да бъдат извлечени по следния начин: 

curl -d 'filter__=[{"invoice_items_record_id":10}]&username=john&pwd=smith' "https://acme.obs2go.com/api/invoices/all"

JSON Отговор:

{"ExitCode":0,"Error":"","Data":{"data [[2,"test",null,"100.00","CNT","1.00",null,"100.00"],
 ["id","name","description","price_per_unit", "unit","qty","discount","line_total"]]}}



2. Комплексни филтъри:
2.1 Пример - да изведем списък с фактури, въз основа на техните уникални идентификационни номера (ID).

# curl -d 'multiple_filter__= [{"invoices_id":[1,2,3,4,5,6,7,8,9,10,11]}] &username=john&pwd=smith' "https://acme.obs2go.com/api/invoices/all"

2.2. Описание:
Извикването на API се състои от следните елементи:
2.2.1. acme -домейн на ERP инстанцията;
2.2.2. api - използваме OBS ERP API;
2.2.3. invoices -целевия модул. Списък с всички налични модули може да бъде намерен в модул "Конструктор;
2.2.4. all - вида операция, използван за получаване на информация;
2.2.5. multiple_filter__ - извикване на комплексния филтър, който лимитира резултатите на база посочени параметри тип ключ ⇨ стойност. Стойността може да бъде масив от елементи;
2.2.6. invoices_id - filter key - value pair. Името на ключа, който се състои от две части, свързани с долна черта (_);
2.2.6.1. invoices - името на модула;
2.2.6.2. id -името на полето, както е описано в модул "Конструктор";

2.3. Резултат - резултатът JSON string в следния формат:

{"ExitCode":0,"Error":"","Data":{"data":[[]]}}

Описание на JSON ключове:
2.3.1. ExitCode: 0 - операцията е успешна; 1 - операцията е неуспешна
2.3.2. Error - в случай, че Exit Code е 1, съдържа информация за грешката, която е възпрепятствала успешната операция.
2.3.3. Data.message - съдържа данни, взависимост от контекста, въз основа на вида операция.

3. Търсене на всички записи, създадени в диапазон от време между две дати:

curl -d 'dates__=[{"start_time":"2011-05-02"},{"end_time":"2016-05-25"}]&username=john&pwd=smith'
 "https://acme.obs2go.com/api/invoices/all"

3.1. Посочване на поле конкретно поле за дата:

Използва се date_field ключ, за да се конкретизира поле за дата. Например: date_field=created_at

3.2. Търсене според няколко полета за дати: 

dates_map__: съдържа json, както е показано по-долу

curl -d 'dates_map__=[{"check_in":{"start":"2018-06-01","end":"2018-08-15"}}]&dates__=[{"start_time":"2011-05-02"},{"end_time":"2016-05-25"}]&username=john&pwd=smith'
 "https://acme.obs2go.com/api/invoices/all"

4. Извличане на всички данни на запис: 

Методът по-долу позволява извличане на всички данни:

curl -d 'username=john&pwd=smith' "https://acme.obs.bg/api/projects/get_record/1"​

Методът get_record предоставя пълна информация за определен запис. Също така показва и информация за всички референтни записи към него. 

5. Извличане на всички данни на запис:

Същото, като точка 4, но без извличани на информация за референтни записи.

curl -d 'username=john&pwd=smith' "https://acme.obs.bg/api/projects/get/1"​​

5. Подреждане 

sort_order - Задава реда на показване. Трябва да бъде възходящ или низходящ (ASC/DESC);
order_by_column_id - Задава идентификационния номер на колоната, за да подреди резултатите.Стойността е в диапазон от 1 до N;

curl -d 'username=john&pwd=smith' "https://acme.obs.bg/api/projects/get/1?sort_order=ASC&order_by_column_id=2"​​

6. Номериране (страници) 

page_num - Стойността е в диапазон от 1 до N;
rowsperpage - Задава максималния брой върнати редове. Стойността е в диапазон от 1 до 100;

7. Custom JSON output

Създаване на персонализиран JSON изходи, съдържащ специфични полета, трябва да създадете персонализиран доклад в OBS ERP.
Отвоере модула и кликнете върху "зъбното колело". Там посочете колоните, които искате да видите във вашия персонализиран доклад. След като сте въвели тези настройки, можете да получите доклад, използвайки OBS ERP API:

table_report - boolean. Приема следните стойности -  0, 1, true или false. Задава информацията, дали да бъде получен персонализиран доклад. В случай, че такъв не е наличен, ще се върне докладът по подразбиране.

8. Получаване на информация чрез ключ ⇨ стойност:

curl -d 'username=john&pwd=smith' 'https://acme.obs.bg//api/get_record_by_map/unit_tests/{"name":"George", "surname":"Smith"}'

III. Актуализиране на записи

За да актуализирате даден запис, трябва да му зададете идентификационния номер в API кода. Например: нека актуализираме запис №54 в модул "Компании".
1. Пример
Задаваме за следната информация: банкова сметка - CB123456789; VAT регистрационен номер - 111222; име на компания -  "ACME INC" по следния начин:

# curl -d 'vat_number=111222&name=ACME INC&bank_account=CB123456789&username=jhon&pwd=smith&id=54' 
"https://acme.obs2go.com/api/companies/edit"

2. Описание:
2.1. acme - домейн на ERP инстанцията;
2.2. api - използваме OBS ERP API;
2.3. companies - целевия модул. Списък с всички налични модули може да бъде намерен в модул "Конструктор;
2.4. edit - вида операция, използвана за д актуализиране;
2.5. username & pwd - идентификационни данни за достъп;
2.6. id - уникален идентификационен номер на записа
2.7. vat_number, name, bank_account - име на актуализираното поле. Списък с всички налични полета може да бъде намерен в модул "Конструктор" ⇨ "целевия модул" ⇨ "Полета";

3. Резултат:

{"ExitCode":0,"Error":"","Data":{"message":"Record 54 updated","object":54}}

Описание на JSON ключови думи:

3.1. ExitCode: 0 - операцията е успешна; 1 - операцията е неуспешна;
3.2. Error - в случай, че Exit Code е 1, съдържа информация за грешката, която е възпрепятствала успешната операция.
3.3. Data.message - съдържа данни, взависимост от контекста, въз основа на вида операция.


IV. Изтриване на записи

1. Пример: изтриване на запис №56 от модул "Компании":

# curl -d 'username=jhon&pwd=smith' "https://acme.obs2go.com/api/companies/del_app_object/56

2. Описане:
2.1. acme - домейн на ERP инстанцията;
2.2. api - използваме OBS ERP API;
2.3. companies - целевия модул. Списък с всички налични модули може да бъде намерен в модул "Конструктор;
2.4. del_app_object - вида операция, използвана за изтриване на запис;
2.5. username & pwd - идентификационни данни за достъп;
2.6. 56 - уникален идентификационен номер на изтрития запис;

3. Резултат:

{"ExitCode":0,"Error":"","Data":{"message":"Record 56 deleted","object":56}}

Описание на JSON ключови думи:

3.1. ExitCode: 0 - операцията е успешна; 1 - операцията е неуспешна;
3.2. Error - в случай, че Exit Code е 1, съдържа информация за грешката, която е възпрепятствала успешната операция.
3.3. Data.message - съдържа данни, взависимост от контекста, въз основа на вида операция.


V. Копиране на даден запис

1. Пример: копиране на запис №54 в модул "Компании":

# curl -d 'username=jhon&pwd=smith' "https://acme.obs2go.com/api/companies/copy/54

2. Описание:
2.1. acme - домейн на ERP инстанцията;
2.2. api - използваме OBS ERP API;I;
2.3. companies - целевия модул. Списък с всички налични модули може да бъде намерен в модул "Конструктор;
2.4. copy -вида операция, използвана за копиране;
2.5. username & pwd - идентификационни данни за достъп;
2.6. 56 - уникален идентификационен номер на копирания запис

Забележка: Всички полета, които имат ограничение за уникалност ще бъдат времено преименувани, след тази стъпка.

[8 character random string]_originalname

3. Резултат:

{"ExitCode":0,"Error":"","Data":{"data":{"companies":[57]}}}

Описание на JSON ключови думи:

3.1. ExitCode: 0 - операцията е успешна; 1 - операцията е неуспешна;
3.2. Error - в случай, че Exit Code е 1, съдържа информация за грешката, която е възпрепятствала успешната операция.
3.3. Data.message - съдържа данни, взависимост от контекста, въз основа на вида операция.

VI. Извикване на  превод на текущ език по ключови думи

1. Пример: извикване на превод на total_net_revenue и outgoing_warehouse

# curl -d 'username=jhon&pwd=smith' "https://acme.obs2go.com/ajax/dictionary/["total_net_revenue","outgoing_warehouse"]

2. Описание:
2.1. acme - домейн на ERP инстанцията;
2.2. ajax/dictionary - използваме OBS ERP API;I;Всички преводи са налични в модул "https://acme.obs2go.com/modules/translations/all"
2.3. username & pwd - идентификационни данни за достъп;
2.4. ["total_net_revenue","outgoing_warehouse"] - масив с разделени с запетая ключове

3. Резултат:

{"ExitCode":0,"Error":"","Data":{"translations":{"outgoing_warehouse":"Изходящ склад","total_net_revenue":"Нетен приход тотал"}}}

Описание на JSON ключови думи:

3.1. ExitCode: 0 - операцията е успешна; 1 - операцията е неуспешна;
3.2. Error - в случай, че Exit Code е 1, съдържа информация за грешката, която е възпрепятствала успешната операция.
3.3. Data.translations - съдържа данни


За други случаи, моля свържете се с нашия екип - Контакти;