Completing a Work Item Version
The complete work item version API method enables you to mark a work item version as complete and produce output data, typically assembled documents.
Prerequisites
Before making a 'complete work item version' request, you must have an access token to sign the request. You can retrieve an access token using one of the following flows:
- Getting an access token using the Resource Owner flow
- Getting an access token using the Implicit flow
Additionally, you must have the following items in the tenancy for which you are creating an assembly session:
- A work item (see Creating a Work Item)
- An active work item version for the work item (see Creating a New Work Item Version )
Overview
The 'complete work item version' API method is a command method. The API client invoking this method must have either a command or a root scope.
Once a version of a work item is complete, you can create a new version.
Authentication
See Authentication for more information about authenticating requests to the Advance API.
API Documentation
You can view the latest reference documentation for the Advance API at https://yourorganization.com/HdaApi/rest/documentation/index.html, where yourorganization.com is the domain under which your Advance deployment is located.
Request
Request URL
PUT https://{tenancymoniker}.{domain}/HdaApi/rest/v2.0/WorkItems/{workItemId}/Versions/{versionId}/Complete
Headers
| Key | Required | Description | Example value |
| Authorization | Yes | The Authorization header for the request. Uses the access token retrieved (see Prerequisites section above for more information). | Bearer [access token] |
Parameters
| Name | Type | Location | Required | Description |
| tenancymoniker | String | URL | Yes | The tenancy moniker for the tenancy in which you want to create the new work item. |
| domain | String | URL | Yes | Your domain. For example, yourorganization.com. |
| workItemId | Guid | URL | Yes | The Guid for an existing work item. |
| versionId | Guid | URL | Yes | The Guid for a work item version associated with the work item. |
| callbackUrl | String | Body | No | The URL to which a notification is sent when the work item finishes completing. |
| callbackSecret | String | Body | No | A secret value used to authenticate the callback request. |
Example Request URL
https://tenancy1.yourorganization.com/HdaApi/rest/v2.0/WorkItems/2d9f3d10-6fdb-494f-9929-955515c6f114/Versions/{guid}/Complete
Example Request JSON
{
callbackUrl: "string",
callbackSecret: "string"
}
Example Response
Status: 200 OK
Code Example
C#
Note: this code example assumes that you are using .Net Framework 4.6 and an ASP.NET Web Application project, and have completed the beginning an assembly session and displaying an interview topics.
HomeController.cs
Add the following methods to the existing HomeController class:
[HttpPost]
public async Task CompleteAssemblySession(string workItemId, string token)
{
// Note: if you are not displaying an interview, you can call CompleteAssemblySession directly after the BeginAssemblySession call in the Index controller method
await AssemblySessionHandler.CompleteAssemblySession(Guid.Parse(workItemId), token);
}
public ActionResult LandingPage()
{
// Landing page for the user when they finish the interview; this endpoint is used in InterviewOptions, on the interview page.
return View();
}
AssemblySessionHandler.cs
Add the following methods to the existing AssemblySessionHandler class. You will need to update the assemblySessionUrl variable to use your own Advance API endpoint.
public static async Task<HttpStatusCode> CompleteAssemblySession(Guid workItemId, string token)
{
// Create the 'create assembly session' request
var request = CreateAssemblySessionCompleteHttpRequestMessage(workItemId);
// Send create user request to Advance
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var response = await client.SendAsync(request);
return response.StatusCode;
}
}
private static HttpRequestMessage CreateAssemblySessionCompleteHttpRequestMessage(Guid workItemId)
{
// Create the request for the 'create assembly session' API endpoint
var assemblySessionUrl = $"https://tenancy1.yourorganization.com/HdaApi/rest/v1.1/WorkItems/{workItemId}/Versions/Active/CompleteSession";
var body = new
{
runAssembly = true
};
return new HttpRequestMessage
{
RequestUri = new Uri(assemblySessionUrl),
Method = HttpMethod.Put,
Content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json")
};
}
LandingPage.cshtml
<h2>Assembly Complete!</h2>
Next steps