The AWA Manual Assignment API provides an endpoint to manually assign available work items to available Advanced Work Assignment (AWA) agents.

A work item is a single piece of work handled by an AWA agent from start to finish. For example, one chat or one case is an object that can be routed and assigned to agents. For more information, refer to Advanced Work Assignment.

This API requires the Advanced Work Assignment (com.glide.awa) plugin. To call this API, you must have either the awa_manager or awa_integration_user role.

AWA Manual Assignment – POST /now/awa/workitems/{work_item_sys_id}/assignments

Assigns an available work item to an available Advanced Work Assignment (AWA) agent.

The primary use case for this endpoint is to enable external routing systems to route work items. If Advanced Work Assignment is configured to use external routing, work items in the queue are assigned using external routing and not AWA. You can assign the work item task by calling this endpoint. For more information, refer to Use external routing.

URL format

Versioned URL: /now/{api_version}/awa/workitems/{sys_id}/assignments

Default URL: /now/awa/workitems/{sys_id}/assignments

Note: Available versions are specified in the REST API Explorer. For scripted REST APIs there is additional version information on the Scripted REST Service form.

Supported request parameters

Table 1. Path parameters
Name Description
api_version Optional. Version of the endpoint to access. For example, v1 or v2. Only specify this value to use an endpoint version other than the latest.

Data type: String

work_item_sys_id Sys_id of the work item to assign to an available agent.

The work item must be unassigned and in the Pending Accept or Queued state. For more information, refer to Check unassigned task work items.

Data type: String

Table: Work Items [awa_work_item]

Table 2. Query parameters
Name Description
None

Headers

The following request and response headers apply to this HTTP action only, or apply to this action in a distinct way. For a list of general headers used in the REST API, see Supported REST API headers.

Table 4. Request headers
Header Description
Accept Data format of the response body. Supported types: application/json or application/xml.

Default: application/json

Content-Type Data format of the request body. Supported types: application/json or application/xml.

Default: application/json

Table 5. Response headers
Header Description
None

Status codes

The following status codes apply to this HTTP action. For a list of possible status codes used in the REST API, see REST API HTTP response codes.

Response body parameters (JSON or XML)

Name Description
success Flag that indicates whether the manual work item assignment is successful.
Possible values:
  • true: Work item assignment successful.
  • false: Work item assignment unsuccessful.

Data type: Boolean

message Response message acknowledging successful assignment or an exception.

Success: "Manual assignment successfully requested."

Exceptions:
  • "<work_item_sys_id> is not a valid work item" – Provided work item sys_id does not exist.
  • "Caller <API_caller_sys_id> does not have the awa_manager or awa_integration_user role" – The authenticated user making the API request must have either the awa_manager or awa_integration_user role.
  • "Work item <work_item_sys_id> cannot be assigned" – Work item provided cannot be assigned because it is in Accepted or Canceled state. Refer to Check work items and AWA events.
  • "<agent_sys_id> is not a valid agent" – Agent does not have the awa_agent role.
  • "Work Item is already assigned to <agent_sys_id>" – Provided work item is assigned to another agent.
  • "Agent is not available" – Agent is not in the Available state in AWA. Refer to Agent Inbox controls.
  • "Timeout value cannot be negative" – Provided timeout value cannot be a negative value.
  • "<presence_state_sys_id> is not a valid presence state” – Provided presence state sys_id doesn't exist in the AWA Presence State [awa_presence_state] table.
  • "Offered time (<offered_on_timestamp>) must be in the following format: yyyy-MM-dd'T'HH:mm:ss.SSS" – Provided offered_on timestamp must be in the specified format.
  • "Offered time (<offered_on_timestamp >) must be before the current time, otherwise agent will have more time to accept the work item" – Provided offered_on timestamp can't be before the time the request is made.
  • "Timestamp after timeout (<offered_on_timestamp >) must be after the current time, otherwise agent has no time to accept the work item" – The timestamp after adding the timeout value to the provided offered_on timestamp must be after the time the request was made.
  • "<display_option> is not a valid display option" – Provided display_option must be either of the following values: "card_only” or “card_and_tab"
  • "%s is not a valid boolean value" – Provided Boolean-type value must be in one of the following Boolean formats: "yes"/"no", "true"/"false", "1"/"0"

Data type: String

Example: cURL request

The following example shows how to assign a work item to an available AWA agent using only the required parameters.

curl "https://instance.servicenow.com/api/now/awa/workitems/<work_item_sys_id>/assignments" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data "{\"agent_sys_id\":\"<agent_sys_id>\"}" \
--user 'username':'password'

The result shows that the task has been successfully assigned to the agent. You can verify results in the Assigned to field of the Work Items [awa_work_item] table.

{
  "result": {
    "success": true,
    "message": "Manual assignment successfully requested."
  }
}

Example: cURL request

The following example shows how to assign a work item to an available AWA agent including the optional parameters.

curl "https://instance.servicenow.com/api/now/awa/workitems/<work_item_sys_id>/assignments" \
--request POST \
--header "Accept:application/json" \
--header "Content-Type:application/json" \
--data '{
    "agent_sys_id": "46d44a23a9fe19810012d100cca80666",
    "timeout":"10",
    "offered_on":"2024-04-03T23:09:31.000"
  }'
--user 'username':'password'

The result shows that the task has been successfully assigned to the agent. You can verify results in the Assigned to field of the Work Items [awa_work_item] table.

{
  "result": {
    "success": true,
    "message": "Manual assignment successfully requested."
  }
}