NAV Navbar
Node.JS Shell Go HTTP Ruby Python

ProperTime Admin API v1.0.0

Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

Easily manage all your ProperTime organizations and users with a simple REST API. The Admin API enables you to automate user management with your existing systems, while ensuring governance and compliance. You must have an active Manager account in ProperTime to use this API.

Base URLs:

Authentication

example: Authorization: Bearer 8eC39HaAyzWDarjtT1zdpa221

All API requests must be made over HTTPS. Calls made over plain HTTP will fail.

API requests without authentication will also fail.

Organization Units

Actions related to organization unit management

Get all Organization Units

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/organization-units',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

GET /organization-units

Get all organization units in organizations

Parameters

Name In Type Required Description
offset query integer false The query parameter offset sets the first position to return from the results of the query. The default is 0, which starts the page at the first result.
limit query integer false You can indicate the number of items to return in each page using the limit query parameter. The default is 20 and the maximum value is 50

Example responses

200 Response

[
  {
    "id": "444e5184-e89b-12d3-a456-426655440066",
    "name": "HQ"
  }
]

Responses

Status Meaning Description Schema
200 OK Organization Units list Inline
401 Unauthorized API key is missing or invalid None

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [organizational_unit] false none none
» id string true none none
» name string true none none

Response Headers

Status Header Type Format Description
200 X-Total-Count integer Total count of users that this query can return. Allows you to calculate the number of pages available.
401 Authorization string none

Create a new organization unit

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/organization-units',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST /organization-units

Create a new organization unit in organization

Parameters

Name In Type Required Description
createOrganizationUnitRequest body create_organization_unit_request true Organization Unit data

Example responses

201 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "name": "HR",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "unit_number": "343",
  "is_active": true
}

Responses

Status Meaning Description Schema
201 Created Created organization_unit
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Get a organization unit

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/organization-units/{id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

GET /organization-units/{id}

Get an organization unit

Parameters

Name In Type Required Description
id path string true organization unit id

Example responses

200 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "name": "HR",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "unit_number": "343",
  "is_active": true
}

Responses

Status Meaning Description Schema
200 OK OK organization_unit
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Update an organization unit

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/organization-units/{id}',
{
  method: 'PATCH',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

PATCH /organization-units/{id}

Update organization unit details

Parameters

Name In Type Required Description
id path string true organization unit id
patchOrganizationUnitRequest body patch_organization_unit_request true Organization unit data

Example responses

200 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "name": "HR",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "unit_number": "343",
  "is_active": true
}

Responses

Status Meaning Description Schema
200 OK Updated organization_unit
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Delete an organization unit

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/organization-units/{id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

DELETE /organization-units/{id}

Delete a organization unit

Parameters

Name In Type Required Description
id path string true organization unit id

Example responses

200 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "result": true,
  "message": "Deleted"
}

Responses

Status Meaning Description Schema
200 OK Deleted delete_result
401 Unauthorized API key is missing or invalid None
403 Forbidden Action is forbidden Inline

Response Schema

Status Code 403

Name Type Required Restrictions Description
» message string false none none

Response Headers

Status Header Type Format Description
401 Authorization string none

Clients

Actions related to client management

Get all Clients

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/clients',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

GET /clients

Get all clients in organizations

Parameters

Name In Type Required Description
offset query integer false The query parameter offset sets the first position to return from the results of the query. The default is 0, which starts the page at the first result.
limit query integer false You can indicate the number of items to return in each page using the limit query parameter. The default is 20 and the maximum value is 50

Example responses

200 Response

[
  {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "name": "AtoZ128 Corp Inc",
    "created": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "last_update": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "external_id": "atoz128"
  }
]

Responses

Status Meaning Description Schema
200 OK Client list Inline
401 Unauthorized API key is missing or invalid None

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [client] false none none
» id string true none none
» name string true none none
» created timed_action true none none
»» by user_info true none none
»»» id string true none none
»»» display_name string true none none
»» on string(date-time) true none none
» last_update timed_action false none none
» external_id string false none none

Response Headers

Status Header Type Format Description
200 X-Total-Count integer Total count of users that this query can return. Allows you to calculate the number of pages available.
401 Authorization string none

Create a new client

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/clients',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST /clients

Create a new client in organization

Parameters

Name In Type Required Description
createClientRequest body create_client_request true Client data

Example responses

201 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "name": "AtoZ128 Corp Inc",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "external_id": "atoz128"
}

Responses

Status Meaning Description Schema
201 Created Created client
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Get a client

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/clients/{id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

GET /clients/{id}

Get a client

Parameters

Name In Type Required Description
id path string true client id

Example responses

200 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "name": "AtoZ128 Corp Inc",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "external_id": "atoz128"
}

Responses

Status Meaning Description Schema
200 OK OK client
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Update a client

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/clients/{id}',
{
  method: 'PATCH',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

PATCH /clients/{id}

Update client details

Parameters

Name In Type Required Description
id path string true client id
patchClientRequest body patch_client_request true Client data

Example responses

200 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "name": "AtoZ128 Corp Inc",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "external_id": "atoz128"
}

Responses

Status Meaning Description Schema
200 OK Updated client
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Delete a client

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/clients/{id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

DELETE /clients/{id}

Delete a client

Parameters

Name In Type Required Description
id path string true client id

Example responses

200 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "result": true,
  "message": "Deleted"
}

Responses

Status Meaning Description Schema
200 OK Deleted delete_result
401 Unauthorized API key is missing or invalid None
403 Forbidden Action is forbidden Inline

Response Schema

Status Code 403

Name Type Required Restrictions Description
» message string false none none

Response Headers

Status Header Type Format Description
401 Authorization string none

Projects

Actions related to project management

Get all Projects

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/projects',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

GET /projects

Get all projects in organizations

Parameters

Name In Type Required Description
offset query integer false The query parameter offset sets the first position to return from the results of the query. The default is 0, which starts the page at the first result.
limit query integer false You can indicate the number of items to return in each page using the limit query parameter. The default is 20 and the maximum value is 50

Example responses

200 Response

[
  {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "name": "AtoZ128 Internals",
    "created": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "last_update": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "external_id": "atoz128internals",
    "client": {
      "id": "444e5184-e89b-12d3-a456-426655440022",
      "name": "AtoZ128 Corp Inc",
      "created": {
        "by": {
          "id": "444e5184-e89b-12d3-a456-111655440022",
          "display_name": "Sam Smith"
        },
        "on": "2017-07-21T17:32:28Z"
      },
      "last_update": {
        "by": {
          "id": "444e5184-e89b-12d3-a456-111655440022",
          "display_name": "Sam Smith"
        },
        "on": "2017-07-21T17:32:28Z"
      },
      "external_id": "atoz128"
    }
  }
]

Responses

Status Meaning Description Schema
200 OK Project list Inline
401 Unauthorized API key is missing or invalid None

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [project] false none none
» id string true none none
» name string true none none
» created timed_action true none none
»» by user_info true none none
»»» id string true none none
»»» display_name string true none none
»» on string(date-time) true none none
» last_update timed_action false none none
» external_id string false none none
» client client true none none
»» id string true none none
»» name string true none none
»» created timed_action true none none
»» last_update timed_action false none none
»» external_id string false none none

Response Headers

Status Header Type Format Description
200 X-Total-Count integer Total count of users that this query can return. Allows you to calculate the number of pages available.
401 Authorization string none

Create a new Project

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/projects',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST /projects

Create a new Project in organization

Parameters

Name In Type Required Description
createProjectRequest body create_project_request true Project data

Example responses

201 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "name": "AtoZ128 Internals",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "external_id": "atoz128internals",
  "client": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "name": "AtoZ128 Corp Inc",
    "created": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "last_update": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "external_id": "atoz128"
  }
}

Responses

Status Meaning Description Schema
201 Created Created project
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Get a project

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/projects/{id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

GET /projects/{id}

Get a project

Parameters

Name In Type Required Description
id path string true project id

Example responses

200 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "name": "AtoZ128 Internals",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "external_id": "atoz128internals",
  "client": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "name": "AtoZ128 Corp Inc",
    "created": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "last_update": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "external_id": "atoz128"
  }
}

Responses

Status Meaning Description Schema
200 OK OK project
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Update a project

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/projects/{id}',
{
  method: 'PATCH',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

PATCH /projects/{id}

Update project details

Parameters

Name In Type Required Description
id path string true project id
patchProjectRequest body patch_project_request true Project data

Example responses

200 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "name": "AtoZ128 Internals",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "external_id": "atoz128internals",
  "client": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "name": "AtoZ128 Corp Inc",
    "created": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "last_update": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "external_id": "atoz128"
  }
}

Responses

Status Meaning Description Schema
200 OK Updated project
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Delete a project

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/projects/{id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

DELETE /projects/{id}

Delete a project

Parameters

Name In Type Required Description
id path string true project id

Example responses

200 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "result": true,
  "message": "Deleted"
}

Responses

Status Meaning Description Schema
200 OK Deleted delete_result
401 Unauthorized API key is missing or invalid None
403 Forbidden Action is forbidden Inline

Response Schema

Status Code 403

Name Type Required Restrictions Description
» message string false none none

Response Headers

Status Header Type Format Description
401 Authorization string none

Tasks

Actions related to task management

Get all Tasks

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/tasks',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

GET /tasks

Get all tasks in organizations

Parameters

Name In Type Required Description
offset query integer false The query parameter offset sets the first position to return from the results of the query. The default is 0, which starts the page at the first result.
limit query integer false You can indicate the number of items to return in each page using the limit query parameter. The default is 20 and the maximum value is 50

Example responses

200 Response

[
  {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "name": "Vacation",
    "created": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "last_update": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "is_absence": true,
    "is_remarks_required": false,
    "external_id": "atoz128",
    "project": {
      "id": "444e5184-e89b-12d3-a456-426655440022",
      "name": "Absence",
      "created": {
        "by": {
          "id": "444e5184-e89b-12d3-a456-111655440022",
          "display_name": "Sam Smith"
        },
        "on": "2017-07-21T17:32:28Z"
      },
      "last_update": {
        "by": {
          "id": "444e5184-e89b-12d3-a456-111655440022",
          "display_name": "Sam Smith"
        },
        "on": "2017-07-21T17:32:28Z"
      },
      "external_id": "atoz128internals",
      "client": {
        "id": "444e5184-e89b-12d3-a456-426655440022",
        "name": "AtoZ128 Corp Inc",
        "created": {
          "by": {
            "id": "444e5184-e89b-12d3-a456-111655440022",
            "display_name": "Sam Smith"
          },
          "on": "2017-07-21T17:32:28Z"
        },
        "last_update": {
          "by": {
            "id": "444e5184-e89b-12d3-a456-111655440022",
            "display_name": "Sam Smith"
          },
          "on": "2017-07-21T17:32:28Z"
        },
        "external_id": "atoz128"
      }
    }
  }
]

Responses

Status Meaning Description Schema
200 OK Task list Inline
401 Unauthorized API key is missing or invalid None

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [task] false none none
» id string true none none
» name string true none none
» created timed_action true none none
»» by user_info true none none
»»» id string true none none
»»» display_name string true none none
»» on string(date-time) true none none
» last_update timed_action false none none
» is_absence boolean true none none
» is_remarks_required boolean false none none
» external_id string false none none
» project project true none none
»» id string true none none
»» name string true none none
»» created timed_action true none none
»» last_update timed_action false none none
»» external_id string false none none
»» client client true none none
»»» id string true none none
»»» name string true none none
»»» created timed_action true none none
»»» last_update timed_action false none none
»»» external_id string false none none

Response Headers

Status Header Type Format Description
200 X-Total-Count integer Total count of users that this query can return. Allows you to calculate the number of pages available.
401 Authorization string none

Create a new task

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/tasks',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST /tasks

Create a new task in organization

Parameters

Name In Type Required Description
createTaskRequest body create_task_request true Task data

Example responses

201 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "name": "Vacation",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "is_absence": true,
  "is_remarks_required": false,
  "external_id": "atoz128",
  "project": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "name": "Absence",
    "created": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "last_update": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "external_id": "atoz128internals",
    "client": {
      "id": "444e5184-e89b-12d3-a456-426655440022",
      "name": "AtoZ128 Corp Inc",
      "created": {
        "by": {
          "id": "444e5184-e89b-12d3-a456-111655440022",
          "display_name": "Sam Smith"
        },
        "on": "2017-07-21T17:32:28Z"
      },
      "last_update": {
        "by": {
          "id": "444e5184-e89b-12d3-a456-111655440022",
          "display_name": "Sam Smith"
        },
        "on": "2017-07-21T17:32:28Z"
      },
      "external_id": "atoz128"
    }
  }
}

Responses

Status Meaning Description Schema
201 Created Created task
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Get a task

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/tasks/{id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

GET /tasks/{id}

Get a task

Parameters

Name In Type Required Description
id path string true task id

Example responses

200 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "name": "Vacation",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "is_absence": true,
  "is_remarks_required": false,
  "external_id": "atoz128",
  "project": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "name": "Absence",
    "created": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "last_update": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "external_id": "atoz128internals",
    "client": {
      "id": "444e5184-e89b-12d3-a456-426655440022",
      "name": "AtoZ128 Corp Inc",
      "created": {
        "by": {
          "id": "444e5184-e89b-12d3-a456-111655440022",
          "display_name": "Sam Smith"
        },
        "on": "2017-07-21T17:32:28Z"
      },
      "last_update": {
        "by": {
          "id": "444e5184-e89b-12d3-a456-111655440022",
          "display_name": "Sam Smith"
        },
        "on": "2017-07-21T17:32:28Z"
      },
      "external_id": "atoz128"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK OK task
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Update a task

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/tasks/{id}',
{
  method: 'PATCH',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

PATCH /tasks/{id}

Update task details

Parameters

Name In Type Required Description
id path string true task id
patchTaskRequest body patch_task_request true Task data

Example responses

200 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "name": "Vacation",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "is_absence": true,
  "is_remarks_required": false,
  "external_id": "atoz128",
  "project": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "name": "Absence",
    "created": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "last_update": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "external_id": "atoz128internals",
    "client": {
      "id": "444e5184-e89b-12d3-a456-426655440022",
      "name": "AtoZ128 Corp Inc",
      "created": {
        "by": {
          "id": "444e5184-e89b-12d3-a456-111655440022",
          "display_name": "Sam Smith"
        },
        "on": "2017-07-21T17:32:28Z"
      },
      "last_update": {
        "by": {
          "id": "444e5184-e89b-12d3-a456-111655440022",
          "display_name": "Sam Smith"
        },
        "on": "2017-07-21T17:32:28Z"
      },
      "external_id": "atoz128"
    }
  }
}

Responses

Status Meaning Description Schema
200 OK Updated task
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Delete a task

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/tasks/{id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

DELETE /tasks/{id}

Delete a task

Parameters

Name In Type Required Description
id path string true task id

Example responses

200 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "result": true,
  "message": "Deleted"
}

Responses

Status Meaning Description Schema
200 OK Deleted delete_result
401 Unauthorized API key is missing or invalid None
403 Forbidden Action is forbidden Inline

Response Schema

Status Code 403

Name Type Required Restrictions Description
» message string false none none

Response Headers

Status Header Type Format Description
401 Authorization string none

Users

Actions related to user management

Get all users

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/users',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

GET /users

Get all users in organization

Parameters

Name In Type Required Description
offset query integer false The query parameter offset sets the first position to return from the results of the query. The default is 0, which starts the page at the first result.
limit query integer false You can indicate the number of items to return in each page using the limit query parameter. The default is 20 and the maximum value is 50
is_active query string false Filter users by active value (possible values: true, false, all) - default is true
termination_after query string(date-time) false Filter users - get only users that their termination date is set and after the supplied parameter value - default is no filtering

Example responses

200 Response

[
  {
    "id": "123e4567-e89b-12d3-a456-426655440000",
    "created": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "last_update": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "first_name": "Joe",
    "last_name": "Rocket",
    "display_name": "Joe Rocket",
    "email": "joe@example.com",
    "is_active": true,
    "external_id": "abc111",
    "employee_number": "1234",
    "id_number": "4333221114",
    "rfid_card_number": "343422434343",
    "job_title": "super chef",
    "time_approved_by": {
      "id": "444e5184-e89b-12d3-a456-426655440022",
      "display_name": "Sally Young"
    },
    "organizational_unit": {
      "id": "444e5184-e89b-12d3-a456-426655440066",
      "name": "HQ"
    },
    "date_of_birth": "1990-07-21",
    "hire_date": "2017-07-21",
    "termination_date": "2019-07-21"
  }
]

Responses

Status Meaning Description Schema
200 OK OK Inline
401 Unauthorized API key is missing or invalid None

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [user] false none none
» id string true none none
» created timed_action true none none
»» by user_info true none none
»»» id string true none none
»»» display_name string true none none
»» on string(date-time) true none none
» last_update timed_action false none none
» first_name string false none none
» last_name string false none none
» display_name string true none none
» email string(email) true none none
» is_active boolean true none none
» external_id string false none none
» employee_number string true none none
» id_number string false none none
» rfid_card_number string false none none
» job_title string true none none
» time_approved_by user_info false none none
» organizational_unit organizational_unit false none none
»» id string true none none
»» name string true none none
» date_of_birth string(date) false none none
» hire_date string(date) false none none
» termination_date string(date) false none none

Response Headers

Status Header Type Format Description
200 X-Total-Count integer Total count of users that this query can return. Allows you to calculate the number of pages available.
401 Authorization string none

Create a new user

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/users',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST /users

Create a new user in organization

Parameters

Name In Type Required Description
createUserRequest body create_user_request true User data

Example responses

201 Response

{
  "id": "123e4567-e89b-12d3-a456-426655440000",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "first_name": "Joe",
  "last_name": "Rocket",
  "display_name": "Joe Rocket",
  "email": "joe@example.com",
  "is_active": true,
  "external_id": "abc111",
  "employee_number": "1234",
  "id_number": "4333221114",
  "rfid_card_number": "343422434343",
  "job_title": "super chef",
  "time_approved_by": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "display_name": "Sally Young"
  },
  "organizational_unit": {
    "id": "444e5184-e89b-12d3-a456-426655440066",
    "name": "HQ"
  },
  "date_of_birth": "1990-07-21",
  "hire_date": "2017-07-21",
  "termination_date": "2019-07-21"
}

Responses

Status Meaning Description Schema
201 Created Created user
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Get a user

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/users/{id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

GET /users/{id}

Get a user

Parameters

Name In Type Required Description
id path string true user id

Example responses

200 Response

{
  "id": "123e4567-e89b-12d3-a456-426655440000",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "first_name": "Joe",
  "last_name": "Rocket",
  "display_name": "Joe Rocket",
  "email": "joe@example.com",
  "is_active": true,
  "external_id": "abc111",
  "employee_number": "1234",
  "id_number": "4333221114",
  "rfid_card_number": "343422434343",
  "job_title": "super chef",
  "time_approved_by": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "display_name": "Sally Young"
  },
  "organizational_unit": {
    "id": "444e5184-e89b-12d3-a456-426655440066",
    "name": "HQ"
  },
  "date_of_birth": "1990-07-21",
  "hire_date": "2017-07-21",
  "termination_date": "2019-07-21"
}

Responses

Status Meaning Description Schema
200 OK OK user
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Update a user

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/users/{id}',
{
  method: 'PATCH',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

PATCH /users/{id}

Update user details

Parameters

Name In Type Required Description
id path string true user id
patchUserRequest body patch_user_request true User data

Example responses

200 Response

{
  "id": "123e4567-e89b-12d3-a456-426655440000",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "first_name": "Joe",
  "last_name": "Rocket",
  "display_name": "Joe Rocket",
  "email": "joe@example.com",
  "is_active": true,
  "external_id": "abc111",
  "employee_number": "1234",
  "id_number": "4333221114",
  "rfid_card_number": "343422434343",
  "job_title": "super chef",
  "time_approved_by": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "display_name": "Sally Young"
  },
  "organizational_unit": {
    "id": "444e5184-e89b-12d3-a456-426655440066",
    "name": "HQ"
  },
  "date_of_birth": "1990-07-21",
  "hire_date": "2017-07-21",
  "termination_date": "2019-07-21"
}

Responses

Status Meaning Description Schema
200 OK Updated user
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Delete a user

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/users/{id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

DELETE /users/{id}

Delete a user

Parameters

Name In Type Required Description
id path string true user id

Example responses

200 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "result": true,
  "message": "Deleted"
}

Responses

Status Meaning Description Schema
200 OK Deleted delete_result
401 Unauthorized API key is missing or invalid None
403 Forbidden Action is forbidden Inline

Response Schema

Status Code 403

Name Type Required Restrictions Description
» message string false none none

Response Headers

Status Header Type Format Description
401 Authorization string none

Entries

Actions related to entries reporting

Get all Entries

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/entries',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

GET /entries

Get all Entries in organizations

Parameters

Name In Type Required Description
offset query integer false The query parameter offset sets the first position to return from the results of the query. The default is 0, which starts the page at the first result.
limit query integer false You can indicate the number of items to return in each page using the limit query parameter. The default is 20 and the maximum value is 50
user_id query string false Filter entries by user - default is no filtering
start_before query string(date-time) false Filter entries - get only entries that start before the supplied parameter value (exclusive) - default is no filtering
start_after query string(date-time) false Filter entries - get only entries that start after the supplied parameter value (inclusive) - default is no filtering

Example responses

200 Response

[
  {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "user": {
      "id": "444e5184-e89b-12d3-a456-426655440022",
      "display_name": "Joe Flash"
    },
    "task": {
      "id": "444e5184-e89b-12d3-a456-426655440022",
      "name": "Vacation",
      "created": {
        "by": {
          "id": "444e5184-e89b-12d3-a456-111655440022",
          "display_name": "Sam Smith"
        },
        "on": "2017-07-21T17:32:28Z"
      },
      "last_update": {
        "by": {
          "id": "444e5184-e89b-12d3-a456-111655440022",
          "display_name": "Sam Smith"
        },
        "on": "2017-07-21T17:32:28Z"
      },
      "is_absence": true,
      "external_id": "atoz128",
      "project": {
        "id": "444e5184-e89b-12d3-a456-426655440022",
        "name": "Absence",
        "created": "2017-07-21T17:32:28Z",
        "external_id": "atoz128internals",
        "client": {
          "id": "444e5184-e89b-12d3-a456-426655440022",
          "name": "AtoZ128 Corp Inc",
          "created": "2017-07-21T17:32:28Z",
          "external_id": "atoz128"
        }
      }
    },
    "is_deleted": false,
    "start_time": "2017-07-21T08:00:00Z",
    "end_time": "2017-07-21T17:30:00Z",
    "remarks": "Fixing dinner",
    "source": {
      "source_type": "web",
      "version": "5.0.1",
      "client_machine": "192.168.0.111"
    }
  }
]

Responses

Status Meaning Description Schema
200 OK Entry list Inline
401 Unauthorized API key is missing or invalid None

Response Schema

Status Code 200

Name Type Required Restrictions Description
anonymous [entry] false none none
» id string true none none
» created timed_action true none none
»» by user_info true none none
»»» id string true none none
»»» display_name string true none none
»» on string(date-time) true none none
» last_update timed_action true none none
» user user_info true none none
» task task true none none
»» id string true none none
»» name string true none none
»» created timed_action true none none
»» last_update timed_action false none none
»» is_absence boolean true none none
»» is_remarks_required boolean false none none
»» external_id string false none none
»» project project true none none
»»» id string true none none
»»» name string true none none
»»» created timed_action true none none
»»» last_update timed_action false none none
»»» external_id string false none none
»»» client client true none none
»»»» id string true none none
»»»» name string true none none
»»»» created timed_action true none none
»»»» last_update timed_action false none none
»»»» external_id string false none none
»»» client client false none none
»»» is_deleted boolean true none none
»»» start_time string(date-time) true none none
»»» end_time string(date-time) false none none
»»» remarks string false none none
»»» source source true none none
»»»» source_type string true none none
»»»» version string true none none
»»»» client_machine string true none none
»»» place place false none none
»»»» latitude number(double) true none none
»»»» longitude number(double) true none none
»»»» accuracy number(double) true none none
»»»» gps_fix_minutes number(double) true none none
»»» approved timed_action false none none
»»» expenses [expense] false none none
»»»» expense_type string true none none
»»»» amount number(float) true none none
»»»» receipt_number string false none none
»»»» remarks string false none none

Enumerated Values

Property Value
source_type web
source_type clock
source_type android
source_type ios
expense_type distance
expense_type fuel
expense_type transportation
expense_type parking
expense_type other

Response Headers

Status Header Type Format Description
200 X-Total-Count integer Total count of users that this query can return. Allows you to calculate the number of pages available.
401 Authorization string none

Create a new entry

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/entries',
{
  method: 'POST',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

POST /entries

Create a new entry in organization

Parameters

Name In Type Required Description
createEntryRequest body create_entry_request true Entry data

Example responses

201 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "user": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "display_name": "Joe Flash"
  },
  "task": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "name": "Vacation",
    "created": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "last_update": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "is_absence": true,
    "external_id": "atoz128",
    "project": {
      "id": "444e5184-e89b-12d3-a456-426655440022",
      "name": "Absence",
      "created": "2017-07-21T17:32:28Z",
      "external_id": "atoz128internals",
      "client": {
        "id": "444e5184-e89b-12d3-a456-426655440022",
        "name": "AtoZ128 Corp Inc",
        "created": "2017-07-21T17:32:28Z",
        "external_id": "atoz128"
      }
    }
  },
  "is_deleted": false,
  "start_time": "2017-07-21T08:00:00Z",
  "end_time": "2017-07-21T17:30:00Z",
  "remarks": "Fixing dinner",
  "source": {
    "source_type": "web",
    "version": "5.0.1",
    "client_machine": "192.168.0.111"
  }
}

Responses

Status Meaning Description Schema
201 Created Created entry
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Get a entry

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/entries/{id}',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

GET /entries/{id}

Get a entry

Parameters

Name In Type Required Description
id path string true entry id

Example responses

200 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "user": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "display_name": "Joe Flash"
  },
  "task": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "name": "Vacation",
    "created": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "last_update": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "is_absence": true,
    "external_id": "atoz128",
    "project": {
      "id": "444e5184-e89b-12d3-a456-426655440022",
      "name": "Absence",
      "created": "2017-07-21T17:32:28Z",
      "external_id": "atoz128internals",
      "client": {
        "id": "444e5184-e89b-12d3-a456-426655440022",
        "name": "AtoZ128 Corp Inc",
        "created": "2017-07-21T17:32:28Z",
        "external_id": "atoz128"
      }
    }
  },
  "is_deleted": false,
  "start_time": "2017-07-21T08:00:00Z",
  "end_time": "2017-07-21T17:30:00Z",
  "remarks": "Fixing dinner",
  "source": {
    "source_type": "web",
    "version": "5.0.1",
    "client_machine": "192.168.0.111"
  }
}

Responses

Status Meaning Description Schema
200 OK OK entry
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Update a entry

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/entries/{id}',
{
  method: 'PATCH',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

PATCH /entries/{id}

Update entry details

Parameters

Name In Type Required Description
id path string true entry id
patchEntryRequest body patch_entry_request true Entry data

Example responses

200 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "user": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "display_name": "Joe Flash"
  },
  "task": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "name": "Vacation",
    "created": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "last_update": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "is_absence": true,
    "external_id": "atoz128",
    "project": {
      "id": "444e5184-e89b-12d3-a456-426655440022",
      "name": "Absence",
      "created": "2017-07-21T17:32:28Z",
      "external_id": "atoz128internals",
      "client": {
        "id": "444e5184-e89b-12d3-a456-426655440022",
        "name": "AtoZ128 Corp Inc",
        "created": "2017-07-21T17:32:28Z",
        "external_id": "atoz128"
      }
    }
  },
  "is_deleted": false,
  "start_time": "2017-07-21T08:00:00Z",
  "end_time": "2017-07-21T17:30:00Z",
  "remarks": "Fixing dinner",
  "source": {
    "source_type": "web",
    "version": "5.0.1",
    "client_machine": "192.168.0.111"
  }
}

Responses

Status Meaning Description Schema
200 OK Updated entry
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Delete a entry

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/entries/{id}',
{
  method: 'DELETE',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

DELETE /entries/{id}

Delete a entry

Parameters

Name In Type Required Description
id path string true entry id

Example responses

200 Response

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "result": true,
  "message": "Deleted"
}

Responses

Status Meaning Description Schema
200 OK Deleted delete_result
401 Unauthorized API key is missing or invalid None
403 Forbidden Action is forbidden Inline

Response Schema

Status Code 403

Name Type Required Restrictions Description
» message string false none none

Response Headers

Status Header Type Format Description
401 Authorization string none

Users Work Profiles

Get a user requirements for a date as defined in their work profile

Code samples

const fetch = require('node-fetch');

const headers = {
  'Accept':'application/json',
  'Authorization':'Bearer {access-token}'

};

fetch('https://test-api.propertime.io/v1/users/{id}/work-profile/{date}/day',
{
  method: 'GET',

  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

GET /users/{id}/work-profile/{date}/day

Get a user requirements for a date as defined in their work profile

Parameters

Name In Type Required Description
id path string true user id
date path string(date) true date formated YYYY-MM-DD (example - 2019-09-05)

Example responses

200 Response

{
  "id": "E4BAC45E-5BE1-4E2C-B48B-82004A851B6B",
  "precedence": 2,
  "name": "Sundays",
  "description": null,
  "requires_day_type_combination": false,
  "required_hours": 4.5,
  "day_types": [
    {
      "id": 80,
      "name": "Erev hag"
    },
    {
      "id": 10,
      "name": "Sunday"
    }
  ]
}

Responses

Status Meaning Description Schema
200 OK OK work_profile_day
401 Unauthorized API key is missing or invalid None

Response Headers

Status Header Type Format Description
401 Authorization string none

Schemas

user_info

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "display_name": "Sally Young"
}

Properties

Name Type Required Restrictions Description
id string true none none
display_name string true none none

timed_action

{
  "by": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "display_name": "Joe Flash"
  },
  "on": "2017-07-21T17:32:28Z"
}

Properties

Name Type Required Restrictions Description
by user_info true none none
on string(date-time) true none none

delete_result

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "result": true,
  "message": "Deleted"
}

Properties

Name Type Required Restrictions Description
id string false none The id of the deleted entity
result boolean true none Deletion success indication
message string true none Deletion result message

organizational_unit

{
  "id": "444e5184-e89b-12d3-a456-426655440066",
  "name": "HQ"
}

Properties

Name Type Required Restrictions Description
id string true none none
name string true none none

user

{
  "id": "123e4567-e89b-12d3-a456-426655440000",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "first_name": "Joe",
  "last_name": "Rocket",
  "display_name": "Joe Rocket",
  "email": "joe@example.com",
  "is_active": true,
  "external_id": "abc111",
  "employee_number": "1234",
  "id_number": "4333221114",
  "rfid_card_number": "343422434343",
  "job_title": "super chef",
  "time_approved_by": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "display_name": "Sally Young"
  },
  "organizational_unit": {
    "id": "444e5184-e89b-12d3-a456-426655440066",
    "name": "HQ"
  },
  "date_of_birth": "1990-07-21",
  "hire_date": "2017-07-21",
  "termination_date": "2019-07-21"
}

Properties

Name Type Required Restrictions Description
id string true none none
created timed_action true none none
last_update timed_action false none none
first_name string false none none
last_name string false none none
display_name string true none none
email string(email) true none none
is_active boolean true none none
external_id string false none none
employee_number string true none none
id_number string false none none
rfid_card_number string false none none
job_title string true none none
time_approved_by user_info false none none
organizational_unit organizational_unit false none none
date_of_birth string(date) false none none
hire_date string(date) false none none
termination_date string(date) false none none

create_user_request

{
  "first_name": "Joe",
  "last_name": "Rocket",
  "display_name": "Joe Rocket",
  "email": "joe@example.com",
  "external_id": "abc111",
  "employee_number": "1234",
  "id_number": "4333221114",
  "rfid_card_number": "343422434343",
  "job_title": "super chef",
  "time_approved_by": "444e5184-e89b-12d3-a456-426655440022",
  "organizational_unit": "444e5184-e89b-12d3-a456-426655440066",
  "date_of_birth": "1990-07-21",
  "hire_date": "2017-07-21",
  "termination_date": "2019-07-21"
}

Properties

Name Type Required Restrictions Description
first_name string true none none
last_name string true none none
display_name string false none none
email string(email) true none none
external_id string false none none
employee_number string false none The employee number to use. If not supplied, the system will assign the next available id in the organization.
id_number string false none none
rfid_card_number string false none none
job_title string true none none
time_approved_by string false none none
organizational_unit string false none none
date_of_birth string(date) false none none
hire_date string(date) false none none
termination_date string(date) false none none

patch_user_request

{
  "first_name": "John",
  "display_name": "John Rocket",
  "email": "john@example.com"
}

Properties

Name Type Required Restrictions Description
first_name string false none none
last_name string false none none
display_name string false none none
email string(email) false none none
is_active boolean false none none
external_id string false none none
employee_number string false none none
id_number string false none none
rfid_card_number string false none none
job_title string false none none
time_approved_by string false none none
organizational_unit string false none none
date_of_birth string(date) false none none
hire_date string(date) false none none
termination_date string(date) false none none

work_profile_day

{
  "id": "E4BAC45E-5BE1-4E2C-B48B-82004A851B6B",
  "precedence": 2,
  "name": "Sundays",
  "description": null,
  "requires_day_type_combination": false,
  "required_hours": 4.5,
  "day_types": [
    {
      "id": 80,
      "name": "Erev hag"
    },
    {
      "id": 10,
      "name": "Sunday"
    }
  ]
}

Properties

Name Type Required Restrictions Description
id string true none none
precedence number(int32) true none none
name string false none none
description string false none none
requires_day_type_combination boolean true none none
required_hours number(float) true none none
day_types [object] true none none
» id number(int32) false none none
» name string false none none

organization_unit

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "name": "HR",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "unit_number": "343",
  "is_active": true
}

Properties

Name Type Required Restrictions Description
id string true none none
name string true none none
created timed_action true none none
last_update timed_action false none none
unit_number string true none none
is_active boolean true none none

patch_organization_unit_request

{
  "name": "Research and Development"
}

Properties

Name Type Required Restrictions Description
name string false none none
unit_number string false none none
is_active boolean false none none

client

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "name": "AtoZ128 Corp Inc",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "external_id": "atoz128"
}

Properties

Name Type Required Restrictions Description
id string true none none
name string true none none
created timed_action true none none
last_update timed_action false none none
external_id string false none none

patch_client_request

{
  "name": "AtoZ128 Corp Inc 123"
}

Properties

Name Type Required Restrictions Description
name string false none none
external_id string false none none

patch_project_request

{
  "name": "AtoZ128 Internals 123"
}

Properties

Name Type Required Restrictions Description
name string false none none
external_id string false none none

project

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "name": "AtoZ128 Internals",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "external_id": "atoz128internals",
  "client": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "name": "AtoZ128 Corp Inc",
    "created": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "last_update": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "external_id": "atoz128"
  }
}

Properties

Name Type Required Restrictions Description
id string true none none
name string true none none
created timed_action true none none
last_update timed_action false none none
external_id string false none none
client client true none none

patch_task_request

{
  "name": "Vacation 123",
  "is_remarks_required": true
}

Properties

Name Type Required Restrictions Description
name string false none none
is_remarks_required boolean false none none
is_absence boolean false none none
external_id string false none none

task

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "name": "Vacation",
  "created": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "last_update": {
    "by": {
      "id": "444e5184-e89b-12d3-a456-111655440022",
      "display_name": "Sam Smith"
    },
    "on": "2017-07-21T17:32:28Z"
  },
  "is_absence": true,
  "is_remarks_required": false,
  "external_id": "atoz128",
  "project": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "name": "Absence",
    "created": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "last_update": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "external_id": "atoz128internals",
    "client": {
      "id": "444e5184-e89b-12d3-a456-426655440022",
      "name": "AtoZ128 Corp Inc",
      "created": {
        "by": {
          "id": "444e5184-e89b-12d3-a456-111655440022",
          "display_name": "Sam Smith"
        },
        "on": "2017-07-21T17:32:28Z"
      },
      "last_update": {
        "by": {
          "id": "444e5184-e89b-12d3-a456-111655440022",
          "display_name": "Sam Smith"
        },
        "on": "2017-07-21T17:32:28Z"
      },
      "external_id": "atoz128"
    }
  }
}

Properties

Name Type Required Restrictions Description
id string true none none
name string true none none
created timed_action true none none
last_update timed_action false none none
is_absence boolean true none none
is_remarks_required boolean false none none
external_id string false none none
project project true none none

expense

{
  "expense_type": "transportation",
  "amount": 127.5,
  "receipt_number": "AB1244",
  "remarks": "Taxi fare"
}

Properties

Name Type Required Restrictions Description
expense_type string true none none
amount number(float) true none none
receipt_number string false none none
remarks string false none none

Enumerated Values

Property Value
expense_type distance
expense_type fuel
expense_type transportation
expense_type parking
expense_type other

source

{
  "source_type": "web",
  "version": "5.0.1",
  "client_machine": "192.168.0.111"
}

Properties

Name Type Required Restrictions Description
source_type string true none none
version string true none none
client_machine string true none none

Enumerated Values

Property Value
source_type web
source_type clock
source_type android
source_type ios

place

{
  "latitude": 32.1112,
  "longitude": 23.121243,
  "accuracy": 0.334,
  "gps_fix_minutes": 3.5
}

Properties

Name Type Required Restrictions Description
latitude number(double) true none none
longitude number(double) true none none
accuracy number(double) true none none
gps_fix_minutes number(double) true none none

entry

{
  "id": "444e5184-e89b-12d3-a456-426655440022",
  "user": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "display_name": "Joe Flash"
  },
  "task": {
    "id": "444e5184-e89b-12d3-a456-426655440022",
    "name": "Vacation",
    "created": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "last_update": {
      "by": {
        "id": "444e5184-e89b-12d3-a456-111655440022",
        "display_name": "Sam Smith"
      },
      "on": "2017-07-21T17:32:28Z"
    },
    "is_absence": true,
    "external_id": "atoz128",
    "project": {
      "id": "444e5184-e89b-12d3-a456-426655440022",
      "name": "Absence",
      "created": "2017-07-21T17:32:28Z",
      "external_id": "atoz128internals",
      "client": {
        "id": "444e5184-e89b-12d3-a456-426655440022",
        "name": "AtoZ128 Corp Inc",
        "created": "2017-07-21T17:32:28Z",
        "external_id": "atoz128"
      }
    }
  },
  "is_deleted": false,
  "start_time": "2017-07-21T08:00:00Z",
  "end_time": "2017-07-21T17:30:00Z",
  "remarks": "Fixing dinner",
  "source": {
    "source_type": "web",
    "version": "5.0.1",
    "client_machine": "192.168.0.111"
  }
}

Properties

Name Type Required Restrictions Description
id string true none none
created timed_action true none none
last_update timed_action true none none
user user_info true none none
task task true none none
client client false none none
is_deleted boolean true none none
start_time string(date-time) true none none
end_time string(date-time) false none none
remarks string false none none
source source true none none
place place false none none
approved timed_action false none none
expenses [expense] false none none

patch_entry_request

{
  "task_id": "444e5184-e89b-12d3-a456-426655440022",
  "end_time": "2017-07-21T17:40:00Z",
  "remarks": "Fixing dinner 123"
}

Properties

Name Type Required Restrictions Description
task_id string false none none
client_id string false none none
start_time string(date-time) false none none
end_time string(date-time) false none none
remarks string false none none
place place false none none
expenses [expense] false none none

create_entry_request

{
  "user_id": "string",
  "task_id": "string",
  "client_id": "string",
  "start_time": "2019-11-24T15:00:25Z",
  "end_time": "2019-11-24T15:00:25Z",
  "remarks": "string",
  "place": {
    "latitude": 32.1112,
    "longitude": 23.121243,
    "accuracy": 0.334,
    "gps_fix_minutes": 3.5
  },
  "expenses": [
    {
      "expense_type": "transportation",
      "amount": 127.5,
      "receipt_number": "AB1244",
      "remarks": "Taxi fare"
    }
  ]
}

Properties

Name Type Required Restrictions Description
user_id string true none none
task_id string true none none
client_id string false none none
start_time string(date-time) true none none
end_time string(date-time) false none none
remarks string false none none
place place false none none
expenses [expense] false none none

create_organization_unit_request

{
  "name": "unit 1234",
  "unit_number": "233"
}

Properties

Name Type Required Restrictions Description
name string true none none
unit_number string true none none

create_client_request

{
  "name": "client 1234",
  "external_id": "2332423df2f3"
}

Properties

Name Type Required Restrictions Description
name string true none none
external_id string false none none

create_project_request

{
  "name": "project abc",
  "external_id": "2332423df2f332f32",
  "client_id_type": "external"
}

Properties

Name Type Required Restrictions Description
name string true none none
external_id string false none none
client_id string true none none
client_id_type string false none none

Enumerated Values

Property Value
client_id_type internal
client_id_type external

create_task_request

{
  "name": "task 123",
  "external_id": "2332423df2f332f32",
  "project_id_type": "external"
}

Properties

Name Type Required Restrictions Description
name string true none none
is_absence boolean true none none
external_id string false none none
project_id string true none none
project_id_type string false none none

Enumerated Values

Property Value
project_id_type internal
project_id_type external