АПИ
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 - съдържа данни
За други случаи, моля свържете се с нашия екип - Контакти;