Error Codes
UmbSocial reports problems as stable codes rather than sentences, so a client can translate them and code can act on them. A code is <area>.<problem>, sometimes followed by :<detail> (a network id, a field name or a handler’s message).
Codes are returned in a service result’s Errors, in a channel result’s Errors, in the management API’s problem details (codes) or channel warnings, and recorded in a target’s Error.
| Code | Meaning |
|---|---|
post.not_found |
There is no post with that key. (404 in the management API.) |
post.not_yours |
The person has Write but not Schedule, and the post isn’t their own draft. Without Schedule, you can edit or delete only your own drafts. |
post.sealed |
The free edition’s history window has sealed the post: it can’t be edited, retried or marked as published. |
post.in_flight |
The post is being sent on a channel right now, so it can’t be edited or deleted (or its channel removed). Try again shortly. |
post.outcome_unknown |
A channel’s outcome is Unknown. Resolve it (retry, or mark as published) before editing the post. |
post.cancelled:<message> |
A saving or deleting handler refused the change, with its message. |
text.required |
The post’s text is empty. |
field.too_long:text |
The text (or a channel’s own text) is over 63,206 characters. |
field.too_long:linkTitle |
The link title is over 200 characters. |
field.too_long:linkDescription |
The link description is over 500 characters. |
field.too_long:imageAltText |
The alt text is over 1,000 characters. |
field.too_long:campaign |
The campaign is over 100 characters. |
link.https_required |
The link (or the URL given when marking as published) isn’t an absolute https URL with a host, of up to 2,048 characters. For a link card, also when the URL uses another port or carries a user name or password, or a redirect leads to such a URL. |
media.unknown |
The image’s key isn’t a media item. (Management API.) |
image.framing_invalid |
The image’s focal point or a crop lies outside the image, a crop leaves nothing of it, or a network has two crops. |
link.not_allowed |
The link card couldn’t be read: the page’s host resolves to an address that isn’t public (private, loopback, link-local or reserved). The post can still be saved. |
link.unreachable |
The link card couldn’t be read: the page answered with an error, isn’t HTML, didn’t answer within 5 seconds, or redirected more than 3 times. The post can still be saved. |
text.too_long:<network> |
A channel’s text is over its network’s limit, as that network counts it. |
image.required:<network> |
The network needs an image (Instagram). |
link.title_required:<network> |
The network needs a link title when there is a link (LinkedIn). |
link.image_conflict:<network> |
The network takes a link or an image, not both (LinkedIn). |
channel.none |
The post has no channels. |
channel.unknown |
A channel doesn’t exist or has been removed. |
channel.paused |
A channel is beyond the free edition’s channel allowance, so it can’t take new posts. |
schedule.past |
A specific time is in the past (or missing). |
schedule.no_free_slot |
Add to queue found no free slot in the next 28 days (or the schedule has no slots). |
Targets
Section titled “Targets”| Code | Meaning |
|---|---|
target.not_found |
There is no target with that id. (404 in the management API.) |
target.not_retryable |
Only a Failed or Unknown target can be retried. |
target.not_resolvable |
Only a Failed or Unknown target can be marked as published. |
target.cancelled:<message> |
A retrying or marking published handler refused, with its message. |
Channels
Section titled “Channels”| Code | Meaning |
|---|---|
field.required:name |
The channel has no name. |
field.too_long:name |
The channel’s name is over 100 characters. |
channel.unknown |
There is no channel with that key, or it has been removed. |
channel.network_unavailable |
The network isn’t known, or its Automate provider package isn’t installed. |
channel.settings_invalid |
The channel options aren’t a JSON object of the network’s options, a value doesn’t match its pattern, or a required option is missing. |
channel.connection_mismatch |
The Automate connection doesn’t exist or isn’t the network’s connection type. |
channel.limit |
The free edition allows 3 channels. |
channel.no_workspace |
No Automate workspace with a service account allows the channel’s connection, so its automation couldn’t be created. The channel is saved. |
channel.automation_invalid |
Automate refused the managed automation as invalid. |
channel.cancelled:<message> |
A saving or removing handler refused the change, with its message. |
post.in_flight |
One of the channel’s posts is being sent right now, so it can’t be removed. Try again shortly. |
Schedule and settings
Section titled “Schedule and settings”| Code | Meaning |
|---|---|
schedule.too_many_slots |
More than 168 slots. |
schedule.day_invalid |
A slot’s day isn’t a day of the week. |
schedule.range_too_long |
A slot range (GET schedule/slots) is empty or longer than 42 days. |
connection.unknown |
Testing a channel’s connection: Automate no longer has the connection. |
settings.time_zone_unknown |
The time zone id isn’t one the server knows (or is over 100 characters). |
schedule.cancelled:<message> |
A schedule saving handler refused the save, with its message. |
settings.cancelled:<message> |
A settings saving handler refused the save, with its message. |
Errors on a channel
Section titled “Errors on a channel”These are recorded in a target’s Error (and passed on by SocialPostTargetFailedNotification). When the network itself refused or failed a post, Error holds the network action’s own message instead.
| Code | Status | Meaning |
|---|---|---|
channel.no_automation |
Refused / Failed | The channel has no managed automation: scheduling to it is refused; a post already due fails and nothing is sent. |
media.unresolvable |
Failed | The image’s public URL couldn’t be worked out (for example no application URL yet). Nothing was sent. |
dispatch.invalid_url |
Failed | The link or image URL isn’t an absolute https URL. Nothing was sent. |
link.rewrite_failed |
Failed | The site’s link rewriter threw. Nothing was sent (safe to retry). In the composer’s check it is only a warning on the channel. |
dispatch.cancelled:<message> |
Failed | A dispatching handler held the post back. Nothing was sent. |
channel.removed |
Failed | The channel was removed before the post went out. |
licence.channel_limit |
Paused | The channel is beyond the free edition’s channel allowance. It carries on when the allowance returns. |
dispatch.stale |
Unknown | Still being sent after 15 minutes with no result. The post may be live. |
run.completed_without_result |
Unknown | The automation run completed without the network’s post step. The post may be live. |
run.outcome_unknown |
Unknown | The post step failed without a message, in a way that doesn’t rule out the post being live. |
run.not_started |
Failed | Automate couldn’t start the network’s post step, usually because the connection’s settings didn’t resolve (a missing secret, say). Nothing was sent. The run in Automate has the detail. |
run.failed |
Failed | The network refused the post, or the run failed before the post step, without a message. |
run.<status> |
Failed | The run’s status (for example run.cancelled), when it ended before the post step, or the post step was rejected or skipped, without a message. |