Action Error References
Examples of Error Structure
- Example One
- Example Two
{
"error_code": "InvalidStatusCodeBlinkHttpErr",
"message": "Blink received an invalid status code after sending an HTTP request to the vendor",
"data": {
"request": {
"host": "httpbin.org",
"method": "GET",
"path": "/status/500"
},
"response": {
"body": "",
"headers": {
"Access-Control-Allow-Credentials": ["true"],
"Access-Control-Allow-Origin": ["*"],
"Content-Length": ["0"],
"Content-Type": ["text/html; charset=utf-8"],
"Date": ["Wed, 02 Aug 2023 08:04:20 GMT"],
"Server": ["gunicorn/19.9.0"]
},
"status_code": 500
}
}
}
{
"error_code": "SlackChannelNotFoundBlinkHttpErr",
"message": "Either the channel does not exist or in the case of a private channel, the Slack App specified in the connection may not be a part of the channel. For more information please see https://docs.blinkops.com/docs/integrations/slack#link-connection-to-a-specific-channel",
"data": {
"request": {
"host": "slack.com",
"method": "POST",
"path": "/api/chat.postMessage"
},
"response": {
"body": {
"error": "channel_not_found",
"ok": false
},
"headers": {
"Access-Control-Allow-Headers": [
"slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, x-b3-sampled, x-b3-flags"
],
"Access-Control-Allow-Origin": ["*"],
"Access-Control-Expose-Headers": ["x-slack-req-id, retry-after"],
"Cache-Control": ["private, no-cache, no-store, must-revalidate"],
"Content-Length": ["40"],
"Content-Type": ["application/json; charset=utf-8"],
"Date": ["Wed, 02 Aug 2023 08:42:59 GMT"],
"Expires": ["Sat, 26 Jul 1997 05:00:00 GMT"],
"Pragma": ["no-cache"],
"Referrer-Policy": ["no-referrer"],
"Server": ["Apache"],
"Strict-Transport-Security": [
"max-age=31536000; includeSubDomains; preload"
],
"Vary": ["Accept-Encoding"],
"Via": [
"1.1 slack-prod.tinyspeck.com, envoy-www-iad-zkbbofin, envoy-edge-dub-xxiobhim"
],
"X-Accepted-Oauth-Scopes": ["chat:write"],
"X-Backend": [
"main_normal main_canary_with_overflow main_control_with_overflow"
],
"X-Content-Type-Options": ["nosniff"],
"X-Edge-Backend": ["envoy-www"],
"X-Envoy-Upstream-Service-Time": ["83"],
"X-Oauth-Scopes": [
"channels:manage,channels:history,channels:read,chat:write,chat:write.public,groups:write,groups:read,groups:history,files:write,im:read,im:write,im:history,mpim:read,mpim:write,mpim:history,reactions:write,usergroups:write,users:read,users.profile:read,users:read.email,team:read"
],
"X-Server": ["slack-www-hhvm-main-iad-jkkc"],
"X-Slack-Backend": ["r"],
"X-Slack-Edge-Shared-Secret-Outcome": ["no-match"],
"X-Slack-Req-Id": ["147ce5feb7ec705030ac447e30724f8b"],
"X-Slack-Shared-Secret-Outcome": ["no-match"],
"X-Slack-Unique-Id": ["ZMoXE5U8lj8ns695KBe2tgAAEBA"],
"X-Xss-Protection": ["0"]
},
"status_code": 200
}
}
}
Error Structure Explained
- error_code: Is the name of the Error Code.
- message: Provides a descriptive explanation of the error that occurred.
- data: Contains any additional information related to the error being returned such as the request method, host and path.
- response: Contains the Headers and the body of the request sent.
Please be aware that each error is unique. Consequently, some errors may encompass additional data fields, while others might have fewer data fields. This variation depends on the executed action and the specific error encountered. The above Error Structure serves as just one example among several different types of error structures. However, they consistently encompass the essential components of error_code, message, data and body.
Error Types
- HTTP ERRORS and REQUEST ERRORS
- JIRA ERRORS
- SLACK ERRORS
Error Type | Error Code | Error Message |
---|---|---|
HTTP ERROR | BLINK_HTTP_ERR_INVALID_STATUS_CODE | Blink received an invalid status code after sending an HTTP request to the vendor |
HTTP ERROR | BLINK_HTTP_ERR_PAYLOAD_ERROR | Blink received an error in the response body after sending an HTTP request to the vendor |
HTTP ERROR | BLINK_HTTP_ERR_RATE_LIMIT | Blink encountered a rate-limit after sending an HTTP request to the vendor |
HTTP ERROR | BLINK_HTTP_ERR_RATE_LIMIT_TIMEOUT | The wait duration for API rate limit reset is longer than the request timeout |
REQUEST ERROR | BLINK_HTTP_ERR_MISSING_REQUIRED_PARAM | Missing mandatory parameter %s |
REQUEST ERROR | BLINK_HTTP_ERR_PAYLOAD_LIMIT | Blink failed to parse the base URL (%s) for this action |
REQUEST ERROR | BLINK_HTTP_ERR_BASE_URL | Blink failed to join the base URL with the user's relative path for this action |
Error Type | Error Code | Error Message |
---|---|---|
JIRA ERROR | BLINK_HTTP_ERR_JIRA_USER_NOT_FOUND | The user email input did not match any Jira user |
JIRA ERROR | BLINK_HTTP_ERR_JIRA_USER_AMBIGUOS | The user email input matched more than one user |
Error Type | Error Code | Error Message |
---|---|---|
SLACK ERROR | BLINK_HTTP_ERR_SLACK_UNMARSHAL_OPEN_CONVERSATIONS | Failed to unmarshal open conversations: %s |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_CHANNEL_NOT_FOUND. | Either the channel does not exist or in the case of a private channel, the Slack App specified in the connection may not be a part of the channel. For more information please see https://docs.blinkops.com/docs/integrations/slack#link-connection-to-a-specific-channel |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_DUPLICATE_CHANNEL_NOT_FOUND. | Channel associated with client_msg_id was invalid |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_DUPLICATE_MESSAGE_NOT_FOUND. | No duplicate message exists associated with client_msg_id |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_NOT_IN_CHANNEL. | Cannot read/post user messages to a channel they are not in |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_IS_ARCHIVED. | Channel has been archived |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_MSG_TOO_LONG. | Message text is too long |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_NO_TEXT. | No message text provided |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_RESTRICTED_ACTION. | A workspace preference prevents the authenticated user from posting |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_RESTRICTED_ACTION_READ_ONLY_CHANNEL | Cannot post any message into a read-only channel |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_RESTRICTED_ACTION_THREAD_ONLY_CHANNEL. | Cannot post top-level messages into a thread-only channel |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_RESTRICTED_ACTION_NON_THREADABLE_CHANNEL | Cannot post thread replies into a non_threadable channel |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_RESTRICTED_ACTION_THREAD_LOCKED. | Cannot post replies to a thread that has been locked by admins |
SLACK ERROR | BLINK_HTTP_ERR_PAYLOAD_ERROR. | Blink received an error in the response body after sending an HTTP request to the vendor |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_TOO_MANY_ATTACHMENTS. | Too many attachments were provided with this message. A maximum of 100 attachments are allowed on a message |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_TOO_MANY_CONTACT_CARDS. | Too many contact_cards were provided with this message. A maximum of 10 contact cards are allowed on a message |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_RATE_LIMITE. | Application has posted too many messages, read the Rate Limit documentation for more information |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_AS_USER_NOT_SUPPORTED. | The as_user parameter does not function with workspace apps |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_EKM_ACCESS_DENIED. | Administrators have suspended the ability to post a message |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_SLACK_CONNECT_FILE_LINK_SHARING_BLOCKED. | Admin has disabled Slack File sharing in all Slack Connect communications |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INVALID_BLOCKS . | Blocks submitted with this message are not valid communications |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INVALID_BLOCKS_FORMAT. | The blocks is not a valid JSON object or doesn't match the Block Kit syntax |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_TEAM_ACCESS_NOT_GRANTED. | The token used is not granted the specific workspace access required to complete this request |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_NOT_AUTHED. | No authentication token provided |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INVALID_AUTH. | Some aspect of authentication cannot be validated. Either the provided token is invalid or the request originates from an IP address disallowed from making the request |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_TOKEN_REVOKED. | Authentication token is for a deleted user or workspace or the app has been removed when using a user token |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_TOKEN_EXPIRED. | Authentication token has expired |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_NO_PERMISSION | The workspace token used in this request does not have the permissions necessary to complete the request. Make sure your app is a member of the conversation it's attempting to post a message to |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_ORG_LOGIN_REQUIRED. | The workspace is undergoing an enterprise migration and will not be available until migration is complete |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_MISSING_SCOPE. | The token used is not granted the specific scope permissions required to complete this request |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_NOT_ALLOWED_TOKEN_TYPE. | The token type used in this request is not allowed |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_METHOD_DEPRECATED. | The method has been deprecated |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_DEPRECATED_ENDPOINT. | The endpoint has been deprecated |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_TWO_FACTOR_SETUP_REQUIRED. | Two factor setup is required |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_ENTERPRISE_IS_RESTRICTED | The method cannot be called from an Enterprise |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INVALID_ARGUMENTS | The method was either called with invalid arguments or some detail about the arguments passed is invalid, which is more likely when using complex arguments like blocks or attachments |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INVALID_ARG_NAME | The method was passed an argument whose name falls outside the bounds of accepted or expected values. This includes very long names and names with non-alphanumeric characters other than _. If you get this error, it is typically an indication that you have made a very malformed API call |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INVALID_ARRAY_ARG | The method was passed an array as an argument. Please only input valid strings |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INVALID_CHARSET | The method was called via a POST request, but the charset specified in the Content-Type header was invalid. Valid charset names are: utf-8 iso-8859-1 |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INVALID_FORM_DATA | The method was called via a POST request with Content-Type application/x-www-form-urlencoded or multipart/form-data, but the form data was either missing or syntactically invalid |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INVALID_POST_TYPE | The method was called via a POST request, but the specified Content-Type was invalid. Valid types are: application/json application/x-www-form-urlencoded multipart/form-data text/plain |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_MISSING_POST_TYPE | The method was called via a POST request and included a data payload, but the request did not include a Content-Type header |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_TEAM_ADDED_TO_ORG | The workspace associated with your request is currently undergoing migration to an Enterprise Organization. Web API and other platform operations will be intermittently unavailable until the transition is complete |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_RATELIMITED | The request has been ratelimited. Refer to the Retry-After header for when to retry the request |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_ACCESSLIMITED | Access to this method is limited on the current network |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_REQUEST_TIMEOUT | The method was called via a POST request, but the POST data was either missing or truncated |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_SERVICE_UNAVAILABLE | The service is temporarily unavailable |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_FATAL_ERROR | The server could not complete your operation(s) without encountering a catastrophic error. It's possible some aspect of the operation succeeded before the error was raised |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INTERNAL_ERROR. | The server could not complete your operation(s) without encountering an error, likely due to a transient issue on our end. It's possible some aspect of the operation succeeded before the error was raised |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_NAME_TAKEN | A channel cannot be created with the given name |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_NO_CHANNEL | Value passed for name was empty |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INVALID_NAME_REQUIRED | Value passed for name was empty |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INVALID_NAME_PUNCTUATION | AValue passed for name contained only punctuation |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INVALID_NAME_MAXLENGTH | Value passed for name exceeded max length |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INVALID_NAME_SPECIALS | Value passed for name contained unallowed special characters or uppercase characters |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INVALID_NAME | Value passed for name was invalid |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_TOO_MANY_CONVOS_FOR_TEAM | The workspace has exceeded its limit of public and private channels |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_CANNOT_CREATE_CHANNEL | This channel is unable to be created |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_MISSING_ARGUMENT | A required argument is missing |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_FEATURE_NOT_ENABLED | Two factor setup is required |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_CHANNEL_TYPE_NOT_SUPPORTED | The provided channel_id was a DM, MPDM, or the 'general' channel |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_DEFAULT_ORG_WIDE_CHANNEL | Users may not be invited to the default org-wide channel |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_USER_MUST_BE_ADMIN | The token provided must be associated with an Org Admin or Owner |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_FAILED_FOR_SOME_USERS | The method failed for a subset of the users passed |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_NOT_REACTABLE | Whatever you passed in, like a file or file_comment, can't be reacted to anymore. Your app can react to messages though |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_TOO_MANY_EMOJI | The limit for distinct reactions (i.e emoji) on the item has been reached |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_MESSAGE_NOT_FOUND | Message specified by channel and timestamp does not exist |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_ALREADY_REACTED | TThe specified item already has the user/reaction combination |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_BAD_TIMESTAMP | Value passed for timestamp was invalid |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_TOO_MANY_REACTIONS | The request has been ratelimited. Refer to the Retry-After header for when to retry the request |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_NO_ITEM_SPECIFIED | Combination of channel and timestamp was not specified |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_EXTERNAL_CHANNEL_MIGRATING | The channel is in the process of being migrated |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_THREAD_LOCKED | Reactions are disabled as the specified message is part of a locked thread |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_TEAM_NOT_FOUND | team_id was not found |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INVALID_EMAIL | Email address was not valid |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_ALREADY_IN_TEAM | The user is already on the team |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_FAILED_TO_VALIDATE_CUSTOM_MESSAGE | extra_message was invalid |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_USER_DISABLED | The user is disabled |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_FAILED_TO_SEND_INVITE | The invite failed to send |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_ALREADY_IN_TEAM_INVITED_USER | The user has already been invited to the team |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_FAILED_TO_VALIDATE_CUSTOM_MESSAGE | The extra_message was invalid |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_FAILED_LOOKING_UP_USER | We couldn't find the requested user |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_EDIT_WINDOW_CLOSED | The message cannot be edited due to the team message edit settings |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_FAILED_TO_VALIDATE_CALLER | The token calling this method doesn't have permission to invite a user |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_USERS_NOT_FOUND | The Value passed for user was invalid |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_FAILED_TO_VALIDATE_TEAM | The team calling this method was invalid |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_POSTING_TO_GENERAL_CHANNEL_DENIED | An admin has restricted posting to the #general channel |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_FAILED_TO_VALIDATE_CHANNELS | One or more channels supplied are invalid |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_SLACK_CONNECT_CLIP_SHARING_BLOCKED | Admin has disabled Clip sharing in Slack Connect channels |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_SLACK_CONNECT_FILE_UPLOAD_SHARING_BLOCKED | Admin has disabled File uploads in all Slack Connect communications |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_FAILED_TO_VALIDATE_EXPIRATION | The expiration_ts was invalid |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_MALWARE_DETECTED | This file may contain a virus or other malware and can't be uploaded to Slack |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_SLACK_CONNECT_BLOCKED_FILE_TYPE | File uploads with certain types are blocked in all Slack Connect communications |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_CANT_UPDATE_MESSAGE | Authenticated user does not have permission to update this message |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_CANT_BROADCAST_MESSAGE | Unable to broadcast this message |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_UPDATE_FAILED | Internal update failure |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_EDIT_WINDOW_CLOSED | The message cannot be edited due to the team message edit settings |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_NO_DUAL_BROADCAST_CONTENT_UPDATE | Can't broadcast an old reply and update the content at the same time |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_IS_INACTIVE | The message cannot be edited within a frozen, archived, or deleted channel |
SLACK ERROR | BLINK_HTTP_ERR_SLACK_INVALID_ATTACHMENTS | The attachments were invalid |
Generic Rate-Limit
Rate limiting controls how often requests can be made to a system or service. It sets a maximum number of requests allowed within a certain period (seconds, minutes, or hours). When this limit is reached, the system may delay or reject further requests until the next time period starts. Blink handles rate limit errors automatically. This is how we do it:
In the Blink Ops Editor, when sending an HTTP request as part of an action, if the Blink's system receives the response code 429, it indicates that the generic rate limit has been reached. Additionally, the presence of headers X-RateLimit-Remaining or X-Rate-Limit-Remaining with a value of 0 confirms this limit has been reached.
The system will then check for the X-RateLimit-Reset and X-Rate-Limit-Reset headers. If these headers are present, they provide an epoch time indicating when you can resume sending requests. The system will automatically retry at that specified time.
Additionally, if the Retry-After header is found, it indicates the number of seconds to wait before retrying. The system will automatically retry after the specified duration.
In the absence of these headers, the system will employ an exponential backoff strategy, starting with a delay of 100ms. The retries will continue until the step reaches its configured timeout. If the required wait duration for the API rate limit reset exceeds the step timeout, the following message will be returned: “The wait duration for API rate limit reset is longer than the request timeout”.
In Blink's HTTP actions, the advanced settings include an option to Retry on Rate Limit. This feature can be enabled by checking the corresponding box. To disable it, simply uncheck the box.
In all other HTTP-based actions available on the Blink Platform, the Retry on Rate Limit feature is always automatically enabled.
To prevent these errors, we recommend reducing the number of requests sent through the chosen HTTP action.