Core contacts

Добавить расчётный счёт контрагенту

Changed on

Заводит расчётный счёт контрагента. БИК — девять цифр, номер счёта — двадцать, и номер обязан сходиться с БИК по контрольному ключу Банка России: иначе 400 с понятной причиной, потому что платёж по такой паре банк вернёт. Тот же БИК и номер второй строкой не заводятся: прежний счёт включается и возвращается тем же ответом, поэтому повтор безопасен и без ключа. is_default=true делает счёт основным и снимает признак с прежнего основного; если основного у контрагента ещё нет, основным становится заводимый счёт. Карточка, которую ведёт карточка сотрудника, отвечает 409: её реквизиты правят у сотрудника. Читает Idempotency-Key — повтор с тем же ключом отдаёт тот же ответ.

post/api/v1/core/contacts/{id}/bank-accounts

Request

  • Base URL: https://erp.akeda.ru
  • URL: https://erp.akeda.ru/api/v1/core/contacts/{id}/bank-accounts
  • Auth: one of:
    • HTTP bearer
    • API key in header X-Api-Key
    • OAuth 2 (authorization code, authorization URL https://erp.akeda.ru/oauth2/authorize, token URL https://erp.akeda.ru/oauth2/token, scopes: akeda:delegate)
    • HTTP bearer

Path parameters

idstring uuid required

Контрагент

Headers

X-Tenantstring required

Slug выбранного кабинета; кабинет не является юрлицом

Idempotency-Keystring

Ключ одной логической попытки команды. Единственная форма идемпотентности на уровне HTTP; читают его только операции, у которых этот параметр объявлен.

Повтор ТОГО ЖЕ запроса (метод, адрес с параметрами, тело) с тем же ключом не выполняет команду второй раз, а отдаёт первый успешный ответ с заголовком Idempotent-Replay: true. Тот же ключ с другим запросом — отказ 422 idempotency.key_mismatch, а не чужой ответ. Пока первая попытка ещё выполняется, повтор получает 409 idempotency.in_progress и Retry-After: он не ждёт и не выполняется второй раз.

Ключ принадлежит предъявителю в кабинете: человеку, кабинетному API-ключу или установке приложения. Одинаковый ключ у соседа — другая попытка.

Отказ 4xx ключ ОСВОБОЖДАЕТ: запрос отклонён до работы, в кабинете не изменилось ничего, и исправленный запрос с тем же ключом выполняется. Отказ 5xx ключ ЗАПИРАЕТ: записалось или нет — неизвестно, коммит мог случиться, а ответ до вас не доехать. Повтор с тем же ключом получает тот же статус и тот же машинный код, а команда второй раз не выполняется. Чтобы попробовать снова, прочитайте отдельным запросом, появился ли результат, и возьмите НОВЫЙ ключ.

И ответ, и запомненный отказ живут сутки; после этого тот же ключ — новая попытка, и команда выполняется заново. Ответы, несущие секрет (выдача токена, аренда секрета настройки), заголовок не читают: секрет отдаётся ровно один раз. Хранилище недоступно — 503 idempotency.unavailable, команда без защиты не выполняется; этот отказ приходит ДО заявки на ключ и потому ключ не тратит.

Для естественного ключа интеграции годится любая строка вида crm:order:123:create; UUID не обязателен.

Request body

bicstring required

БИК банка; нецифровые знаки отбрасываются, остаться должно девять цифр

accountstring required

Номер расчётного счёта; нецифровые знаки отбрасываются, остаться должно двадцать цифр

bank_namestring

Название банка

is_defaultboolean

Сделать счёт основным

commentstring

Комментарий к счёту

source'manual' | 'document' | 'card'

Откуда счёт; не прислано — manual

Response

Заведённый или вновь включённый счёт

idstring uuid required
contact_idstring uuid required
bicstring required

БИК банка, девять цифр

accountstring required

Номер расчётного счёта, двадцать цифр

bank_namestring required

Название банка

is_defaultboolean required

Основной счёт: подставляется, когда документ своего счёта не назвал. У контрагента он один

is_activeboolean required

Выключенный счёт не предлагается новым документам, но читается в старых

commentstring required

Комментарий к счёту

source'manual' | 'document' | 'card' required

Откуда счёт появился: manual — завёл человек, document — прочитан из счёта поставщика и прошёл проверку ключа, card — пришёл через плоские поля карточки контрагента.

created_atstring required

Когда счёт заведён: отметка времени базы текстом

updated_atstring required

Когда счёт последний раз менялся: отметка времени базы текстом

Changes