Що каже код помилки API

Конверт помилки, звідки береться її код, і кожен код, яким відповідає API, — що він означає і що з ним робити.

4 хв читання

Коли API відхиляє запит або не може його виконати, у його відповіді є код — стале ім’я того, що сталося. Ця сторінка перелічує коди, якими відповідає API, і каже, що означає кожен і що з ним робити. Розгалужуйтеся за кодом, а не за повідомленням.

Конверт помилки

Помилка, про яку API повідомляє сам, приходить в одному конверті. Стаття Огляд описує його поля й ті нечисленні відповіді, які приходять без нього.

402 Payment Required
{
  "error": {
    "code": "budget_exceeded",
    "message": "Budget 74438200973595137 (monthly) exceeded",
    "request_id": "7c2e9a41-3b8d-4f6a-9e15-c04d2b7a8f63"
  }
}

Код, який несе більше, кладе це в details. Пул, у якого закінчилися підключення, називає там останній збій виклику.

503 Service Unavailable
{
  "error": {
    "code": "pool_exhausted",
    "message": "No provider connection could serve the request after 3 attempt(s)",
    "details": { "last_error_code": "provider_rate_limit" },
    "request_id": "0d3c1b9e-5a47-4f0e-9a36-2f6c8d1e7b42"
  }
}

Поруч із кожним кодом таблиці нижче друкують HTTP-статус, яким API на нього відповідає, — два для коду з двома значеннями, — і прочерк для коду, яким ніколи не відповідають на запит.

SDK зберігають код

Обидва SDK викидають помилку на відповідь-помилку, і помилка зберігає код API: code у Node.js, errorCode у PHP. Перша таблиця нижче називає тип, який кожен SDK викидає для її кодів. У кодів двох інших таблиць власного типу немає, і правило під кожною з цих таблиць каже, який тип викидає SDK. Стаття Обробка помилок показує, як їх ловити.

Коди, для яких у SDK є тип

Для цих кодів кожен SDK викидає власний тип. Більшість із них приходить від операцій, які викликає SDK: запиту до флоу та його викликів моделі, кредитів клієнта.

КодHTTP-статусТип помилки в SDKЩо це означаєЩо робити
invalid_api_key401AuthenticationException PHPAuthenticationError Node.jsУ запиті немає API-ключа або є ключ, якого Slen не знає, — скопійований з помилкою, відкликаний або замінений ротацією.Перевірте значення заголовка Authorization. Відкликаний ключ більше не працює — випустіть новий у консолі.
insufficient_scope403AuthenticationException PHPAuthenticationError Node.jsКлюч дійсний, але в нього немає дозволу, якого вимагає операція, — або його не містить роль людини, яка ввійшла в консоль. Повідомлення помилки називає цей дозвіл і в обох випадках каже про API-ключ.Використайте ключ із цим дозволом або випустіть такий ключ. Давайте ключу лише ті дозволи, які потрібні його сервісу. Людині, яка ввійшла в консоль, потрібна роль, що містить цей дозвіл; її дає власник або адміністратор організації.
not_authenticated401AuthenticationException PHPAuthenticationError Node.jsНіхто не ввійшов. У запиті немає ні API-ключа, ні сесії людини, яка ввійшла в консоль, або сесія закінчилася.Надішліть API-ключ у заголовку Authorization або знову ввійдіть у консоль.
not_a_member403AuthenticationException PHPAuthenticationError Node.jsЛюдина, яка ввійшла в консоль, не учасник організації, про яку запит, або ще не належить до жодної організації.Прийміть запрошення до організації або перемкніться на організацію, учасником якої ви є.
account_suspended403AuthenticationException PHPAuthenticationError Node.jsОбліковий запис людини, яка входить, призупинено, і вхід відхилено.Обліковий запис не може ввійти, доки його не відновлять. Напишіть у підтримку, щоб дізнатися причину.
policy_denied403PolicyDeniedException PHPPolicyDeniedError Node.jsПолітика відхилила запит до того, як було зарезервовано будь-які гроші. Повідомлення помилки називає політику.Прочитайте в повідомленні, яка політика відхилила запит. Змініть запит — модель, операцію, вартість — або змініть політику в консолі.
model_not_allowed403PolicyDeniedException PHPPolicyDeniedError Node.jsВузол моделі у флоу називає модель, якої немає в каталозі, або модель, яку вимкнено. Виконання закінчується як failed з цим кодом.Виберіть у вузлі моделі модель зі списку моделей — у ньому активні моделі, що мають чинну ціну, — і опублікуйте нову версію.
budget_exceeded402BudgetExceededException PHPBudgetExceededError Node.jsВиклик вивів би бюджет за його ліміт. Те, що бюджет уже тримає й витратив у поточному вікні, разом із холдом, який просить цей виклик, більше за ліміт.Дочекайтеся наступного вікна бюджету — його resets_at каже коли; бюджет типу total заново не починається. Або підніміть ліміт бюджету.
operation_limit_exceeded402OperationLimitExceededException PHPOperationLimitExceededError Node.jsБюджет на операцію обмежує, скільки може зарезервувати один виклик операції, а холд, який просить цей виклик, вищий за це обмеження.Просіть менше — менше вихідних токенів, дешевшу модель — або підніміть обмеження. Той самий запит буде відхилено знову, доки одне з них не зміниться.
concurrency_limit_exceeded402ConcurrencyLimitException PHPConcurrencyLimitError Node.jsБюджет типу concurrency — у консолі «Одночасні резерви» — дозволяє тримати відкритими задане число холдів одночасно, і всі вони зайняті викликами, які виконуються.Надішліть запит знову, коли закінчиться один із викликів, що виконуються, або підніміть ліміт бюджету. Запит до флоу надсилайте знову з новим ключем, бо його відхилене виконання зберігає ключ, який у нього був. Це не ліміт запитів ключа.
insufficient_credits402InsufficientCreditsException PHPInsufficientCreditsError Node.jsРахунок клієнта не може покрити ціну виклику в кредитах, або клієнт не має рахунку цього типу кредитів. Списання або коригування відхиляються так само, коли залишили б баланс нижчим за те, що тримає рахунок.Поповніть кредити клієнта. Рахунок, у налаштуваннях якого дозволено від’ємний баланс, не відхиляє.
customer_blocked403CustomerBlockedException PHPCustomerBlockedError Node.jsКлієнта, для якого зроблено запуск, заблоковано. Новий запуск цього клієнта відхиляється до того, як щось створено. Запуск, який уже триває, відхиляється на наступному холді кредитів, і виконання завершується з цим кодом.Розблокуйте клієнта, щоб його запуски знову проходили. Поки клієнта заблоковано, його кредити можна поповнювати, списувати й коригувати, а виписку — читати.
customer_not_found404CustomerNotFoundException PHPCustomerNotFoundError Node.jsПроєкт не знає клієнта, якого називає запит, — клієнта не додавали, не поповнювали й не налаштовували, або його видалили. Так відхиляється виклик операції з ціною для такого клієнта, а також читання, блокування, списання й видалення. Коригування рахунку, якого немає, відхиляється так само.Спершу додайте клієнта або поповніть його — поповнення створює клієнта й рахунок.
overrun_stopped402OverrunStoppedException PHPOverrunStoppedError Node.jsОцінка виклику моделі у флоу, зроблена знову після того, як узято холд, і до виклику провайдера, перевищила холд більше, ніж дозволяє допуск перевищення вузла, а політика перевитрати вузла моделі — зупинити. Холд повернуто, провайдера не викликано. Той самий код завершує виконання, коли людина відхилила погодження, яке запросила перевитрата, або ніхто не відповів вчасно. У нового вузла моделі політики перевитрати немає, а політика, яка у вузла є, практично не спрацьовує, бо обидві оцінки рахуються за одним і тим самим запитом з різницею в мить.Надішліть запит знову з новим ключем — виклик буде оцінено заново, і він візьме власний холд. Щоб таких відмов не було, вимкніть політику перевитрати вузла моделі й опублікуйте нову версію.
overrun_approval_required402OverrunApprovalRequiredException PHPOverrunApprovalRequiredError Node.jsОцінка виклику моделі у флоу, зроблена знову після того, як узято холд, і до виклику провайдера, перевищила холд більше, ніж дозволяє допуск перевищення вузла, а політика перевитрати вузла моделі просить людину схвалити різницю. Виконання чекає на це рішення, тому на запит відповідає виконання, що чекає, а не цей код. У нового вузла моделі політики перевитрати немає, а політика, яка у вузла є, практично не спрацьовує, бо обидві оцінки рахуються за одним і тим самим запитом з різницею в мить.Ухваліть рішення щодо погодження в консолі. Погодження, яке відхилили або щодо якого ніхто не вирішив вчасно, завершує виконання з кодом overrun_stopped.
idempotency_conflict409IdempotencyConflictException PHPIdempotencyConflictError Node.jsКлюч Idempotency-Key уже використав інший запит — той самий ключ з іншим тілом або ключ іншого поповнення, списання чи коригування проєкту.Надішліть новий запит із новим ключем. На повтор першого запиту з його ключем відповідають як раніше.
idempotency_in_progress409IdempotencyConflictException PHPIdempotencyConflictError Node.jsВиклик моделі у флоу зустрів холд, який усе ще стоїть під його власним ключем, і його відхилено, щоб провайдера не було викликано двічі. Виконання закінчується як failed з цим кодом. Звичайний запуск із цим не стикається.Прочитайте виконання та його трасування. Надсилайте запит знову з новим ключем, лише якщо відповідь усе ще потрібна, — за перший виклик могли заплатити.
cost_calculation_failed422InvalidRequestException PHPInvalidRequestError Node.jsМодель активна, але в неї немає чинної ціни, тому Slen не може порахувати, скільки коштуватиме виклик, і виклик відхиляється.Назвіть модель зі списку моделей — у ньому активні моделі, що мають чинну ціну.
provider_not_configured422ProviderException PHPProviderError Node.jsЖодне підключення проєкту не може обслужити провайдера запитаної моделі, тому виклик нікуди надіслати. У флоу той самий код приходить, коли пул, через який вузол моделі спрямовує виклик, видалено або вимкнено.Додайте підключення до цього провайдера в консолі або увімкніть те, яке є. Увімкніть пул знову або виберіть у вузлі моделі інший пул і опублікуйте нову версію. Потім надішліть запит із новим ключем.
provider_rate_limit429ProviderException PHPProviderError Node.jsПровайдер відповів, що його ліміт запитів вичерпано. Пул, який перемикає підключення за ліміту запитів, спершу пробує інше; цей код приходить, коли нічого іншого не пробували.Надішліть виклик знову пізніше з новим ключем. Додайте підключення до пулу або дозвольте пулу перемикати підключення за ліміту запитів.
provider_error502ProviderException PHPProviderError Node.jsПровайдер відхилив виклик або відповів тим, чим Slen не може скористатися, і виклик не завершився.Перевірте, чого запит просить у моделі, — параметр, якого модель не приймає, провайдер відхиляє. Надішліть виклик знову з новим ключем, коли запит буде правильним.
provider_timeout504ProviderException PHPProviderError Node.jsДо провайдера не вдалося достукатися — ім’я не розв’язалося або з’єднання не встановилося, — тому виклик не пішов. Попри назву, це не означає, що модель відповідала повільно.Надішліть виклик знову пізніше з новим ключем. Провайдер, до якого достукалися і який не відповів вчасно, — це operation_uncertain, а не цей код.
provider_unavailable502ProviderException PHPProviderError Node.jsПровайдер відповів збоєм на своєму боці. Slen ставить це підключення на паузу, а пул, який перемикає підключення, пробує інше.Надішліть виклик знову пізніше з новим ключем. Пул із кількома підключеннями переживає збій одного з них.
pool_exhausted503ProviderException PHPProviderError Node.jsЖодне підключення пулу не змогло обслужити виклик за те число спроб, яке дозволяє пул. last_error_code у деталях помилки називає останній збій, а заголовок Retry-After каже, скільки чекати, коли це відомо.Зачекайте стільки, скільки каже Retry-After, і надішліть виклик знову з новим ключем. Якщо пул вичерпується часто, додайте до нього підключення.
operation_uncertain504OperationUncertainException PHPOperationUncertainError Node.jsПровайдера було викликано, а його відповідь не повернулася, тому невідомо, чи було виклик зроблено й оплачено. Так само закінчується виклик моделі у флоу, який ішов у фоні, якщо провайдер його прийняв, а запитати провайдера про нього більше не вдалося. Холд не повертається — він тримається, доки не спливе. Виконання, яке так закінчилося, отримує статус uncertain.Не надсилайте виклик знову з новим ключем — це може бути другий оплачений виклик. Прочитайте операцію або виконання, щоб дізнатися, що сталося. Подія вебхука operation.uncertain теж повідомляє про такий виклик.
ledger_unavailable503ServiceUnavailableException PHPServiceUnavailableError Node.jsРеєстр витрат був недоступний, коли виклик попросив свій холд. Виклик не авторизовано — для нього нічого не зарезервовано, і його провайдера не викликано.Надішліть запит знову пізніше — запит до флоу з новим ключем, бо його невдале виконання зберігає ключ, який у нього був. GET /v1/degraded-status каже, що API пропускає, поки реєстр недоступний.
flow_runtime_error—FlowRuntimeException PHPFlowRuntimeError Node.jsКод, який середовище виконання тримає для флоу, що зламався під час виконання з причини, для якої в нього немає вужчого коду. Зараз цим кодом не відповідає жоден запит і ним не закінчується жодне виконання — збій виконання має вужчий код або не має жодного.Зараз обробляти нічого. Якщо відповідь усе ж принесе цей код, прочитайте трасування виконання, щоб побачити, де воно зупинилося. Виклики моделей до цього місця оплачено, і повтор із новим ключем оплатить їх знову.
step_limit_exceeded500FlowRuntimeException PHPFlowRuntimeError Node.jsВиконання не дійшло до кінцевого вузла за те число кроків, яке дозволено одному виконанню. Флоу більший, ніж середовище виконання проходить за один запит.Скоротіть флоу або розділіть роботу між двома операціями. Потім надішліть запит із новим ключем — на повтор із тим самим ключем відповідає невдале виконання.
unrouted_port500FlowRuntimeException PHPFlowRuntimeError Node.jsВузол вийшов через порт, до якого нічого не підключено, і виконанню не було куди йти. Повідомлення помилки називає вузол і порт.Підключіть цей порт у конструкторі флоу й опублікуйте нову версію. Потім надішліть запит із новим ключем — на повтор із тим самим ключем відповідає невдале виконання.
execution_timeout504TimeoutException PHPTimeoutError Node.jsВиконання флоу вичерпало час, який йому відведено. Виклик моделі, який відповів до цього, оплачено.Прочитайте трасування виконання, щоб побачити, куди пішов час. Перш ніж повторювати запит, зважте, що повтор із новим ключем знову оплатить те, що вже оплачено.
http_request_failed502FlowRuntimeException PHPFlowRuntimeError Node.jsВиклик, який флоу робить до іншого HTTP API, не вдався або отримав у відповідь помилку, а до порту помилки вузла, який його зробив, нічого не підключено. Це не провайдер моделі. Цей вузол заморожено, якщо сервіс не налаштовано інакше, — уже опублікована з ним версія виконується, а нова версія не може його містити.Перевірте API, яке викликає флоу, потім надішліть запит із новим ключем — на повтор із тим самим ключем відповідає невдале виконання. Порт помилки замороженого вузла не можна підключити в новій версії — щоб змінити, що флоу робить у разі такої помилки, опублікуйте версію без цього вузла.
rate_limit_exceeded429RateLimitException PHPRateLimitError Node.jsAPI-ключ або людина, яка ввійшла в консоль, надіслали за хвилину більше запитів, ніж дозволяє ліміт. У кількох операцій свій, менший ліміт — наприклад, у перевірки підключення провайдера. Заголовок Retry-After відповіді каже, скільки секунд чекати. Читання статусу виконання теж рахується.Зачекайте стільки, скільки каже Retry-After, і надішліть запит знову. Для відхиленого запиту нічого не зарезервовано й не витрачено.
service_unavailable503ServiceUnavailableException PHPServiceUnavailableError Node.jsSlen не зміг достукатися до своєї бази даних і відповів, нічого не зробивши. Той самий код відповідає на зміну бюджету, яка надто довго чекала викликів, що виконуються на цьому бюджеті; нічого не змінено.Надішліть запит знову пізніше. Відхилена зміна бюджету каже в Retry-After, коли.
background_hold_expired—TimeoutException PHPTimeoutError Node.jsЦе не відповідь API — ним закінчується виконання, запущене в асинхронному режимі. Виклик моделі у флоу виконувався в провайдера у фоні, і його холд було закрито іншим списанням, поки виклик чекав, тому виклик закінчився, не спитавши в провайдера відповідь. Нічого не повернуто, і провайдер усе ще може виставити рахунок за прийнятий виклик. Попри назву, холд, який просто сплив, так виклик не закінчує.Надсилайте запит знову з новим ключем, лише якщо відповідь усе ще потрібна. Провайдер може виставити рахунок і за перший виклик, тому за відповідь, можливо, доведеться заплатити двічі.
execution_conflict500FlowRuntimeException PHPFlowRuntimeError Node.jsВиконання не вдалося відкрити — його запис зіткнувся з іншим, і не за ключем ідемпотентності. Флоу не виконувався.Надішліть запит знову. Якщо це повториться, напишіть у підтримку й укажіть id запиту.
unknown_node500FlowRuntimeException PHPFlowRuntimeError Node.jsОпублікована версія флоу веде до вузла, якого середовище виконання не може знайти, тому виконання зупинилося.Опублікуйте флоу заново з конструктора флоу, потім надішліть запит із новим ключем — на повтор із тим самим ключем відповідає невдале виконання. Якщо з новим ключем помилка повториться, напишіть у підтримку й укажіть id запиту.
node_type_not_supported500FlowRuntimeException PHPFlowRuntimeError Node.jsВ опублікованій версії флоу є вузол типу, який середовище виконання не вміє виконувати.Замініть вузол у конструкторі флоу й опублікуйте нову версію. Потім надішліть запит із новим ключем — на повтор із тим самим ключем відповідає невдале виконання.

Коди без власного типу

Для цих кодів у SDK немає власного типу. Він викидає тип за статусом відповіді — за правилом під таблицею.

КодHTTP-статусЩо це означаєЩо робити
project_access_restricted403Той, хто викликає, бачить лише частину проєктів організації і спробував змінити те, що належить усій організації, або прочитати журнал аудиту. API-ключу доступний лише проєкт, якому він належить.З API-ключем створюйте потрібне в проєкті ключа — підключення провайдера, у якого scope дорівнює project. Людина просить внести зміну учасника, якому доступні всі проєкти.
customer_has_history409Клієнта не можна видалити, бо з ним уже щось відбувалося — на рахунку є кредити або резерв, або у виписці є запис. Журнал кредитів лише доповнюється, і його записи пояснюють баланс.Заблокуйте клієнта замість видалення.
reservation_not_found404Це не відповідь жодної операції API. Slen тримає цей код для холду, який не може знайти, поки закриває виклик моделі.Обробляти нічого. Якщо відповідь усе ж його принесе, напишіть у підтримку й наведіть id запиту.
reservation_expired409Це не відповідь жодної операції API. Slen тримає цей код для продовження холду, що сплив; холд, що сплив, усе ще приймає списання свого виклику.Обробляти нічого. Якщо відповідь усе ж його принесе, напишіть у підтримку й наведіть id запиту.
invalid_request409, 422Запит не можна виконати в такому вигляді, і повідомлення помилки каже чому — політика без параметра, потрібного її дії, або з умовою, якої її дія ніколи не зустрічає; вибрані проєкти для учасника, чия роль відкриває всі проєкти; заголовок Idempotency-Key довший за 190 символів. SDK самі викидають помилку з цим кодом для виклику, який відхиляють до надсилання.Прочитайте повідомлення й змініть запит.
idempotency_key_required400Операція вимагає заголовок Idempotency-Key, а в запиті його немає або він порожній.Надішліть власний ключ, який називає одиницю роботи, і надсилайте той самий ключ, коли повторюєте цю роботу.
invalid_flow_input422У вході немає того, що потрібно вузлу флоу, — флоу, який викликає модель, вимагає непорожній messages у вході. Виконання закривається як failed, і ключ залишається за ним.Виправте вхід і надішліть його з новим ключем. На повтор із тим самим ключем відповідає невдале виконання.
execution_parked—Це не відповідь API. Усередині середовища виконання він позначає виконання, яке зупинилося, щоб чекати, а на запит відповідає саме виконання — те, що чекає, або в черзі.Обробляти як помилку нічого. Дочекайтеся виконання так само, як будь-якого іншого, що чекає.
flow_not_found404На код операції не відповідає жоден флоу — до нього не прив’язано флоу, у флоу немає опублікованої версії або флоу в архіві. Нічого не створюється, тому ключ ідемпотентності залишається вільним. Той самий код відповідає на id флоу, який недоступний тому, хто викликає.Прив’яжіть код операції до флоу й опублікуйте флоу. Повтор із тим самим ключем виконається, коли флоу зможе відповісти.
operation_not_found404Жодна операція — запис одного виклику моделі з його спробами в провайдерів — не має такого id у проєкті ключа.Перевірте id. Операція іншого проєкту відповідає так само.
invalid_credentials401, 502Два випадки. Вхід у консоль, за якого пошта й пароль не збігаються з жодним обліковим записом. Виклик моделі, за якого провайдер відхилив ключ підключення, що обслуговувало виклик, — тоді Slen позначає облікові дані цього підключення як недійсні.Увійдіть із правильним паролем. Для підключення вкажіть у ньому чинний ключ провайдера в консолі.
csrf_token_mismatch419Запит сесії консолі прийшов без свого CSRF-токена або із застарілим. Запит з API-ключем цей код ніколи не отримує.Перезавантажте сторінку консолі й повторіть дію.
not_found404Реєстрація та вхід у консоль відповіли так, ніби такої адреси немає. Вони відкриті лише для браузера, у якому відкрили видане посилання доступу.Відкрийте своє посилання доступу в цьому браузері, потім знову зареєструйтеся або ввійдіть.
flow_execution_not_found404Виконання з таким id немає в проєктах, доступних тому, хто викликає, — його не було взагалі, або воно належить іншому проєкту.Перевірте id. Це execution_id відповіді, яка розпочала виконання.

Для коду без власного типу SDK обирає тип помилки за HTTP-статусом відповіді:

  • 401, 403 AuthenticationException PHP, AuthenticationErrorNode.js
  • 402 SpendRefusedException PHP, SpendRefusedErrorNode.js
  • 429 RateLimitException PHP, RateLimitErrorNode.js
  • 500 і вище ProviderException PHP, ProviderErrorNode.js
  • будь-який інший статус InvalidRequestException PHP, InvalidRequestErrorNode.js

Коди консолі й налаштувань

Ці коди приходять від операцій консолі й налаштувань: входу й сесій, організацій і проєктів, учасників і запрошень, ключів, політик, бюджетів, флоу та їхніх версій, погоджень, сповіщень, вебхуків, підключень і пулів, оновлень консолі в реальному часі, — а invalid_date_range від списків реєстру, холдів і операцій. Жоден метод SDK ці операції не викликає. Правило під таблицею — правило SDK для будь-якого коду без власного типу.

КодHTTP-статусЩо це означаєЩо робити
session_required403Це може зробити лише людина, яка ввійшла в консоль, — створити організацію, змінити або видалити учасника, надіслати, повторно надіслати чи відкликати запрошення, підключити або змінити канал чи маршрут повідомлень, прочитати й змінити свої повідомлення. API-ключ цього не може.Зробіть це в консолі, увійшовши як учасник, чия роль це дозволяє.
member_forbidden403Роль людини, яка ввійшла, не дозволяє такої зміни цього учасника, або зміна стосується її власної участі. Роль власника дає й забирає лише власник, а змінює чи видаляє учасника лише власник або адміністратор.Попросіть власника внести зміну. Щоб самому розлучитися з організацією, вийдіть із неї.
channel_forbidden403Консоль попросила оновлення в реальному часі щодо проєкту, який тому, хто викликає, читати не можна, — іншого проєкту, ніж той, якому належить ключ, або проєкту, недоступного людині.Перемкніться на доступний вам проєкт і відкрийте сторінку знову.
budget_not_found404Бюджету з таким id немає в проєктах, доступних тому, хто викликає, — його не було взагалі, або він належить іншому проєкту.Перевірте id. Отримайте список бюджетів, щоб знайти потрібний; архівний бюджет потрапляє до списку, якщо include_archived дорівнює 1.
invalid_date_range422Вікно списку реєстру, холдів чи операцій — не таке, яке список читає. Обидва кінці приходять разом або не приходять зовсім, кінець не може бути раніше за початок, вікно — не більше семи днів, і кожен кінець — момент, який список може розібрати.Надішліть from і to разом, кінець після початку, не далі семи днів одне від одного, — або не надсилайте жодного й читайте останні сім днів. Щоб прочитати довший період, зсувайте вікно.
flow_invalid422У графі флоу є помилки, тому він не може стати версією, яка виконується. Їх знайшла публікація в чернетці, або відкат знайшов, що версія, до якої він повернувся б, називає модель чи пул, яких більше немає. Подробиці помилки перелічують кожну проблему з її кодом і вузлом, якого вона стосується.Виправте кожну помилку списку в конструкторі флоу й опублікуйте знову. Попередження публікацію не зупиняють. Для відкату виберіть іншу версію або опублікуйте чернетку, яка більше не називає зниклого.
flow_draft_not_found404У флоу немає чернетки для публікації — його опублікували й відтоді не змінювали. Так само відповідає перевірка флоу, у якого немає ні чернетки, ні опублікованої версії.Змініть флоу, щоб почати нову чернетку, потім опублікуйте її. Щоб версія, яка виконується зараз, виконувалася й далі, публікувати нічого не потрібно.
flow_slug_taken409У тому самому проєкті в ту саму мить створювався інший флоу й зайняв те саме коротке ім’я. Флоу не створено.Створіть флоу знову. Ім’я, яке в проєкті вже є, отримує число в кінці свого короткого імені.
approval_not_found404Запиту на погодження з таким id немає в проєктах, доступних тому, хто викликає, — його не було взагалі, або він належить іншому проєкту.Перевірте id. Отримайте список запитів на погодження проєкту, щоб знайти потрібний.
alert_not_found404Сповіщення з таким id немає в проєктах, доступних тому, хто викликає, — його не було взагалі, або воно належить іншому проєкту.Перевірте id. Прочитайте стрічку сповіщень, щоб знайти потрібне.
alert_rule_not_found404Правила сповіщення з таким id немає в проєктах, доступних тому, хто викликає, — його не було взагалі, його видалили, або воно належить іншому проєкту.Перевірте id. Правила перелічено на вкладці правил сторінки сповіщень.
alert_rule_unknown_setting422Налаштування правила сповіщення називають налаштування, якого в його типу немає. Повідомлення називає налаштування, які тип приймає.Надсилайте лише налаштування, які повідомлення називає для цього типу.
api_key_not_found404API-ключа з таким id немає в проєктах, доступних тому, хто викликає, — його не було взагалі, або він належить іншому проєкту. Для відкликаного ключа ротація неможлива, і запит відповідає так само.Перевірте id на сторінці ключів консолі. Щоб замінити відкликаний ключ, випустіть новий.
invite_not_found404За цим посиланням чи цим id запрошення немає. Посилання могли набрати з помилкою, або запрошення належить іншій організації.Відкрийте посилання точно в тому вигляді, у якому воно прийшло в листі, або попросіть нове запрошення.
invite_not_pending410Запрошення існує, але більше не відкрите — його прийняли, відхилили чи відкликали, або його строк минув.Попросіть власника чи адміністратора організації запросити вас знову.
invite_email_mismatch403Запрошення надіслано на іншу адресу електронної пошти, ніж в облікового запису, який увійшов.Увійдіть в обліковий запис тієї адреси, на яку надіслано запрошення, або попросіть запрошення на свою адресу.
email_not_verified403Обліковий запис ще не підтвердив свою адресу електронної пошти, тому не може прийняти запрошення або підключити Telegram для повідомлень.Відкрийте посилання підтвердження, надіслане на цю адресу, потім відкрийте запрошення або підключіть Telegram знову.
invite_forbidden403Людина, яка ввійшла, не може керувати цим запрошенням. Запрошує лише власник або адміністратор, а запрошення на роль власника надсилає, повторно надсилає й відкликає лише власник. API-ключ запрошеннями не керує.Попросіть власника — або адміністратора, якщо роль нижча за власника, — надіслати чи змінити запрошення.
member_not_found404Учасника з таким id в організації немає — він міг вийти або бути видаленим.Прочитайте список учасників знову й використайте id, який він дає.
last_owner409Зміна залишила б організацію без власника. В організації лишається принаймні один.Спершу зробіть власником іншого учасника, потім змініть роль цього, видаліть його або вийдіть.
organization_not_found404Організації немає, або людина, яка ввійшла, не її учасник. Так само відповідає запит, який називає іншу організацію, ніж у ключа.Перевірте id і перемкніться на організацію, учасником якої ви є.
organization_limit_reached409Людина вже володіє стількома організаціями, скількома може володіти одна людина, — двадцятьма, якщо сервіс не налаштовано інакше.Зробіть іншого учасника власником організації, яка вам більше не потрібна, і вийдіть із неї, потім створіть нову.
project_not_found404Проєкту з таким id в організації немає, або він недоступний тому, хто викликає.Перевірте id. Отримайте список проєктів організації, щоб знайти доступний вам.
project_required422В організації ще немає проєкту, а запиту він потрібен для роботи.Створіть проєкт в організації, потім повторіть дію.
policy_not_found404Політики з таким id немає в проєктах, доступних тому, хто викликає, — її не було взагалі, її видалили, або вона належить іншому проєкту.Перевірте id. Прочитайте список політик, щоб знайти потрібну.
provider_connection_not_found404Підключення провайдера з таким id немає в проєктах, доступних тому, хто викликає, — його не було взагалі, або воно належить іншому проєкту. Пул відмовляється прийняти таке підключення з тим самим кодом.Перевірте id. Отримайте список підключень, а для пулу виберіть підключення свого проєкту або всієї організації.
provider_pool_not_found404Пулу провайдерів з таким id немає в проєктах, доступних тому, хто викликає, — його не було взагалі, або він належить іншому проєкту.Перевірте id. Отримайте список пулів, щоб знайти потрібний.
webhook_endpoint_not_found404Вебхука з таким id в організації немає, або він належить проєкту, недоступному тому, хто викликає.Перевірте id на сторінці вебхуків консолі.
webhook_url_not_allowed422Slen не доставлятиме на цю адресу. Вебхуку потрібна адреса https на порту 443, з іменем хоста, а не IP-адресою, без логіна й пароля, і його хост не може вести в приватну мережу.Укажіть публічну адресу https свого сервісу. Хост, ім’я якого ще не розв’язується, приймається, бо кожна доставка розв’язує його знову.
email_already_registered409Обліковий запис із цією адресою електронної пошти вже є, тому новий не створено.Увійдіть із цією адресою або скиньте її пароль, якщо забули його.
invalid_token422Посилання для підтвердження адреси електронної пошти чи для нового пароля неправильне, уже використане або його строк минув.Попросіть нове посилання й відкрийте його в тому вигляді, у якому воно прийшло в листі.
too_many_attempts429За короткий час не вдалося забагато спроб увійти чи задати новий пароль — для цього облікового запису або з цієї мережевої адреси, тому спроби на якийсь час відхиляються.Зачекайте час, який називає заголовок Retry-After, потім спробуйте знову з правильним паролем — або задайте новий.
oauth_failed422Вхід через Google не вдалося завершити. Спроба тривала надто довго чи не пройшла перевірку, або Google не підтвердив адресу, яку пов’язав би з уже наявним обліковим записом.Почніть вхід через Google заново. Якщо Google не підтвердив адресу, увійдіть із паролем облікового запису.
flow_version_not_found404У флоу немає версії з таким номером.Отримайте список версій флоу й використайте номер, який він дає.
flow_version_not_published409Названа версія — чернетка. Знову виконуватися може лише версія, яку опублікували.Назвіть опубліковану версію або опублікуйте чернетку.
no_previous_version409Відкат без номера версії веде до опублікованої версії одразу під тією, яка виконується, а такої немає — флоу на своїй першій версії, або жодна його версія не виконується.Назвіть версію, до якої перейти, або опублікуйте нову.
draft_conflict409Чернетка вже не та, для якої зроблено запит. Хтось зберіг її в проміжку або опублікував і почав нову — або під час публікації надійшло збереження чи інша публікація, поки вона готувалася. Нічого не записано й нічого не опубліковано.Прочитайте чернетку знову, застосуйте до неї свою зміну й надішліть запит знову з номерами, які в неї тепер.
operation_already_bound409На цей код операції вже відповідає інший флоу проєкту. Флоу відповідає на один код, а код веде до одного флоу; цей флоу зберігає код, який у нього був.Спершу приберіть код в іншого флоу або виберіть інший код.
approval_expired409Запит на погодження більше не можна вирішити. Його строк минув, і тепер він закритий так, ніби ніхто не вирішив, — або його виконання закінчилося й більше не чекає.Рішення більше ніщо не чекає. Відкрийте виконання, щоб побачити, чим воно закінчилося, і надішліть запит до флоу знову з новим ключем, якщо робота все ще потрібна.
approval_already_decided409Запит на погодження більше не очікує — хтось вирішив його першим, або його строк минув.Прочитайте запит знову, щоб побачити рішення й хто його ухвалив.
connection_in_use409Підключення провайдера — останнє ввімкнене підключення пулу, тому його видалення залишило б пулу нічого викликати.Додайте до пулу інше підключення або ввімкніть одне з його підключень, потім видаліть це. Або спершу видаліть пул.
pool_in_use409Флоу все ще викликає моделі через цей пул — його називає версія флоу, яка виконується, або незавершене виконання йде на версії, яка його називає. Пул не видалено.Опублікуйте версії цих флоу, які називають інший пул, дайте виконанням завершитися, потім видаліть пул.
pool_connection_exists409Підключення вже входить до цього пулу.Натомість змініть умови участі підключення — його пріоритет, вагу, множник вартості чи те, чи ввімкнене воно.
pool_connection_not_found404Підключення не входить до цього пулу.Прочитайте пул, щоб побачити його підключення, або спершу додайте підключення.
connection_incompatible422Підключення не може ввійти до цього пулу. Воно іншого провайдера, ніж пул, а пул не приймає підключень інших провайдерів, — або підключення видалено.Виберіть підключення провайдера пулу або дозвольте пулу приймати підключення інших провайдерів.
unsupported_pool_strategy422Виклик моделі пройшов через пул, стратегію якого Slen не виконує. API таку стратегію ніколи не приймає; пул отримав її іншим шляхом.Задайте пулу стратегію priority, least_utilized або weighted, потім надішліть запит знову з новим ключем — виклик, який зустрів цей код, закінчився.
already_a_member409Людина з цією адресою електронної пошти вже учасник організації, тому запрошення не надіслано.Змініть роль учасника, якщо малося на увазі це.
invite_already_pending409Запрошення на цю адресу електронної пошти в організації вже відкрите.Надішліть відкрите запрошення повторно або відкличте його й запросіть знову.
invite_limit_reached429За короткий час пішло забагато листів із запрошеннями — організація надсилає не більше 50 на добу, одна людина не більше 20 на годину, нові запрошення й повторні разом, якщо сервіс не налаштовано інакше, — тому це на якийсь час відхилено.Зачекайте час, який називає заголовок Retry-After, потім запросіть або надішліть повторно ще раз. Уже надіслані запрошення тим часом лишаються відкритими.
user_session_not_found404Активної сесії з таким id у людини, яка ввійшла, немає. Вона могла закінчитися, або з неї вже вийшли.Прочитайте список своїх сесій знову. Із сесією, якої більше немає, нічого робити не потрібно.
notification_channel_not_found404Каналу повідомлень із таким id в організації немає, або він належить проєкту, недоступному тому, хто викликає. Особистий канал іншої людини теж не знаходиться.Перевірте id у списку каналів команди або в списку своїх каналів.
notification_route_not_found404Маршруту повідомлень із таким id в організації немає, або він належить проєкту, недоступному тому, хто викликає. Маршрут також видаляється, коли його останній одержувач покидає організацію, і через деякий час після видалення правила сповіщення, до якого він прив’язаний.Прочитайте список маршрутів знову.
notification_subscription_not_found404Підписки з таким id у людини, яка ввійшла, у цій організації немає. Підписка належить лише своєму учасникові, і підписка іншого учасника не знаходиться.Прочитайте список своїх підписок знову.
notification_channel_url_not_allowed422Slen не надсилатиме повідомлення на цю адресу. Адреса каналу має бути вебхуком того сервісу, до якого належить канал, — адресою Slack на hooks.slack.com у /services/, адресою вебхука Discord або адресою робочого процесу Teams в Azure Logic Apps чи Power Automate, з /workflows/ у шляху. Адреса виведеного з роботи з’єднувача Office 365 відхиляється, як і адреса, яка не https на порту 443, містить логін або пароль, називає IP-адресу або веде в приватну мережу. Група в Telegram адреси не приймає взагалі. Подробиці помилки називають випадок.Скопіюйте адресу із сервісу знову й вставте її цілою. Для Microsoft Teams створіть робочий процес каналу, а не з’єднувач.
notification_channel_kind_unavailable422Ця інсталяція Slen не пропонує Telegram, бо для неї не налаштовано бота Telegram.Використайте натомість Slack, Microsoft Teams, Discord або пошту чи попросіть того, хто відповідає за інсталяцію, налаштувати бота.
notification_channel_state_invalid409Канал не в тому стані, якого потребує ця дія. Чат підтверджується, лише поки він чекає на підтвердження, і лише тим, хто отримав його посилання. Тест іде лише в активний канал. Канал, що чекає на своє посилання, вмикається підтвердженням чату, а не зміною статусу. Обліковий запис має один чат Telegram, тому другий не підключається, поки перший увімкнений або на паузі.Прочитайте канал знову й дійте за його станом. Підтвердьте чат як той, хто отримав посилання, відновіть канал на паузі перед тестом або відключіть свій Telegram, перш ніж підключати інший.
notification_limit_reached409Організація вже має стільки каналів або маршрутів повідомлень, скільки їй можна, або учасник має стільки підписок у ній, — 20 каналів і 50 маршрутів в організації та 20 підписок в учасника, якщо сервіс не налаштовано інакше.Видаліть канал, маршрут або підписку, які більше не потрібні, і спробуйте знову.
notification_event_not_allowed422Маршрут або підписка називає подію, про яку людям повідомляти не можна, або одержувача, чия роль не читає цю подію в консолі. Спостерігач не бачить погоджень, тому ні маршрут, ні підписка не приносить спостерігачеві погодження.Називайте серед подій лише сповіщення й погодження та не включайте спостерігача в маршрут, який несе погодження.
notification_unsubscribe_invalid404Посилання для відписки від листів-повідомлень зроблене не Slen. Його обрізали або змінили дорогою.Відкрийте посилання з листа знову, ціле, або вимкніть листи серед своїх повідомлень у консолі.

Для коду без власного типу SDK обирає тип помилки за HTTP-статусом відповіді:

  • 401, 403 AuthenticationException PHP, AuthenticationErrorNode.js
  • 402 SpendRefusedException PHP, SpendRefusedErrorNode.js
  • 429 RateLimitException PHP, RateLimitErrorNode.js
  • 500 і вище ProviderException PHP, ProviderErrorNode.js
  • будь-який інший статус InvalidRequestException PHP, InvalidRequestErrorNode.js

Код, із яким закінчується виконання

Виконання, яке не завершилося, зберігає код в error_code, а error_message каже те саме реченням. Читання статусу, очікування й повтор запиту з його ключем читають обидва поля. Більшість цих кодів — коди цієї сторінки: код помилки, якою відповіли на запит. Два види — ні.

Вузол Відхилити запит завершує виконання з кодом і повідомленням, заданими в ньому. Вузол, у якому не задано ні того, ні іншого, завершує його так:

JSON
{
  "status": "rejected",
  "error_code": "rejected_by_flow",
  "error_message": "The request was rejected by the flow"
}

Середовище виконання закриває виконання, яке більше не може провести, із власним кодом: його обробник зупинився, воно чекало довше, ніж виконанню можна чекати, його стан не вдалося зберегти або прочитати. Що сталося, каже error_message. Виконання, яке чекало надто довго, закінчується так:

JSON
{
  "status": "failed",
  "error_code": "parked_expired",
  "error_message": "The execution waited longer than a parked execution may and was closed"
}

У виконання, яке закрила помилка без коду в API, немає ні того, ні іншого: error_code і error_message дорівнюють null.

Що читати далі

Зібрано з openapi b070e1f, sdk contract 5cc7055, php ae4a53b, node 84bc62d