With our community of partners, you can get expert advice and training so you can be up and running in no time!

View setup partners

With our community of partners, you can get expert advice and training so you can be up and running in no time!

View setup partners

Get the Guide on Moving from spreadsheets to software.


Get the guide

Want to join us? Become a partner. 



Become a partner

API Documentation

Job Methods

Method Description
GET current Returns a list of current jobs
GET get/[job number] Detailed information for a specific job
PUT state Update the state of a specific job
GET list Return a list of all jobs
GET staff/[uuid] Return a list of all current jobs assigned to a staff member
GET client/[uuid] Return a list of all jobs assigned for a specific client
GET tasks Return a list of jobs and their tasks matching the specified criteria
POST add Add a job
PUT update Update a job
POST task Add a task to a job
PUT task Update a task on a job
PUT task/[uuid]/complete Complete a task on a job
PUT task/[uuid]/reopen Re-open a task on a job
PUT reordertasks Reorder the tasks on a job
POST note Add a note to a job
GET documents/[job number] Return a list of documents for a job
POST document Add a document to a job
GET costs/[job number] Return a list of costs for a job
POST cost Add a cost to a job
PUT cost Update a cost on a job
PUT assign Assign staff to a job
POST delete Delete a job
POST applytemplate Apply an additional template to a job
POST createquote/[job number] Create a quote based on the job
POST createestimate/[job number] Create an estimate based on the job

GET current

Returns a list of current jobs

Parameters

Parameter Required? Description
detailed=true Optional Return detailed information on job. See GET get/[job number] method for example of detailed job response.

modifiedsinceutc=

yyyy-MM-ddT00:00:00

Optional Only return jobs modified after the given date or if not modified, created after the given date.
page=1 Optional The current page. Defaults to 1 if the value is smaller than 1 or if the the parameter is not present but pagesize parameter is present
pagesize=10 Optional Number of records per page. Defaults to 1000 if page parameter is present but pagesize is not provided

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/current

Example Response

<Response api-method="Current">
    <Status>OK</Status>
    <!-- Only appears if page size or page parameters are passed-->
    <Page>1</Page>
    <PageSize>2</PageSize>
    <TotalRecords>36</TotalRecords>
    <!-- -->
    <Jobs>
        <Job>
           <ID>J000159</ID>
           <UUID>0d3458b8-6fde-4389-8dbb-0a85804466ad</UUID>
           <Name>Brochure Design</Name>
           <Description>Job Description</Description>
           <Client>
                <UUID>4f2161d6-21af-4f47-9845-2436f3efd5b0</UUID>
                <Name>John Smith</Name>
            </Client>
            <ApprovedQuoteID>Q000005</ApprovedQuoteID>

<ApprovedQuoteUUID>90dd07e5-bb36-423d-ab76-5a5ead0bb852</ApprovedQuoteUUID>
            <ClientOrderNumber>ABCD1234</ClientOrderNumber>
            <State>In Progress</State>
            <Type>Bookkeeping</Type>
            <StartDate>2021-05-11T00:00:00</StartDate>
            <DueDate>2022-05-11T00:00:00</DueDate>
            <DateCreatedUtc>2021-05-11T02:09:53</DateCreatedUtc>
            <DateModifiedUtc>2021-05-11T02:09:53</DateModifiedUtc>
            <Assigned>
                <Staff>
                <UUID>52ed22ca-4600-437c-86f6-465dda434af2</UUID>
                    <Name>John Smith</Name>
                </Staff>
            </Assigned>
            <WebUrl>http://app.my.workflowmax.web/job/jobview.aspx?id=116912</WebUrl>
        </Job>
        <Job>
            <ID>J000002</ID>
            <UUID>496b0227-42f2-4975-9f73-f011781ada7f</UUID>
            <Name>Custom Development</Name>
            <Description>Job Description</Description>
            <Client>
                <UUID>4f2161d6-21af-4f47-9845-2436f3efd5b0</UUID>
                <Name>John Smith</Name>
            </Client>
            <ApprovedQuoteID>Q000006</ApprovedQuoteID>

<ApprovedQuoteUUID>90dd07e5-bb36-423d-ab76-5a5ead0bb852</ApprovedQuoteUUID>
            <ClientOrderNumber>ABCD1234</ClientOrderNumber>
            <State>Planned</State>
            <Type>Internal</Type>
            <StartDate>2021-05-11T00:00:00</StartDate>
            <DueDate>2022-05-11T00:00:00</DueDate>
            <DateCreatedUtc>2021-05-11T02:09:53</DateCreatedUtc>
            <DateModifiedUtc>2021-05-11T02:09:53</DateModifiedUtc>
            <Assigned>
                <Staff>
                    <UUID>52ed22ca-4600-437c-86f6-465dda434af2</UUID>
                    <Name>Behzad Farokhi</Name>
                </Staff>
            </Assigned>
            <WebUrl>http://app.my.workflowmax.web/job/jobview.aspx?id=116913</WebUrl>
        </Job>
    </Jobs>
</Response>

GET get/[job number]

Detailed information for a specific job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/get/J00309

Example Response

<Response api-method="Get">
    <Status>OK</Status>
    <Job>
        <ID>J000001</ID>
        <UUID>355d0389-19cb-42ef-9b23-2960ca30c537</UUID>
        <Name>Brochure Design</Name>
        <Description>Job Description</Description>
        <ApprovedQuoteID>Q000005</ApprovedQuoteID>

        <ApprovedQuoteUUID>90dd07e5-bb36-423d-ab76-5a5ead0bb852</ApprovedQuoteUUID>
        <ClientOrderNumber>ABCD1234</ClientOrderNumber>
        <State>In Progress</State>
        <Type>Bookkeeping</Type>
        <StartDate>2008-08-29T00:00:00</StartDate>
        <DueDate>2008-09-29T00:00:00</DueDate>
        <CompletedDate>2008-09-29T00:00:00</CompletedDate>
        <DateCreatedUtc>2008-05-11T02:09:53</DateCreatedUtc>
        <DateModifiedUtc>2008-05-11T02:09:53</DateModifiedUtc>
        <Client>
            <UUID>691e1ea7-dca2-4d1e-a6a8-9f2dac448f8a</UUID>
            <Name>The Health Company</Name>
        </Client>
        <Contact>
            <UUID>699b0eb6-c54d-4afc-ae3d-1da6d91ba47d</UUID>
            <Name>Shelley Brio</Name>
        </Contact>
        <Manager>
            <UUID>273817c6-18c3-407a-9d00-5e8aba80fbd3</UUID>
            <Name>John Smith</Name>
        </Manager>
        <Partner>
            <UUID>bcbf14e9-b150-4e5d-933f-f99b0d5528d2</UUID>
            <Name>Jack Brown</Name>
        </Partner>
        <Assigned>
            <Staff>
                <UUID>52ed22ca-4600-437c-86f6-465dda434af2</UUID>
                <Name>John Smith</Name>
            </Staff>
</Assigned>
<Tasks>
            <Task>
                <UUID>e805ed72-29d7-4897-8765-875f3461bfae</UUID>
                <TaskUUID>3c1fc167-ab62-4db7-be73-01646abc461d</TaskUUID>
                <Name>Creative Direction</Name>
                <Description />
                <EstimatedMinutes>180</EstimatedMinutes>
                <ActualMinutes>100</ActualMinutes>
                <Completed>false</Completed>
                <Billable>true</Billable>
                <Folder />
                <!-- if the task has been scheduled the following will be present -->
                <StartDate>2008-08-29T00:00:00</StartDate>
                <DueDate>2008-09-29T00:00:00</DueDate>
                <Assigned>
                    <Staff>
                        <UUID>44ce9043-8a05-45e6-9a6b-93a7458d5734</UUID>
                        <Name>Jo Blogs</Name>
                        <AllocatedMinutes>180</AllocatedMinutes>
                    </Staff>
                </Assigned>
            </Task>
            <Task>
                <UUID>0126a33d6-543c-4b6a-8b87-8d25c9a1b30c</UUID>
                <TaskUUID>1674f180-41b1-4e7f-b932-a9a95c7cb217</TaskUUID>
                <Name>Design &amp; Layout</Name>
                <Description />
                <EstimatedMinutes>120</EstimatedMinutes>
                <ActualMinutes>180</ActualMinutes>
                <Completed>false</Completed>
                <Billable>true</Billable>
                <Folder />
            </Task>
        </Tasks>
        <Milestones>
            <Milestone>
                <UUID>666ce060-5782-4dd0-b6f6-e0557d036bfa</UUID>
                <Date>2008-09-24T00:00:00</Date>
                <Description>do something by then</Description>
                <Completed>false</Completed>
                <Folder />
            </Milestone>
        </Milestones>
        <Notes>
            <Note>
                <UUID>56831906-5c3e-4b89-ab4b-c3acc4690ab4</UUID>
                <Title>note title</Title>
                <Text>subject of the note</Text>
                <Folder />
                <Date>2008-09-12T13:00:00</Date>
                <CreatedBy>Jo Bloggs</CreatedBy>
                <Comments>
                    <Comment>
                        <UUID>7f29618e-e191-4bfd-966a-d418d489f623</UUID>
                        <Text>example comment</Text>
                        <Date>2008-09-12T14:00:00</Date>
                        <CreatedBy>John Smith</CreatedBy>
                    </Comment>
                </Comments>
            </Note>
        </Notes>
        <WebUrl>http://app.my.workflowmax.web/job/jobview.aspx?id=116912</WebUrl>
    </Job>
</Response>

PUT state

Update the state of a specific job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/state

Example Message

<Job>
  <ID>J000309</ID>
  <!-- The value of the state element is that in the Interface Code field for each Job State as defined in Admin -->
  <State>CONFIRMED</State>
</Job>

GET list

Return a list of all jobs

Parameters

Parameter Required? Description
detailed=true Optional Return detailed information on job. See GET get/[job number] method, for example detailed job response.

from=YYYYMMDD

Required Return jobs created on or after this date.
to=YYYYMMDD Required Return jobs created on or before this date.

modifiedsinceutc=

yyyy-MM-ddT00:00:00

 Optional

Only return jobs modified after the given date or if not modified, created after the given date.

page=1

Optional

The current page. Defaults to 1 if the value is smaller than 1 or if the the parameter is not present but pagesize parameter is present

pagesize=10

Optional

Number of records per page. Defaults to 1000 if page parameter is present but pagesize is not provided

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/list?from=19900101&to=20221230

GET staff/[uuid]

Return a list of all current jobs assigned to a staff member

Parameters

Parameter Required? Description

modifiedsinceutc=

yyyy-MM-ddT00:00:00

Optional Only return jobs modified after the given date or if not modified, created after the given date.

page=1

Optional The current page. Defaults to 1 if the value is smaller than 1 or if the the parameter is not present but pagesize parameter is present
pagesize=10 Optional

Number of records per page. Defaults to 1000 if page parameter is present but pagesize is not provided

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/staff/ffea99f9-fa70-4d49-9898-2159f4a34e40

GET client/[uuid]

Return a list of all jobs assigned for a specific client

Parameters

Parameter Required? Description

modifiedsinceutc=

yyyy-MM-ddT00:00:00

Optional Only return jobs modified after the given date or if not modified, created after the given date.

page=1

Optional The current page. Defaults to 1 if the value is smaller than 1 or if the the parameter is not present but pagesize parameter is present
pagesize=10 Optional

Number of records per page. Defaults to 1000 if page parameter is present but pagesize is not provided

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/client/dbee9acd-1afd-4409-8433-c337513c486e

GET tasks

Return a list of jobs and their tasks matching the specified criteria

Parameters

Parameter Required? Description
complete=true | false Optional Return jobs containing completed or uncompleted tasks only
due=YYYYMMDD Optional Return jobs with tasks due on or before this date.
start=YYYYMMDD Optional Return jobs with tasks starting on of after this date.

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/tasks?due=20090801&complete=false

POST add

Add a job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/add

Example Message

<Job>
  <Name>Brochure Design</Name>
  <Description>Detailed description of the job</Description>

  <ClientUUID>5f3b0d25-5469-4d76-92f4-be76144899b7</ClientUUID>
  <ContactUUID>c034f048-8d30-4197-9557-7a601c99def0</ContactUUID>    <!-- optional -->

  <StartDate>20091023</StartDate>    
  <DueDate>20091028</DueDate>    
  <ClientNumber>client order number</ClientNumber>  <!-- optional -->   

  <!-- Optional - Use to assign a custom ID to the job.  If not specified, the next value from the job number sequence will be used.  -->
  <ID>ABC123</ID>

  <!-- ID of Job Template to apply to job.  Applying a template allows you to default the job milestones, tasks and costs -->
  <TemplateUUID>7b1d935c-5cd6-4186-ab69-3a25fd3f94ad</TemplateUUID>  <!-- optional -->

  <!-- ID of Job Category to assign to job -->
  <CategoryUUID />  <!-- optional -->

  <Budget>55.00</Budget> <!-- optional -->
</Job>

The response will include the detailed information of the job as per the GET get/[job number] method

PUT update

Update a job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/update

Example Message

<Job>
  <ID>J000123</ID>
  <Name>Brochure Design</Name>
  <Description>Detailed description of the job</Description>
  <StartDate>20091023</StartDate>
  <DueDate>20091028</DueDate>
  <ClientNumber>client order number</ClientNumber>  <!-- optional -->   

  <!-- ID of Job Category to assign to job -->
  <CategoryUUID />  <!-- optional -->

  <Budget>55.00</Budget> <!-- optional -->
</Job>

The response will include the detailed information of the job as per the GET get/[job number] method

POST task

Add a task to a job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/task

Example Message

<Task>
  <Job>J000309</Job>
  <TaskUUID>75f95129-bcd1-4cb4-8f24-6067bf9d365a</TaskUUID>    <!-- refer Task Methods for obtaining list of tasks and their UUIDs -->
  <Label></Label>    <!-- optional -->
  <Description></Description>    <!-- optional -->
  <EstimatedMinutes>60</EstimatedMinutes>
  <StartDate>20091023</StartDate>    <!-- optional -->
  <DueDate>20091028</DueDate>    <!-- optional -->
</Task>

PUT task

Update a task on a job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/task

Example Message

<Task>
  <UUID>807818ac-da1c-4f4b-ab12-8d090ad0e64d</UUID>
  <Label></Label>    <!-- optional -->
  <Description></Description>    <!-- optional -->
  <EstimatedMinutes>60</EstimatedMinutes>
  <StartDate>20091023</StartDate>    <!-- optional -->
  <DueDate>20091028</DueDate>    <!-- optional -->
</Task>

PUT task/[uuid]/complete

Complete a task on a job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/task/807818ac-da1c-4f4b-ab12-8d090ad0e64d/complete

PUT task/[uuid]/reopen

Re-open a task on a job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/task/807818ac-da1c-4f4b-ab12-8d090ad0e64d/reopen

PUT reordertasks

Reorder the tasks on a job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/reordertasks

Example Message

<Job>
  <ID>J000123</ID>
  <Tasks>
    <Task>
      <UUID>f26b8e7e-0c3e-4b08-a0d0-1ecca7eaf4f7</UUID>
    </Task>
    <Task>
      <UUID>de365a6b-6ab1-44d9-9ca7-bd529959da2b</UUID>
    </Task>
    <Task>
      <UUID>bcb5fcd4-a580-4f37-b5bc-a527ec0c5fdc</UUID>
    </Task>
  </Tasks>
</Job>

POST note

Add a note to a job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/note

Example Message

<Note>
  <Job>J000309</Job>
  <Title>Note Title</Title>
  <Text>The text relating to the note</Text>
  <Folder>Correspondence</Folder>    <!-- optional -->
  <Public>false</Public>    <!-- optional true | false -->
</Note>

GET documents/[job number]

Return a list of documents for a job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/documents/J00309

Example Message

<Documents>
  <Document>
    <Title>Document Title</Title>
    <Text />    <!-- optional -->
    <Folder>Correspondence</Folder>    <!-- optional -->
    <Date>20091023</Date>
    <CreatedBy>Jo Bloggs</CreatedBy>
    <FileName>file.txt</FileName>
    <URL>https://my.workflowmax.com/....... </URL>
  </Document>
</Documents>

POST document

Add a document to a job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/document

Example Message

<Document>
  <Job>J000309</Job>
  <Title>Document Title</Title>
  <Text>The note relating to the document</Text>
  <Folder>Images</Folder>    <!-- optional -->
  <Public>false</Public>    <!-- optional true | false -->
  <FileName>example.jpg</FileName>
  <Content>File content base 64 encoded</Content>
</Document>

GET costs/[job number]

Return a list of costs for a job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/costs/J00309

Example Response

<Costs>
  <Cost>
    <UUID>0e9d45c4-37c5-4489-b966-765b115966e4</UUID>
    <Date>2009-10-23T00:00:00</Date>
    <Description>Widget</Description>
    <Code>WIDGET</Code>
    <Note>a note about the widget</Note>
    <Quantity>1</Quantity>
    <UnitCost>50.00</UnitCost>
    <UnitPrice>100.00</UnitPrice>
    <Supplier>
      <UUID>48db0a77-d871-4e1a-9475-aa40de10dd79</UUID>
      <Name>Widget Incorporated</Name>
    </SupplierID>
    <Billable>true</Billable> <!-- true | false -->
  </Cost>
</Costs>

POST cost

Add a cost to a job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/cost

Example Message

<Cost>
  <Job>J000309</Job>
  <Date>20091023</Date>
  <Description>Widget</Description>
  <Code>WIDGET</Code>    <!-- optional -->
  <Note>a note about the widget</Note>    <!-- optional -->
  <Quantity>1</Quantity>
  <UnitCost>50.00</UnitCost>
  <UnitPrice>100.00</UnitPrice>
  <SupplierUUID>48db0a77-d871-4e1a-9475-aa40de10dd79</SupplierUUID>    <!-- optional -->
  <Billable>true</Billable>    <!-- optional true (default) | false -->
</Cost>

PUT cost

Update a cost on a job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/cost

Example Message

<Cost>
  <UUID>0e9d45c4-37c5-4489-b966-765b115966e4</UUID>
  <Date>20091023</Date>
  <Description>Widget</Description>
  <Code>WIDGET</Code>    <!-- optional -->
  <Note>a note about the widget</Note>    <!-- optional -->
  <Quantity>1</Quantity>
  <UnitCost>50.00</UnitCost>
  <UnitPrice>100.00</UnitPrice>
  <SupplierUUID>48db0a77-d871-4e1a-9475-aa40de10dd79</SupplierUUID>    <!-- optional -->
  <Billable>true</Billabler>    <!-- optional true (default) | false -->
</Cost>

PUT assign

Assign staff to a job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/assign

Example Message

<Job>
  <ID>J000309</ID>
  <add uuid="9965d37f-0922-4754-86f0-abe31e938e35"/>     <!-- uuid = UUID of staff member -->
  <remove uuid="4ac6fab1-b1c5-459e-9652-91ba4a72eec4"/>

  <add uuid="9965d37f-0922-4754-86f0-abe31e938e35" task-uuid="c3fe8e7a-0e2f-4c0b-aa1b-58506b9d4460" />     <!-- assign staff to a specific task -->
  <remove uuid="4ac6fab1-b1c5-459e-9652-91ba4a72eec4" task-uuid="70c1c9be-8b2e-4cb2-be69-e1dc69844d19"/>   <!-- remove staff from a specific task -->

  <!-- the following elements allow you to assign a manager to the job -->
  <add-manager uuid="9965d37f-0922-4754-86f0-abe31e938e35"/>     <!-- uuid = UUID of staff member -->
  <remove-manager />

  <!-- the following elements allow you to assign a partner/account manager to the job -->
  <add-partner uuid="4ac6fab1-b1c5-459e-9652-91ba4a72eec4"/>     <!-- uuid = UUID of staff member -->
  <remove-partner />

</Job>

POST delete

Delete a job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/delete

Example Message

<Job>
  <ID>J000309</ID>
</Job>

POST applytemplate

Apply an additional template to a job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/applytemplate

Example Message

<Job>
  <ID>J000309</ID>
  <TemplateUUID>1318c880-7cba-4f6a-9e9a-0e864f8f36b2</TemplateUUID>  <!-- UUID of Job Template to apply to job -->

  <!-- TaskMode describes how tasks are added to the job
       AddNew: tasks are always added to the job (default)
       AppendExisting: where the same task already exists on the job, the template task will be appended to the details of the existing task, otherwise the task will be added to the job
  -->
  <TaskMode>AddNew</TaskMode>
</Job>

POST createquote/[job number]

Create a quote based on the job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/createquote/J00309

Example Response

<Response>
  <Status>OK</Status>
  <ID>Q000123</ID>   <!-- ID of the newly created quote -->
  <UUID>6af333db-e272-4983-b374-6981301227b3</UUID>   <!-- UUID of the newly created quote --> </Response>

POST createestimate/[job number]

Create an estimate based on the job

EXAMPLE URL

https://api.xero.com/workflowmax/3.0/job.api/createestimate/J00309

Example Response

<Response>
  <Status>OK</Status>
  <ID>Q000123</ID>   <!-- ID of the newly created estimate -->
  <UUID>6af333db-e272-4983-b374-6981301227b3</UUID>   <!-- UUID of the newly created estimate --> </Response>