You must sign your requests with an access token when making requests to the HotDocs Advance API. This topic describes how to retrieve an access token using the ResourceOwner flow.
In this Topic Hide
This request retrieves an access token from Advance, using a service principal account. Once you successfully retrieve the access token, you can then use it to sign requests to the Advance API.
POST https://{tenancymoniker}.{domain}/HdaAuth/Authorize/ServicePrincipalLogIn
Name | Type | Location | Required | Description |
tenancymoniker | String | URL | Yes | The tenancy moniker for the tenancy in which you want to initialize a work item. |
domain | String | URL |
Yes | Your domain. For example, yourorganization.com. |
ClientName |
String | Request body | Yes | The unique name of the client making the request; you can see the client's unique name on the client details page. |
PrincipalName | String | Request body
|
Yes | The name of the service principal user associated with the client specified above. |
PrincipalPassword |
String | Request body
|
Yes | The password of the service principal user specified above. This password was set when the service principal was created. |
https://yourtenancy.yourorganization.com/HdaAuth/Authorize/ServicePrincipalLogIn
{
"ClientName": "yourTenancy17ABSHVJL",
"PrincipalName": "ExamplePrincipal01",
"PrincipalPassword": "examplepassword",
}
Status: 200 OK
Content-type: text/plain
Body: [token string]
See Authentication for more information about using the returned token when authenticating requests to the Advance API.
See Resource Owner Flow Authorization Example for further examples.
using System; using System.Net.Http; using System.Text; using System.Threading.Tasks;
namespace HotDocsAdvanceApiExamples { public class ResourceOwnerAuthorization { // These are the credentials required for retrieving an access token using the resource owner flow. // You will replace these credentials with those for a client you create yourself, // using the Advance Client Management Application. See the API help guide for more information. private string clientName = "ab3e4544-b595-4681-b0ea-c7c18c9b63f6"; private string servicePrincipalName = "ExampleServicePrincipalA"; private string servicePrincipalPassword = "examplePassword";
public async Task<string> GetResourceOwnerToken() { // Create the access token request var request = CreateHttpRequestMessage();
//Send token request to Advance using (var client = new HttpClient()) { var response = await client.SendAsync(request);
// Return the retrieved access token return response.Content.ReadAsStringAsync().Result; } }
private HttpRequestMessage CreateHttpRequestMessage() { var tokenUrl = string.Format("https://yourtenancy.yourorganization.com/HdaAuth/Authorize/ServicePrincipalLogIn");
return new HttpRequestMessage { RequestUri = new Uri(tokenUrl), Method = HttpMethod.Post, Content = GetRequestContent() }; }
private StringContent GetRequestContent() { var json = "{" + string.Format("'ClientName' : '{0}', 'PrincipalName' : '{1}', 'PrincipalPassword' : '{2}'", clientName, servicePrincipalName, servicePrincipalPassword) + "}"; return new StringContent(json, Encoding.UTF8, "application/json"); } } }