Skip to content

User provisioning ​

Creates a user when you may not have an email. Same idea as onboarding: profile, roles, and a service provider or location. Send one user, or up to 10.

POST /fieldservicegateway/usermanagement/v3/user-provisioning

Request ​

The body is one user object or an array of user objects.

FieldTypeRequiredDescription
firstNamestringyes1–100 characters
lastNamestringyes1–100 characters
middleNamestringnoUp to 100 characters
externalReferenceNumberstringyesId from the calling system. Required even when email is omitted
rolesstring[]yesAt least one role, each in Application:RoleName form
serviceProviderNumberstringone of these is requiredService provider to assign
serviceProviderLocationNumbersstring[]one of these is requiredLocation numbers to assign
contactobjectnoEmail and phone. Omit when there is no contact
contact.email[].typestringyes, when email is sentPERSONAL, WORK, or DEFAULT
contact.email[].addressstringyes, when email is sentEmail address
contact.email[].primarybooleanyes, when email is sentWhether this email is primary
contact.phone[].typestringyes, when phone is sentHOME, MOBILE, or WORK
contact.phone[].numberstringyes, when phone is sentPhone number
contact.phone[].countryCodestringyes, when phone is sentCountry calling code
contact.phone[].primarybooleanyes, when phone is sentWhether this phone is primary
addressesarraynoHome address only (type is HOME)
profilePictureUrlstringnoProfile image URL
employeeIdstringnoEmployee id
sbUsernamestringnoServiceBench username
userAttributesarraynoExtra attributes. Each item needs name (1–50 characters) and value

password is not accepted.

Example ​

json
{
  "firstName": "Ada",
  "lastName": "Lovelace",
  "externalReferenceNumber": "EXT-1001",
  "roles": ["Honeycomb:Technician"],
  "serviceProviderNumber": "10001"
}

cURL ​

bash
curl --request POST 'https://[BASE_URL]/fieldservicegateway/usermanagement/v3/user-provisioning' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: {{x-api-key}}' \
  --header 'Authorization: {{Authorization}}' \
  --header 'Asurion-correlationid: correlation-id' \
  --header 'Asurion-enduser: end-user' \
  --header 'Asurion-sourcesystem: source-system' \
  --header 'Asurion-serviceprovider: company-id' \
  --header 'Asurion-client: default' \
  --data '{
    "firstName": "Ada",
    "lastName": "Lovelace",
    "externalReferenceNumber": "EXT-1001",
    "roles": ["Honeycomb:Technician"],
    "serviceProviderNumber": "10001"
  }'

Response ​

The body is always { "results": [] }.

FieldTypeDescription
indexnumberPosition in the request, starting at 0
emailstringPrimary email, or empty when none was sent
successbooleanWhether that user was provisioned
userNumbernumberPresent when a user record exists
isNewUserbooleantrue when the user was created on this call
errorstringPresent when success is false
codestringPresent on some item failures

201 Created ​

Every user succeeded.

json
{
  "results": [
    {
      "index": 0,
      "email": "",
      "success": true,
      "userNumber": 1001,
      "isNewUser": true
    }
  ]
}

207 Multi-Status ​

At least one user failed. Successful and failed items are returned together.

json
{
  "results": [
    {
      "index": 0,
      "email": "",
      "success": false,
      "error": "externalReferenceNumber is required"
    }
  ]
}

Errors ​

400 Bad Request ​

The body is not a user object or an array of 1–10 users.

json
{
  "error": "request body is invalid"
}

An empty array, or an array larger than 10, returns 400 with { "results": [] }.

500 Internal Server Error ​

json
{
  "success": false,
  "error": "Internal server error",
  "code": "INTERNAL_ERROR",
  "correlationId": "correlation-id",
  "timestamp": "2026-10-16T00:00:00.000Z"
}