Planhat Logo

Developers

Planhat Logo

Developers

Project

Projects can represent many different real-world objects with a natural start and stop date. A service provider for schools may use Projects to represent classes or courses. If you're selling software to run sales competitions, then each competition may be a project.

Using custom fields you can tailor projects to your needs, and just like Assets, usage data and time series data (metrics) can be associated with your Projects.

Property
Required
Type
Description

_id



objectId

Planhat identifier.

name

Yes

string

Project name.

companyId

Yes

objectId

Related company id (planhat identifier).

companyName



string

Company name. (Autogenerated).

externalId



string

The project id in your own system.

sourceId



string

The project id from an integration (Sales Force, Hubspot, etc).

currency



string

The currency code, for example "USD".

startDate



string

The project start date in ISO format.

endDate



string

The project end date in ISO format.

mrr



number

Monthly project value.

arr



number

Annual project value.

nrr



number

Non recurrent project value.

custom



object

Custom object with your custom properties.

Projects can represent many different real-world objects with a natural start and stop date. A service provider for schools may use Projects to represent classes or courses. If you're selling software to run sales competitions, then each competition may be a project.

Using custom fields you can tailor projects to your needs, and just like Assets, usage data and time series data (metrics) can be associated with your Projects.

Property
Required
Type
Description

_id



objectId

Planhat identifier.

name

Yes

string

Project name.

companyId

Yes

objectId

Related company id (planhat identifier).

companyName



string

Company name. (Autogenerated).

externalId



string

The project id in your own system.

sourceId



string

The project id from an integration (Sales Force, Hubspot, etc).

currency



string

The currency code, for example "USD".

startDate



string

The project start date in ISO format.

endDate



string

The project end date in ISO format.

mrr



number

Monthly project value.

arr



number

Annual project value.

nrr



number

Non recurrent project value.

custom



object

Custom object with your custom properties.

Projects can represent many different real-world objects with a natural start and stop date. A service provider for schools may use Projects to represent classes or courses. If you're selling software to run sales competitions, then each competition may be a project.

Using custom fields you can tailor projects to your needs, and just like Assets, usage data and time series data (metrics) can be associated with your Projects.

Property
Required
Type
Description

_id



objectId

Planhat identifier.

name

Yes

string

Project name.

companyId

Yes

objectId

Related company id (planhat identifier).

companyName



string

Company name. (Autogenerated).

externalId



string

The project id in your own system.

sourceId



string

The project id from an integration (Sales Force, Hubspot, etc).

currency



string

The currency code, for example "USD".

startDate



string

The project start date in ISO format.

endDate



string

The project end date in ISO format.

mrr



number

Monthly project value.

arr



number

Annual project value.

nrr



number

Non recurrent project value.

custom



object

Custom object with your custom properties.

Create project

To create a project it's required to define a name and a valid companyId.

You can instead reference the company externalId or sourceId using the following command structure: "companyId": "extid-[company externalId]" or "companyId": "srcid-[company sourceId]".

Example Request

curl --location -g --request POST 'https://api.planhat.com/projects' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}' \
 --data-raw '{
  "companyId": "61006bc89a3e0b702ed8ea49",
  "startDate": "2021-07-26T04:00:00.000Z",
  "endDate": "2021-07-31T04:00:00.000Z",
  "currency": "USD",
  "mrr": 1000,
  "name": "New project"
 }'


Example Response

'{
  "_id": "6101a50072c0e0884d5e8db1",
  "companyId": "61006bc89a3e0b702ed8ea49",
  "startDate": "2021-07-26T04:00:00.000Z",
  "endDate": "2021-07-31T04:00:00.000Z",
  "currency": "USD",
  "mrr": 1000,
  "name": "New project",
  "companyName": "Tenet",
  "__v": 0
 }'
Create project

To create a project it's required to define a name and a valid companyId.

You can instead reference the company externalId or sourceId using the following command structure: "companyId": "extid-[company externalId]" or "companyId": "srcid-[company sourceId]".

Example Request

curl --location -g --request POST 'https://api.planhat.com/projects' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}' \
 --data-raw '{
  "companyId": "61006bc89a3e0b702ed8ea49",
  "startDate": "2021-07-26T04:00:00.000Z",
  "endDate": "2021-07-31T04:00:00.000Z",
  "currency": "USD",
  "mrr": 1000,
  "name": "New project"
 }'


Example Response

'{
  "_id": "6101a50072c0e0884d5e8db1",
  "companyId": "61006bc89a3e0b702ed8ea49",
  "startDate": "2021-07-26T04:00:00.000Z",
  "endDate": "2021-07-31T04:00:00.000Z",
  "currency": "USD",
  "mrr": 1000,
  "name": "New project",
  "companyName": "Tenet",
  "__v": 0
 }'
Create project

To create a project it's required to define a name and a valid companyId.

You can instead reference the company externalId or sourceId using the following command structure: "companyId": "extid-[company externalId]" or "companyId": "srcid-[company sourceId]".

Example Request

curl --location -g --request POST 'https://api.planhat.com/projects' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}' \
 --data-raw '{
  "companyId": "61006bc89a3e0b702ed8ea49",
  "startDate": "2021-07-26T04:00:00.000Z",
  "endDate": "2021-07-31T04:00:00.000Z",
  "currency": "USD",
  "mrr": 1000,
  "name": "New project"
 }'


Example Response

'{
  "_id": "6101a50072c0e0884d5e8db1",
  "companyId": "61006bc89a3e0b702ed8ea49",
  "startDate": "2021-07-26T04:00:00.000Z",
  "endDate": "2021-07-31T04:00:00.000Z",
  "currency": "USD",
  "mrr": 1000,
  "name": "New project",
  "companyName": "Tenet",
  "__v": 0
 }'
Update project

To update a project it's required to pass the project _id in the request URL as a parameter.

Alternately it’s possible to update using the project externalId and/or sourceId adding a prefix and passing one of these keyables as identifiers.

Example:

or

Example Request

curl --location -g --request PUT 'https://api.planhat.com/projects/6101a50072c0e0884d5e8db1' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}' \
 --data-raw '{
  "name": "Big project"
 }'


Example Response

'{
  "_id": "6101a50072c0e0884d5e8db1",
  "companyId": "61006bc89a3e0b702ed8ea49",
  "startDate": "2021-07-26T04:00:00.000Z",
  "endDate": "2021-07-31T04:00:00.000Z",
  "currency": "USD",
  "mrr": 1000,
  "name": "Big project",
  "companyName": "Tenet",
  "__v": 0,
  "custom": {
  "Days until project end": 2
  }
 }'
Update project

To update a project it's required to pass the project _id in the request URL as a parameter.

Alternately it’s possible to update using the project externalId and/or sourceId adding a prefix and passing one of these keyables as identifiers.

Example:

or

Example Request

curl --location -g --request PUT 'https://api.planhat.com/projects/6101a50072c0e0884d5e8db1' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}' \
 --data-raw '{
  "name": "Big project"
 }'


Example Response

'{
  "_id": "6101a50072c0e0884d5e8db1",
  "companyId": "61006bc89a3e0b702ed8ea49",
  "startDate": "2021-07-26T04:00:00.000Z",
  "endDate": "2021-07-31T04:00:00.000Z",
  "currency": "USD",
  "mrr": 1000,
  "name": "Big project",
  "companyName": "Tenet",
  "__v": 0,
  "custom": {
  "Days until project end": 2
  }
 }'
Update project

To update a project it's required to pass the project _id in the request URL as a parameter.

Alternately it’s possible to update using the project externalId and/or sourceId adding a prefix and passing one of these keyables as identifiers.

Example:

or

Example Request

curl --location -g --request PUT 'https://api.planhat.com/projects/6101a50072c0e0884d5e8db1' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}' \
 --data-raw '{
  "name": "Big project"
 }'


Example Response

'{
  "_id": "6101a50072c0e0884d5e8db1",
  "companyId": "61006bc89a3e0b702ed8ea49",
  "startDate": "2021-07-26T04:00:00.000Z",
  "endDate": "2021-07-31T04:00:00.000Z",
  "currency": "USD",
  "mrr": 1000,
  "name": "Big project",
  "companyName": "Tenet",
  "__v": 0,
  "custom": {
  "Days until project end": 2
  }
 }'
Get projects by ID

To get a specific project it's required to pass the _id in the request URL as a parameter.

Alternately it’s possible to get a project using its externalId and/or sourceId adding a prefix and passing one of these keyables as identifiers.

Example:

or

Example Request

curl --location -g --request GET 'https://api.planhat.com/projects/609a88660b73992504816060' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}'

Example Response

'{
  "_id": "609a88660b73992504816060",
  "companyId": "609975100b73992504810554",
  "companyName": "Tenet",
  "name": "SAP Integration",
  "__v": 0,
  "startDate": "2021-05-12T03:00:00.000Z",
  "custom": {
  "Notes": "",
  "Product": [
  "Product A"
  ],
  "Days in Phase": 0,
  "NRR30": 0,
  "t123": "undefined",
  "Logins": 0,
  "Renewal in days": -1,
  "Activity Count": 0,
  "Week No": 29.285714285714285
  },
  "mrr": 1000
 }'
Get projects by ID

To get a specific project it's required to pass the _id in the request URL as a parameter.

Alternately it’s possible to get a project using its externalId and/or sourceId adding a prefix and passing one of these keyables as identifiers.

Example:

or

Example Request

curl --location -g --request GET 'https://api.planhat.com/projects/609a88660b73992504816060' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}'

Example Response

'{
  "_id": "609a88660b73992504816060",
  "companyId": "609975100b73992504810554",
  "companyName": "Tenet",
  "name": "SAP Integration",
  "__v": 0,
  "startDate": "2021-05-12T03:00:00.000Z",
  "custom": {
  "Notes": "",
  "Product": [
  "Product A"
  ],
  "Days in Phase": 0,
  "NRR30": 0,
  "t123": "undefined",
  "Logins": 0,
  "Renewal in days": -1,
  "Activity Count": 0,
  "Week No": 29.285714285714285
  },
  "mrr": 1000
 }'
Get projects by ID

To get a specific project it's required to pass the _id in the request URL as a parameter.

Alternately it’s possible to get a project using its externalId and/or sourceId adding a prefix and passing one of these keyables as identifiers.

Example:

or

Example Request

curl --location -g --request GET 'https://api.planhat.com/projects/609a88660b73992504816060' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}'

Example Response

'{
  "_id": "609a88660b73992504816060",
  "companyId": "609975100b73992504810554",
  "companyName": "Tenet",
  "name": "SAP Integration",
  "__v": 0,
  "startDate": "2021-05-12T03:00:00.000Z",
  "custom": {
  "Notes": "",
  "Product": [
  "Product A"
  ],
  "Days in Phase": 0,
  "NRR30": 0,
  "t123": "undefined",
  "Logins": 0,
  "Renewal in days": -1,
  "Activity Count": 0,
  "Week No": 29.285714285714285
  },
  "mrr": 1000
 }'
Get projects List

When fetching multiple projects there are some options that can be used via query params:

  • companyId: Filter using company id.

  • limit: Limit the list length. Default as 100, max. 2000.

  • offset: Start the list on a specific integer index.

  • sort: Sort based on a specific property. Prefix the property "-" to change the sort order.

  • select: Select specific properties. Multiple properties can be specified separating them by commas.

Example Request

curl --location -g --request GET 'https://api.planhat.com/projects?limit=2&offset=0&sort=-name&select=_id,name,companyId' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}'

Example Response

'[
  {
  "_id": "60228bae4a93f65f056d2412",
  "companyId": "6022884d40bd001fb4b6e554",
  "name": "Älvdalen 2"
  },
  {
  "_id": "60228915f4d2e51f9cc29856",
  "companyId": "6022884d40bd001fb4b6e554",
  "name": "URL123"
  }
 ]

Get projects List

When fetching multiple projects there are some options that can be used via query params:

  • companyId: Filter using company id.

  • limit: Limit the list length. Default as 100, max. 2000.

  • offset: Start the list on a specific integer index.

  • sort: Sort based on a specific property. Prefix the property "-" to change the sort order.

  • select: Select specific properties. Multiple properties can be specified separating them by commas.

Example Request

curl --location -g --request GET 'https://api.planhat.com/projects?limit=2&offset=0&sort=-name&select=_id,name,companyId' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}'

Example Response

'[
  {
  "_id": "60228bae4a93f65f056d2412",
  "companyId": "6022884d40bd001fb4b6e554",
  "name": "Älvdalen 2"
  },
  {
  "_id": "60228915f4d2e51f9cc29856",
  "companyId": "6022884d40bd001fb4b6e554",
  "name": "URL123"
  }
 ]

Get projects List

When fetching multiple projects there are some options that can be used via query params:

  • companyId: Filter using company id.

  • limit: Limit the list length. Default as 100, max. 2000.

  • offset: Start the list on a specific integer index.

  • sort: Sort based on a specific property. Prefix the property "-" to change the sort order.

  • select: Select specific properties. Multiple properties can be specified separating them by commas.

Example Request

curl --location -g --request GET 'https://api.planhat.com/projects?limit=2&offset=0&sort=-name&select=_id,name,companyId' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}'

Example Response

'[
  {
  "_id": "60228bae4a93f65f056d2412",
  "companyId": "6022884d40bd001fb4b6e554",
  "name": "Älvdalen 2"
  },
  {
  "_id": "60228915f4d2e51f9cc29856",
  "companyId": "6022884d40bd001fb4b6e554",
  "name": "URL123"
  }
 ]

Delete projects

To delete a project it's required to pass the project _id in the request URL as a parameter.

Example Request

curl --location -g --request DELETE 'https://api.planhat.com/projects/6101a50072c0e0884d5e8db1' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}'

Example Response

'{
  "n": 1,
  "ok": 1,
  "deletedCount": 1
 }'
Delete projects

To delete a project it's required to pass the project _id in the request URL as a parameter.

Example Request

curl --location -g --request DELETE 'https://api.planhat.com/projects/6101a50072c0e0884d5e8db1' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}'

Example Response

'{
  "n": 1,
  "ok": 1,
  "deletedCount": 1
 }'
Delete projects

To delete a project it's required to pass the project _id in the request URL as a parameter.

Example Request

curl --location -g --request DELETE 'https://api.planhat.com/projects/6101a50072c0e0884d5e8db1' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}'

Example Response

'{
  "n": 1,
  "ok": 1,
  "deletedCount": 1
 }'
Bulk Upsert projects

To create a project it's required to define a name and a valid companyId.

You can instead reference the company externalId or sourceId using the following command structure: "companyId": "extid-[company externalId]" or "companyId": "srcid-[company sourceId]".

To update a project it is required to specify in the payload one of the following keyables, listed in order of priority: _id, sourceId, externalId.

Since this is a bulk upsert operation it's possible to create and/or update multiple projects with the same payload.

For more details please refer to the bulk upsert section.

Note: There is an upper limit of 5,000 items per request.

Example Request

curl --location -g --request PUT 'https://api.planhat.com/projects' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}' \
 --data-raw '[
  {
  "_id": "6101a50072c0e0884d5e8db1",
  "mrr": 10000
  },
  {
  "companyId": "61006bc89a3e0b702ed8ea49",
  "startDate": "2021-07-25T04:00:00.000Z",
  "endDate": "2021-07-30T04:00:00.000Z",
  "currency": "USD",
  "mrr": 5000,
  "name": "Improvements"
  }
 ]'


Example Response

'{
  "created": 1,
  "createdErrors": [],
  "insertsKeys": [
  {
  "_id": "6101a93e72c0e0884d5e8e52"
  }
  ],
  "updated": 0,
  "updatedErrors": [],
  "updatesKeys": [],
  "nonupdates": 0,
  "modified": [],
  "upsertedIds": [
  "6101a93e72c0e0884d5e8e52"
  ],
  "permissionErrors": []
 }'
Bulk Upsert projects

To create a project it's required to define a name and a valid companyId.

You can instead reference the company externalId or sourceId using the following command structure: "companyId": "extid-[company externalId]" or "companyId": "srcid-[company sourceId]".

To update a project it is required to specify in the payload one of the following keyables, listed in order of priority: _id, sourceId, externalId.

Since this is a bulk upsert operation it's possible to create and/or update multiple projects with the same payload.

For more details please refer to the bulk upsert section.

Note: There is an upper limit of 5,000 items per request.

Example Request

curl --location -g --request PUT 'https://api.planhat.com/projects' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}' \
 --data-raw '[
  {
  "_id": "6101a50072c0e0884d5e8db1",
  "mrr": 10000
  },
  {
  "companyId": "61006bc89a3e0b702ed8ea49",
  "startDate": "2021-07-25T04:00:00.000Z",
  "endDate": "2021-07-30T04:00:00.000Z",
  "currency": "USD",
  "mrr": 5000,
  "name": "Improvements"
  }
 ]'


Example Response

'{
  "created": 1,
  "createdErrors": [],
  "insertsKeys": [
  {
  "_id": "6101a93e72c0e0884d5e8e52"
  }
  ],
  "updated": 0,
  "updatedErrors": [],
  "updatesKeys": [],
  "nonupdates": 0,
  "modified": [],
  "upsertedIds": [
  "6101a93e72c0e0884d5e8e52"
  ],
  "permissionErrors": []
 }'
Bulk Upsert projects

To create a project it's required to define a name and a valid companyId.

You can instead reference the company externalId or sourceId using the following command structure: "companyId": "extid-[company externalId]" or "companyId": "srcid-[company sourceId]".

To update a project it is required to specify in the payload one of the following keyables, listed in order of priority: _id, sourceId, externalId.

Since this is a bulk upsert operation it's possible to create and/or update multiple projects with the same payload.

For more details please refer to the bulk upsert section.

Note: There is an upper limit of 5,000 items per request.

Example Request

curl --location -g --request PUT 'https://api.planhat.com/projects' \
 --header 'Content-Type: application/json' \
 --header 'Authorization: Bearer {{apiToken}}' \
 --data-raw '[
  {
  "_id": "6101a50072c0e0884d5e8db1",
  "mrr": 10000
  },
  {
  "companyId": "61006bc89a3e0b702ed8ea49",
  "startDate": "2021-07-25T04:00:00.000Z",
  "endDate": "2021-07-30T04:00:00.000Z",
  "currency": "USD",
  "mrr": 5000,
  "name": "Improvements"
  }
 ]'


Example Response

'{
  "created": 1,
  "createdErrors": [],
  "insertsKeys": [
  {
  "_id": "6101a93e72c0e0884d5e8e52"
  }
  ],
  "updated": 0,
  "updatedErrors": [],
  "updatesKeys": [],
  "nonupdates": 0,
  "modified": [],
  "upsertedIds": [
  "6101a93e72c0e0884d5e8e52"
  ],
  "permissionErrors": []
 }'