Contact Us

Wand API

Introduction to the Wand API

The Wand API is based on RESTful web services. This means that the API is highly scalable, simple to integrate with, and optimized for performance. The Wand API lets you interact with Wand from any platform that can send an HTTP request. There are many things that you can do with the Wand API, including the following examples:

  • Easily access, create, and update all Cost Center and Manager information in Wand
  • Feed or extract Timecard and Expense information to integrate with ERP systems
  • Access all engagement details for active assignments in Wand, and create new engagements
  • and much more...

Getting Started

In order to begin leveraging the Wand API, you will need to understand the basic building blocks of creating an interface. In this section, we lay the foundation for concepts that you need to understand to fully leverage the Wand API.

Authenticating API Requests

Every operation in the Wand API will start with a payload request with authentication details, and return a token. This token ensures that there has been a successful, secure connection made. All requests will need to be made over HTTPS, as regular HTTP requests will fail authentication.

For example - to initiate a request to Wand, you would do so using the following format:

https://integration.prounlimited.com/api/<<type>>/request

Handling Errors

To indicate the success or failure of any API request, Wand will return a conventional HTTP response code. The following codes can be used to identify the status of the request:

HTTP Status Summary:

200 - OK, Everything worked as expected 400 - Bad Request, The request was unacceptable due to a missing parameter 401 - Unauthorized, No valid API key provided 402 - Request Failed, The parameters were valid, but the request failed 404 - Not Found, The requested resource doesn't exist

There are many different reasons why the Wand API may raise an exception, such as authentication errors, invalid parameters, etc.For object specific errors, please refer to their respective section in this API documentation further below.

Requesting Data from the APIs

Requests through the Wand API are handled as a POST REST call with XML. As the amount of data returned in typical requests can be quite large, all requests are handled as asynchronous.

Each API request will return a correlationID. Requests are then processed on the Wand API server, and once the process has completed, a response will be sent. At that time, you can use the correlationID to get the results as XML.

For longer operations, you can also use the correlationID to inquire about the status of the request. For example - to initiate a status request to Wand, you would do so using the following format:

Sending Data to the APIs

When sending data to the APIs (such as Manager data, time and expense data, etc.), you will follow the same process as when requesting data. Once the data has been accepted and processed, a response code will be returned. As noted above, a response code of 200 indicates that the data has been accepted, and everything processed ok.

Most Common Inbound Integrations

Interacting with the Wand API was designed to be easy, and there are certainly many operations that you will carry out using the API (both sending and retrieving data). To get a full, detailed understanding about the specific operations you can carry out with each object, you can refer to the “Object Specifications” section of this documentation.

The purpose of this section, however, is to get you started quickly by walking you through examples of how to carry out some of the most common inbound integrations using the Wand API.

After reading this section, you should not only be able to carry out these common inbound integrations, but you should also have a firm foundational understanding of how to interact with the Wand API.

How to Update Manager Data in Wand

One of the objects in the Wand API that you will likely be referencing often is the “Manager” object. There are many reasons that you will want to retrieve a Manager’s data. Some of these include: retrieving a Manger’s work location, updating the Manager’s profile data, pulling a list of all of a Manager’s active assignments, etc.

For this quick start tutorial, we will be writing a connection that updates an existing Manager’s profile in Wand. We will be creating, authenticating, and submitting the request, as well as receiving the response.

Step 1: Initiating the New Request
Let’s start by creating the new Manager request to the Wand API. Remember, each authenticated request returns a correlationID that will be used to complete the operation.

To initiate the request, use the following connection string:

https://integration.prounlimited.com/api/manager/request

Step 2: Make and Authenticate the Request
Now we will make the request itself for the Manager object, and authenticate the request. To make things easy, the authentication schema is consistent across all calls to the web service. Please refer to the Manager Object Specifications sections for Authentication information.

Step 3: Receive the Request Response and CorrelationID

After having made the request, you will receive a response indicating if the request was successful or not. If the request was successful, you will receive a response with an HTTP code of 200.

If however, the request was unsuccessful, you will receive an HTTP code stating what the issue was.

A successfully authenticated response will look like the following:

<xs:complexType name="RequestAcknowledgement"> <xs:sequence> <xs:element name="ResponseCode" type="xs:int" form="qualified" /> <xs:element name="Message" type="xs:string" form="qualified" minOccurs="0"/> <xs:element name="CorrelationId" type="xs:string" form="qualified" /> </xs:sequence> </xs:complexType>

Take note of the correlationID. This ID will be used to retrieve the data once it has been processed.

Step 4: Verify the Status of the Operation
Now that your request has been accepted and is in queue, you will need to wait for the operation to complete. Remember, this is a POST REST process, carried out asynchronously to ensure successful delivery of your data.

You can request a status of your operation at any time using the correlationID provided in the request response.

<xs:complexType name="RequestAcknowledgement"> <xs:sequence> <xs:element name="ResponseCode" type="xs:int" form="qualified" /> <xs:element name="Message" type="xs:string" form="qualified" minOccurs="0"/> <xs:element name="CorrelationId" type="xs:string" form="qualified" /> </xs:sequence> </xs:complexType>

Take note of the correlationID. This ID will be used to retrieve the data once it has been processed.

Step 4: Verify the Status of the Operation
Now that your request has been accepted and is in queue, you will need to wait for the operation to complete. Remember, this is a POST REST process, carried out asynchronously to ensure successful delivery of your data.

You can request a status of your operation at any time using the correlationID provided in the request response.

How to Insert Location Data in Wand

One of the objects in the Wand API that you can reference is the “Location” object. There are many reasons that you will want to retrieve this information for Managers.

For this quick start tutorial, we will be writing a connection that includes Location information for Managers in Wand. We will be creating, authenticating, and submitting the request, as well as receiving the response.

Step 1: Initiating the New Request
Let’s start by creating the new Location request to the Wand API. Remember, each authenticated request returns a correlationID that will be used to complete the operation.

To initiate the request, use the following connection string:

https://integration.prounlimited.com/api/manager/request

Step 2: Make and Authenticate the Request
Now we will make the request itself for the Location object, and authenticate the request. To make things easy, the authentication schema is consistent across all calls to the web service. Please refer to the Location Object Specifications sections for Authentication information.

Step 3: Receive the Request Response and CorrelationID
After having made the request, you will receive a response indicating if the request was successful or not. If the request was successful, you will receive a response with an HTTP code of 200.

If however, the request was unsuccessful, you will receive an HTTP code stating what the issue was.

A successfully authenticated response will look like the following:

<xs:complexType name="RequestAcknowledgement">
<xs:sequence> <xs:element name="ResponseCode" type="xs:int" form="qualified" /> <xs:element name="Message" type="xs:string" form="qualified" minOccurs="0"/> <xs:element name="CorrelationId" type="xs:string" form="qualified" /> </xs:sequence> </xs:complexType>

Take note of the correlationID. This ID will be used to retrieve the data once it has been processed.

Step 4: Verify the Status of the Operation
Now that your request has been accepted and is in queue, you will need to wait for the operation to complete. Remember, this is a POST REST process, carried out asynchronously to ensure successful delivery of your data.

You can request a status of your operation at any time using the correlationID provided in the request response.

How to Update Exisiting Cost Center Data in Wand

One of the objects in the Wand API that you will likely be referencing often is the “Cost Center” object. There are many reasons that you will want to retrieve Cost Center data such as: updating Department information, Updating Cost Center information, or seeing active Department and Cost Center information, etc.

For this quick start tutorial, we will be creating, authenticating, and submitting the request, as well as receiving the response.

Step 1: Initiating the New Request
Let’s start by creating the new request to the Wand API. Remember, each authenticated request returns a correlationID that will be used to complete the operation.

To initiate the request, use the following connection string:

https://integration.prounlimited.com/api/costcenter/request

Step 2: Make and Authenticate the Request
Now we will make the request itself for the Cost Center object, and authenticate the request. To make things easy, the authentication schema is consistent across all calls to the web service. Please refer to the Cost Center Object Specifications sections for Authentication information.

Step 3: Receive the Request Response and CorrelationID
After having made the request, you will receive a response indicating if the request was successful or not. If the request was successful, you will receive a response with an HTTP code of 200.

If however, the request was unsuccessful, you will receive an HTTP code stating what the issue was.

A successfully authenticated response will look like the following:

<xs:complexType name="RequestAcknowledgement">
<xs:sequence> <xs:element name="ResponseCode" type="xs:int" form="qualified" /> <xs:element name="Message" type="xs:string" form="qualified" minOccurs="0"/> <xs:element name="CorrelationId" type="xs:string" form="qualified" /> </xs:sequence> </xs:complexType>

Take note of the correlationID. This ID will be used to retrieve the data once it has been processed.

Step 4: Verify the Status of the Operation
Now that your request has been accepted and is in queue, you will need to wait for the operation to complete. Remember, this is a POST REST process, carried out asynchronously to ensure successful delivery of your data.

You can request a status of your operation at any time using the correlationID provided in the request response.

How to Add Custom Reference List Integrations

The Wand API allows you to reference “Custom Reference List Integrations” object. There are many reasons that you will want to retrieve this information for Managers.

For this quick start tutorial, we will be writing a connection that includes this Custom Reference information for Managers in Wand. We will be creating, authenticating, and submitting the request, as well as receiving the response.

Step 1: Initiating the New Request
Let’s start by creating the new Custom Reference List request to the Wand API. Remember, each authenticated request returns a correlationID that will be used to complete the operation.

To initiate the request, use the following connection string:

https://integration.prounlimited.com/api/cfreflist/request/{feedIdentifier}

Step 2: Make and Authenticate the Request
Now we will make the request itself for the Custom object, and authenticate the request. To make things easy, the authentication schema is consistent across all calls to the web service. Please refer to the Custom Field Service Object Specifications sections for Authentication information.

Step 3: Receive the Request Response and CorrelationID
After having made the request, you will receive a response indicating if the request was successful or not. If the request was successful, you will receive a response with an HTTP code of 200.

If however, the request was unsuccessful, you will receive an HTTP code stating what the issue was.

A successfully authenticated response will look like the following:

<xs:complexType name="RequestAcknowledgement">
<xs:sequence> <xs:element name="ResponseCode" type="xs:int" form="qualified" /> <xs:element name="Message" type="xs:string" form="qualified" minOccurs="0"/> <xs:element name="CorrelationId" type="xs:string" form="qualified" /> </xs:sequence> </xs:complexType>

Take note of the correlationID. This ID will be used to retrieve the data once it has been processed.

Step 4: Verify the Status of the Operation

Now that your request has been accepted and is in queue, you will need to wait for the operation to complete. Remember, this is a POST REST process, carried out asynchronously to ensure successful delivery of your data.

You can request a status of your operation at any time using the correlationID provided in the request response.

Most Common Outbound Integrations

While many of the interactions you have with the Wand API may be inbound, there are also several outbound integrations that you will find useful. Examples of these include retrieval of Worker information, AP feeds for integration with an ERP, etc.

Outbound integrations operate in the same way as inbound integrations. The only difference is that the response that you receive includes the data that you have requested.

It is also important to note that outbound Worker feeds are not handled asynchronously, as this data may be needed in a more timely fashion for integration with other systems.

How to extract Worker/Engagement data from WAND

One of the objects in the Wand API that you will likely be referencing often is the “Worker” object. Worker data needs to be extracted for onboarding, offboarding and to maintain worker lifecycle events in downstream provisioning systems.

For this quick start tutorial, we will be writing a connection that extracts worker’s profile from Wand. We will be creating, authenticating, and submitting the request, as well as receiving the response.

Step 1: Initiating the New Request
Let’s start by creating the new worker request to the Wand API. Remember, each authenticated request returns a correlationID that will be used to complete the operation.

To initiate the request, use the following connection string:

https://integration.prounlimited.com/api/worker/outbound/request

Step 2: Make and Authenticate the Request
Now we will make the request itself for the worker object, and authenticate the request. To make things easy, the authentication schema is consistent across all calls to the web service. Please refer to the Worker Object Specifications sections for Authentication information.

Step 3: Receive the Request Response and CorrelationID

After having made the request, you will receive a response indicating if the request was successful or not. If the request was successful, you will receive a response with an HTTP code of 200.

If however, the request was unsuccessful, you will receive an HTTP code stating what the issue was.

A successfully authenticated response will look like the following:

<xs:complexType name="RequestAcknowledgement"> <xs:sequence> <xs:element name="ResponseCode" type="xs:int" form="qualified" /> <xs:element name="Message" type="xs:string" form="qualified" minOccurs="0"/> <xs:element name="CorrelationId" type="xs:string" form="qualified" /> </xs:sequence> </xs:complexType>

Take note of the correlationID. This ID will be used to retrieve the data once it has been processed.

Step 4: Verify the Status of the Operation and extract the response
Now that your request has been accepted and is in queue, you will need to wait for the operation to complete. Remember, this is a POST REST process, carried out asynchronously to ensure successful delivery of your data.

You can request a status of your operation at any time using the correlationID provided in the request response. Finally when your request is complete, you will be able to extract the entire payload for Worker data.

Object Specifications

In this section of the Wand API documentation, we will take a deep dive into all of the objects that you can interact with using the API. Each Objects’s respective section details out the Object’s primary function in Wand, how to create a request, the expected response, how to handle errors for that object, and sample code snippets.

Manager

The following calls have been developed to help you to process incoming manager data feeds. There are many reasons to use this when retrieving Manager data. Examples include, updating Manager locations, Manager profile information, or seeing active assignments.

Process Request

Request: This is a POST REST call with XML. The response for this call will have a correlationId. Clients can use this correlationId to get xml results. As the process of updating/creating managers can take some time, this process has been made asynchronous. Client sends the request and gets a correlationId. The request will be processed on the server and a response will be created. Client can use the correlationId to poll for response.

 

Content-Type: application/xml

url=https://integration.prounlimited.com/api/manager/request

request type=HTTP POST

 

Request XML Schema –

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" targetNamespace="http://manager.integration.prounlimited.com/xsd" xmlns:ns1="http://integration.prounlimited.com/xsd" xmlns:tns="http://manager.integration.prounlimited.com/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="ManagerRequest" type="tns:ManagerRequest" />  <xs:complexType name="ManagerRequest">   <xs:sequence>    <xs:element name="Credentials" type="tns:Credentials"/>    <xs:element name="Managers" type="tns:Managers"/>   </xs:sequence> </xs:complexType> <xs:complexType name="Credentials">  <xs:sequence>   <xs:element name="UserName" type="xs:string"/>   <xs:element name="Password" type="xs:string"/>  </xs:sequence> </xs:complexType> <xs:complexType name="Managers">  <xs:sequence>   <xs:element name="Manager" type="tns:ManagerInfo" maxOccurs="unbounded"/>  </xs:sequence> </xs:complexType> <xs:complexType name="ManagerInfo">  <xs:sequence>   <xs:element name="GUID" type="xs:string" minOccurs="0"/>   <xs:element name="ExternalID" type="xs:string" minOccurs="0"/>   <xs:element name="FirstName" type="xs:string"/>   <xs:element name="LastName" type="xs:string"/>   <xs:element name="MiddleInitial" type="xs:string" minOccurs="0"/>   <xs:element name="LegalFirstName" type="xs:string" minOccurs="0"/>   <xs:element name="LegalLastName" type="xs:string" minOccurs="0"/>   <xs:element name="Suffix" type="xs:string" minOccurs="0"/>   <xs:element name="Prefix" type="xs:string" minOccurs="0"/>   <xs:element name="UserName" type="xs:string" minOccurs="0"/>   <xs:element name="Email" type="xs:string"/>   <xs:element name="WorkPhone" type="xs:string" minOccurs="0"/>   <xs:element name="HomePhone" type="xs:string" minOccurs="0"/>   <xs:element name="MobilePhone" type="xs:string" minOccurs="0"/>   <xs:element name="Fax" type="xs:string" minOccurs="0"/>   <xs:element name="Address" type="tns:AddressInfo" minOccurs="0"/>   <xs:element nillable="false" name="Active" minOccurs="0">    <xs:simpleType>     <xs:restriction base="xs:string">      <xs:enumeration value="true" />      <xs:enumeration value="false" />     </xs:restriction>    </xs:simpleType>   </xs:element>   <xs:element name="OperationalUnits" minOccurs="0">    <xs:complexType>     <xs:sequence>      <xs:element name="OperationalUnit" type="xs:string" maxOccurs="unbounded"/>     </xs:sequence>    </xs:complexType>   </xs:element>   <xs:element name="Departments" minOccurs="0">    <xs:complexType>     <xs:sequence>      <xs:element name="Department" type="tns:DepartmentInfo" maxOccurs="unbounded"/>     </xs:sequence>    </xs:complexType>   </xs:element>   <xs:element name="CustomFields" minOccurs="0">    <xs:complexType>     <xs:sequence>      <xs:element name="CustomField" type="tns:CustomFieldInfo" maxOccurs="unbounded"/>     </xs:sequence>    </xs:complexType>   </xs:element>  </xs:sequence> </xs:complexType> <xs:complexType name="AddressInfo">  <xs:sequence>   <xs:element name="AddressLine1" type="xs:string" minOccurs="0"/>   <xs:element name="AddressLine2" type="xs:string" minOccurs="0"/>   <xs:element name="City" type="xs:string" minOccurs="0"/>   <xs:element name="State" type="xs:string" minOccurs="0"/>   <xs:element name="PostalCode" type="xs:string" minOccurs="0"/>   <xs:element name="Country" type="xs:string" minOccurs="0"/>  </xs:sequence> </xs:complexType> <xs:complexType name="DepartmentInfo">  <xs:sequence>   <xs:element name="DepartmentCode" type="xs:string" minOccurs="0"/>   <xs:element name="DepartmentName" type="xs:string" minOccurs="0"/>  </xs:sequence> </xs:complexType> <xs:complexType name="CustomFieldInfo">  <xs:sequence>   <xs:element type="xs:string" name="Value"/>  </xs:sequence>  <xs:attribute type="xs:string" name="Name"/> </xs:complexType> </xs:schema>

The response for this request will be an acknowledgement with a correlationId. The request will be processed asynchronously and the client can use the correlationId to enquire the status of the request.

Response: If there is an error the following HTTP codes are returned…

400 (Bad Request): This code is returned if the request XML is invalid.

401 (Unauthorized): Returned when the credentials supplied or not valid.

500 (Internal Server Error): Returned when there are catastrophic errors during request processing.

If the XML is accepted then a 200 code is returned. Response will be an XML containing correlationId. This Id represents the request submitted and can be used using request-status query to get the status of the request.

Content-Type: application/xml

Response Schema -

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" targetNamespace="http://integration.prounlimited.com/xsd" xmlns:tns="http://integration.prounlimited.com/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="RequestAcknowledgement" type="tns:RequestAcknowledgement" /> <xs:complexType name="RequestAcknowledgement"> <xs:sequence> <xs:element name="ResponseCode" type="xs:int" form="qualified" /> <xs:element name="Message" type="xs:string" form="qualified" minOccurs="0" /> <xs:element name="CorrelationId" type="xs:string" form="qualified" /> </xs:sequence> </xs:complexType> </xs:schema>

Request Status

Request: This is a POST REST call with XML.

Content-Type: application/xml
url=https://integration.prounlimited.com/api/location/request-status
request type=HTTP POST

Request XML Schema –

<?xml version="1.0" encoding="UTF-8"?> <xs:schema attributeFormDefault="unqualified"  elementFormDefault="qualified" targetNamespace="http://integration.prounlimited.com/xsd"  xmlns:xs="http://www.w3.org/2001/XMLSchema">  <xs:element name="RequestStatus" type="xsd:RequestStatusType"   xmlns:xsd="http://integration.prounlimited.com/xsd" />  <xs:complexType name="CredentialsType">   <xs:sequence>    <xs:element type="xs:string" name="UserName" />    <xs:element type="xs:string" name="Password" />   </xs:sequence>  </xs:complexType>  <xs:complexType name="RequestStatusType">   <xs:sequence>    <xs:element type="xsd:CredentialsType" name="Credentials"     xmlns:xsd="http://integration.prounlimited.com/xsd" />    <xs:element type="xs:int" name="CorrelationId" />   </xs:sequence>  </xs:complexType> </xs:schema>

Response:

Content-Type: application/xml

Response Schema -

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" targetNamespace="http://integration.prounlimited.com/xsd"  xmlns:tns="http://integration.prounlimited.com/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">  <xs:element name="Status" type="tns:Status" />  <xs:complexType name="Status">   <xs:sequence>    <xs:element name="CorrelationId" type="xs:string" form="qualified" />    <xs:element name="RequestStatus" type="tns:status" form="qualified" />   </xs:sequence>  </xs:complexType>  <xs:simpleType name="status">   <xs:restriction base="xs:string">    <xs:enumeration value="Pending" />    <xs:enumeration value="Errored" />    <xs:enumeration value="Completed" />   </xs:restriction>  </xs:simpleType> </xs:schema>

Location

The following calls have been developed to help you to process incoming Location data feeds. There are many reasons to use this when retrieving Location data. Examples include, updating locations, or seeing current locations.

Process Request

Request: This is a POST REST call with XML. The response for this call will have a correlationId. Clients can use this correlationId to get the xml results. As the process of creating/updating locations can take some time, this process has been made asynchronous. Client sends the request and gets a correlationId. The request will be processed on the server and a response will be created. Client can use the correlationId to poll for response.

Content-Type: application/xml
url=https://integration.prounlimited.com/api/location/request
request type=HTTP POST

Request XML Schema –

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" targetNamespace="http://integration.prounlimited.com/xsd" xmlns:tns="http://integration.prounlimited.com/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">  <xs:element name="RequestAcknowledgement" type="tns:RequestAcknowledgement" />  <xs:complexType name="RequestAcknowledgement">   <xs:sequence>    <xs:element name="ResponseCode" type="xs:int" form="qualified" />    <xs:element name="Message" type="xs:string" form="qualified"     minOccurs="0" />    <xs:element name="CorrelationId" type="xs:string" form="qualified" />   </xs:sequence>  </xs:complexType> </xs:schema>

The response for this request will be an acknowledgement with a correlationId. The request will be processed asynchronously and the client can use the correlationId to enquire the status of the request.

Response: If there is an error the following HTTP codes are returned…

400 (Bad Request): This code is returned if the request XML is invalid.

401 (Unauthorized): Returned when the credentials supplied or not valid.

500 (Internal Server Error): Returned when there are catastrophic errors during request processing.

If the XML is accepted then a 200 code is returned. Response will be an XML containing correlationId. This Id represents the request submitted and can be used using request-status query to get the status of the request.

Content-Type: application/xml

Response Schema -

<?xml version="1.0" encoding="UTF-8"?> <xs:schema attributeFormDefault="unqualified"  elementFormDefault="qualified" targetNamespace="http://integration.prounlimited.com/xsd"  xmlns:xs="http://www.w3.org/2001/XMLSchema">  <xs:element name="RequestStatus" type="xsd:RequestStatusType"   xmlns:xsd="http://integration.prounlimited.com/xsd" />  <xs:complexType name="CredentialsType">   <xs:sequence>    <xs:element type="xs:string" name="UserName" />    <xs:element type="xs:string" name="Password" />   </xs:sequence>  </xs:complexType>  <xs:complexType name="RequestStatusType">   <xs:sequence>    <xs:element type="xsd:CredentialsType" name="Credentials"     xmlns:xsd="http://integration.prounlimited.com/xsd" />    <xs:element type="xs:int" name="CorrelationId" />   </xs:sequence>  </xs:complexType> </xs:schema>

Request Status

Request: This is a POST REST call with XML.

Content-Type: application/xml
url= https://integration.prounlimited.com/api/location/request-status
request type=HTTP POST

Request XML Schema –

<?xml version="1.0" encoding="UTF-8"?> <xs:schema attributeFormDefault="unqualified"  elementFormDefault="qualified" targetNamespace="http://integration.prounlimited.com/xsd"  xmlns:xs="http://www.w3.org/2001/XMLSchema">  <xs:element name="RequestStatus" type="xsd:RequestStatusType"   xmlns:xsd="http://integration.prounlimited.com/xsd" />  <xs:complexType name="CredentialsType">   <xs:sequence>    <xs:element type="xs:string" name="UserName" />    <xs:element type="xs:string" name="Password" />   </xs:sequence>  </xs:complexType>  <xs:complexType name="RequestStatusType">   <xs:sequence>    <xs:element type="xsd:CredentialsType" name="Credentials"     xmlns:xsd="http://integration.prounlimited.com/xsd" />    <xs:element type="xs:int" name="CorrelationId" />   </xs:sequence>  </xs:complexType> </xs:schema>

Response:

Content-Type: application/xml

Response Schema -

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" targetNamespace="http://integration.prounlimited.com/xsd"  xmlns:tns="http://integration.prounlimited.com/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">  <xs:element name="Status" type="tns:Status" />  <xs:complexType name="Status">   <xs:sequence>    <xs:element name="CorrelationId" type="xs:string" form="qualified" />    <xs:element name="RequestStatus" type="tns:status"     form="qualified" />   </xs:sequence>  </xs:complexType>  <xs:simpleType name="status">   <xs:restriction base="xs:string">    <xs:enumeration value="Pending" />    <xs:enumeration value="Errored" />    <xs:enumeration value="Completed" />   </xs:restriction>  </xs:simpleType> </xs:schema>

Department / Cost Center

The following calls have been developed to help you to process incoming Department/Cost Center data feeds. There are many reasons to use this when retrieving Department/Cost Center data. Examples include, updating Department information, Updating Cost Center information, or seeing active Department and Cost Center information.

Process Request

Request:  This is a POST REST call with XML. The response for this call will have a correlationId. Clients can use this correlationId to get the xml results. As the process of creating/updating custom field reference list can take some time, this process has been made asynchronous. Client sends the request and gets a correlationId. The request will be processed on the server and a response will be created. Client can use the correlationId to poll for response.

Content-Type: application/xml
url=https://integration.prounlimited.com/api/costcenter/request
request type=HTTP POST

Request XML Schema –

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0"targetNamespace="http://costcenter.integration.prounlimited.com/xsd"   xmlns:ns1="http://integration.prounlimited.com/xsd" xmlns:tns="http://costcenter.integration.prounlimited.com/xsd"   xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="DepartmentRequest" type="tns:DepartmentRequest" />   <xs:complexType name="Credentials">     <xs:sequence>       <xs:element name="UserName" type="xs:string"/>       <xs:element name="Password" type="xs:string"/>     </xs:sequence>   </xs:complexType>   <xs:complexType name="DepartmentRequest">     <xs:sequence>       <xs:element name="Credentials" type="tns:Credentials"/>       <xs:element name="Departments" type="tns:Departments"/>     </xs:sequence>   </xs:complexType> <xs:complexType name="Departments">     <xs:sequence>       <xs:element name="Department" type="tns:Department" minOccurs="1" maxOccurs="unbounded"/>     </xs:sequence>   </xs:complexType>   <xs:complexType name="Department">     <xs:sequence>       <xs:element type="xs:string" nillable="false" name="DepartmentCode">         <xs:annotation>           <xs:documentation>Code to define department</xs:documentation>         </xs:annotation>       </xs:element>       <xs:element type="xs:string" nillable="false" name="DepartmentName">         <xs:annotation>           <xs:documentation>Department Short Name</xs:documentation>         </xs:annotation>       </xs:element>       <xs:element type="xs:string" nillable="true" name="DepartmentLongName">         <xs:annotation>           <xs:documentation>Full non abbreviated department name</xs:documentation>         </xs:annotation>       </xs:element>       <xs:element type="xs:string" nillable="true" name="Supervisor">         <xs:annotation>           <xs:documentation>Manager GUID</xs:documentation>         </xs:annotation>       </xs:element>       <xs:element nillable="false" name="Active" minOccurs="0">         <xs:simpleType>           <xs:restriction base="xs:string">             <xs:enumeration value="true" />             <xs:enumeration value="false" />           </xs:restriction>         </xs:simpleType>       </xs:element>       <xs:element name="ChildDepartments" type="tns:Departments" minOccurs="0" maxOccurs="unbounded">         <xs:annotation>           <xs:documentation>Sub Departments</xs:documentation>         </xs:annotation>       </xs:element>     </xs:sequence>   </xs:complexType> </xs:schema>

The response for this request will be an acknowledgement with a correlationId. The request will be processed asynchronously and the client can use the correlationId to enquire the status of the request.

Response: If there is an error the following HTTP codes are returned…

400 (Bad Request): This code is returned if the request XML is invalid.

401 (Unauthorized): Returned when the credentials supplied or not valid.

500 (Internal Server Error): Returned when there are catastrophic errors during request processing.

If the XML is accepted then a 200 code is returned. Response will be an XML containing correlationId. This Id represents the request submitted and can be used using request-status query to get the status of the request.

Content-Type: application/xml

Response Schema -

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" targetNamespace="http://integration.prounlimited.com/xsd"   xmlns:tns="http://integration.prounlimited.com/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">   <xs:element name="RequestAcknowledgement" type="tns:RequestAcknowledgement" />   <xs:complexType name="RequestAcknowledgement">    <xs:sequence>     <xs:element name="ResponseCode" type="xs:int" form="qualified" />     <xs:element name="Message" type="xs:string" form="qualified"      minOccurs="0" />     <xs:element name="CorrelationId" type="xs:string" form="qualified" />    </xs:sequence>   </xs:complexType> </xs:schema>

Request Status

Request: This is a POST REST call with XML.

Content-Type: application/xml
url= https://integration.prounlimited.com/api/costcenter/request-status
request type=HTTP POST

Request XML Schema –

<?xml version="1.0" encoding="UTF-8"?> <xs:schema attributeFormDefault="unqualified"   elementFormDefault="qualified" targetNamespace="http://integration.prounlimited.com/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">   <xs:element name="RequestStatus" type="xsd:RequestStatusType"     xmlns:xsd="http://integration.prounlimited.com/xsd" />   <xs:complexType name="CredentialsType">     <xs:sequence>       <xs:element type="xs:string" name="UserName" />       <xs:element type="xs:string" name="Password" />     </xs:sequence>   </xs:complexType>   <xs:complexType name="RequestStatusType">     <xs:sequence>       <xs:element type="xsd:CredentialsType" name="Credentials"         xmlns:xsd="http://integration.prounlimited.com/xsd" />       <xs:element type="xs:int" name="CorrelationId" />     </xs:sequence>   </xs:complexType> </xs:schema>

Response:

Content-Type: application/xml

Response Schema -

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" targetNamespace="http://integration.prounlimited.com/xsd"   xmlns:tns="http://integration.prounlimited.com/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">   <xs:element name="Status" type="tns:Status" />   <xs:complexType name="Status">     <xs:sequence>       <xs:element name="CorrelationId" type="xs:string" form="qualified" />       <xs:element name="RequestStatus" type="tns:status" form="qualified" />     </xs:sequence>   </xs:complexType>   <xs:simpleType name="status">     <xs:restriction base="xs:string">       <xs:enumeration value="Pending" />       <xs:enumeration value="Errored" />       <xs:enumeration value="Completed" />     </xs:restriction>   </xs:simpleType> </xs:schema>

Custom Field Service

The following calls have been developed to help you to process Custom Field Service data feeds. This allows you to create fields that are specific for your particular application and retrieve this information.

Process Request

Request: This is a POST REST call with XML. The response for this call will have a correlationId. Clients can use this correlationId to get the xml results. As the process of creating/updating custom field reference list can take some time, this process has been made asynchronous. Client sends the request and gets a correlationId. The request will be processed on the server and a response will be created. Client can use the correlationId to poll for response.

Content-Type: application/xml
url=https://integration.prounlimited.com/api/cfreflist/request
request type=HTTP POST

Request XML Schema –

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" targetNamespace="http://reference.ws.prounlimited.com/xsd" xmlns:ns1="http://integration.prounlimited.com/xsd" xmlns:tns="http://reference.ws.prounlimited.com/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="ReferenceListRequest" type="tns:ReferenceListRequest" /> <xs:complexType name="Credentials"> <xs:sequence> <xs:element name="UserName" type="xs:string"/>    <xs:element name="Password" type="xs:string"/>   </xs:sequence> </xs:complexType> <xs:complexType name="ReferenceListRequest"> <xs:sequence> <xs:element name="Credentials" type="tns:Credentials"/> <xs:element name="ReferenceList" type="tns:ReferenceList"/> </xs:sequence> </xs:complexType> <xs:complexType name="ReferenceList"> <xs:sequence> <xs:element name="ReferenceListValue" type="tns:ReferenceListValue" nillable="true" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="ReferenceListValue"> <xs:sequence> <xs:element name="ListType" type="xs:string"> <xs:annotation> <xs:documentation>This is the type of reference list this is. Examples are Project Code, WBS, GL Codes</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Value" type="xs:string"> <xs:annotation> <xs:documentation>Reference List Value</xs:documentation> </xs:annotation> </xs:element> <xs:element name="AuxiliaryValue1" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Auxiliary Value 1 associated with Reference list. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="AuxiliaryValue2" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Auxiliary Value 2 associated with Reference list. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="AuxiliaryValue3" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Auxiliary Value 3 associated with Reference list. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="AuxiliaryValue4" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Auxiliary Value 4 associated with Reference list. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="AuxiliaryValue5" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Auxiliary Value 5 associated with Reference list. </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> </xs:schema>

The response for this request will be an acknowledgement with a correlationId. The request will be processed asynchronously and the client can use the correlationId to enquire the status of the request.

Response: If there is an error the following HTTP codes are returned…

400 (Bad Request): This code is returned if the request XML is invalid.

401 (Unauthorized): Returned when the credentials supplied or not valid.

500 (Internal Server Error): Returned when there are catastrophic errors during request processing.

If the XML is accepted then a 200 code is returned. Response will be an XML containing correlationId. This Id represents the request submitted and can be used using request-status query to get the status of the request.

Content-Type: application/xml

Response Schema -

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" targetNamespace="http://integration.prounlimited.com/xsd"   xmlns:tns="http://integration.prounlimited.com/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">   <xs:element name="RequestAcknowledgement" type="tns:RequestAcknowledgement" />   <xs:complexType name="RequestAcknowledgement">    <xs:sequence>     <xs:element name="ResponseCode" type="xs:int" form="qualified" />     <xs:element name="Message" type="xs:string" form="qualified"      minOccurs="0" />     <xs:element name="CorrelationId" type="xs:string" form="qualified" />    </xs:sequence>   </xs:complexType> </xs:schema>

Request Status

Request: This is a POST REST call with XML.

Content-Type: application/xml
url= https://integration.prounlimited.com/api/cfreflist/request-status
request type=HTTP POST

Request XML Schema –

<?xml version="1.0" encoding="UTF-8"?> <xs:schema attributeFormDefault="unqualified"  elementFormDefault="qualified" targetNamespace="http://integration.prounlimited.com/xsd"  xmlns:xs="http://www.w3.org/2001/XMLSchema">  <xs:element name="RequestStatus" type="xsd:RequestStatusType"   xmlns:xsd="http://integration.prounlimited.com/xsd" />  <xs:complexType name="CredentialsType">   <xs:sequence>    <xs:element type="xs:string" name="UserName" />    <xs:element type="xs:string" name="Password" />   </xs:sequence>  </xs:complexType>  <xs:complexType name="RequestStatusType">   <xs:sequence>    <xs:element type="xsd:CredentialsType" name="Credentials"     xmlns:xsd="http://integration.prounlimited.com/xsd" />    <xs:element type="xs:int" name="CorrelationId" />   </xs:sequence>  </xs:complexType> </xs:schema>

Response:

Content-Type: application/xml

Response Schema -

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" targetNamespace="http://integration.prounlimited.com/xsd" xmlns:tns="http://integration.prounlimited.com/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Status" type="tns:Status" /> <xs:complexType name="Status"> <xs:sequence> <xs:element name="CorrelationId" type="xs:string" form="qualified" /> <xs:element name="RequestStatus" type="tns:status" form="qualified" /> </xs:sequence> </xs:complexType> <xs:simpleType name="status"> <xs:restriction base="xs:string"> <xs:enumeration value="Pending" /> <xs:enumeration value="Errored" /> <xs:enumeration value="Completed" /> </xs:restriction> </xs:simpleType> </xs:schema>

Worker

The following calls have been developed to help you to process outgoing worker data feeds. There are many reasons to use this when retrieving Worker data. Examples include, updating Onboarding, Offboarding and maintaining Worker Lifecycle events.

Process Request

Request:  This is a POST REST call with XML. The response for this call will have a correlationId. Clients can use this correlationId to get xml results. As the process of updating/creating managers can take some time, this process has been made asynchronous. Client sends the request and gets a correlationId. The request will be processed on the server and a response will be created. Client can use the correlationId to poll for response.

Content-Type: application/xml
url=https://integration.prounlimited.com/api/worker/outbound/request
request type=HTTP POST

Request XML Schema –

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" targetNamespace="http://worker.outbound.ws.prounlimited.com/xsd" xmlns:ns1="http://integration.prounlimited.com/xsd" xmlns:tns="http://worker.outbound.ws.prounlimited.com/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="WorkerRequest" type="tns:WorkerRequest" /> <xs:complexType name="Credentials"> <xs:sequence> <xs:element name="UserName" type="xs:string"/> <xs:element name="Password" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="WorkerRequest"> <xs:sequence> <xs:element name="Credentials" type="tns:Credentials"/> </xs:sequence> </xs:complexType> </xs:schema>

The response for this request will be an acknowledgement with a correlationId. The request will be processed asynchronously and the client can use the correlationId to enquire the status of the request.

Response: If there is an error the following HTTP codes are returned…

400 (Bad Request): This code is returned if the request XML is invalid.

401 (Unauthorized): Returned when the credentials supplied or not valid.

500 (Internal Server Error): Returned when there are catastrophic errors during request processing.

If the XML is accepted then a 200 code is returned. Response will be an XML containing correlationId. This Id represents the request submitted and can be used using request-status query to get the status of the request and final payload.

Content-Type: application/xml

Response Schema -

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" targetNamespace="http://integration.prounlimited.com/xsd" xmlns:tns="http://integration.prounlimited.com/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="RequestAcknowledgement" type="tns:RequestAcknowledgement" /> <xs:complexType name="RequestAcknowledgement"> <xs:sequence> <xs:element name="ResponseCode" type="xs:int" form="qualified" /> <xs:element name="Message" type="xs:string" form="qualified" minOccurs="0" /> <xs:element name="CorrelationId" type="xs:string" form="qualified" /> </xs:sequence> </xs:complexType> </xs:schema>

Request Status

Request: This is a POST REST call with XML.

Content-Type: application/xml
url= https://integration.prounlimited.com/api/worker/outbound/request-status
request type=HTTP POST

Request XML Schema –

<?xml version="1.0" encoding="UTF-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://integration.prounlimited.com/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="RequestStatus" type="xsd:RequestStatusType" xmlns:xsd="http://integration.prounlimited.com/xsd" /> <xs:complexType name="CredentialsType"> <xs:sequence> <xs:element type="xs:string" name="UserName" /> <xs:element type="xs:string" name="Password" /> </xs:sequence> </xs:complexType> <xs:complexType name="RequestStatusType"> <xs:sequence> <xs:element type="xsd:CredentialsType" name="Credentials" xmlns:xsd="http://integration.prounlimited.com/xsd" /> <xs:element type="xs:int" name="CorrelationId" /> </xs:sequence> </xs:complexType> </xs:schema>

Response:

Content-Type: application/xml

Response Schema -

<?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="workers"> <xs:complexType> <xs:sequence> <xs:element name="worker" type="workerInfo" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="worker" type="workerInfo"/> <xs:complexType name="workerInfo"> <xs:sequence> <xs:element name="workerId" type="xs:string"/> <xs:element name="firstName" type="xs:string"/> <xs:element name="lastName" type="xs:string"/> <xs:element name="middleInitial" type="xs:string" minOccurs="0"/> <xs:element name="email" type="xs:string" minOccurs="0"/> <xs:element name="primaryPhone" type="xs:string" minOccurs="0"/> <xs:element name="mobilePhone" type="xs:string" minOccurs="0"/> <xs:element name="workPhone" type="xs:string" minOccurs="0"/> <xs:element name="birthMonth" type="xs:int" minOccurs="0"/> <xs:element name="birthDay" type="xs:int" minOccurs="0"/> <xs:element name="birthYear" type="xs:int" minOccurs="0"/> <xs:element name="emergencyContact" type="contactInfo" minOccurs="0"/> <xs:element name="requisitions" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="requisition" type="requisitionInfo" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="customFields" type="customFieldsInfo" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="contactInfo"> <xs:sequence> <xs:element name="name" type="xs:string" minOccurs="0"/> <xs:element name="Phone" type="xs:string" minOccurs="0"/> <xs:element name="email" type="xs:string" minOccurs="0"/> <xs:element name="address" type="addressInfo" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="addressInfo"> <xs:sequence> <xs:element name="addressLine1" type="xs:string" minOccurs="0"/> <xs:element name="addressLine2" type="xs:string" minOccurs="0"/> <xs:element name="city" type="xs:string" minOccurs="0"/> <xs:element name="state" type="xs:string" minOccurs="0"/> <xs:element name="postalCode" type="xs:string" minOccurs="0"/> <xs:element name="country" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="requisitionInfo"> <xs:sequence> <xs:element name="requisitionId" type="xs:string"/> <xs:element name="startDate" type="xs:string" minOccurs="0"/> <xs:element name="actualEndDate" type="xs:string" minOccurs="0"/> <xs:element name="estimatedEndDate" type="xs:string" minOccurs="0"/> <xs:element name="jobCategory" type="xs:string" minOccurs="0"/> <xs:element name="jobTitle" type="xs:string" minOccurs="0"/> <xs:element name="jobCode" type="xs:string" minOccurs="0"/> <xs:element name="departmentId" type="xs:string" minOccurs="0"/> <xs:element name="departmentCode" type="xs:string" minOccurs="0"/> <xs:element name="departmentName" type="xs:string" minOccurs="0"/> <xs:element name="manager" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="GUID" type="xs:string"/> <xs:element name="firstName" type="xs:string"/> <xs:element name="lastName" type="xs:string"/> <xs:element name="email" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="supplier" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="supplierId" type="xs:string"/> <xs:element name="supplierName" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="location" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="siteName" type="xs:string" minOccurs="0"/> <xs:element name="address" type="addressInfo" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="billingItems" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="billingItem" type="billingItemInfo" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="CustomFields" type="customFieldsInfo" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="billingItemInfo"> <xs:sequence> <xs:element name="billingItemId" type="xs:string"/> <xs:element name="billRate" type="xs:string" minOccurs="0"/> <xs:element name="OTRate" type="xs:string" minOccurs="0"/> <xs:element name="workedHour" type="xs:string" minOccurs="0"/> <xs:element name="dateInvoiced" type="xs:string" minOccurs="0"/> <xs:element name="billStatus" type="xs:string" minOccurs="0"/> <xs:element name="statusReason" type="xs:string" minOccurs="0"/> <xs:element name="hourPerWeek" type="xs:string" minOccurs="0"/> <xs:element name="hourPerDay" type="xs:string" minOccurs="0"/> <xs:element name="rateApplicationType" type="xs:string" minOccurs="0"/> <xs:element name="currency" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="customFieldsInfo"> <xs:sequence> <xs:element name="customField" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="name"/> <xs:element type="xs:string" name="value"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType>

Your Evolution of Work Starts Here