Syncd allows up to five levels of work to be configured for each account. The names and capabilities of each level can be customized. Typical configurations include "clients, projects and tasks", "clients and projects", and simply "projects". Administrators can configure these levels from Syncd's web interface via Settings / Work Structure.

Internally, levels of work such as clients, projects and tasks are called "job types". Job types are used to define "jobs", the basic unit of work within Syncd. Individual clients, projects and tasks are all stored internally as jobs. Possible properties and relationships between jobs are defined by their type.

Job types can be requested along with other account details using the Account Information interface. It is also possible to request a list of job types, or even individual job types, using the methods below.

Show

Request

GET /job_types/#{job-type-id}.xml

Response

Status: 200 OK

<job-type>
  <id type="integer">7</id>
  <!-- Job types are hierarchical and maintain a parent-child relationship.
       The root job type will have a parent-id = nil.
       There can only be one child per parent. -->
  <parent-id type="integer" nil="true"/>
  <!-- The singular form of the name -->
  <name>client</name>
  <!-- The plural form of the name -->
  <name-plural>clients</name-plural>
  <!-- Can time entries be associated with jobs of this type? -->
  <allow-time-entries type="boolean">false</allow-time-entries>
  <!-- Can expense entries be associated with jobs of this type? -->
  <allow-expense-entries type="boolean">false</allow-expense-entries>
  <!-- Is the code field used? -->
  <show-codes type="boolean">true</show-codes>
  <!-- Is the link (i.e. URL) field used? -->
  <show-links type="boolean">true</show-links>
  <!-- Is the description field used? -->
  <show-descriptions type="boolean">true</show-descriptions>
  <!-- How many levels of jobs are allowed for this type?
       This will always be 1, except at the lowest job type,
       where levels <= 6 - count(job types). -->
  <levels type="integer">1</levels>
</job-type>

List

Request

All job types:

GET /job_types.xml

Response

Status: 200 OK

<job-types type="array">
  <job-type>
    <id type="integer">7</id>
    <parent-id type="integer" nil="true"/>
    <name>client</name>
    <name-plural>clients</name-plural>
    <allow-time-entries type="boolean">false</allow-time-entries>
    <allow-expense-entries type="boolean">false</allow-expense-entries>
    <show-codes type="boolean">true</show-codes>
    <show-links type="boolean">true</show-links>
    <show-descriptions type="boolean">true</show-descriptions>
    <levels type="integer">1</levels>
  </job-type>
  <job-type>
    <id type="integer">8</id>
    <parent-id type="integer">7</parent-id>
    <name>project</name>
    <name-plural>projects</name-plural>
    <allow-time-entries type="boolean">true</allow-time-entries>
    <allow-expense-entries type="boolean">true</allow-expense-entries>
    <show-codes type="boolean">true</show-codes>
    <show-links type="boolean">true</show-links>
    <show-descriptions type="boolean">true</show-descriptions>
    <levels type="integer">1</levels>
  </job-type>
  <job-type>
    <id type="integer">9</id>
    <parent-id type="integer">8</parent-id>
    <name>task</name>
    <name-plural>tasks</name-plural>
    <allow-time-entries type="boolean">true</allow-time-entries>
    <allow-expense-entries type="boolean">true</allow-expense-entries>
    <show-codes type="boolean">true</show-codes>
    <show-links type="boolean">true</show-links>
    <show-descriptions type="boolean">true</show-descriptions>
    <!-- As mentioned above, for the lowest level job type,
         levels <= 6 - count(job types) -->
    <levels type="integer">2</levels>
  </job-type>
</job-types>

Continue to Jobs