BimpДовідка

Зовнішні ID в API Bimp: зіставлення об'єктів з вашою системою

Оновлено 4 хв читання

На цій сторінці
Коротко

Зовнішній ID — це пара «source + externalId», яка зв'язує об'єкт Bimp (UUID) з ідентифікатором у вашому магазині чи маркетплейсі. Шість методів із суфіксом ExternalId доступні для чотирьох ресурсів: номенклатура, контрагент, замовлення покупця і реалізація. Зв'язок створює api-saveExternalId.

Що таке зовнішній ID

Зовнішній ID — це зв’язок між об’єктом Bimp і його ідентифікатором у вашій системі, записаний як пара source + externalId. Завдяки йому інтеграція не зберігає у себе UUID Bimp: вона шукає об’єкт Bimp за власним ідентифікатором і створює зв’язок після першого імпорту. Типові приклади — ID товару на сайті, ID користувача в магазині, номер замовлення маркетплейсу.

Поля зв’язку:

ПолеЩо означає
sourceІдентифікатор зовнішньої системи (prom, rozetka, shopify). Нечутливий до регістру: значення обрізається і переводиться в нижній регістр
externalIdІдентифікатор об’єкта в зовнішній системі (рядок)
UUID об’єкта BimpУ запиті називається за ресурсом (див. таблицю нижче)

Для одного об’єкта Bimp можна зберігати окремий externalId для кожного source.

Для яких ресурсів доступні зовнішні ID

Зовнішні ID підтримують чотири ресурси; всі шляхи починаються з /org2/, методи — POST.

РесурсШляхПараметр UUID об’єктаДовідник
Номенклатура (товари)/org2/nomenclature/api-…ExternalIdnomenclatureUuidnomenclature
Контрагенти/org2/counterparty/api-…ExternalIdcounterpartyUuidcounterparty
Замовлення покупців/org2/invoiceForCustomerPayment/api-…ExternalIdorderUuidinvoice-for-customer-payment
Реалізація/org2/salesInvoice/api-…ExternalIdsalesInvoiceUuidsales-invoice

Повний перелік шляхів для кожного ресурсу — api-saveExternalId, api-readExternalId, api-readByExternalId, api-readExternalIdsList, api-readWithoutExternalId, api-deleteExternalId.

Які методи є

Усі шість методів працюють однаково для кожного ресурсу. Нижче <uuidField> — параметр із таблиці вище.

МетодЩо робитьТіло запитуdata у відповіді
api-saveExternalIdСтворює або оновлює зв’язок<uuidField>, source, externalId (усі обов’язкові){"success": true}
api-readExternalIdПовертає зовнішній ID об’єкта для source<uuidField>, source (обов’язкові){"externalId": "..."} або null
api-readByExternalIdЗнаходить об’єкт Bimp за зовнішнім IDsource, externalId (обов’язкові)об’єкт Bimp (див. нижче) або null, якщо зв’язку немає
api-readExternalIdsListСписок зв’язків з фільтрамиpagination (обов’язковий), source, <uuidField>масив зв’язків
api-readWithoutExternalIdОб’єкти без зв’язку для sourcepagination, source (обов’язкові)масив об’єктів Bimp
api-deleteExternalIdВидаляє зв’язок<uuidField> (обов’язковий), sourcetrue

pagination має вигляд {"offset": 0, "count": 100} (максимум count — 100), див. Ліміти, пагінація і помилки.

Що повертають методи читання за ресурсами:

РесурсreadByExternalId і readExternalIdsListreadWithoutExternalId
НоменклатураreadByExternalId: nomenclatureUuid, name; список: nomenclatureUuid, name, source, externalIdnomenclatureUuid, name
КонтрагентreadByExternalId: counterpartyUuid, name; список: counterpartyUuid, name, source, externalIdcounterpartyUuid, name
Замовлення покупцяorderUuid, date, number, source, externalIdorderUuid, number, date, amount, comment, counterpartyName, counterpartyUuid, currency, statusName
РеалізаціяsalesInvoiceUuid, date, number, source, externalIdsalesInvoiceUuid, number, date, amount, comment, counterpartyName, counterpartyUuid, currency (перелік може бути повнішим)

Як зіставити замовлення з вашою системою

Типовий потік для замовлень покупців виглядає так, а для товарів і контрагентів він ідентичний.

  1. Для нового замовлення з магазину перевірте, чи воно вже є в Bimp. Викличте api-readByExternalId:

    curl -X POST https://app.bimpsoft.com/org2/invoiceForCustomerPayment/api-readByExternalId \
      -H "access-token: <COMPANY_ACCESS_TOKEN>" \
      -H "Content-Type: application/json" \
      -d '{"source": "myshop", "externalId": "ORD-10452"}'

    Відповідь {"success": true, "data": null} означає, що замовлення ще не імпортоване.

  2. Створіть замовлення методом /org2/invoiceForCustomerPayment/api-create — див. довідник.

  3. Збережіть зв’язок:

    curl -X POST https://app.bimpsoft.com/org2/invoiceForCustomerPayment/api-saveExternalId \
      -H "access-token: <COMPANY_ACCESS_TOKEN>" \
      -H "Content-Type: application/json" \
      -d '{"orderUuid": "<ORDER_UUID>", "source": "myshop", "externalId": "ORD-10452"}'
    { "success": true, "data": { "success": true } }
  4. Щоб знайти замовлення, які ще не зіставлені з вашою системою, викличте api-readWithoutExternalId:

    curl -X POST https://app.bimpsoft.com/org2/invoiceForCustomerPayment/api-readWithoutExternalId \
      -H "access-token: <COMPANY_ACCESS_TOKEN>" \
      -H "Content-Type: application/json" \
      -d '{"pagination": {"offset": 0, "count": 100}, "source": "myshop"}'

Повні сценарії — у статтях Синхронізація замовлень з інтернет-магазином і Синхронізація каталогу товарів.

Як видалити зв’язок

Метод api-deleteExternalId видаляє зв’язок для вказаного source. Якщо source не передати, видаляються всі зовнішні зв’язки цього об’єкта. Метод повертає true, і коли зв’язок видалено, і коли його не було.

curl -X POST https://app.bimpsoft.com/org2/nomenclature/api-deleteExternalId \
  -H "access-token: <COMPANY_ACCESS_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"nomenclatureUuid": "<NOMENCLATURE_UUID>", "source": "prom"}'

Часті питання

Для яких об'єктів Bimp підтримуються зовнішні ID?

Для чотирьох ресурсів: номенклатура (nomenclature), контрагент (counterparty), замовлення покупця (invoiceForCustomerPayment) і реалізація (salesInvoice). Для кожного доступні однакові шість методів.

Що таке параметр source?

Ідентифікатор зовнішньої системи, наприклад prom або rozetka. Значення нечутливе до регістру: Bimp обрізає пробіли й переводить його в нижній регістр. Один об'єкт може мати окремий зовнішній ID для кожного source.

Як знайти об'єкти, які ще не зіставлені з моєю системою?

Викличте readWithoutExternalId відповідного ресурсу з параметрами pagination і source. Метод повертає об'єкти, для яких немає зв'язку з цим source.

Що повертає readByExternalId, якщо зв'язку немає?

Успішну відповідь з data: null, а не помилку.

Стаття допомогла?

Читайте далі

Не знайшли відповідь?Напишіть нам — підтримка відповідає в робочий час.