All pages
Powered by GitBook
1 of 4

Loading...

Loading...

Loading...

Loading...

Plan APIs

This feature is in a closed beta phase and is available upon request only for Enterprise partners. Talk to us to learn more.

Overview

The foundation of the Aphex Planner data model are projects and tasks. Tasks reflect planned work and crucial properties such as subcontractors or shifts.

For customers and partners wanting to build external or internal applications and workflows on top of planned tasks, we provide a broad set of endpoints that give access to real-time data from a Plan workspace.

Typically use cases for these endpoints include;

  • Third-party platforms and products building integrations to Aphex

  • Internal customer teams using planned tasks as the trigger for internal apps or workflows

Querying the Plan APIs

Our APIs follow the essence of REST and all queries must be made via HTTPS to pass the endpoint security rules.

Endpoints query rules and response structure can be accessed from the following page;

Authentication

To generate a session token, you must provide a valid Client ID and Client Secret.

While in closed beta, you can obtain your API keys by contacting our Customer Success team.

Generate Token

Use this endpoint to generate a temporary Access Token

Revoke Token

Use this endpoint to revoke a previously generated Access token

Authentication
Project Assets
Tasks

Tasks

Project Tasks are the core object of Aphex Plan - this endpoint will return realtime Task data for a provided query.

Get Tasks

Use this endpoint to query Tasks on a project.

Project Assets

Project assets are the defined lists of objects that can be attached to tasks within a project. You can query these assets to assist in constructing more precise Task queries.

Get Users

Use this endpoint to query the list of Users on a project.

Get Subcontractors

Use this endpoint to query the list of Subcontractors on a project.

Get Folders

Use this endpoint to query the tree of Folders on a project.

Get Packages

Use this endpoint to query the list of Packages on a project.

Get Calendars

Use this endpoint to query the list of Calendars on a project.

Get Locations

Use this endpoint to query the list of Locations on a project.

generate token

post

Generate token

Path parameters
regionanyRequired

gb | au

Body
clientIdstringOptional
clientSecretstringOptional
Responses
200

OK

application/json
accessTokenstringOptional
expiresInstringOptional
tokenTypestringOptional
404

Not Found

application/json
messageanyOptional
422

Unprocessable Entity

application/json
messageanyOptional
500

Internal Server Error

application/json
messageanyOptional
post/{region}/v1/auth/token
POST /{region}/v1/auth/token HTTP/1.1
Host: app.aphex.co/
Content-Type: application/json
Accept: */*
Content-Length: 41

{
  "clientId": "text",
  "clientSecret": "text"
}
{
  "accessToken": "text",
  "expiresIn": "text",
  "tokenType": "text"
}

revoke token

post

Revoke token

Path parameters
regionanyRequired

gb | au

Body
clientIdstringOptional
clientSecretstringOptional
tokenstringOptional
Responses
200

OK

application/json
stringOptional
404

Not Found

application/json
messageanyOptional
422

Unprocessable Entity

application/json
messageanyOptional
500

Internal Server Error

application/json
messageanyOptional
post/{region}/v1/auth/token/revoke
POST /{region}/v1/auth/token/revoke HTTP/1.1
Host: app.aphex.co/
Content-Type: application/json
Accept: */*
Content-Length: 56

{
  "clientId": "text",
  "clientSecret": "text",
  "token": "text"
}
text

get users

get

Get users

Path parameters
regionanyRequired

gb | au

projectIdanyRequired

projectId

Header parameters
X-API-KeyanyRequired

access token

Responses
200

OK

application/json
afterstringOptional
linkstringOptional
displayNamestringOptional
emailstringOptional
idstringOptional
401

Unauthorized

application/json
messageanyOptional
422

Unprocessable Entity

application/json
messageanyOptional
500

Internal Server Error

application/json
messageanyOptional
get/{region}/v1/projects/{projectId}/users
GET /{region}/v1/projects/{projectId}/users HTTP/1.1
Host: app.aphex.co/
Accept: */*
{
  "paging": {
    "next": {
      "after": "text",
      "link": "text"
    }
  },
  "results": [
    {
      "displayName": "text",
      "email": "text",
      "id": "text"
    }
  ]
}

get subcontractors

get

Get subcontractors

Path parameters
regionanyRequired

gb | au

projectIdanyRequired

projectId

Header parameters
X-API-KeyanyRequired

access token

Responses
200

OK

application/json
afterstringOptional
linkstringOptional
idstringOptional
namestringOptional
401

Unauthorized

application/json
messageanyOptional
422

Unprocessable Entity

application/json
messageanyOptional
500

Internal Server Error

application/json
messageanyOptional
get/{region}/v1/projects/{projectId}/subcontractors
GET /{region}/v1/projects/{projectId}/subcontractors HTTP/1.1
Host: app.aphex.co/
Accept: */*
{
  "paging": {
    "next": {
      "after": "text",
      "link": "text"
    }
  },
  "results": [
    {
      "id": "text",
      "name": "text"
    }
  ]
}

get folders

get

Get folders

Path parameters
regionanyRequired

gb | au

projectIdanyRequired

projectId

Header parameters
X-API-KeyanyRequired

access token

Responses
200

OK

application/json
afterstringOptional
linkstringOptional
codestringOptional
idstringOptional
namestringOptional
parentIdstringOptional
pathstringOptional
401

Unauthorized

application/json
messageanyOptional
422

Unprocessable Entity

application/json
messageanyOptional
500

Internal Server Error

application/json
messageanyOptional
get/{region}/v1/projects/{projectId}/folders
GET /{region}/v1/projects/{projectId}/folders HTTP/1.1
Host: app.aphex.co/
Accept: */*
{
  "paging": {
    "next": {
      "after": "text",
      "link": "text"
    }
  },
  "results": [
    {
      "code": "text",
      "id": "text",
      "name": "text",
      "parentId": "text",
      "path": "text"
    }
  ]
}

get packages

get

Get packages

Path parameters
regionanyRequired

gb | au

projectIdanyRequired

projectId

Header parameters
X-API-KeyanyRequired

access token

Responses
200

OK

application/json
afterstringOptional
linkstringOptional
codestringOptional
idstringOptional
namestringOptional
401

Unauthorized

application/json
messageanyOptional
422

Unprocessable Entity

application/json
messageanyOptional
500

Internal Server Error

application/json
messageanyOptional
get/{region}/v1/projects/{projectId}/packages
GET /{region}/v1/projects/{projectId}/packages HTTP/1.1
Host: app.aphex.co/
Accept: */*
{
  "paging": {
    "next": {
      "after": "text",
      "link": "text"
    }
  },
  "results": [
    {
      "code": "text",
      "id": "text",
      "name": "text"
    }
  ]
}

get calendars

get

Get calendars

Path parameters
regionanyRequired

gb | au

projectIdanyRequired

projectId

Header parameters
X-API-KeyanyRequired

access token

Responses
200

OK

application/json
afterstringOptional
linkstringOptional
idstringOptional
namestringOptional
typestring · enumOptionalPossible values:
401

Unauthorized

application/json
messageanyOptional
422

Unprocessable Entity

application/json
messageanyOptional
500

Internal Server Error

application/json
messageanyOptional
get/{region}/v1/projects/{projectId}/calendars
GET /{region}/v1/projects/{projectId}/calendars HTTP/1.1
Host: app.aphex.co/
Accept: */*
{
  "paging": {
    "next": {
      "after": "text",
      "link": "text"
    }
  },
  "results": [
    {
      "id": "text",
      "name": "text",
      "type": "five-day"
    }
  ]
}

get locations

get

Get locations

Path parameters
regionanyRequired

gb | au

projectIdanyRequired

projectId

Header parameters
X-API-KeyanyRequired

access token

Responses
200

OK

application/json
afterstringOptional
linkstringOptional
idstringOptional
namestringOptional
typestring · enumOptionalPossible values:
401

Unauthorized

application/json
messageanyOptional
422

Unprocessable Entity

application/json
messageanyOptional
500

Internal Server Error

application/json
messageanyOptional
get/{region}/v1/projects/{projectId}/locations
GET /{region}/v1/projects/{projectId}/locations HTTP/1.1
Host: app.aphex.co/
Accept: */*
{
  "paging": {
    "next": {
      "after": "text",
      "link": "text"
    }
  },
  "results": [
    {
      "id": "text",
      "name": "text",
      "type": "map"
    }
  ]
}
get

Get tasks

Path parameters
regionanyRequired

gb | au

projectIdanyRequired

projectId

Query parameters
startanyOptional

YYYY-MM-DD formatted date

finishanyOptional

YYYY-MM-DD formatted date

shiftanyOptional

day | afternoon | night | 24hr

ownerIdsanyOptional

comma-delimited user IDs

folderIdsanyOptional

comma-delimited folder IDs

packageIdsanyOptional

comma-delimited package IDs

locationIdsanyOptional

comma-delimited location IDs

calendarIdsanyOptional

comma-delimited calendar IDs

subcontractorIdsanyOptional

comma-delimited subcontractor IDs

assignedToIdsanyOptional

comma-delimited user IDs

fieldsanyOptional

comma-delimited additional fields (assignees,wbs,package,parent,contractor,labourResources,plantResources,materialResources,location,workArea,progress,predecessors,successors,externalId,notes)

Header parameters
X-API-KeyanyRequired

access token

Responses
200

OK

application/json
afterstringOptional
linkstringOptional
displayNamestringOptional
emailstringOptional
idstringOptional
idstringOptional
namestringOptional
typestring · enumOptionalPossible values:
durationintegerOptional
externalIdstringOptional
finishstringOptional
codestringOptional
idstringOptional
namestringOptional
parentIdstringOptional
pathstringOptional
idstringOptional
  • Default task fields
keyTaskbooleanOptional
idstringOptional
namestringOptional
quantitynumberOptional
idstringOptional
namestringOptional
typestring · enumOptionalPossible values:
datestringOptional
quantitynumberOptional
datestringOptional
quantitynumberOptional
idstringOptional
namestringOptional
quantitynumberOptional
unitstringOptional
namestringOptional
notesstringOptional
displayNamestringOptional
emailstringOptional
idstringOptional
codestringOptional
idstringOptional
namestringOptional
idstringOptional
namestringOptional
categorystringOptional
idstringOptional
namestringOptional
quantitynumberOptional
amountintegerOptional
datestringOptional
namestringOptional
typestring · enumOptionalPossible values:
idstringOptional
lagintegerOptional
namestringOptional
relationstring · enumOptionalPossible values:
typestring · enumOptionalPossible values:
shiftstring · enumOptionalPossible values:
startstringOptional
statusstring · enumOptionalPossible values:
idstringOptional
namestringOptional
bboxnumber[]Optional
geometryanyOptional
idanyOptional
Other propertiesanyOptional
typestringOptional
401

Unauthorized

application/json
messageanyOptional
422

Unprocessable Entity

application/json
messageanyOptional
500

Internal Server Error

application/json
messageanyOptional
get/{region}/v1/projects/{projectId}/tasks
GET /{region}/v1/projects/{projectId}/tasks HTTP/1.1
Host: app.aphex.co/
Accept: */*
{
  "paging": {
    "next": {
      "after": "text",
      "link": "text"
    }
  },
  "results": [
    {
      "assignedTo": [
        {
          "displayName": "text",
          "email": "text",
          "id": "text"
        }
      ],
      "calendar": {
        "id": "text",
        "name": "text",
        "type": "five-day"
      },
      "duration": 1,
      "externalId": "text",
      "finish": "text",
      "folder": {
        "code": "text",
        "id": "text",
        "name": "text",
        "parentId": "text",
        "path": "text"
      },
      "id": "text",
      "keyTask": true,
      "labour": [
        {
          "id": "text",
          "name": "text",
          "quantity": 1
        }
      ],
      "location": {
        "id": "text",
        "name": "text",
        "type": "map"
      },
      "materials": [
        {
          "dailyActual": [
            {
              "date": "text",
              "quantity": 1
            }
          ],
          "dailyPlanned": [
            {
              "date": "text",
              "quantity": 1
            }
          ],
          "id": "text",
          "name": "text",
          "quantity": 1,
          "unit": "text"
        }
      ],
      "name": "text",
      "notes": "text",
      "owner": {
        "displayName": "text",
        "email": "text",
        "id": "text"
      },
      "package": {
        "code": "text",
        "id": "text",
        "name": "text"
      },
      "parent": {
        "id": "text",
        "name": "text"
      },
      "plant": [
        {
          "category": "text",
          "id": "text",
          "name": "text",
          "quantity": 1
        }
      ],
      "progress": [
        {
          "amount": 1,
          "date": "text",
          "name": "text",
          "type": "delay"
        }
      ],
      "relatedTasks": [
        {
          "id": "text",
          "lag": 1,
          "name": "text",
          "relation": "predecessor",
          "type": "start-start"
        }
      ],
      "shift": "day",
      "start": "text",
      "status": "planned",
      "subcontractor": {
        "id": "text",
        "name": "text"
      },
      "workArea": {
        "bbox": [
          1
        ],
        "geometry": null,
        "id": null,
        "properties": {
          "ANY_ADDITIONAL_PROPERTY": "anything"
        },
        "type": "text"
      }
    }
  ]
}

get tasks