Browse Guides

Troubleshooting API Errors
Reading mode
Copy Link
Link Copied!
Print
Feedback
This guide has multiple versions available:
<style>p { margin: 0; }span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left:0; padding-left:5px;}blockquote blockquote{ border-color: #00bcd4; color: #00bcd4;}blockquote blockquote blockquote{ border-color: #43a047; color: #43a047;} table.grid{ border-collapse: collapse;} table.grid td, table.grid th { border: 1px solid #ddd;} .fr-fic.fr-dib{ display: block; margin: 5px auto;}.fr-fic.fr-dib.fr-fir{ text-align: right; margin: 5px 0 5px auto;}.fr-fic.fr-dib.fr-fil{ text-align: left; margin: 5px auto 5px 0;}.fr-fic.fr-dii{ float: none; margin: 5px auto;}.fr-fic.fr-dii.fr-fil{ float: left; margin: 5px auto;}.fr-fic.fr-dii.fr-fir{ float: right; margin: 5px auto;}img.fr-dib.fr-fir { margin-right: 0; text-align: right;}img.fr-dib.fr-fil { margin-left: 0; text-align: left;}img.fr-dib { margin: 5px auto; display: block; float: none;}img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC;}img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc;}img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;}</style><style> p { margin: 0; } span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px; } blockquote blockquote { border-color: #00bcd4; color: #00bcd4; } blockquote blockquote blockquote { border-color: #43a047; color: #43a047; } table.grid { border-collapse: collapse; } table.grid td, table.grid th { border: 1px solid #ddd; } .fr-fic.fr-dib { display: block; margin: 5px auto; } .fr-fic.fr-dib.fr-fir { text-align: right; margin: 5px 0 5px auto; } .fr-fic.fr-dib.fr-fil { text-align: left; margin: 5px auto 5px 0; } .fr-fic.fr-dii { float: none; margin: 5px auto; } .fr-fic.fr-dii.fr-fil { float: left; margin: 5px auto; } .fr-fic.fr-dii.fr-fir { float: right; margin: 5px auto; } img.fr-dib.fr-fir { margin-right: 0; text-align: right; } img.fr-dib.fr-fil { margin-left: 0; text-align: left; } img.fr-dib { margin: 5px auto; display: block; float: none; } img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC; } img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc; } img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; } </style><style> p { margin: 0; } span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px; } blockquote blockquote { border-color: #00bcd4; color: #00bcd4; } blockquote blockquote blockquote { border-color: #43a047; color: #43a047; } table.grid { border-collapse: collapse; } table.grid td, table.grid th { border: 1px solid #ddd; } .fr-fic.fr-dib { display: block; margin: 5px auto; } .fr-fic.fr-dib.fr-fir { text-align: right; margin: 5px 0 5px auto; } .fr-fic.fr-dib.fr-fil { text-align: left; margin: 5px auto 5px 0; } .fr-fic.fr-dii { float: none; margin: 5px auto; } .fr-fic.fr-dii.fr-fil { float: left; margin: 5px auto; } .fr-fic.fr-dii.fr-fir { float: right; margin: 5px auto; } img.fr-dib.fr-fir { margin-right: 0; text-align: right; } img.fr-dib.fr-fil { margin-left: 0; text-align: left; } img.fr-dib { margin: 5px auto; display: block; float: none; } img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC; } img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc; } img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; } </style><style> p { margin: 0; } span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px; } blockquote blockquote { border-color: #00bcd4; color: #00bcd4; } blockquote blockquote blockquote { border-color: #43a047; color: #43a047; } table.grid { border-collapse: collapse; } table.grid td, table.grid th { border: 1px solid #ddd; } .fr-fic.fr-dib { display: block; margin: 5px auto; } .fr-fic.fr-dib.fr-fir { text-align: right; margin: 5px 0 5px auto; } .fr-fic.fr-dib.fr-fil { text-align: left; margin: 5px auto 5px 0; } .fr-fic.fr-dii { float: none; margin: 5px auto; } .fr-fic.fr-dii.fr-fil { float: left; margin: 5px auto; } .fr-fic.fr-dii.fr-fir { float: right; margin: 5px auto; } img.fr-dib.fr-fir { margin-right: 0; text-align: right; } img.fr-dib.fr-fil { margin-left: 0; text-align: left; } img.fr-dib { margin: 5px auto; display: block; float: none; } img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC; } img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc; } img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; } </style><style> p { margin: 0; } span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px; } blockquote blockquote { border-color: #00bcd4; color: #00bcd4; } blockquote blockquote blockquote { border-color: #43a047; color: #43a047; } table.grid { border-collapse: collapse; } table.grid td, table.grid th { border: 1px solid #ddd; } .fr-fic.fr-dib { display: block; margin: 5px auto; } .fr-fic.fr-dib.fr-fir { text-align: right; margin: 5px 0 5px auto; } .fr-fic.fr-dib.fr-fil { text-align: left; margin: 5px auto 5px 0; } .fr-fic.fr-dii { float: none; margin: 5px auto; } .fr-fic.fr-dii.fr-fil { float: left; margin: 5px auto; } .fr-fic.fr-dii.fr-fir { float: right; margin: 5px auto; } img.fr-dib.fr-fir { margin-right: 0; text-align: right; } img.fr-dib.fr-fil { margin-left: 0; text-align: left; } img.fr-dib { margin: 5px auto; display: block; float: none; } img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC; } img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc; } img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; } </style><style> p { margin: 0; } span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px; } blockquote blockquote { border-color: #00bcd4; color: #00bcd4; } blockquote blockquote blockquote { border-color: #43a047; color: #43a047; } table.grid { border-collapse: collapse; } table.grid td, table.grid th { border: 1px solid #ddd; } .fr-fic.fr-dib { display: block; margin: 5px auto; } .fr-fic.fr-dib.fr-fir { text-align: right; margin: 5px 0 5px auto; } .fr-fic.fr-dib.fr-fil { text-align: left; margin: 5px auto 5px 0; } .fr-fic.fr-dii { float: none; margin: 5px auto; } .fr-fic.fr-dii.fr-fil { float: left; margin: 5px auto; } .fr-fic.fr-dii.fr-fir { float: right; margin: 5px auto; } img.fr-dib.fr-fir { margin-right: 0; text-align: right; } img.fr-dib.fr-fil { margin-left: 0; text-align: left; } img.fr-dib { margin: 5px auto; display: block; float: none; } img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC; } img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc; } img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; } </style><style> p { margin: 0; } span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px; } blockquote blockquote { border-color: #00bcd4; color: #00bcd4; } blockquote blockquote blockquote { border-color: #43a047; color: #43a047; } table.grid { border-collapse: collapse; } table.grid td, table.grid th { border: 1px solid #ddd; } .fr-fic.fr-dib { display: block; margin: 5px auto; } .fr-fic.fr-dib.fr-fir { text-align: right; margin: 5px 0 5px auto; } .fr-fic.fr-dib.fr-fil { text-align: left; margin: 5px auto 5px 0; } .fr-fic.fr-dii { float: none; margin: 5px auto; } .fr-fic.fr-dii.fr-fil { float: left; margin: 5px auto; } .fr-fic.fr-dii.fr-fir { float: right; margin: 5px auto; } img.fr-dib.fr-fir { margin-right: 0; text-align: right; } img.fr-dib.fr-fil { margin-left: 0; text-align: left; } img.fr-dib { margin: 5px auto; display: block; float: none; } img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC; } img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc; } img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; } </style><style> p { margin: 0; } span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px; } blockquote blockquote { border-color: #00bcd4; color: #00bcd4; } blockquote blockquote blockquote { border-color: #43a047; color: #43a047; } table.grid { border-collapse: collapse; } table.grid td, table.grid th { border: 1px solid #ddd; } .fr-fic.fr-dib { display: block; margin: 5px auto; } .fr-fic.fr-dib.fr-fir { text-align: right; margin: 5px 0 5px auto; } .fr-fic.fr-dib.fr-fil { text-align: left; margin: 5px auto 5px 0; } .fr-fic.fr-dii { float: none; margin: 5px auto; } .fr-fic.fr-dii.fr-fil { float: left; margin: 5px auto; } .fr-fic.fr-dii.fr-fir { float: right; margin: 5px auto; } img.fr-dib.fr-fir { margin-right: 0; text-align: right; } img.fr-dib.fr-fil { margin-left: 0; text-align: left; } img.fr-dib { margin: 5px auto; display: block; float: none; } img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC; } img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc; } img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; } </style><style> p { margin: 0; } span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px; } blockquote blockquote { border-color: #00bcd4; color: #00bcd4; } blockquote blockquote blockquote { border-color: #43a047; color: #43a047; } table.grid { border-collapse: collapse; } table.grid td, table.grid th { border: 1px solid #ddd; } .fr-fic.fr-dib { display: block; margin: 5px auto; } .fr-fic.fr-dib.fr-fir { text-align: right; margin: 5px 0 5px auto; } .fr-fic.fr-dib.fr-fil { text-align: left; margin: 5px auto 5px 0; } .fr-fic.fr-dii { float: none; margin: 5px auto; } .fr-fic.fr-dii.fr-fil { float: left; margin: 5px auto; } .fr-fic.fr-dii.fr-fir { float: right; margin: 5px auto; } img.fr-dib.fr-fir { margin-right: 0; text-align: right; } img.fr-dib.fr-fil { margin-left: 0; text-align: left; } img.fr-dib { margin: 5px auto; display: block; float: none; } img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC; } img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc; } img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; } </style><p><strong>In this guide we will cover:</strong></p><p><strong>- What are API errors&nbsp;</strong></p><p><strong>- How to obtain and interpret API errors in Halo</strong></p><p><strong>- HTTP Status Codes</strong></p><p><strong>- Error Examples in Halo</strong></p><p><br></p><p><br></p><p>In this guide we will cover what each of the HTTP status codes and API error codes means in the context of Halo and how to utilize these to resolve issues. Errors can provide key information on the root cause of an issue, which is required for a swift resolution.&nbsp;</p><p><br></p><p><strong><span style="font-size: 14pt;">What are API errors?</span></strong></p><p>API errors occur when something goes wrong whilst sending a request to an API, meaning the request cannot be processed successfully. In terms of Halo, nearly every interaction you have with the UI will result in an interaction with the Halo API. Therefore, if you are attempting to do something in your Halo instance, from logging a ticket to loading a report, an interaction will be made with the API. If any of the functions you are doing fail in some way an API error will be returned to indicate what has caused the issue. In Halo API errors cannot be seen in the UI but can be viewed in the console.&nbsp;</p><p><br></p><p><strong><span style="font-size: 14pt;">How to obtain and interpret API errors and HTTP status codes in Halo</span></strong></p><p>When an issue occurs in your Halo instance there will usually be an indication in the UI that something has gone wrong, such as a pop-up message. To obtain more information on this error (the API error code) open up the console and attempt the action again.&nbsp;</p><p><br></p><p>Open up the console using Fn + F12 OR Cntrl + shift + C&nbsp;</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImY5OWM5MGRiLTcwZTItNGFhYy05MThiLTVlNWNlMDlhMzM3NSJ9.1lhvBxltz4t4NjIaedDhothAOFkqXvaxBN1cMHm9dv0" class="fr-fic fr-fil fr-dib" width="1365" style="width: 1367px; height: 745.11px;" height="745"></p><p><strong><span style="font-size: 10pt;">Fig 1. Open Console</span></strong></p><p><br></p><p>Now click anywhere on the page (to prevent element inspection). Navigate to the &#39;Network&#39; tab in the console.&nbsp;</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImI1ZTJjNzUwLTljNzEtNDUxYy05NDc1LTdhZTlhMDZjNDQ1YiJ9.02_3ZlFE-1Q5P0vGOTS4SsJG3unhBKCa8O8bArp1HSc" class="fr-fic fr-fil fr-dib" width="1255" style="width: 1257px; height: 637.266px;" height="637"></p><p><strong><span style="font-size: 10pt;">Fig 2. Network Tab&nbsp;</span></strong></p><p><br></p><p>With this open, carry out the action that caused the error again.&nbsp;</p><p><br></p><p>Now, in the console we can see which request failed when we did this action.</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImUzNjc5ZTZiLTAzMzYtNDQ2ZC05NDA1LTE0MmMxNzdkMjk2OCJ9.ULCKDiSSYUmamLsyfT8iCfJ1F0eAoXR2W6lqmd2Dxs8" class="fr-fic fr-fil fr-dib" width="726" style="width: 728px; height: 650.292px;" height="650"></p><p><strong><span style="font-size: 10pt;">Fig 3. Failed request in console</span></strong></p><p><br></p><p>We can see at a glance the &#39;status&#39; of the request is 400, this is the HTTPS status code.&nbsp;</p><p><br></p><p>Click into this request to see more detail.&nbsp;</p><p><br></p><p>In the &#39;Headers&#39; tab we can see the HTTP status code.&nbsp;</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjczYjRlNjdmLWU4ZmUtNGViNy1hYTlhLWUzMzkxNjYxYmZkNSJ9.9Q31TDH2RMCqbRnOccY4sjs7krz4r7wPFud08b37bTQ" class="fr-fic fr-fil fr-dib" width="460" style="width: 462px; height: 445.588px;" height="446"></p><p><strong><span style="font-size: 10pt;">Fig 4. Request header</span></strong></p><p><br></p><p>In the &#39;Preview&#39; tab we can see the API error message, this gives us more information on what has actually caused the error.&nbsp;</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImViOTgyOWY0LTIyMzItNDZiOC1iM2ZkLWUzYWUzYjFkMGJjMiJ9.MPVlLNnmQ9p3UrtC41YzUfVYqi_xVbxMpZC-t00m4_8" class="fr-fic fr-fil fr-dib" width="453" style="width: 455px; height: 548.105px;" height="548"></p><p><strong><span style="font-size: 10pt;">Fig 5. Error message</span></strong></p><p><br></p><p>In this example we can see the error message tells us this request failed as the agent who carried out the action does not have access to the charge rate being used. The agent who is executing an automated action which uses a pre-set charge rate, as the agent does not have permission to use this charge rate the request will fail.&nbsp;</p><p><br></p><p>In this example an error message is provided, however, messages will not always be provided for all issues.&nbsp;</p><p><br></p><p>Often times only the API error type will be available in the console, although this does not tell us the exact cause of the issue, each code pertains to a different category of issue, therefore is still useful in identify the cause.&nbsp;</p><p><br></p><p>The next section outlines each HTTP status code, what category of error they indicate and what this means in the context of Halo. Codes highlighted in blue will only occur when running custom integrations/runbooks to make API calls. Other codes can occur as a result of incorrect configuration or use.&nbsp;</p><p><br></p><p><strong><span style="font-size: 14pt;">HTTP Status Codes</span></strong></p><table class="styled-table grid" style="width: 100%; margin-left: calc(0%);"><tbody><tr><td style="width: 20%; text-align: left; background-color: rgb(0, 204, 248);"><strong><span style="color: rgb(255, 255, 255); font-size: 12pt;">HTTP Status Code</span></strong><br></td><td style="width: 30%; text-align: left; background-color: rgb(0, 204, 248);"><strong><span style="color: rgb(255, 255, 255); font-size: 12pt;">Error meaning</span></strong></td><td style="width: 50%; text-align: center; background-color: rgb(0, 204, 248);"><strong><span style="color: rgb(255, 255, 255); font-size: 12pt;">Halo Context&nbsp;</span></strong></td></tr><tr><td><strong>401</strong></td><td>Unauthorized<br></td><td style="width: 39.7993%;">This error indicates the Halo does not have the appropriate authentication credentials to complete the action. Halo is attempting to access data that requires authentication details, but no such details are provided. For example, when integrating Halo with another application, if you attempt to import (complete a GET request) data from this other application, you will receive a 401 error if Halo has not been provided access credentials.&nbsp;</td></tr><tr><td><strong>403</strong></td><td>Forbidden</td><td>This error indicates Halo is attempting to access data that requires authentication details, but the authentication credentials it is using do not have the correct level of access. This could mean the agent/user completing the action does not have the appropriate permissions needed to access an area of the system or execute an action. Or in the context of integrations, this error indicates the account authorising connection between the applications does not have the appropriate permissions to access the requested data.<br></td></tr><tr><td><strong>404</strong></td><td>The requested resource does not exist</td><td>This error occurs when the application (Halo) cannot find the resource you are attempting to access. This can happen when you are attempting to access areas or data in Halo that has been removed/deleted, usually by following a link or amending a URL. For example, if you follow a link that takes you to a ticket that has been deleted in the instance.&nbsp;</td></tr><tr style="background-color: #f0f8ff;"><td><strong>405</strong></td><td><span style="color: rgb(0, 0, 0);">Method not allowed</span></td><td>This error occurs when a HTTP method (GET, POST, DELETE) is used on an endpoint that does not support that method. For example, if you attempt to complete a POST to an endpoint that only allows GETs. These errors do not occur in Halo as API calls for UI actions are coded correctly. This error may only occur when you have configured a custom integration to execute a HTTP method on an endpoint that does not support that method.</td></tr><tr style="background-color: #f0f8ff;"><td><strong>409</strong></td><td><span style="color: rgb(0, 0, 0);">&nbsp;Conflict with the current state of the resource</span></td><td>This error indicates Halo has understood the request that needs to be made but cannot complete it as the request conflicts with existing data. For example, if you are trying to close a ticket that is already closed, update the same resources at once from two places, populate a field that is a unique identifier with a non-unique value etc. There is logic contradiction, so the action/request cannot be completed. These errors do not occur in Halo as if you will not be able to update the same entity with conflicting information in the UI. This will only occur when a custom API call has been configured.&nbsp;</td></tr><tr style="background-color: #f0f8ff;"><td><strong>422</strong></td><td><span style="color: rgb(0, 0, 0);">Un-processable Entity&nbsp;</span></td><td>This error indicates the data being used for the action you are executing is semantically incorrect, that is it is in the wrong format so cannot be processed. For example, if a text field is populated with numbers, the data for this field will be classed as being in the wrong format so unable to be processed. These errors are very rare in Halo as if a something (such as a field) has been completed with the incorrect format a message will appear in the UI to notify you before a request is made to the API. This error will only occur when a custom API call has been configured.&nbsp;</td></tr><tr><td><strong>429</strong></td><td>Too many Requests</td><td>This error indicates the action cannot be completed as too many requests have been made to the server at one time. The rate limit of the API has been exceeded. This can occur when too many actions are completed in Halo at one time, such as when pushing/pulling data from an integrated application, if too many requests are sent at one time you will receive a 429 code. You will have to re-send requests in batches to lower the number of requests made at one time.&nbsp;</td></tr><tr><td><strong>504</strong></td><td>Request Timeout</td><td>This error indicates the request took too long to be processed by the server, rather than loading indefinitely the request will timeout after a set time. This can occur when loading a report with an excessively large amount of data or with very inefficient sql, as these requests will be so long they will take too long to process and so will timeout.&nbsp;</td></tr></tbody></table><p><br></p><p><strong><span style="font-size: 14pt;">Error Examples in Halo</span></strong></p><p>In this next section we will go through some example of when each error can occur in Halo, and how to resolve this.&nbsp;</p><p><br></p><p><strong><span style="font-size: 12pt;">401- Unauthorised</span></strong></p><p><strong>Importing assets (or any data) from an integration</strong></p><p>In this example the integration Addigy has been set up, when assets are imported into Halo using this integration a 401 error is returned on the asset import screen.&nbsp;</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjMyYmI1NmVkLTkyNTYtNDEyYy05ODBhLWYzMWRlODdhYzMxZCJ9.Zf5mP7jw7FaLnlD4tSq9OcSFinGs4ah7mIv6_6eoXig" class="fr-fic fr-fil fr-dib" width="1630" style="width: 1632px; height: 701.168px;" height="701"></p><p><strong><span style="font-size: 10pt;">Fig 6. 401 unauthorised when importing assets</span></strong></p><p><br></p><p>This code indicates Halo does not have the appropriate credentials to access data from Addigy. This will occur if you attempt to import assets either with no credentials entered, or credentials that are entered in the incorrect format.&nbsp;</p><p><br></p><p>To resolve this you will need to obtain credentials from Addigy and re-enter them in the Halo setup page for the integration.&nbsp;</p><p><br></p><p><strong><span style="font-size: 12pt;">403- Forbidden</span></strong></p><p><strong>Importing users (or data) from an integration</strong></p><p id="isPasted">In this example the integration Entra ID has been set up, when users are imported into Halo using the Halo integrator a 403 error is returned in the Halo integrator logs<em>&nbsp;&#39;Failed to create/update user (anonymized). Error = 403 Forbidden&#39;.</em></p><p><br></p><p>This error has occurred as although authentication credentials have been provided, the credentials do not contain the correct level of permissions needed to access users in Entra. Although Halo has been given access to Entra, it does not have permission to access users, therefore cannot access this data to import it into Halo.&nbsp;</p><p><br></p><p>To resolve this error the permissions assigned to the application that is authorising this connection will need to be adjusted to ensure the application has permission to access users. The way in which permissions are granted to integration access credentials varies, ensure you check the relevant guide for the required permissions.&nbsp;</p><p><br></p><p><strong><span style="font-size: 12pt;">404- Resource not found</span></strong></p><p><strong>Following an approval link</strong></p><p>In this example, a user has followed a link to approve a request, upon following the link they receive a 404- Not Found error in the Halo portal.&nbsp;</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImExMWIwMTBiLTNlYzctNDVlYy1hZDkyLWZjMGQ5ODExYjIyZSJ9.3_qj5VUmUrPOJPhWvD0TGAkynUeinhj3FteIOOajNFU" class="fr-fic fr-fil fr-dib" width="764" style="width: 766px; height: 361.995px;" height="362"></p><p><strong><span style="font-size: 10pt;">Fig 7. 404 error in portal</span></strong></p><p><br></p><p>This error has occurred as the link is re-directing them to a resource that no longer exists. In this case, the ticket the approval is taking place on has been deleted in the system after the approval was sent out. The approval link attempts to take the user to the ticket in the portal, but as the ticket no longer exists the resource cannot be found.&nbsp;</p><p><br></p><p>To resolve this error the deleted ticket will either need to be restored, or the link no longer used.&nbsp;</p><p><br></p><p><strong><span style="font-size: 12pt;">429- Too Many Requests</span></strong></p><p><strong>Syncing invoices to Xero</strong></p><p>In this example a 429 error is returned when attempting to sync invoices from Halo to Xero. Invoices created in Halo will sync to Xero automatically upon creation, however invoices can also be synced manually in bulk using the &#39;Sync to Xero&#39; bulk action.&nbsp;</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYzNjVlMjlkLTU0ZTktNDMwMy04MmIxLTk5YTUwZTQxN2U4OSJ9.VwZG0_dX2Rh8BY_nfOc0psu3Mj_ifpDbGi0E95uRU7g" class="fr-fic fr-fil fr-dib" width="189" height="258"></p><p><strong><span style="font-size: 10pt;">Fig 8. Sync to Xero action</span></strong></p><p><br></p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImZhMmI5NjM5LTVjM2QtNDI1My1iMDA1LWM2ZTVkZWQ5NTEwZiJ9.yUH_GeMUsQMo5pB48P7Ayl0SRqrni0rInlOpgwvkZp0" class="fr-fic fr-fil fr-dib" width="308" style="width: 310px; height: 361.08px;" height="361"></p><p><strong><span style="font-size: 10pt;">Fig 9. 429 Error too many requests to Xero</span></strong></p><p><br></p><p>This error has occurred as the amount of requests that have been sent to Xero at one time exceed Xero&#39;s API rate limit. Too many invoices have been selected at one time to sync to Xero.</p><p><br></p><p>To resolve this error fewer invoices will need to be selected when using the &#39;Sync to Xero&#39; action.&nbsp;</p><p><br></p><p><strong><span style="font-size: 12pt;">504- Request Timeout</span></strong></p><p><strong><span style="font-size: 11pt;">Loading a Report</span></strong><span style="font-size: 11pt;"><br></span></p><p>In this example a 504 error is returned when attempting to load a report in Halo. The error is not returned in the UI, however can be seen when the console is open at the time of loading the report, shown in figure x.&nbsp;</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjBiMmE4NjgyLWRmYjItNDc3My1iOGY3LTlmNDdlNDAxZWRlMSJ9.9DHl6moLHusCgN8mkiNdFnhHX0tkr1zm-L6f5hJAYCk" class="fr-fic fr-fil fr-dib" width="1320" style="width: 1322px; height: 693.345px;" height="693"></p><p><strong><span style="font-size: 10pt;">Fig 10. 504 error returned when loading report</span></strong></p><p><br></p><p>This error will have occurred for one of two reasons, either the sql used for the report is very inefficient, causing the request to be overly large and take the server too long to process. Or the report returns so much data the request to the server is overly large, taking the server too long to process.&nbsp;</p><p><br></p><p>To resolve this error the sql for the report will need to be adjusted so that less data is returned by the report, or the query is more efficient. If you are unsure if your sql query is inefficient, or how to make it more efficient, you can log a request with our support team (support@haloservicedesk.com) for them to improve/evaluate the query for you.&nbsp;</p><p><br></p><p>To open up a report, without loading the data (allowing you to access the sql without the report timing out), append &#39;<em>&amp;loadreport=false</em>&#39; to the report url. This will open the report data source, without loading any data until &#39;load report&#39; is selected.&nbsp;</p><p><br></p><p><br></p>
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.