About

This section will cover APIs needed for every action pertaining to the Job such as Create, Update, Post to marketplace, Fetch details, Enable/Disable in Marketplace, Lock/Unlock job from marketplace, Cancel, Assign/Unassign job to engineer, create Visits, Approve/Reject visits created by engineer and Complete the job. To make these API requests, you combine the HTTP GET, POST, PUT and PATCH methods, the URL to API service, query parameter(s), HTTP request headers and payload data.


Query Parameters

These query parameters are common to most APIs with few exceptions which will be mentioned under those respective API sections.

Parameter Name Datatype Description
opportunityId string The unique ID of the job generated on implementing Create Job API. E.g:123ab123abcd12a1234ab12345
workOrderNumber string The unique number of the job generated on implementing Create Job API. E.g:Wxxxxxxxxxxxx
endClientOrderNumber string The unique number you wish to give to your job to identify easily.

API Responses

Each API responses return generic HTTP code/messages along with two other elements under response body: payload and result. payload could be either an array or an object depending on the API request; and result consists of specific FE business scenario related status code/messages.(Described in detail under individual APIs).

HTTP Status Codes

Status code Message description
200 Success
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
500 Internal Server Error

Note: Detailed description of each status code is given under respective APIs below.

Status code Message description
301 Invalid Company User
302 Invalid User
303 Invalid scheduled date
304 Missing address
305 Invalid job
306 Cancelled job
307 Completed or Closed job
308 Minimum job payment should be $10
309 Only 20 custom fields are allowed
310 Duplicate custom fields
311 Cannot update route of an active job
312 This operation is not allowed on current job
313 Not enough credits availabl
314 Minimum of one visit is required to complete a job
315 Job not locked
316 Job can be locked contracted with engineer
317 Visits present for the job
318 Job not in assigned status
319 Job in not in active status
320 Job in cancelled status
321 Unauthorized action
322 Not allowed to erase job as visits exists
323 Duplicate project name
324 Pay, address, skills update not allowed on accepted job
325 Companies credit is not enabled
326 Invalid opportunity content
327 Company account has past due
328 Job is in locked status
329 No data found
331 Per Visit allowance is not allowed as pay is fixed
332 Custom Group Name is Mandatory
333 Custom Group should have atleast one field
334 Allowed Allowance type is Fixed or Per Visit
335 Address1 is mandatory in parsed address

APIs

1. Create Job

 POST    /job

This endpoint will create a new job either in draft or active status. To create a job you need to send all the details as per schema specifications shown in Sample Request. If job is saved successfully, opportunityId and workOrderNumber will be returned in response.


Note:

  • On performing CREATE or UPDATE request, the job is either saved as draft or created in active status.
  • When the job is posted in active status then it is visible in Marketplace as well.
  • The indicator publishToMarketPlace in CREATE/UPDATE job request body, if set to false/true then creates job in draft/active status respectively.

Note: Sample Request and Responses for this API are shown under UPDATE JOB Api section.


2. Update Job

PUT    /job?endClientOrderNumber=<value>

This endpoint will update the job, but only if it is in draft status. To update you will need to enter all the details per schema specifications shown in Sample Request, and pass either endClientOrderNumber / workOrderNumber / opportunityId.

You cannot update an active Job!


i. Sample Request

Both Create and Update Job APIs will have same Response body.

 curl -X POST \
  https://sandboxapi.fieldengineer.io/v1/job \
  -H 'Content-Type: application/json' \
  -H 'apiKey: <API Key>' \
  -H 'cache-control: no-cache' \
  -H 'username: <Company eMail ID>' \
  -d '{<Request_json>}'

ii. Sample Request Body

     {
  "title": "FieldEngineer",
  "scheduledOn": "2021-10-06 12:58:59",
  "name": "Install adtran",
  "projectName": "ABCxxxx Inc",
  "jobType": "REMOTE",
  "endClientOrderNumber": "ABCxxxx",
  "subuserId": "81da89f6e335bae36ce068e32",
  "address": {
    "parsed": {
      "address1": "10 Corporate Place South",
      "address2": "Suite 105",
      "city": "Piscataway",
      "country": "US",
      "subDivision": "NJ",
      "zip": "08854"
    },
    "unParsed": "10 Corporate Place South, Piscataway, NJ 08854, USA"
  },
  "qualification": [
    {
      "isMandatory": false,
      "name": "CCIE Collaboration",
      "id": "h763b834e69j8egjb13169j5"
    },
    {
      "isMandatory": true,
      "name": "CCIE Data Center",
      "id": "5b6c7b4b5acbf4c440f444c91"
    }
  ],
  "equipment": [
    {
      "name": "Cisco Console Cable",
      "id": "233f61e058ad77aa5a5be4ffe"
    },
    {
      "id": "9d7cee3acc0f750bb89ded7af",
      "name": "Optical Fiber Cable"
    }
  ],
  "routing": "platformIntelligence",
  "routingId": "817f5b9cea44968587fd66e94",
  "pay": {
    "perHour": {
      "rate": "85",
      "hours": 1,
      "maxHours": 4
    },
    "fixed": null
  },
  "allowance": {
    "type": "Per Visit",
    "amount": 525,
    "numOfVisits": 2
  },
  "contact": [
    {
      "email": "[email protected]",
      "extension": "10",
      "firstName": "John",
      "lastName": "Doe",
      "mobile": "1234567890",
      "phone": "2323242342",
      "type": "PointOfContact"
    }
  ],
  "description": "Tools to Carry:Field Engineer Must carry Laptop, Console Cable for Adtran/Cisco Router",
  "task": [
    {
      "description": "Rack & Stack Cisco router in Rack",
      "isConfirmRequired": false,
      "isMediaRequired": true,
      "isSignatureRequired": false
    },
    {
      "description": "Take signature of onsite contact",
      "isConfirmRequired": false,
      "isMediaRequired": false,
      "isSignatureRequired": true
    },
    {
      "description": "Need to confirm if server room has space for the new router installation ",
      "isConfirmRequired": true,
      "isMediaRequired": false,
      "isSignatureRequired": false
    }
  ],
  "planning": [
    {
      "description": "Review the attached documents before going onsite"
    }
  ],
  "confidentialData": {
    "description": "PORT HANDOFF INFO LEC circuit ID: 12/ABCD /123450//SB Ord: AB12A0A8 Media:"
  },
  "internalData": {
    "description": "Billing details - 3*$50=$150"
  },
  "customFields": {
          "groupName": "custom group 1",
          "fields": [
            {
              "name": "Custom field 1",
              "value": "Devices",
              "private": true,
              "isPrivate": true
            },
            {
              "name": "Custom field 2",
              "value": "Steps",
              "private": true,
              "isPrivate": true
            }
          ]
        },
  "publishToMarketPlace": true,
  "fundingSource": "CASH"
}

iii. Sample Response

Both Create and Update Job APIs will have same Response body.

{
    "payload": {
        "opportunityId": "<opportunityId>",
        "workOrderNumber": "<Work-Order-Number>"
    },
    "result": {
        "code": "200",
        "message": "success"
    }
}

iv. Request Payload Details

This is applicable for both Create and Update Job APIs.

Element Name Data Type Description
title string Job title
scheduledOn string Job scheduled date and time

Format: YYYY-MM-DD HH:MM:SS
(2020-04-20 05:58:59)

name string Job type
jobType string Indicating if Job is Remote or Onsite

Valid values:
- REMOTE
- JOB
projectName string Name of the project
endClientOrderNumber string End client order number
subuserId string The id generated once the subuser is created. This id is to be used under this field while posting the job to identify which user created and is handling the job.

Types of subusers are: Administrator, Operator, Executive, Billing, Project Manager.

NOTE: You can get subuserId from 'Retrieve Subuser details' API (i.e. GET /subuser/retrieve) in this document.
address object Service location address object with two possible ways to send address.

1. parsed address (individual address fields)
2. unparsed address(entire address in a single line)

NOTE: parsed and unparsed are not mutually exclusive, if parsed address type exists then system will always consider parsed, if parsed is null only then system considers the unparsed.
Parsed address details

The datatype of parsed address is object. Following are its fields.

Element Name Datatype Description
address1 string address line 1
address2 string address line 2
city string city
country string country, in any format like 2 or 3 char code or full country name
subDivision string state, 2 char or full state name
zip string Zip/postal code
Unparsed address details
Element Name Datatype Description
unParsed string Entire address in a single line.
For e.g: 10 Corporate Place South, Suite 1-05,
Piscataway, NJ 08854
qualification array Qualifications are the skills required for performing this job.
Fields
Element Name Datatype Description
isMandatory boolean true if qualification is mandatory else false
name string Qualification name
id string Unique ID of the qualification. This ID can be found from the Qualifications List Api.
equipment array If engineer needs to be aware about bringing any equipment onsite, or need to have for the remote work, then it can be specified here.
Fields
Element Name Datatype Description
name string Name of the equipment needed to perform the job
id string Unique ID of the equipment. The ID can be found from the Equipments List Api for specific equipments.
routing string How do you want to Route this job once posted?
Valid values
Routing type Value
Platform Intelligence PLATFORM_INTELLIGENCE
Marketplace Pool marketplacePool
Private Pool internalPool
Custom Routing customRouting
routingId string Routing ID is the 'talentId' example: 1dbb8e6abd153226703333b19 of the routing pools created i.e.Marketplace pool, Private pool and Custom routing (routingId is not applicable to jobs with Platform Intelligence routing type).

When you want to create job using one of these routing types then you need to create the respective routing pools first. On creating the pool you will get the talentId which can be used in routingId field.
pay object Pay details can be provided `Per Hour`/ `Fixed` amount.
Per Hour pay details

The datatype of Per Hour pay is object. Select this type of payment if you want to pay per hour. Following are its fields.

Element Name Datatype Description
hours numeric Number of hours
maxHours numeric Maximum number of hours you want to allocate for this job
rate numeric Rate per hour
Fixed pay details

The datatype of Fixed pay is object. Select this type of payment if you want to pay fixed amount for the job no matter how many visits/hours the job took to complete. Following are its fields.

Element Name Datatype Description
totalAmount numeric Total fixed cost amount
allowance object Allowance amount paid to the engineer.
Fields
Element Name Datatype Description
type string Allowance type

Valid values:
- Fixed
- Per Visit
amount number Allowance amount
numOfVisits number Number of visits for allowed amount. Applicable when allowance type is Per Visit
contact array Point of contact(s) associated with the job.
Fields
Element Name Datatype Description
email string
extension string
firstName string
lastName string
mobile string
phone string
type string Contact type - for e.g. onsite, point of contact
description string Job description
task object Tasks serve as a to do list for your engineer. You can track your engineer's progress as he completes task from his app.
Fields
Element Name Datatype Description
description string task description
isMediaRequired boolean Indicator if any media is required to be uploaded to complete this task
isSignatureRequired boolean Indicator if signature is required to complete this task
isConfirmRequired boolean Indicator if confirmation is required after completing the job
planning object
Fields
Element Name Datatype Description
description string Planning items is, all information pertinent to the job pror to beginning. For example, equipment availability, shipping information
confidentialData object
Fields
Element Name Datatype Description
description string Provide if any confidential information associated to the job which will be visible to an engineer who accepts the job
internalData object
Fields
Element Name Datatype Description
description string Provide any information associated to the job which will be visible only to your company internal team
customFields object Optional custom fields to send if any
Fields
Element Name Datatype Description
groupName string Group name associated with custom fields.

Reusable group with set of custom fields can be created and reused for future jobs. API will take care of creating/modifying a group. Name a group with set of custom fields and reuse the same group every time you have same set of custom fields else create new
fields array Array of custom fields
Element Name Datatype Description
name string Name of the custom field
value string Value of the custom field
isPrivate boolean true/false

true, if this field is not to be displayed to assigned engineer
publishToMarketPlace boolean Setting it to 'true' will create the job in active status, and 'false' in draft status.
fundingSource string You can pay visits/jobs through two types of funding sources either credit or cash.

Valid values:
- CREDIT
- CASH

v. Response Status Codes

Status code Message Description
201 Created You will get this status code if the job was created/updated successfully along with opportunityId and workOrderNumber in api response json.

3. Post Job

PATCH    /workorder/status/active?endClientOrderNumber=<value>

This API is used to change the status of the job from Draft to Active. You can choose to either post it to marketplace or not, by using the field marketPlace.

i. Query parameters

This API takes any one of these parameters as input.

Element Name Datatype Description
opportunityId string The unique ID of the job generated on implementing Create Job API. E.g:123ab123abcd12a1234ab12345
workOrderNumber string The unique number of the job generated on implementing Create Job API. E.g:Wxxxxxxxxxxxx
endClientOrderNumber string The unique number you wish to give to your job to identify easily.

ii. Sample Request

 curl -X PATCH \
  https://sandboxapi.fieldengineer.io/v1/workorder/status/active?endClientOrderNumber=<value> \
  -H 'Content-Type: application/json' \
  -H 'apiKey: <API Key>' \
  -H 'cache-control: no-cache' \
  -H 'username: <Company eMail ID>' \
  -d '{}'

iii. Sample Request Body

{
  "fundingSource": "CASH",
  "routingConfig": [
    {
      "marketPlace": true,
      "talentId": "1dbb8e6abd153226703333b19",
      "waitTimeInSec": 120
    }
  ]
}

iii. Sample Response

{
    "payload": null,
    "result": {
        "code": "200",
        "message": "Success"
    }
}

iv. Request Payload Details

Element Name Data Type Description
fundingSource string You can pay visits/jobs through two types of funding sources either Credit or Cash.
Valid values
Values
CREDIT
CASH
routingConfig object Here by specifying certain values you get to choose to either post the job to marketplace or not, if yes then which talent pool and how long you want the job to stay in that routing type.
Fields
Element Name Datatype Description
marketPlace boolean If set to 'true' the job will be posted to marketplace and will be seen by engineers, if set to 'false' then it will not be posted to marketplace, will remain in the status(draft/active) it was in when created and will not be seen by engineers to apply.
talentId string The talent pool id generated when either Marketplace pool or Private pool is created and engineers are added to these pools. Example: 1dbb8e6abd153226703333b19. This field is not applicable if the job was posted using Platform Intelligence as routing type. Field only applicable for jobs with routing type: Marketplace Pool, Private pool and Custom routing.
waitTimeInSec numeric The time period for which you want the job to be seen by the engineers of selected talent id (marketplace pool/ private pool). Example: 120. After the time expires the job will automatically use Platform Intelligence routing type and be seen by all engineers. Field only applicable for jobs with routing type: Marketplace Pool, Private pool and Custom routing.

v. Response Status Codes

Status code Message Description
204 No Content
301 Invalid Company User Possible reasons to get this status code are:
- Invalid company user
- You cannot update accepted job (pay, address, skills)
- Company's credit is not enabled
- Your account is past due, credit funds cannot be accessed at the moment. Please contact [email protected]
- Minimum job payment should be $10
- There is not enough credit available to complete this transaction
- Not a valid job
- Job is cancelled
- Job is completed or closed
- Job is currently locked, please unlock it to perform any actions.

4. Retrieve Job Details

GET    /job?endClientOrderNumber=<value>

Use this method to fetch particular Job details using either workOrderNumber /opportunityId /endClientOrderNumber.

This api can fetch details of Jobs in Draft or Active status.

i. Query Parameters

This API takes any one of these parameters as input.

Element Name Datatype Description
opportunityId string The unique ID of the job generated on implementing Create Job API. E.g:123ab123abcd12a1234ab12345
workOrderNumber string The unique number of the job generated on implementing Create Job API. E.g:Wxxxxxxxxxxxx
endClientOrderNumber string The unique number you wish to give to your job to identify easily.

ii. Sample Request

curl -X GET \
  https://sandboxapi.fieldengineer.io/v1/job?endClientOrderNumber=<value> \
  -H 'apiKey: <API Key>' \
  -H 'cache-control: no-cache' \
  -H 'Content-Type: application/json' \
  -H 'username: <Company eMail ID>'

iii. Sample Response

{
  "payload": [
    {
      "workOrderNumber": "Wxxxxxxxxxxxx",
      "opportunityId": "81a42a8933956a64d2e96816d",
      "status": "active",
      "job": {
        "title": "FieldEngineer",
        "scheduledOn": "2020-06-28 10:56:38",
        "name": "Install adtran",
        "projectName": "ABCProject Inc",
        "jobType": "JOB",
        "endClientOrderNumber": "ABCxxxxxx",
        "address": {
          "parsed": {
            "address1": "10 Corporate Place South",
            "address2": "Suite 105",
            "city": "Piscataway",
            "subDivision": "NJ",
            "country": "US",
            "zip": "08854"
          },
          "unParsed": "10 Corporate Place South, Piscataway, NJ 08854, United States",
          "latitude": 32.42111,
          "longitude": -110.98509,
          "formattedAddress": "10 Corporate Place South, Piscataway, NJ 08854, United States"
        },
        "qualification": [
          {
            "name": "CCIE Data Center",
            "isMandatory": true,
            "id": null
          },
          {
            "name": "CCIE Collaboration",
            "isMandatory": false,
            "id": null
          }
        ],
        "routing": "PLATFORM_INTELLIGENCE",
        "routingId": null,
        "pay": {
          "perHour": {
            "rate": 85,
            "hours": 1,
            "minutes": 40,
            "maxHours": 4,
            "maxMinutes": 50
          },
          "fixed": null
        },
        "allowance": {
          "type": "Fixed",
          "amount": 10,
          "numOfVisits": 0
        },
        "equipment": [
      {
        "id": "9d7cee3acc0f750bb89ded7af",
        "name": "Digital Multi Meter"
      },
      {
        "id": "233f61e058ad77aa5a5be4ffe",
        "name": "Digital Camera"
      }
    ],
        "contact": [
          {
            "type": "PRIMARY",
            "firstName": "Jenny",
            "lastName": "Doe",
            "email": "[email protected]",
            "phone": "1234567890",
            "extension": "12",
            "mobile": "2222222222"
          },
          {
            "type": "Onsite",
            "firstName": "John",
            "lastName": "Doe",
            "email": "[email protected]",
            "phone": "1234567890",
            "extension": "2",
            "mobile": "2222222222"
          }
        ],
        "description": "Rack Stack Power CPE - The router should always come preconfigured. The technician will mount the router and 66 block on the wall Adtran/Cisco Switches.SOW:Install ",
        "task": [
          {
            "description": "Need to confirm if server room has space for the new router installation  ",
            "isMediaRequired": false,
            "isSignatureRequired": false,
            "isConfirmRequired": true
          },
          {
            "description": "Rack & Stack Cisco router in Rack",
            "isMediaRequired": true,
            "isSignatureRequired": false,
            "isConfirmRequired": false
          },
          {
            "description": "Take signature of onsite contact",
            "isMediaRequired": false,
            "isSignatureRequired": true,
            "isConfirmRequired": false
          }
        ],
        "planning": [
          {
            "description": "Review the attached documents before going onsite"
          },
          {
            "description": "PORT HANDOFF INFO LEC circuit ID: 12/ABCD /123456ABSB Ord AB12B0C2 Media"
          }
        ],
        "confidentialData": {
          "description": "PORT HANDOFF INFO LEC circuit ID 38KQGN638916SB"
        },
        "internalData": {
          "description": "Billing details - 3*$50=$150"
        },
        "customFields": {
          "groupName": "custom group 1",
          "fields": [
            {
              "name": "Custom field 1",
              "value": "Devices",
              "private": true
            },
            {
              "name": "Custom field 2",
              "value": "Steps",
              "private": true
            }
          ]
        },
        "fundingSource": "cash"
      }
    }
  ],
  "result": {
    "code": "200",
    "message": "success"
  }
}

5. Enable Job in Marketplace

PATCH      /workorder/status/marketplace?opportunityId=<value>

This API is used to enable/disable the active jobs into/from marketplace.

i. Query Parameters

This API takes any one of these parameters as input.

Element Name Datatype Description
opportunityId string The unique ID of the job generated on implementing Create Job API. E.g:123ab123abcd12a1234ab12345
workOrderNumber string The unique number of the job generated on implementing Create Job API. E.g:Wxxxxxxxxxxxx
endClientOrderNumber string The unique number you wish to give to your job to identify easily.

ii. Sample Request

curl -X PATCH \
https://sandboxapi.fieldengineer.io/v1/workorder/status/marketplace?opportunityId=<value> \
-H 'Content-Type: application/json' \
-H 'apiKey: <API Key>' \
-H 'cache-control: no-cache' \
-H 'username: <Company eMail ID>' \
-d '{"action":<value>}'

iii. Sample Response

{
  "payload": null,
  "result": {
    "code": "200",
    "message": "success"
  }
}

iv. Request Payload Details

Element Name Datatype Description
action boolean false to publish job to marketplace, true to remove it from marketplace and just keep back in active status

v. Response Status Codes

Status code Message Description
204 No Content
301 Invalid Company User Possible reasons to get this status code are:
- Invalid company user
- Not a valid job
- Job is not active
- Job is cancelled
- Job is completed or closed
- Job is currently locked, please unlock to perform any actions.

6. Lock Job

PATCH  /workorder/status/lock?endClientOrderNumber=<value>

This API can be used to set a temporary lock on the active job. Once the job is locked, it will not be visible to engineers any more, no further activities/action can happen, it will just be frozen in the status it was in when locked until its unlocked.

i. Query Parameters

This API takes any one of these parameters as input.

Element Name Datatype Description
opportunityId string The unique ID of the job generated on implementing Create Job API. E.g:123ab123abcd12a1234ab12345
workOrderNumber string The unique number of the job generated on implementing Create Job API. E.g:Wxxxxxxxxxxxx
endClientOrderNumber string The unique number you wish to give to your job to identify easily.

ii. Sample Request

curl -X PATCH \
https://sandboxapi.fieldengineer.io/v1/workorder/status/lock?endClientOrderNumber=<value> \
-H 'Content-Type: application/json' \
-H 'apiKey: <API Key>' \
-H 'cache-control: no-cache' \
-H 'username: <Company eMail ID>'

iii. Sample Response

{
  "payload": {
    "opportunityId": "<Opportunity_Id>"
  },
  "result": {
    "code": "200",
    "message": "success"
  }
}

iv. Response Status Codes

Status code Message Description
204 No Content
301 Invalid Company User Possible reasons to get this status code are:
- Invalid company user
- Not a valid job
- You are not allowed to do this operation on current job
- Job is cancelled
- Job is completed or closed
- Job can be locked only after job is contracted with engineer.

7. Unlock Job

PATCH     /workorder/status/unlock?endClientOrderNumber=<value>

Use this API to Unlock the job back to active status and resume normal actions on it such as it will now again be available for engineers to apply, can be assigned, and start working on visits till completion.

i. Query Parameters

This API takes any one of these parameters as input.

Element Name Datatype Description
opportunityId string The unique ID of the job generated on implementing Create Job API. E.g:123ab123abcd12a1234ab12345
workOrderNumber string The unique number of the job generated on implementing Create Job API. E.g:Wxxxxxxxxxxxx
endClientOrderNumber string The unique number you wish to give to your job to identify easily.

ii. Sample Request

curl -X PATCH \
https://sandboxapi.fieldengineer.io/v1/workorder/status/unlock?endClientOrderNumber=<value> \
-H 'Content-Type: application/json' \
-H 'apiKey: <API Key>' \
-H 'cache-control: no-cache' \
-H 'username: <Company eMail ID>'

iii. Sample Response

{
  "payload": {
    "opportunityId": "<Opportunity_Id>"
  },
  "result": {
    "code": "200",
    "message": "success"
  }
}

iv. Response Status Codes

Status code Message Description
204 No Content
301 Invalid Company User Possible reasons to get this status code are:
- Invalid company user
- Not a valid job
- You are not allowed to do this operation on current job
- Job is cancelled
- Job is completed or closed
- Job is not locked

8. Cancel Job

PATCH     /workorder/status/cancel?endClientOrderNumber=<value>

This API will change the draft/active job to *cancel* status i.e. the job will be cancelled or discarded from job market from use.

i. Query Parameters

One of these parameters can be passed in the url to cancel the job:

Element Name Datatype Description
opportunityId string The unique ID of the job generated on implementing Create Job API. E.g:123ab123abcd12a1234ab12345
workOrderNumber string The unique number of the job generated on implementing Create Job API. E.g:Wxxxxxxxxxxxx
endClientOrderNumber string The unique number you wish to give to your job to identify easily.

ii. Sample Request

curl -X PATCH \
https://sandboxapi.fieldengineer.io/v1/workorder/status/cancel?endClientOrderNumber=<value> \
-H 'Content-Type: application/json' \
-H 'apiKey: <API Key>' \
-H 'cache-control: no-cache' \
-H 'username: <Company eMail ID>'

iii. Sample Response

{
  "payload": null,
  "result": {
    "code": "200",
    "message": "Success"
  }
}

Depending on the status of the job prior to calling this method, the success response messages are as follows:

Success Response Messages
Workorder Status Message Code Message
draft 200 1 of 1 discarded
active 200 Success

iv. Response Status Codes

Status code Message Description
204 No Content
301 Invalid Company User Possible reasons to get this status code are:
- Invalid company user
- Not a valid job
- You are not authorized to perform this action
- Job is already cancelled
- Job is completed or closed
- Not allowed to erase job, visit exists.
- Job is currently locked, please unlock it to perform any actions.
- You are not allowed to do this operation on current job.

9. Job Applicants Details

GET     /workorder/applicants?endClientOrderNumber=<value>

Use this API to get the details of all the engineers applied to the job such as how many engineers have applied, each engineer details including how many clients they have worked for, personal details, skills details etc.

i. Query Parameters

This API takes any one of these parameters as input.

Element Name Datatype Description
opportunityId string The unique ID of the job generated on implementing Create Job API. E.g:123ab123abcd12a1234ab12345
workOrderNumber string The unique number of the job generated on implementing Create Job API. E.g:Wxxxxxxxxxxxx
endClientOrderNumber string The unique number you wish to give to your job to identify easily.

ii. Sample Request

curl -X GET \
https://sandboxapi.fieldengineer.io/v1/workorder/applicants?endClientOrderNumber=<value> \
-H 'Content-Type: application/json' \
-H 'apiKey: <API Key>' \
-H 'cache-control: no-cache' \
-H 'username: <Company eMail ID>'

iii. Sample Response

{
  "payload": [
    {
      "id": "Pxxxxxxxxx",
      "firstName": "John",
      "lastName": "Doe",
      "abountMe": "Lorem Ipsum",
      "contacts": [
        {
          "type": "Cell-Phone",
          "dialCode": "1",
          "number": "1234567890"
        },
        {
          "type": "Home-Phone",
          "dialCode": "1",
          "number": "1234567890"
        }
      ],
      "numOfClientsWorked": 3,
      "numOfJobsWorked": 87,
      "address": {
        "city": "Piscataway",
        "subDivision": "NJ",
        "zip": "08854",
        "country": {
          "code": "US",
          "name": "United States"
        }
      },
      "skills": [
        {
          "name": {
            "shortName": "CCNA",
            "longName": "Cisco Certified Network Associate Wireless: CCNA Wireless"
          },
          "matched": false
        },
        {
          "name": {
            "shortName": "CCNA",
            "longName": "Cisco Certified Network Associate Service Provider (CCNA SP)"
          },
          "matched": false
        },
        {
          "name": {
            "shortName": "CCNP",
            "longName": "Cisco Certified Network Associate Voice: CCNA Voice"
          },
          "matched": false
        }
      ]
    },
    {
      "id": "Pxxxxxxxxx",
      "firstName": "Jane",
      "lastName": "Doe",
      "abountMe": "search",
      "contacts": [
        {
          "type": "Cell-Phone",
          "dialCode": "1",
          "number": "1234567890"
        }
      ],
      "numOfClientsWorked": 5,
      "numOfJobsWorked": 180,
      "address": {
        "city": "Piscataway",
        "subDivision": "NJ",
        "zip": "08854",
        "country": {
          "code": "US",
          "name": "United States"
        }
      },
      "skills": [
        {
          "name": {
            "shortName": "CCNA",
            "longName": "Cisco Certified Network Associate Wireless: CCNA Wireless"
          },
          "matched": false
        }
      ]
    }
  ],
  "result": {
    "code": "200",
    "message": "success"
  }
}

iv. Response Status Codes

Status code Message Description
204 No Content
301 Invalid Company User Possible reasons to get this status code are:
- Invalid company user
- Not a valid job
- Not a valid user
- You are not allowed to do this operation on current job.

10. Assign Job

PATCH    /workorder/status/engineer/assign?endClientOrderNumber=<value>

With this API you can assign an active job to an engineer. If the engineers have applied to the job then you could select the best suited engineer and assign the job to him, else if you have a favorite engineer then you can directly assign it to him.

Query Parameters

This API takes any one of these parameters as input.

Element Name Datatype Description
opportunityId string The unique ID of the job generated on implementing Create Job API. E.g:123ab123abcd12a1234ab12345
workOrderNumber string The unique number of the job generated on implementing Create Job API. E.g:Wxxxxxxxxxxxx
endClientOrderNumber string The unique number you wish to give to your job to identify easily.

ii. Sample Request

curl -X PATCH \
https://sandboxapi.fieldengineer.io/v1/workorder/status/engineer/assign?endClientOrderNumber=<value> \
-H 'Content-Type: application/json' \
-H 'apiKey: <API Key>' \
-H 'cache-control: no-cache' \
-H 'username: <Company eMail ID>' \
-d '{"engineerId":<value>}'

iii. Sample Response

{
  "payload": {
    "opportunityId": "<Opportunity Id>"
  },
  "result": {
    "code": "200",
    "message": "success"
  }
}

iv. Request Payload Details

Element Name Datatype Description
engineerId string The Engineer ID e.g:Pxxxxxxxxx

v. Response Status Codes

Status code Message Description
204 No Content
301 Invalid Company User Possible reasons to get this status code are:
- Invalid company user
- Not a valid job
- Not a valid user
- You are not allowed to do this operation on current job.

11. Unassign Job

PATCH    /workorder/status/engineer/unassign?opportunityId=<value>

Use this API to unassign an engineer from particular job who was previously offered this job.

i. Query Parameters

This API takes any one of these parameters as input.

Element Name Datatype Description
opportunityId string The unique ID of the job generated on implementing Create Job API. E.g:123ab123abcd12a1234ab12345
workOrderNumber string The unique number of the job generated on implementing Create Job API. E.g:Wxxxxxxxxxxxx
endClientOrderNumber string The unique number you wish to give to your job to identify easily.

ii. Sample Request

curl -X PATCH \
https://sandboxapi.fieldengineer.io/v1/workorder/status/engineer/unassign?opportunityId=<value> \
-H 'Content-Type: application/json' \
-H 'apiKey: <API Key>' \
-H 'cache-control: no-cache' \
-H 'username: <Company eMail ID>' \
-d '{"engineerId":<Engineer ID>}'

iii. Sample Response

{
    "payload": null,
    "result": {
        "code": "200",
        "message": "success"
    }
}

iv. Response Status Codes

Status code Message Description
204 No Content
301 Invalid Company User Possible reasons to get this status code are:
- Invalid company user
- Not a valid job
- Job is not active
- Job is not in assigned status
- There are visits present in the job.
- Job is currently locked, please unlock it to perform any actions.

12. Visit Details

GET    /workorder/visit?endClientOrderNumber=<value>

Use this API to get the submitted visit's details by the engineer of the in-progress job.

i. Query Parameters

This API takes any one of these parameters as input.

Element Name Datatype Description
opportunityId string The unique ID of the job generated on implementing Create Job API. E.g:123ab123abcd12a1234ab12345
workOrderNumber string The unique number of the job generated on implementing Create Job API. E.g:Wxxxxxxxxxxxx
endClientOrderNumber string The unique number you wish to give to your job to identify easily.

ii. Sample Request

curl -X PATCH \
https://sandboxapi.fieldengineer.io/v1/workorder/visit?endClientOrderNumber=<value> \
-H 'Content-Type: application/json' \
-H 'apiKey: <API Key>' \
-H 'cache-control: no-cache' \
-H 'username: <Company eMail ID>'

iii. Sample Response

{
  "payload": {
    "list": [
      {
        "opportunityUserVisitId": "123abxxxabcd12a1234ab12345",
        "reportingDateTime": "2020-05-17T11:04:47.739Z",
        "reportingLongitude": "0.0",
        "reportingLatitude": "0.0",
        "approvedDateTime": null,
        "rejectedDateTime": "2020-05-17T11:04:47.739Z",
        "jobTitle": "FieldEngineerJob1",
        "workOrderNumber": "Wxxxxxxxxxxxx",
        "routing": "platformIntelligence",
        "opportunityId": "123ab123abcd12a1234ab12345",
        "engineerName": "John Doe",
        "rate": "100.00",
        "payout": null,
        "allowance": null,
        "visit": {
          "providerUnitCount": {
            "minutes": 20
          },
          "closingNotes": "completed first visit for Site-survey. ",
          "isAllowanceReported": false,
          "reportingDateTime": "2020-05-17T11:04:47.739Z",
          "reportedAllowanceAmount": null,
          "reportedFixedAmount": null,
          "visitExpense": [
            {
              "amount": null,
              "description": null
            }
          ]
        }
      },
      {
        "opportunityUserVisitId": "123abxxxabcd12a1234ab12345",
        "reportingDateTime": "2020-04-17T11:04:47.739Z",
        "reportingLongitude": "0.0",
        "reportingLatitude": "0.0",
        "approvedDateTime": "2020-04-17T11:04:47.739Z",
        "rejectedDateTime": null,
        "jobTitle": "FieldEngineer1",
        "workOrderNumber": "Wxxxxxxxxxxxx",
        "routing": "platformIntelligence",
        "opportunityId": "123ab123abcd12a1234ab12345",
        "engineerName": "Jane Doe",
        "rate": "50.00",
        "payout": null,
        "allowance": null,
        "visit": {
          "providerUnitCount": {
            "minutes": 20
          },
          "closingNotes": "Completed second visit to install first set of devices.",
          "isAllowanceReported": false,
          "reportingDateTime": "2020-04-17T11:04:47.739Z",
          "reportedAllowanceAmount": null,
          "reportedFixedAmount": null,
          "visitExpense": [
            {
              "amount": null,
              "description": null
            }
          ]
        }
      }
    ],
    "consumedHours": 20,
    "reportedAllowanceCount": 0,
    "consumedMinutes": 20,
    "page": {
      "number": 0,
      "numberOfElements": 2,
      "size": 20,
      "totalElements": 2,
      "totalPages": 1
    }
  },
  "result": {
    "code": "200",
    "message": "success"
  }
}

iv. Response Status Codes

Status code Message Description
301 Invalid Company User Possible reasons to get this status code are:
- Invalid company user
- Not a valid job
- You are not allowed to do this operation on current job.

13. Visit Approve

PATCH    /workorder/visit/status/approved

Use this API to approve individual visits i.e: worked hours submitted by the engineer on particular job.

i. Sample Request

curl -X PATCH \
https://sandboxapi.fieldengineer.io/v1/workorder/visit/status/approved \
-H 'Content-Type: application/json' \
-H 'apiKey: <API Key>' \
-H 'cache-control: no-cache' \
-H 'username: <Company eMail ID>' \
-d '{
"visit": {
  "approveExcessHours":true ,
  "visitId": <Unique Visit ID>
    }
}'

ii. Sample Response

{
  "payload": null,
  "result": {
    "code": "200",
    "message": "success"
  }
}

iii. Request Payload Details

Element Name Datatype Description
approveExcessHours boolean true to approve the submitted hours if it is within the allotted maxHours, and also if exceeds the maxHours(additional hours than provided). false to reject reported hours.
visitId string This is the unique visit ID i.e.opportunityUserVisitId field which can be found in the response generated by the Visit Details API

iv. Response Status Codes

Status code Message Description
204 No Content
301 Invalid Company User Possible reasons to get this status code are:
- Invalid company user
- Not a valid job
- Job is currently locked, please unlock it to perform any actions.
- You are not allowed to do this operation on current job.

14. Reject Visit

PATCH    /workorder/visit/status/rejected

Use this API to reject particular visit reported by engineer if you think you do not approve with the hours submitted or expenses reported or any other details regarding the visit.

i. Sample Request

curl -X PATCH \
https://sandboxapi.fieldengineer.io/v1/workorder/visit/status/rejected \
-H 'Content-Type: application/json' \
-H 'apiKey: <API Key>' \
-H 'cache-control: no-cache' \
-H 'username: <Company eMail ID>' \
-d '{
"visit": {
  "visitId": <Unique Visit ID>
    }
}'

ii. Sample Response

{
  "payload": null,
  "result": {
    "code": "200",
    "message": "success"
  }
}
Response message if the visit was already approved previously
Message Code Message
200 Visit already approved

iii. Request Payload Details

Element Name Datatype Description
visitId string This is the unique visit ID i.e.opportunityUserVisitId field which can be found in the response generated by the Visit Details API

iv. Response Status Codes

Status code Message Description
204 No Content
301 Invalid Company User Possible reasons to get this status code are:
- Invalid company user
- Not a valid job
- Job is currently locked, please unlock it to perform any actions.
- You are not allowed to do this operation on current job.

15. Complete Job

PATCH    /workorder/status/complete?opportunityId=<value>

Use this API to mark the job as complete once the posted job is completed by the assigned engineer.

All the visits must be approved before you mark a job as complete.

i. Query Parameters

This API takes any one of these parameters as input.

Element Name Datatype Description
opportunityId string The unique ID of the job generated on implementing Create Job API. E.g:123ab123abcd12a1234ab12345
workOrderNumber string The unique number of the job generated on implementing Create Job API. E.g:Wxxxxxxxxxxxx
endClientOrderNumber string The unique number you wish to give to your job to identify easily.

ii. Sample Request

curl -X PATCH \
https://sandboxapi.fieldengineer.io/v1/workorder/status/complete?opportunityId=<value> \
-H 'Content-Type: application/json' \
-H 'apiKey: <API Key>' \
-H 'cache-control: no-cache' \
-H 'username: <Company eMail ID>'

iii. Sample Response

{
    "payload": {
        "opportunityId": "<Opportunity ID>"
    },
    "result": {
        "code": "200",
        "message": "success"
    }
}

iv. Response Status Codes

Status code Message Description
204 No Content
301 Invalid Company User Possible reasons to get this status code are:
- Invalid company user
- Not a valid job
- Job is currently locked, please unlock it to perform any actions.
- Job is not active
- Atleast one visit should exist for job to complete
- Job is not in assigned status
- There are unapproved visits present in the job.
- Job is cancelled
- Job is completed or closed.

16. Equipment List

GET    /equipments

Use this method to fetch list of all the equipments and their details.

i. Sample Request

    curl -X GET \
    https://sandboxapi.fieldengineer.io/v1/equipments \
    -H 'Content-Type: application/json' \
    -H 'apiKey: <API Key>' \
    -H 'cache-control: no-cache' \
    -H 'username: <Company eMail ID>'

ii. Sample Response

{
  "payload": [
    {
      "id": "84bfcd672e2021b2553ea5301",
      "name": "Cat5e",
      "details": "Cat5e cable is needed in Ethernet to adjust performance"
    },
    {
      "id": "8343b0d4fe5d3ce634ba0a51d",
      "name": "Cisco console cable",
      "details": "This cable is required to console the hardware equipment."
    },
    {
      "id": "233f61e058ad77aa5a5be4ffe",
      "name": "Digital Camera",
      "details": "Needed to capture images of installed equipments"
    },
    {
      "id": "9d7cee3acc0f750bb89ded7af",
      "name": "Digital Multi Meter",
      "details": "Test Equipment is needed to measure resistance and adjust scaling network"
    },
    {
      "id": "d02c33f7e92c471455b0abcb3",
      "name": "Electrical Tape",
      "details": "Needed to safe-tape wires/ insulate wires"
    },
    {
      "id": "435d2d658caaef9ab11bf7f9b",
      "name": "Fish Tapes",
      "details": "Needed to pull through the guide string"
    },
    {
      "id": "14afb6934530a340f22c479f3",
      "name": "Optical Fiber Cable",
      "details": "Fiber should be of high quality so that it can hold more load"
    }
  ],
  "result": {
    "code": "200",
    "message": "success"
  }
}

17. Qualifications List

GET    /qualifications

Use this method to get the list of all the qualifications and their details like id, its short Name if it falls under certification/skill category and who is the Issuing Authority

i. Sample Request

curl -X GET \
https://sandboxapi.fieldengineer.io/v1/qualifications \
-H 'Content-Type: application/json' \
-H 'apiKey: <API Key>' \
-H 'cache-control: no-cache' \
-H 'username: <Company eMail ID>'

ii. Sample Response

{
  "payload": [
    {
      "id": "cb832667dd2044dd63e13c247",
      "name": "Cisco Certified Network Associate: CCNA",
      "shortName": "CCNA",
      "isCertification": false,
      "issuingAuthority": null
    },
    {
      "id": "3a72b5538d4787e8b6db00bb9",
      "name": "Cisco Certified Network Associate Data Center (CCNA Data Center)",
      "shortName": "CCNA",
      "isCertification": true,
      "issuingAuthority": null
    },
    {
      "id": "804h7e1d4ij9125faf2ej7if",
      "name": "Avaya Certified Implementation Specialist (ACIS)-Avaya ERS 8000 and VSP 9000",
      "shortName": "CCNA",
      "isCertification": false,
      "issuingAuthority": null
    },
    {
      "id": "17144d272ac42ca2bf0ab1ebb",
      "name": "CCNP Routing & Switching CCNP Security CCNP Cloud",
      "shortName": "CCNA",
      "isCertification": false,
      "issuingAuthority": null
    },
    {
      "id": "50bb82a7bdacb4b414571ad87",
      "name": "IBM Certified Specialist-Syste, Storage DS8000 Technical Solutions V3",
      "shortName": "ABC",
      "isCertification": false,
      "issuingAuthority": null
    },
    {
      "id": "53b7d7426b3194b63af511064",
      "name": "Advanced HP LoadRunner 12.x Software",
      "shortName": "ABC",
      "isCertification": false,
      "issuingAuthority": null
    },
    {
      "id": "e4g5b2gi900dg043d22ie8c0",
      "name": "Aerospace Fiber Optics Fabricator",
      "shortName": "ABC",
      "isCertification": false,
      "issuingAuthority": null
    },
    {
      "id": "244cd8615bbc290aee52d9511",
      "name": "Architecting Multi-Site HPE Storage Solutions",
      "shortName": "ABC",
      "isCertification": true,
      "issuingAuthority": null
    },
    {
      "id": "64f03bfdea4a5496777f3b816",
      "name": "Aryaka SDWAN Deployment",
      "shortName": "ABC",
      "isCertification": false,
      "issuingAuthority": null
    }
  ],
  "result": {
    "code": "200",
    "message": "success"
  }
}

18. Job Validate

POST    /workorder/jobvalidate

This method is used to validate a given job if it is eligible to post to the marketplace.

i. Sample Request

curl -X POST "https://sandboxapi.fieldengineer.io/v1/workorder/jobvalidate" 
 -H "apiKey: <API Key>" 
 -H "username: <Company eMail ID>" 
 -H "cache-control: no-cache" 
 -H "Content-Type: application/json" 
 -d "{<Request Json>}"

ii. Sample Request Body

{
  "address": {
    "parsed": {
      "address1": "10 Corporate Place South",
      "address2": "Suite 105",
      "city": "Piscataway",
      "country": "US",
      "subDivision": "NJ",
      "zip": "08854"
    },
    "unParsed": "10 Corporate Place South, Piscataway, NJ 08854, USA"
  },
  "allowance": {
    "amount": 250,
    "numOfVisits": 2,
    "type": "Per Visit"
  },
  "confidentialData": {
    "description": "PORT HANDOFF INFO LEC circuit ID: 12/ABCD /123450//SB Ord: AB12A0A8 Media:"
  },
  "contact": [
    {
      "email": "[email protected]",
      "extension": "10",
      "firstName": "John",
      "lastName": "Doe",
      "mobile": "1234567890",
      "phone": "2323242342",
      "type": "PointOfContact"
    }
  ],
  "customFields": {
    "fields": [
      {
        "isPrivate": true,
        "name": "Custom field 1",
        "value": "11abc1"
      }
    ],
    "groupName": "Custom group 1"
  },
  "description": "Rack Stack Power CPE - The router should always come preconfigured. The technician will mount the router and 66 block on the wall Adtran/Cisco Switches.SOW:Install ",
  "endClientOrderNumber": "POST_K106",
  "equipment": [
    {
      "id": "233f61e058ad77aa5a5be4ffe",
      "name": "Cisco Console Cable"
    }
  ],
  "fundingSource": "CASH",
  "internalData": {
    "description": "Billing details - 3*$50=$150"
  },
  "jobType": "JOB",
  "name": "Install adtran",
  "pay": {
    "fixed": {
      "totalAmount": null
    },
    "perHour": {
      "hours": 1,
      "maxHours": 4,
      "maxMinutes": 50,
      "minutes": 40,
      "rate": 85
    }
  },
  "planning": [
    {
      "description": "PORT HANDOFF INFO LEC circuit ID: 12/ABCD /123456ABSB Ord AB12B0C2 Media"
    }
  ],
  "projectName": "ABCxxxx Inc",
  "publishToMarketPlace": true,
  "qualification": [
    {
      "isMandatory": true,
      "name": "CCIE Data Center"
    }
  ],
  "routing": "PLATFORM_INTELLIGENCE",
  "scheduledOn": "2021-10-07 05:58:59",
  "source": "API",
  "task": [
    {
      "description": "Need to confirm if server room has space for the new router installation",
      "isConfirmRequired": true,
      "isMediaRequired": false,
      "isSignatureRequired": true
    }
  ],
  "title": "FieldEngineer"
}

iii. Sample Response

{
    "payload": {
        "isEligibleToActivate": true,
        "amount": null
    },
    "result": {
        "code": "200",
        "message": "success"
    }
}

The valid values for source key in the request body can be one of these: API, EMAIL, WWW, BULK, MOBILE. For details on rest of the fields for this api please refer to 'Request Payload Details' documentation of Create/Update Job Api.

iv. Response Status Codes

Status code Message
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

18. Retrieve Routing Pools

POST   /workorder/routing/retrieve

Use this method to retrieve the pool(s) details you created for routing types Marketplace pool, Private pool and Custom routing. This api is not applicable to Platform Intelligence routing type.

i. Sample Request

curl -X POST "https://sandboxapi.fieldengineer.io/v1/workorder/routing/retrieve" 
 -H "apiKey: <API Key>" 
 -H "<Company eMail ID>" 
 -H "Content-Type: application/json" 
 -d "{<Request Json>}"

ii. Sample Request Body

{
  "routingType": "internalPool"
}

The valid values for each routing type to be given:

Routing Type Valid value
Marketplace Pool marketplacePool
Private Pool internalPool
Custom Routing customRouting

iii. Sample Response

{
    "payload": {
        "talent": [
            {
                "talentId": "1c51b843ba3a6371154515209",
                "name": "Private Pool 1",
                "description": "Private Pool 1",
                "isActive": true,
                "isMarketplace": false,
                "engineerCount": 1,
                "recordCreated": 1601376414000
            },
            {
                "talentId": "817f5b9cea44968587fd66e94",
                "name": "PrivatePool 2",
                "description": "PrivatePool 2",
                "isActive": true,
                "isMarketplace": false,
                "engineerCount": 5,
                "recordCreated": 1600874398000
            },
            {
                "talentId": "9d4d15719671716cdaf62b14d",
                "name": "PrivatePool 3",
                "description": "PrivatePool 31",
                "isActive": true,
                "isMarketplace": false,
                "engineerCount": 0,
                "recordCreated": 1600874372000
            }
        ]
    },
    "result": {
        "code": "200",
        "message": "success"
    }
}

iv. Status Response Codes

Status code Message
201 Created
401 Unauthorized
403 Forbidden
404 Not Found

19. Retrieve Subuser details

GET    /subuser/retrieve

Use this method to get all the subusers details created in your company.

i. Sample Request

curl -X GET "https://sandboxapi.fieldengineer.io/v1/subuser/retrieve" 
-H "apiKey: <API Key>" 
-H "username: <Company eMail ID>" 
-H "Content-Type: application/json" 

ii. Sample Response

{
  "payload": {
    "subuser": [
      {
        "id": "105c906388302ca41c628fd0c",
        "unumber": "CU161897848",
        "firstName": "Johnny",
        "lastName": "Doe",
        "userName": "JohnnyDoe",
        "email": "[email protected]",
        "status": "active",
        "role": {
          "id": "zaq73wsxcde25rfvbgt18yhnm",
          "name": "Operator",
          "description": "An Operator can create and manage jobs, create projects, browse stats, and manage funds."
        }
      },
      {
        "id": "81da89f6e335bae36ce068e32",
        "unumber": "CU673856299",
        "firstName": "Jenny",
        "lastName": "Doe",
        "userName": "JennyDoe",
        "email": "[email protected]",
        "status": "active",
        "role": {
          "id": "zaq73wsxcde25rfvbgt18yhnm",
          "name": "Administrator",
          "description": "An administrator can create and manage jobs, create projects, browse stats, and manage funds."
        }
      },
      {
        "id": "92cr56g5y434ser45gn354b35",
        "unumber": "CU66741652",
        "firstName": "Chris",
        "lastName": "Doe",
        "userName": "ChrisDoe",
        "email": "[email protected]",
        "status": "active",
        "role": {
          "id": "dwt24fsfhjv35gdfnnbd4irty",
          "name": "Executive",
          "description": "An Executive can create and manage jobs, create projects, browse stats, and manage funds"
        }
      }
    ],
    "page": {
      "number": 0,
      "numberOfElements": 3,
      "size": 20,
      "totalElements": 3,
      "totalPages": 1
    }
  },
  "result": {
    "code": "200",
    "message": "success"
  }
}

iii. Status Response Codes

Status code Message
200 OK
401 Unauthorized
403 Forbidden
404 Not Found