<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><div><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><div><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><div><div><div><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><div><p><strong><span style="font-size: 11pt;">In this guide we will cover:</span></strong></p><p><span style="font-size: 11pt;"><strong>- Creating an API Application</strong></span></p><p><span style="font-size: 11pt;"><strong>- Creating an API-Only Agent</strong></span></p><p><strong><span style="font-size: 11pt;">- Creating a Custom Integration</span></strong></p><p><br></p><p><br></p><p><strong><span style="font-size: 14pt;">Creating an API Application</span></strong></p><p><span style="font-size: 11pt;">Within Halo you can create an API Application and then a custom integration, in order to perform GET's, POST's, etc... to API Endpoints in your Halo.</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">For the purposes of this guide, the custom integration will be integrating with Halo, to do this, first head over to Configuration>Integrations>Halo API>Applications and click "New" on the top right.</span></p><p><br></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImE2MWY5Y2U2LWU2YTAtNDAxNC04M2E4LTc0ZjdjOWRjNTY0ZCJ9.pbSwyoyjnyrpYzWF7GG6fn5YEIoITkPboNa0kQoFo5g" class="fr-fic fr-fil fr-dib" width="756" style="width: 756px; height: 236.618px;" height="236.618"></span></p><p><span style="font-size: 10pt;"><strong>Fig 1. Halo API module</strong></span></p><p><br></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjNkZmE2N2NlLWRlOGQtNDNiNS1iYmIzLTViNTQ0YjFhZGEyNyJ9.rcibUIKSqRFDyR9ay9fyDJmHPnJeRoWFmmlnn8YtVZk" class="fr-fic fr-fil fr-dib" width="759" style="width: 759px; height: 423.976px;" height="423.976"></span></p><p><span style="font-size: 10pt;"><strong>Fig 2. View applications button</strong><strong><br></strong></span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">Read the below instructions before configuring your API Application.</span></p><p><br></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImMzZjlhMjNkLWQwMDEtNGIwZi04Y2JhLWVmMDJiMDRjYjlhYyJ9.7ULwYYu2b0RuuZaL0VdhjoeLQw339G4qX71n-yycZtY" class="fr-fic fr-fil fr-dib" width="976" style="width: 976px; height: 577.292px;" height="577.292"></span></p><p><span style="font-size: 10pt;"><strong>Fig 3. New API application</strong><strong><br></strong></span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 14pt;"><strong>Creating an API-Only Agent</strong></span></p><p><span style="font-size: 11pt;">In Halo, navigate to Configuration > Teams & Agents > Agents and create an Agent that you will use for the integration.</span></p><p><br></p><p><span style="font-size: 11pt;"><a href="https://downloads.intercomcdn.com/i/o/1009600102/6b9d2578fdc37908719de83c/image.png?expires=1721639700&signature=6fd3be992b9a4fa16f0d4ea3beb971216433dfec5a031c4c6be3d5f6f879431e" rel="noreferrer nofollow noopener" target="_blank" style="box-sizing: inherit; color: var(--primary-color); background-color: rgb(255, 255, 255); touch-action: manipulation; text-decoration: underline; cursor: pointer; user-select: auto; font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: break-spaces; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ;" id="isPasted"><img data-fr-image-pasted="true" src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjdkYzJmODYzLTFkM2UtNDM1Yy1hYzc5LTA5MDA1YjAzY2I4NyJ9.XF03iFA26qCjU0bpovHaDaejo6rB4eP7imr4-MO9RrE" width="587" style="box-sizing: inherit; border: 0px solid rgb(229, 231, 235); cursor: pointer; padding: 0px 1px; user-select: none; max-width: none; min-width: 10px; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; height: 778.968px; width: 573px;" class="fr-fic fr-fil fr-dib"></a></span><span style="font-size: 10pt;"><strong>Fig 4. New agent</strong></span></p><p><span style="font-size: 11pt;"><br></span></p><p id="isPasted"><span style="font-size: 11pt;">Make sure the Agent has the Administrator Role, as displayed above.</span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">It is also important to turn on API-only Halo Agent (This is found just below the roles input on the details tab of an agent (Beware that API-only Agents may not log into the Web or Mobile Applications nor can they be assigned tickets. However, they do not take up a licence).</span></p><p><span style="font-size: 11pt;"> <a href="https://downloads.intercomcdn.com/i/o/1084855071/e11c432a4e173126bce813e2/image.png?expires=1721639700&signature=274e5ea70e23f824b82ef2b71315412fb9708546d3161336e33ff7043833bf2f" rel="noreferrer nofollow noopener" target="_blank" style="box-sizing: inherit; color: var(--primary-color); background-color: rgb(255, 255, 255); touch-action: manipulation; text-decoration: underline; cursor: pointer; user-select: auto; font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: break-spaces; border: 0px solid rgb(229, 231, 235); --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ;" id="isPasted"><img data-fr-image-pasted="true" src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImE1OGFiNzc4LTIwMTMtNGQ5ZC1iMTRjLWU5YjM1YWQ0MmQxOSJ9.ygNStlP_Xiye_oAkuhw-QlrAfT0YXklkYxq6Mxs300g" width="167" height="auto" style="box-sizing: inherit; border: 0px solid rgb(229, 231, 235); cursor: pointer; padding: 0px 1px; user-select: none; max-width: none; min-width: 10px; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: ; height: auto;" class="fr-fic fr-fil fr-dib"></a></span><span style="font-size: 10pt;"><strong>Fig 5. API only agent setting</strong></span></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><strong>Now Input the following Into your API Application</strong></span></p><ul><li style="font-size: 11pt;">Name (arbitrary - typically named Halo Instance, Own Instance, or something similar to this)</li><li style="font-size: 11pt;">Client ID and Secret (<strong>Note:</strong> The Client ID may change after saving, make sure to take the latest value)</li><li style="font-size: 11pt;">Generate (Generates a new client secret, must be done when creating a new custom integration)</li><li style="font-size: 11pt;">Copy (Copies the client secret to clipboard)</li><li style="font-size: 11pt;">Login Type: Agent</li><li style="font-size: 11pt;">Agent to log in as (Pick an agent)</li><li style="font-size: 11pt;">Permissions:<img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjdmZDZhYWQxLTQ1MzItNDIyOC05ZjdmLWJmZGU4YmRjOTk0OSJ9.zDKJZ4gwC-7Av6mKcrI6-BD2z6ZEwzrvPSoBUXWQn-g" class="fr-fic fr-fil fr-dib"></li></ul><p><strong>Fig 6. Permissions for API application</strong></p><p><br></p><p><span style="font-size: 14pt;"><strong>Creating a Custom Integration</strong></span></p><p><span style="font-size: 11pt;">The next step is to create a new custom integration in Configuration>Integrations>Custom Integrations, this is how the Halo instance is connected to the runbook and how the API can be used to GET or POST things in Halo.</span></p><p><br></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjM5ZWI3NWJmLWJmZTUtNDEwNi04MDY4LWE4ZGI4NTMyYTFkYyJ9.T0cHuCZ7QAt0i8NLWMc4ym90Zxc5bNVPy34ASsjmjnc" class="fr-fic fr-fil fr-dib" width="652" style="width: 652px; height: 397.78px;" height="397.78"></span></p><p><span style="font-size: 10pt;"><strong>Fig 7. Custom Integrations button</strong></span><strong><span style="font-size: 10pt;"><br></span></strong></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">The following credentials should be set.</span></p><p><br></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNiYzM5MzdiLTBlNjUtNGU5NC1iMjAwLTU4YjhhOTk0YjVmOCJ9._EoVKqbrJYstZdw_GfPQ8Ld-CZIaWxwduvaHthXMFk4" class="fr-fic fr-fil fr-dib" width="913" style="width: 913px; height: 573.829px;" height="573.829"></span></p><p><span style="font-size: 10pt;"><strong>Fig 8a. Example Credentials </strong></span><strong><span style="font-size: 10pt;"><br></span></strong></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImFhZTRkZDZhLWRiZTUtNGVjMi05MWI0LTNjZmQwZTJmYjZhZiJ9.zlZRsPjLUBuuCVi0x6KTxaE8tvmJdXeEiZEHVE-09ek" class="fr-fic fr-fil fr-dib" width="897" style="width: 897px; height: 415.752px;" height="415.752"></span></p><p><br></p><span style="font-size: 10pt;"><p><strong>Fig 8b. Example Credentials </strong></p></span><span style="font-size: 11pt;"><p><br></p>Input the following:</span><p><br></p><ul><li style="font-size: 11pt;">Base Resource URL: Your Halo instance URL i.e. https://[Your Halo Domain].com</li><li style="font-size: 11pt;">Authorization: OAuth 2.0</li><li style="font-size: 11pt;">Authorization header name *LEAVE BLANK*</li><li style="font-size: 11pt;">Header Prefix: Bearer (Should already appear as "Bearer")</li><li style="font-size: 11pt;">Grant Type: Client Credentials</li><li style="font-size: 11pt;">Access Token URL: https://[Your Halo Domain].com/auth/token?tenant=[Your Tenant Name], The tenant_id can be found by going to: <ul style="font-size: initial;"><li style="font-size: 11pt;">https://[Your Halo Domain].com/api/instanceinfo (look for the key value pair "tenant_id" : "[Your tenant_id]" )</li></ul></li></ul><p><span style="font-size: 11pt;">Found here (Other information has been blanked).</span></p><p><br></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImJkNWMzYjk0LTMyMjQtNDQxMi1hOTg1LTc0NzZlZjc1NmZmOCJ9.SWvZIC9pM8TYtFfbjAHiE9eYjw393R3iXM_hcfp_du0" class="fr-fic fr-fil fr-dib" width="796" height="137"></span></p><p><span style="font-size: 10pt;"><strong>Fig 9. Tenant info example</strong></span><strong><span style="font-size: 10pt;"><br></span></strong></p><p><span style="font-size: 11pt;"><br></span></p><ul><li style="font-size: 11pt;">Client ID (Found in the Halo API Application created)</li><li style="font-size: 11pt;">Client Secret (Need to paste it from clipboard) NB: If the custom integration doesn't work when saving, you may need to input a new client secret by generating a new one in the Halo API application</li><li style="font-size: 11pt;">Scope: all</li></ul><p><span style="font-size: 12pt;"><strong>Creating a Method</strong></span></p><p><span style="font-size: 11pt;">Switch to the "Method" Tab on the custom integration and this should be the view.</span></p><p><br></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjNiYmYzMzM2LWEyODAtNDljZC1hNzJlLThmMjNhN2E5M2FkMSJ9.HNrKP6JOdTL6dGsgP3QqrBFcZQoF6A8alQhmzrWD7uo" class="fr-fic fr-fil fr-dib" width="971" style="width: 971px; height: 389.329px;" height="389.329"></span></p><p><span style="font-size: 10pt;"><strong>Fig 10. Method </strong></span><strong><span style="font-size: 10pt;"><br></span></strong></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">This worked example is for creating a runbook that returns a list of clients on a Halo instance. In the text box beside the Halo domain, input /api/client:</span></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjMxZWI2Yzc2LWZjNjYtNDAzYS1iOWNjLTIyN2NiMDYyYzg5YSJ9.61IlSWNLJFVwMxQ6Z7k1V4rBRpv4fMAJgUs4bJxF4-U" class="fr-fic fr-fil fr-dib" width="969" style="width: 969px; height: 94.7888px;" height="94.7888"></span></p><p><span style="font-size: 10pt;"><strong>Fig 11. GET method</strong></span><strong><span style="font-size: 10pt;"><br></span></strong></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">In the above photo the name of the method is "Get Clients" and the API method has been set to "GET"</span></p><p><span style="font-size: 11pt;">The next thig to do is set the output variables, again solely for this example the output variable is:</span></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImYxNzdmOWQ5LWIzMTQtNDk5YS1iNGI3LTkxYzBiMjQxOTQxYiJ9.k6ALdq4kJd7RvwYEbYO83HRdCSVB0fgoPHj9zuJO5pY" class="fr-fic fr-fil fr-dib" width="1186" style="width: 1188px; height: 182.679px;" height="183"></span></p><p><span style="font-size: 10pt;"><strong>Fig 12. Output variables</strong></span><strong><span style="font-size: 10pt;"><br></span></strong></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;">"response" must be the prefix of all output variable values that are inputted. This "Value" shown above translates to access the response of the GET on the clients, then get all of the properties of type clients within that GET, the "^" refers to a child property of an object.</span></p><p><span style="font-size: 11pt;"><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjBjNjIwZGQyLTZlYWYtNDA3OS1iZWJmLThjZmJmZjY2ZmE3YSJ9.BWTKViaIqWy-D6HCJtok4hkj8Tp7u7pralzfYQqNkA4" class="fr-fic fr-fil fr-dib" width="533" style="width: 533px; height: 776.794px;" height="776.794"></span></p><p><span style="font-size: 10pt;"><strong>Fig 13. Output variable example</strong></span><strong><span style="font-size: 10pt;"><br></span></strong></p><p><span style="font-size: 11pt;"><br></span></p><p><span style="font-size: 11pt;"><strong>Integration Runbooks</strong></span></p><p><span style="font-size: 11pt;">Now that the custom integration is set up and there is authentication into your Halo API. The next step is to create runbooks to automate your processes.</span></p></div></div></div></div></div></div>