NAV Navbar
shell
  • Introduction
  • Authentication
  • Bookings
  • Projects
  • Tasks
  • Invoices
  • Quotes
  • Resources
  • Schedules
  • People
  • Groups
  • Organizations
  • Custom Fields
  • Rate Schemes
  • Errors
  • Introduction

    Welcome to the FoxOMS API! You can use our API to access FoxOMS API endpoints, which can use to get information on bookings, projects and tasks from the FoxOMS database.

    Authentication

    # With shell, you can just pass the correct header with each request
    curl "api_endpoint_here"
      -H "Authorization: Bearer 74305f35862b76db"
    
    # You can also pass the token in via a query parameter
    curl "api_endpoint_here?access_token=74305f35862b76db"
    

    Make sure to replace 74305f35862b76db with your authentication token.

    FoxOMS has two authentication options that allow access to the API. You can choose to authenticate either with OAuth 2.0 (recommended) or Token Based Authentication.

    You can register an API client for either authentication option under API Settings in the Admin section of your FoxOMS account.

    Regardless of the authentication method you choose, FoxOMS expects the Bearer Authentication Token to be included in all API requests to the server.

    You can either include the token in a header that looks like the following:

    Authorization: Bearer 74305f35862b76db

    Alternatively you can send the token via a query parameter in the URL like the following:

    https://api.foxoms.com/v1/ENDPOINT?access_token=74305f35862b76db

    OAuth 2.0

    The FoxOMS API supports OAuth 2.0, by generating a Client Id and Client Secret which you use to authenticate to our https://api.foxoms.com/token endpoint and retrieve a token. This 'Authentication Token' is then included with your requests to gain access to the API.

    OAuth 2.0 Token Expiry

    A security feature of OAuth 2.0 is that the Authentication tokens generated expire after 2 hours and your application will need to submit the Client Id and Client Secret to https://api.foxoms.com/token to continue using the API.

    Token Based

    We also offer a simpler Token Based Authentication method, where the FoxOMS API directly issues you with a "Bearer Token" which you can include in your request to gain immediate access to the API. This method is considered less secure because these tokens do not expire.

    Bookings

    Get All Bookings

    curl "https://api.foxoms.com/v1/booking"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 111,
          "name": "Offline Editing",
          "start": 1481048700,
          "end": 1481104500,
          "start_date_time": "07/12/2016 05:25",
          "end_date_time": "07/12/2016 20:55",
          "all_day": false,
          "project_id": 2,
          "project": [
            {
              "id": 2,
              "name": "Grand Designs Season 10",
              "description": "All 9 episodes of series 10"
            }
          ],
          "client_person_id": 5,
          "client_organization_id": 0,
          "status": [
            {
              "id": 2,
              "name": "Confirmed",
              "description": "The confirmed status",
              "notification": "1"
            }
          ],
          "notes": "",
          "repeat_master": true,
          "repeat_master_id": 0,
          "repeat_rule": "FREQ=daily;INTERVAL=1;COUNT=3;REPENDTYPE=count;",
          "resources": [
            {
              "id": 1,
              "name": "Edit Suite 1",
              "description": "Avid Media Composer",
              "type_id": 1,
              "type_user_id": 0,
              "type": "room"
            },
            {
              "id": 2,
              "name": "Edit Suite 2",
              "description": "Avid Media Composer",
              "type_id": 1,
              "type_user_id": 0,
              "type": "room"
            },
            {
              "id": 4,
              "name": "Alexa Camera",
              "description": "",
              "type_id": 3,
              "type_user_id": 0,
              "type": "equipment"
            },
            {
              "id": 7,
              "name": "Joe Smith",
              "description": "",
              "type_id": 2,
              "type_user_id": 4,
              "type": "user"
            }
          ],
          "custom_fields": [
            {
              "id": 6,
              "name": "Booking Type",
              "value": "Picture Edit",
              "value_id": 10
            },
            {
              "id": 7,
              "name": "Booking Producer",
              "value": "Freddy",
              "value_id": 0
            }
          ],
          "files": [
            {
              "name": "FilmClapper",
              "alias": "c5513dc50df76eb02f7cb8b65410682dff3daa6e8b5ffc6db9ff8ca46c409890",
              "extension": "png",
              "size": "23395"
            }
          ],
          "created_id": 1,
          "created": 1483411475,
          "updated_id": 1,
          "updated": 1483411475
        }
        ...MORE_RESULTS_TRUNCATED...
      ],
      "meta": {
        "pagination": {
          "total": 73,
          "count": 8,
          "per_page": 10,
          "current_page": 1,
          "total_pages": 8,
          "links": {
            "next": 2
          }
        }
      }
    }
    

    This endpoint retrieves all bookings. The results returned are paginated.

    HTTP Request

    GET https://api.foxoms.com/v1/booking

    Query Parameters

    Parameter Default Description Example
    page false Return results pertaining to that page page=3
    fields false Allows you to return only attributes that you require fields=id,start,end
    limit 10 The number of results returned per page limit=50
    filter_operator OR Allows overriding of the default filtering method (either AND or OR). filter_operator=AND

    Filtering Results

    You can also filter the results by specifying almost any attribute returned as a parameter.

    For example, you can return only bookings that have a status id of 2 by adding the following query parameter

    status_id=2

    You can also separate multiple search values by a comma, for example to return multiple records.

    id=2,3,43,109,23

    You can also concatenate multiple attributes to search for and change the filtering logic using the filter_operator

    id=5&status_id=3&filter_operator=AND

    The above code snippet would only return records that have an id of 5 AND a status_id of 3

    Attributes

    Name Type Description
    id integer Unique ID of the booking
    name string Name of the booking
    start integer UNIX time of the start of the booking
    end integer UNIX time of the end of the booking
    start_date_time string User defined date formatted result of the booking start
    end_date_time string User defined date formatted result of the booking end
    all_day boolean True if this is an all day booking (no times are recorded)
    project_id integer Unique ID of the project linked to this booking
    project array The project assigned to this booking
    client_person_id integer Unique ID of the person selected as a client
    client_organization_id integer Unique ID of the organization selected as a client
    status array The status assigned to this booking
    notes string Any notes added to the booking
    repeat_master boolean True if this booking is a master from a set of repeating bookings
    repeat_master_id integer The unique ID of the booking that is a master. If this value is anything other than zero it is implied that this booking is a slave booking
    repeat_rule string The repetition logic that determines the frequency and amount of repetitions
    resources array of objects Resources that have been added to this booking
    custom_fields array of objects Returns any custom fields that exist for the booking module as well as any values selected for this booking
    files array of objects Returns any files that have been uploaded to this booking
    created_id integer The unique ID of the person (user) who created this record
    created integer The UNIX time value of the creation time
    updated_id integer The unique ID of the person (user) who last updated this record
    updated integer The UNIX time value of the last update

    Get a Specific Booking

    curl "https://api.foxoms.com/v1/booking?id=112&fields=id,name,start,end,project_id"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 112,
          "name": "Offline Editing",
          "start": 1481135100,
          "end": 1481190900,
          "project_id": 1
        }
      ],
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 1,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    The same booking endpoint is used with a filter applied to return only a specific booking. We've also specifically requested the fields we need to improve speed and readability.

    HTTP Request

    GET https://api.foxoms.com/v1/booking?id=<ID>

    URL Parameters

    Parameter Description Example
    id The ID of the booking to retrieve
    fields Allows you to return only attributes that you require fields=id,start,end
    filter_operator Allows overriding of the default filtering method (either AND or OR). filter_operator=AND

    Get Booking Clashes

    This endpoint can be used to determine if there are any clashes on booking resources in a determined time slot

    curl "https://api.foxoms.com/v1/booking/checkclash?start=1488417601&end=1488417602&booking_id=349&resources=1,2,5"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 178,
          "name": "Something else",
          "start": 1488417600,
          "end": 1488431400,
          "start_date_time": "02/03/2017 12:20",
          "end_date_time": "02/03/2017 16:10",
          "resources": [
            {
              "id": 1,
              "name": "Edit Suite 1",
              "description": "Avid Media Composer",
              "type_id": 1,
              "parent_id": 0
            },
            {
              "id": 2,
              "name": "Edit Suite 2",
              "description": "Avid Media Composer",
              "type_id": 1,
              "parent_id": 0
            }
          ]
        }
      ],
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 1,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    HTTP Request

    GET https://api.foxoms.com/v1/booking/checkclash?start=<START UNIX TIME RANGE>&end=<END UNIX TIME RANGE>&id=<ID>&resources=<RESOURCE IDS>

    URL Parameters

    Parameter Description Example
    start UNIX time value of the start of the range we should be checking for clashes
    end UNIX time value of the end of the range we should be checking for clashes
    resources Comma separated list of resource id's that we should check for clashes on. If none are provided, we'll return results from any booking that matches the time range
    id * Optional. The ID of a booking to exclude from the clash check
    fields Allows you to return only attributes that you require fields=id,start,end
    filter_operator Allows overriding of the default filtering method (either AND or OR). filter_operator=AND

    Attributes

    Name Type Description
    id integer Unique ID of the clashed booking
    name string Name of the clashed booking
    start integer UNIX time of the start of the clashed booking
    end integer UNIX time of the end of the clashed booking
    start_date_time string User defined date formatted result of the clashed booking start
    end_date_time string User defined date formatted result of the clashed booking end
    resources array of objects One or more resources that are causing the clash

    Projects

    Get All Projects

    curl "https://api.foxoms.com/v1/project"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
      {
          "id": 1,
          "name": "The Simpsons Episode 459",
          "code": "SIMP",
          "description": "Homer accidentally gets sucked into space and gets his bottom stuck in a black hole",
          "status_id": 0,
          "start": 1365811200,
          "end": 1374969600,
          "private": true,
          "parent_folder_id": 5,
          "client_person_id": 0,
          "client_organization_id": 0,
          "order": 0,
          "color_background": "#B0A7F1",
          "color_text": "#000000",
          "people": {
            "users": [
              {
                "id": 3,
                "name": "Bob Smith",
                "admin_flag": 0,
                "role_id": 0,
                "role_name": "0"
              },
              {
                "id": 4,
                "name": "Jane Someone",
                "admin_flag": 1,
                "role_id": 3,
                "role_name": "Video Editor"
              },
              {
                "id": 5,
                "name": "Jack Brown",
                "admin_flag": 0,
                "role_id": 0,
                "role_name": "0"
              },
              {
                "id": 6,
                "name": "Anna Marie",
                "admin_flag": 0,
                "role_id": 0,
                "role_name": "0"
              },
              {
                "id": 8,
                "name": "John Jefferson",
                "admin_flag": 0,
                "role_id": 0,
                "role_name": "0"
              }
            ],
            "groups": {
              "5": {
                "id": 2,
                "name": "Staff"
              }
            }
          },
          "custom_fields": [
            {
              "id": 1,
              "name": "Producer",
              "value": "Someone Famous",
              "value_id": 0
            },
            {
              "id": 2,
              "name": "Lunch Choice",
              "value": "Pizza",
              "value_id": 1
            }
          ],
          "files": [
            {
              "name": "Snapshot - Windspray",
              "alias": "66425cee6abaffc56f1b128aad5cc2d43a86225b89e359d748d1a3683835234c",
              "extension": "png",
              "size": "518829"
            }
          ],
          "created_id": 1,
          "created": 1388552400,
          "updated_id": 1,
          "updated": 1476593200
        }
        ...MORE_RESULTS_TRUNCATED...
      ],
      "meta": {
        "pagination": {
          "total": 10,
          "count": 8,
          "per_page": 10,
          "current_page": 1,
          "total_pages": 8,
          "links": {
            "next" : 2
          }
        }
      }
    }
    

    This endpoint retrieves all projects. The results returned are paginated.

    HTTP Request

    GET https://api.foxoms.com/v1/project

    Query Parameters

    Parameter Default Description Example
    page false Return results pertaining to that page page=3
    fields false Allows you to return only attributes that you require fields=id,name,code
    limit 10 The number of results returned per page limit=50
    show_folders false Returns project folders amongst the projects, useful if you have to built a project tree of projects and their folders show_folders=true

    Filtering Results

    You can also filter the results by specifying almost any attribute returned as a parameter.

    For example, you can return only projects that have a status id of 2 by adding the following query parameter

    status_id=2

    Attributes

    Name Type Description
    id integer Unique ID of the project
    name string Title of the project
    code string Short code used to identify the project
    description string A couple of sentences used to describe the purpose of the project
    status_id integer Unique ID of the selected status
    start integer UNIX time of the start of the project timeframe
    end integer UNIX time of the end of the project timeframe
    private boolean Is the project viewable to everyone, or just the users and groups assigned
    parent_folder_id integer The ID of the folder that this project is sitting in
    client_person_id integer Unique ID of the person selected as a client
    client_organization_id integer Unique ID of the organization selected as a client
    order integer The order that this project appears (if a custom order has been specified)
    color_background string A hex color value of the background of this project
    color_text string A hex color value of the text of this project
    people array of objects The users and groups assigned to this project. Also contains information regarding project admin status and role information
    custom_fields array of objects Returns any custom fields that exist for the project module as well as any values selected for this project
    files array of objects Returns any files that have been uploaded to this project
    created_id integer The unique ID of the person (user) who created this record
    created integer The UNIX time value of the creation time
    updated_id integer The unique ID of the person (user) who last updated this record
    updated integer The UNIX time value of the last update

    Get a Specific Project

    curl "https://api.foxoms.com/v1/project?id=4&fields=name,code,start,end"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "name": "Futurama Episode 191",
          "code": "FTR",
          "start": 1365811200,
          "end": 1366329600
        }
      ],
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 1,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    The same project endpoint is used with a filter applied to return only a specific project. We've also specifically requested the fields we need to improve speed and readability.

    HTTP Request

    GET https://api.foxoms.com/v1/project?id=<ID>

    URL Parameters

    Parameter Description Example
    id The ID of the project to retrieve
    fields Allows you to return only attributes that you require fields=name,code,start,end

    Get Project Folders

    curl "https://api.foxoms.com/v1/project/folder"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 5,
          "name": "Animations",
          "parent_folder_id": 0,
          "order": 3,
          "created_id": 1,
          "created": 1388552400,
          "updated_id": 1,
          "updated": 1388552400
        },
        {
          "id": 6,
          "name": "Grand Designs Episodes",
          "parent_folder_id": 0,
          "order": 2,
          "created_id": 1,
          "created": 1388552400,
          "updated_id": 1,
          "updated": 1388552400
        },
        {
          "id": 7,
          "name": "UK Episodes",
          "parent_folder_id": 6,
          "order": 4,
          "created_id": 1,
          "created": 1388552400,
          "updated_id": 1,
          "updated": 1388552400
        },
        {
          "id": 8,
          "name": "AU Episodes",
          "parent_folder_id": 6,
          "order": 1,
          "created_id": 1,
          "created": 1388552400,
          "updated_id": 1,
          "updated": 1388552400
        }
      ],
      "meta": {
        "pagination": {
          "total": 4,
          "count": 1,
          "per_page": 4,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    This endpoint retrieves all project folders. The results returned are paginated.

    HTTP Request

    GET https://api.foxoms.com/v1/project/folder

    Query Parameters

    Parameter Default Description Example
    page false Return results pertaining to that page page=3
    fields false Allows you to return only attributes that you require fields=id,name
    limit 10 The number of results returned per page limit=50

    Filtering Results

    You can also filter the results by specifying almost any attribute returned as a parameter.

    For example, you can return only project folder that have a parent folder id of 2 by adding the following query parameter

    parent_folder_id=2

    Attributes

    Name Type Description
    id integer Unique ID of the project folder
    name string Title of the project folder
    parent_folder_id integer The ID of the folder that this project folder is sitting in
    order integer The order that this project folder appears (if a custom order has been specified)
    created_id integer The unique ID of the person (user) who created this record
    created integer The UNIX time value of the creation time
    updated_id integer The unique ID of the person (user) who last updated this record
    updated integer The UNIX time value of the last update

    Tasks

    Get All Tasks

    curl "https://api.foxoms.com/v1/task"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 6,
          "alias_id": 1,
          "name": "Test Task",
          "type_id": 0,
          "parent_id": 0,
          "assigned": [],
          "project_id": 0,
          "progress_amount": "0.00",
          "status_id": 0,
          "duration": 0,
          "start": 1480982400,
          "end": 0,
          "notes": "",
          "created_id": 1,
          "created": 1480930015,
          "updated_id": 1,
          "updated": 1480930015
        },
        {
          "id": 7,
          "alias_id": 2,
          "name": "Test incomplete task",
          "type_id": 0,
          "parent_id": 0,
          "assigned": [
            {
              "id": 1,
              "name": "Joe Smith"
            }
          ],
          "project_id": 1,
          "progress_amount": "0.00",
          "status_id": 0,
          "duration": 0,
          "start": 0,
          "end": 0,
          "due": 1490918400,
          "notes": "",
          "created_id": 1,
          "created": 1488483414,
          "updated_id": 1,
          "updated": 1489320650
        },
        {
          "id": 8,
          "alias_id": 3,
          "name": "Finish website design",
          "type_id": 0,
          "parent_id": 0,
          "assigned": [
            {
              "id": 1,
              "name": "Joe Smith"
            }
          ],
          "project_id": 0,
          "progress_amount": "0.00",
          "status_id": 0,
          "duration": 0,
          "start": 0,
          "end": 0,
          "due": 1490918400,
          "notes": "",
          "created_id": 1,
          "created": 1488483445,
          "updated_id": 1,
          "updated": 1489320261
        }
        ...MORE_RESULTS_TRUNCATED...
      ],
      "meta": {
        "pagination": {
          "total": 8,
          "count": 1,
          "per_page": 8,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    This endpoint retrieves all tasks. The results returned are paginated.

    HTTP Request

    GET https://api.foxoms.com/v1/task

    Query Parameters

    Parameter Default Description Example
    page false Return results pertaining to that page page=3
    fields false Allows you to return only attributes that you require fields=id,start,end
    limit 10 The number of results returned per page limit=50

    Filtering Results

    You can also filter the results by specifying almost any attribute returned as a parameter.

    For example, you can return only tasks that have a status id of 2 by adding the following query parameter

    status_id=2

    Attributes

    Name Type Description
    id integer Unique ID of the task
    alias_id integer An alternate ID of the task which increments for tasks within the tenant scope only
    name string The name of the task
    type_id integer 0 = Task, 1 = Task List, 2 = Milestone
    parent_id integer The ID of the task list that this task is a child of
    assigned array of objects An array of users who have been assigned this task
    project_id integer The ID of the project that this task is linked to
    progress_amount decimal The amount of progress that has been logged to this task (value between 0.00 and 1.00)
    status_id integer The ID of the status that this task has selected
    duration integer The duration of this task (in days)
    start integer The start date of this task (in UNIX time)
    end integer The end date of this task (in UNIX time)
    due integer The due date of this task (in UNIX time)
    notes string Notes added to the task
    created_id integer The unique ID of the person (user) who created this record
    created integer The UNIX time value of the creation time
    updated_id integer The unique ID of the person (user) who last updated this record
    updated integer The UNIX time value of the last update

    Get a Specific Task

    curl "https://api.foxoms.com/v1/task?id=8&fields=id,alias,name,project_id"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 8,
          "name": "Finish website design",
          "project_id": 0
        }
      ],
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 1,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    The same task endpoint is used with a filter applied to return only a specific task. We've also specifically requested the fields we need to improve speed and readability.

    HTTP Request

    GET https://api.foxoms.com/v1/task?id=<ID>

    URL Parameters

    Parameter Description Example
    id The ID of the task to retrieve
    fields Allows you to return only attributes that you require fields=id,start,end

    Invoices

    Get All Invoices

    curl "https://api.foxoms.com/v1/invoice"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 16,
          "prefix": "INV-",
          "number": 6002,
          "date": 1484372456,
          "due_date": 1486964456,
          "client_person_id": 3,
          "client_organization_id": 0,
          "project_id": 0,
          "status_id": 1,
          "items": [
            {
              "id": 21,
              "object_type": "resource",
              "object_id": 1,
              "booking_id": 0,
              "item": "Edit Suite 1",
              "type": "Base Rate",
              "description": "",
              "order": 0,
              "quantity": "10.00",
              "unit": "hourly",
              "cost": "15.00",
              "tax": true,
              "discount": "100.00",
              "total": "0.00"
            },
            {
              "id": 22,
              "object_type": "custom",
              "object_id": 0,
              "booking_id": 0,
              "item": "Something",
              "type": "",
              "description": "Custom thing",
              "order": 1,
              "quantity": "5.00",
              "unit": "hourly",
              "cost": "10.00",
              "tax": true,
              "discount": "0.00",
              "total": "50.00"
            }
          ],
          "custom_fields": [
            {
              "id": 5,
              "name": "Other Field",
              "value": "Test",
              "value_id": 5
            },
            {
              "id": 4,
              "name": "PO Field",
              "value": null,
              "value_id": 0
            }
          ],
          "sub_total": "200.00",
          "discount_total": "150.00",
          "tax_total": "0.00",
          "total": "50.00",
          "template_id": 0,
          "currency": "AUD",
          "tax_rate": "0.00",
          "created_id": 1,
          "created": 1484373044,
          "updated_id": 1,
          "updated": 1486279626
        },
        ...MORE_RESULTS_TRUNCATED...
      ],
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 1,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    This endpoint retrieves all invoices. The results returned are paginated.

    HTTP Request

    GET https://api.foxoms.com/v1/invoice

    Query Parameters

    Parameter Default Description Example
    page false Return results pertaining to that page page=3
    fields false Allows you to return only attributes that you require fields=id,prefix,number
    limit 10 The number of results returned per page limit=50

    Filtering Results

    You can also filter the results by specifying almost any attribute returned as a parameter.

    For example, you can return only invoices that have a status id of 1 by adding the following query parameter

    status_id=1

    Attributes

    Name Type Description
    id integer Unique ID of the invoice
    prefix string Prefix to the invoice number
    number integer Number of the invoice
    date integer UNIX time of the date shown on the invoice
    due_date integer UNIX time of the due date shown on the invoice
    client_person_id integer Unique ID of the person selected as client
    client_organization_id integer Unique ID of the organization selected as a client
    project_id integer Unique ID of the project linked to this invoice
    status_id integer Unique ID of the selected status
    items array of objects The line items that make up the invoice
    custom_fields array of objects Returns any custom fields that exist for the invoice module as well as any values selected for this invoice
    sub_total decimal Total of all invoice items before tax and discounts are applied
    discount_total decimal Total amount discounted from the invoice
    tax_total decimal The amount of tax charged on the invoice
    total decimal The final amount of this invoice
    template_id integer The ID of the invoice template being used
    currency string Currency code (two character format) that this invoice is in
    tax_rate decimal The tax rate percent that was applied to this invoice
    created_id integer The unique ID of the person (user) who created this record
    created integer UNIX time of the creation time
    updated_id integer The unique ID of the last person (user) who updated this record
    updated integer UNIX time value of the last update to this record

    Item Attributes

    Name Type Description
    id integer Unique ID of this item
    object_type string Either resource or custom
    object_id integer The unique ID (if applicable) of the object defined in object_type
    booking_id integer The unique booking ID that this item relates to. Only applies if this invoice was 'prefilled' from a booking
    item string Item field
    type string Type field
    description string Description field
    order integer The order that this invoice item is in, relative to the other invoice items
    quantity decimal Number of unit field
    unit string Unit, eg hourly, daily
    cost decimal Cost applied
    tax boolean Is tax applied?
    discount decimal The amount of discount applied
    total decimal Total of this invoice item

    Get a Specific Invoice

    curl "https://api.foxoms.com/v1/invoice?id=16&fields=id,prefix,number,project_id,total"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 16,
          "prefix": "INV-",
          "number": 6002,
          "project_id": 0,
          "total": "50.00"
        }
      ],
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 1,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    The same invoice endpoint is used with a filter applied to return only a specific invoice. We've also specifically requested the fields we need to improve speed and readability.

    HTTP Request

    GET https://api.foxoms.com/v1/invoice?id=<ID>

    URL Parameters

    Parameter Description Example
    id The ID of the booking to retrieve
    fields Allows you to return only attributes that you require fields=id,prefix,number,project_id,total

    Quotes

    Get All Quotes

    curl "https://api.foxoms.com/v1/quote"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 14,
          "prefix": "QU-",
          "number": 11,
          "date": 1481021579,
          "due_date": 1483613579,
          "client_person_id": 4,
          "client_organization_id": 0,
          "project_id": 0,
          "status_id": 1,
          "items": [
            {
              "id": 16,
              "object_type": "resource",
              "object_id": 1,
              "booking_id": 102,
              "item": "Edit Suite 1",
              "type": "Booking (Base Rate)",
              "description": "TEST (Mon 24th Oct 2016 5:30AM - Mon 24th Oct 2016 7:05PM)",
              "order": 0,
              "quantity": "13.58",
              "unit": "hourly",
              "cost": "15.00",
              "tax": true,
              "discount": "0.00",
              "total": "203.70"
            },
            {
              "id": 17,
              "object_type": "resource",
              "object_id": 2,
              "booking_id": 102,
              "item": "Edit Suite 2",
              "type": "Booking (Base Rate)",
              "description": "TEST (Mon 24th Oct 2016 5:30AM - Mon 24th Oct 2016 7:05PM)",
              "order": 1,
              "quantity": "13.58",
              "unit": "hourly",
              "cost": "15.00",
              "tax": true,
              "discount": "0.00",
              "total": "203.70"
            },
            {
              "id": 18,
              "object_type": "resource",
              "object_id": 1,
              "booking_id": 107,
              "item": "Edit Suite 1",
              "type": "Booking (Base Rate)",
              "description": "TEST (Tue 25th Oct 2016 5:30AM - Tue 25th Oct 2016 7:05PM)",
              "order": 2,
              "quantity": "13.58",
              "unit": "hourly",
              "cost": "15.00",
              "tax": true,
              "discount": "0.00",
              "total": "203.70"
            },
            {
              "id": 19,
              "object_type": "resource",
              "object_id": 2,
              "booking_id": 107,
              "item": "Edit Suite 2",
              "type": "Booking (Base Rate)",
              "description": "TEST (Tue 25th Oct 2016 5:30AM - Tue 25th Oct 2016 7:05PM)",
              "order": 3,
              "quantity": "13.58",
              "unit": "hourly",
              "cost": "15.00",
              "tax": true,
              "discount": "0.00",
              "total": "203.70"
            }
          ],
          "custom_fields": [
            {
              "id": 9,
              "name": "Quote Field",
              "value": null,
              "value_id": 0
            },
            {
              "id": 4,
              "name": "PO Field",
              "value": null,
              "value_id": 0
            }
          ],
          "sub_total": "814.80",
          "discount_total": "0.00",
          "tax_total": "0.00",
          "total": "814.80",
          "template_id": 0,
          "currency": "AUD",
          "tax_rate": "0.00",
          "created_id": 1,
          "created": 1481021592,
          "updated_id": 1,
          "updated": 1481021592
        },
        ...MORE_RESULTS_TRUNCATED...
      ],
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 1,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    This endpoint retrieves all quotes. The results returned are paginated.

    HTTP Request

    GET https://api.foxoms.com/v1/quote

    Query Parameters

    Parameter Default Description Example
    page false Return results pertaining to that page page=3
    fields false Allows you to return only attributes that you require fields=id,prefix,number
    limit 10 The number of results returned per page limit=50

    Filtering Results

    You can also filter the results by specifying almost any attribute returned as a parameter.

    For example, you can return only quotes that have a status id of 1 by adding the following query parameter

    status_id=1

    Attributes

    Name Type Description
    id integer Unique ID of the quote
    prefix string Prefix to the quote number
    number integer Number of the quote
    date integer UNIX time of the date shown on the quote
    due_date integer UNIX time of the due date shown on the quote
    client_person_id integer Unique ID of the person selected as client
    client_organization_id integer Unique ID of the organization selected as a client
    project_id integer Unique ID of the project linked to this quote
    status_id integer Unique ID of the selected status
    items array of objects The line items that make up the quote
    custom_fields array of objects Returns any custom fields that exist for the quote module as well as any values selected for this quote
    sub_total decimal Total of all quote items before tax and discounts are applied
    discount_total decimal Total amount discounted from the quote
    tax_total decimal The amount of tax charged on the quote
    total decimal The final amount of this quote
    template_id integer The ID of the quote template being used
    currency string Currency code (two character format) that this quote is in
    tax_rate decimal The tax rate percent that was applied to this quote
    created_id integer The unique ID of the person (user) who created this record
    created integer UNIX time of the creation time
    updated_id integer The unique ID of the last person (user) who updated this record
    updated integer UNIX time value of the last update to this record

    Item Attributes

    Name Type Description
    id integer Unique ID of this item
    object_type string Either resource or custom
    object_id integer The unique ID (if applicable) of the object defined in object_type
    booking_id integer The unique booking ID that this item relates to. Only applies if this quote was 'prefilled' from a booking
    item string Item field
    type string Type field
    description string Description field
    order integer The order that this quote item is in, relative to the other quote items
    quantity decimal Number of unit field
    unit string Unit, eg hourly, daily
    cost decimal Cost applied
    tax boolean Is tax applied?
    discount decimal The amount of discount applied
    total decimal Total of this quote item

    Get a Specific Quote

    curl "https://api.foxoms.com/v1/quote?id=14&fields=id,prefix,number,total"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 14,
          "prefix": "QU-",
          "number": 11,
          "total": "814.80"
        }
      ],
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 1,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    The same quote endpoint is used with a filter applied to return only a specific quote. We've also specifically requested the fields we need to improve speed and readability.

    HTTP Request

    GET https://api.foxoms.com/v1/quote?id=<ID>

    URL Parameters

    Parameter Description Example
    id The ID of the booking to retrieve
    fields Allows you to return only attributes that you require fields=id,prefix,number,total

    Resources

    Get All Resources

    curl "https://api.foxoms.com/v1/resource"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 1,
          "name": "Edit Suite 1",
          "description": "Avid Media Composer",
          "type_id": 1,
          "type_person_id": 0,
          "parent_id": 0,
          "order": 1,
          "files": [
            {
              "name": "Avid_AppAdrenaline",
              "alias": "87e73ab25155974c230d09494548201b9f5056efbf38169730e14dd7d3e097d0",
              "extension": "png",
              "size": "174285"
            }
          ],
          "color_background": "#B0A7F1",
          "color_text": "#FFFFFF",
          "created_id": 1,
          "created": 1388552400,
          "updated_id": 1,
          "updated": 1388552400
        },
        {
          "id": 5,
          "name": "Cameras",
          "description": "",
          "type_id": 4,
          "type_person_id": 0,
          "parent_id": 0,
          "order": 4,
          "color_background": "#FF97E8",
          "color_text": "#000000",
          "created_id": 1,
          "created": 1388552400,
          "updated_id": 1,
          "updated": 1388552400
        },
        {
          "id": 6,
          "name": "RED Epic Camera",
          "description": "",
          "type_id": 3,
          "type_person_id": 0,
          "parent_id": 5,
          "order": 2,
          "color_background": "#ec7676",
          "color_text": "#000000",
          "created_id": 1,
          "created": 1388552400,
          "updated_id": 1,
          "updated": 1487312285
        },
        {
          "id": 7,
          "name": "Joe Smith",
          "description": "",
          "type_id": 2,
          "type_person_id": 1,
          "parent_id": 9,
          "order": 2,
          "color_background": "#93c47d",
          "color_text": "#000000",
          "created_id": 1,
          "created": 1388552400,
          "updated_id": 1,
          "updated": 1487312604
        },
        {
          "id": 9,
          "name": "Staff",
          "description": "",
          "type_id": 4,
          "type_person_id": 0,
          "parent_id": 0,
          "order": 5,
          "color_background": "#FF97E8",
          "color_text": "#000000",
          "created_id": 1,
          "created": 1388552400,
          "updated_id": 1,
          "updated": 1388552400
        },
        {
          "id": 29,
          "name": "Annual Leave",
          "description": "",
          "type_id": 5,
          "type_person_id": 0,
          "parent_id": 0,
          "order": 0,
          "color_background": "#1796b0",
          "color_text": "#ffffff",
          "created_id": 1,
          "created": 1489615010,
          "updated_id": 1,
          "updated": 1489615010
        }
      ],
      "meta": {
        "pagination": {
          "total": 6,
          "count": 1,
          "per_page": 10,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    This endpoint retrieves all resources (and resource groups). The results returned are paginated.

    HTTP Request

    GET https://api.foxoms.com/v1/resource

    Query Parameters

    Parameter Default Description Example
    page false Return results pertaining to that page page=3
    fields false Allows you to return only attributes that you require fields=id,name,description
    limit 10 The number of results returned per page limit=50

    Filtering Results

    You can also filter the results by specifying almost any attribute returned as a parameter.

    For example, you can return only resources that have a type id of 2 by adding the following query parameter

    type_id=2

    Attributes

    Name Type Description
    id integer Unique ID of the resource
    name string Title of the resource
    description string Description of the resource
    type_id integer 1 = Room, 2 = Person, 3 = Equipment, 4 = Resource Group, 5 = Action
    type_person_id integer The unique ID of the person (only applies if this resource is a person)
    parent_id integer The unigue ID of the resource group that this resource is a child of
    order integer Value representing the order that this resource will appear in various parts of the application
    files array of single object Returns the image file of this resource icon
    color_background string A hex color value of the background of this resource
    color_text string A hex color value of the text of this resource
    created_id integer The unique ID of the person (user) who created this record
    created integer The UNIX time value of the creation time
    updated_id integer The unique ID of the person (user) who last updated this record
    updated integer The UNIX time value of the last update

    Get a Specific Resource

    curl "https://api.foxoms.com/v1/resource?id=4&fields=id,name,description,parent_id"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 4,
          "name": "Alexa Camera",
          "description": "",
          "parent_id": 5
        }
      ],
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 1,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    The same resource endpoint is used with a filter applied to return only a specific resource. We've also specifically requested the fields we need to improve speed and readability.

    HTTP Request

    GET https://api.foxoms.com/v1/resource?id=<ID>

    URL Parameters

    Parameter Description Example
    id The ID of the resource to retrieve
    fields Allows you to return only attributes that you require fields=id,name,description

    Schedules

    Get All Schedules

    curl "https://api.foxoms.com/v1/schedule"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 1,
          "name": "Sydney Office",
          "description": "The schedule for the Sydney Team",
          "resources": [
            {
              "id": 1,
              "name": "Edit Suite 1",
              "description": "Avid Media Composer",
              "type_id": 1,
              "type_user_id": 0,
              "parent_id": 0
            },
            {
              "id": 2,
              "name": "Edit Suite 2",
              "description": "Avid Media Composer",
              "type_id": 1,
              "type_user_id": 0,
              "parent_id": 0
            },
            {
              "id": 7,
              "name": "Joe Smith",
              "description": "",
              "type_id": 2,
              "type_user_id": 15,
              "parent_id": 9
            },
            {
              "id": 9,
              "name": "Staff",
              "description": "",
              "type_id": 4,
              "type_user_id": 0,
              "parent_id": 0
            }
          ],
          "access": [
            {
              "id": "1",
              "name": "Base",
              "type": "group"
            },
            {
              "id": "2",
              "name": "Staff",
              "type": "group"
            },
            {
              "id": "3",
              "name": "Administrators",
              "type": "group"
            },
            {
              "id": "4",
              "name": "Super Administrators",
              "type": "group"
            },
            {
              "id": "10",
              "name": "Video Editors",
              "type": "group"
            }
          ],
          "feed": "https://test.foxoms.com/feed/schedule/891e37cc6f9bef7923fe8d8c5ed66e74615a6",
          "order": 4,
          "default": false,
          "default_color_mode": "resource",
          "sunday_start": false,
          "first_hour": 11,
          "last_hour": 20,
          "scroll_hour": 0,
          "time_step_min": 5,
          "fill_cell": false,
          "created_id": 1,
          "created": 1388552400,
          "updated_id": 1,
          "updated": 1489151475
        },
        ...MORE_RESULTS_TRUNCATED...
      ],
      "meta": {
        "pagination": {
          "total": 2,
          "count": 1,
          "per_page": 2,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    This endpoint retrieves all schedules. The results returned are paginated.

    HTTP Request

    GET https://api.foxoms.com/v1/schedule

    Query Parameters

    Parameter Default Description Example
    page false Return results pertaining to that page page=3
    fields false Allows you to return only attributes that you require fields=id,name,description
    limit 10 The number of results returned per page limit=50
    order_asc id Allows ordering of results by any attribute order_asc=order
    order_desc false Allows ordering of results by any attribute order_desc=order
    with_acl false When true, only returns schedules according to the acl's applied to the current user with_acl=true

    Filtering Results

    You can also filter the results by specifying almost any attribute returned as a parameter.

    For example, you can return only schedules that have a sunday start flag of 1 by adding the following query parameter

    sunday_start_flag=1

    Attributes

    Name Type Description
    id integer Unique ID of the schedule
    name string Title of the schedule
    description string Description of the schedule
    resources array of objects Returns resources that have been added to this schedule
    access array of objects Returns users and groups that have been access to this schedule
    feed string Returns the feed (currently only one feed is allowed per schedule) associated with this schedule
    order integer The order that this schedule will appear in the returned results
    sunday_start boolean If the week starts with a Sunday (true) or on Monday (false)
    first_hour integer The first hour shown on the schedule (0 - 23)
    last_hour integer The last hour shown on the schedule (1 - 24)
    scroll_hour integer The hour to scroll to on load (applies to daily and weekly calendar views only)
    time_step_min integer The number of minutes between each ‘step’ on the schedule
    fill_cell boolean If true, the entire schedule cell is filled with the booking, if false, the booking is shown with its start and end times (applied to timeline views only)
    created_id integer The unique ID of the person (user) who created this record
    created integer The UNIX time value of the creation time
    updated_id integer The unique ID of the person (user) who last updated this record
    updated integer The UNIX time value of the last update

    Get a Specific Schedule

    curl "https://api.foxoms.com/v1/schedule?id=2&fields=id,name,description,resources"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 2,
          "name": "Sydney Office Shared",
          "description": "Schedule for shared division of Sydney Office",
          "resources": [
            {
              "id": 1,
              "name": "Edit Suite 1",
              "description": "Avid Media Composer",
              "type_id": 1,
              "parent_id": 0
            },
            {
              "id": 29,
              "name": "Edit Action",
              "description": "",
              "type_id": 5,
              "parent_id": 0
            }
          ]
        }
      ],
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 1,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    The same schedule endpoint is used with a filter applied to return only a specific schedule. We've also specifically requested the fields we need to improve speed and readability.

    HTTP Request

    GET https://api.foxoms.com/v1/schedule?id=<ID>

    URL Parameters

    Parameter Description Example
    id The ID of the schedule to retrieve
    fields Allows you to return only attributes that you require fields=id,name,description,resources

    People

    Get All People

    curl "https://api.foxoms.com/v1/people"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 6,
          "first_name": "Anna",
          "last_name": "Marie",
          "username": "annamarie",
          "primary_email": "[email protected]",
          "user": false,
          "resource": false,
          "client": true,
          "group_id": 0,
          "organization_id": 1,
          "email_2": "",
          "email_3": "",
          "phone_1": "",
          "phone_2": "",
          "phone_3": "",
          "address_line_1": "123 Awesome Street",
          "address_line_2": "Lane 2",
          "address_line_3": "Place Somehwere",
          "address_city": "Sydney",
          "address_state": "NSW",
          "address_postcode": "2250",
          "address_country": "Australia",
          "website": "",
          "notes": "",
          "timezone": "",
          "locale": "en_US",
          "date_format": "j/n/y",
          "time_format": "1",
          "avatar_file_id": 0,
          "expires": 0,
          "custom_fields": [
            {
              "id": 8,
              "name": "Extra Postcode",
              "value": null,
              "value_id": 0
            }
          ],
          "created_id": 1,
          "created": 1388552400,
          "updated_id": 1,
          "updated": 1480481190
        },
        ...MORE_RESULTS_TRUNCATED...
      ],
      "meta": {
        "pagination": {
          "total": 8,
          "count": 1,
          "per_page": 8,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    This endpoint retrieves all people. The results returned are paginated.

    HTTP Request

    GET https://api.foxoms.com/v1/people

    Query Parameters

    Parameter Default Description Example
    page false Return results pertaining to that page page=3
    fields false Allows you to return only attributes that you require fields=id,first_name,last_name,username
    limit 10 The number of results returned per page limit=50

    Filtering Results

    You can also filter the results by specifying almost any attribute returned as a parameter.

    For example, you can return only people that have been designated as users by adding the following query parameter

    user_flag=1

    Attributes

    Name Type Description
    id integer Unique ID of the person
    first_name string First name of the person
    last_name string Last name of the person
    username string Username that can be used to login
    primary_email string The main email of the person, also can be used to login
    user boolean Is the person selected as a user
    resource boolean Is the person selected as a resource
    client boolean Is the person selected as a client
    group_id integer The unique ID of the group that this person (user) is added to
    organization_id integer The unique ID of the organization that this person is added to
    email_2 string Second email address
    email_3 string Third email address
    phone_1 string Phone 1
    phone_2 string Phone 2
    phone_3 string Phone 3
    address_line_1 string Address Line 1
    address_line_2 string Address Line 2
    address_line_3 string Address Line 3
    address_city string Address City
    address_state string Address State
    address_postcode string Address Postcode
    address_country string Address Country
    website string Website
    notes string Any notes on the person
    timezone string Timezone selected by the person (user)
    locale string Locale selected by the person (user)
    date_format string Date Format selected by the person (user)
    time_format string Time Format selected by the person (user)
    avatar_file_id integer Unique image file ID linked to this person
    expires integer Account expiry date in UNIX time
    custom_fields array of objects Returns any custom fields that exist for the people module as well as any values selected for this person
    created_id integer The unique ID of the person (user) who created this record
    created integer The UNIX time value of the creation time
    updated_id integer The unique ID of the last person (user) who updated this record
    updated integer The UNIX time value of when this record was last updated

    Get a Specific Person

    curl "https://api.foxoms.com/v1/people?id=1&fields=id,first_name,last_name,user"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 1,
          "first_name": "Joe",
          "last_name": "Smith",
          "user": true
        }
      ],
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 1,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    The same people endpoint is used with a filter applied to return only a specific person. We've also specifically requested the fields we need to improve speed and readability.

    HTTP Request

    GET https://api.foxoms.com/v1/people?id=<ID>

    URL Parameters

    Parameter Description Example
    id The ID of the person to retrieve
    fields Allows you to return only attributes that you require fields=id,first_name,last_name,user_flag

    Groups

    Get All Groups

    curl "https://api.foxoms.com/v1/group"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
        "data": [
            {
                "id": 2,
                "name": "Staff",
                "description": "Staff",
                "members": [
                    {
                        "id": 2,
                        "first_name": "Tim",
                        "last_name": "Smith",
                        "primary_email": "[email protected]"
                    },
                    {
                        "id": 4,
                        "first_name": "Jane",
                        "last_name": "Someone",
                        "primary_email": "[email protected]"
                    }
                ],
                "acl_schedule": "RW",
                "acl_project": "RW",
                "acl_task": "RW",
                "acl_finance": "--",
                "acl_admin": "--",
                "acl_account": "--",
                "created_id": 1,
                "created": 1388552400,
                "updated_id": 1,
                "updated": 1388552400
            },
            {
                "id": 3,
                "name": "Administrators",
                "description": "Admins",
                "members": [],
                "acl_schedule": "RW",
                "acl_project": "RW",
                "acl_task": "RW",
                "acl_finance": "RW",
                "acl_admin": "RW",
                "acl_account": "--",
                "created_id": 1,
                "created": 1388552400,
                "updated_id": 1,
                "updated": 1388552400
            },
            {
                "id": 4,
                "name": "Super Administrators",
                "description": "Super Admins",
                "members": [
                    {
                        "id": 5,
                        "first_name": "Steve",
                        "last_name": "Smith",
                        "primary_email": "[email protected]"
                    }
                ],
                "acl_schedule": "RW",
                "acl_project": "RW",
                "acl_task": "RW",
                "acl_finance": "RW",
                "acl_admin": "RW",
                "acl_account": "RW",
                "created_id": 1,
                "created": 1388552400,
                "updated_id": 1,
                "updated": 1388552400
            },
            {
                "id": 6,
                "name": "Editor Admins",
                "description": "",
                "members": [],
                "acl_schedule": "RW",
                "acl_project": "RW",
                "acl_task": "RW",
                "acl_finance": "RW",
                "acl_admin": "--",
                "acl_account": "--",
                "created_id": 1,
                "created": 1488454242,
                "updated_id": 1,
                "updated": 1488454996
            }
        ],
        "meta": {
            "pagination": {
                "total": 4,
                "count": 1,
                "per_page": 4,
                "current_page": 1,
                "total_pages": 1,
                "links": []
            }
        }
    }
    

    This endpoint retrieves all groups. The results returned are paginated.

    HTTP Request

    GET https://api.foxoms.com/v1/group

    Query Parameters

    Parameter Default Description Example
    page false Return results pertaining to that page page=3
    fields false Allows you to return only attributes that you require fields=id,name,description
    limit 10 The number of results returned per page limit=50

    Filtering Results

    You can also filter the results by specifying almost any attribute returned as a parameter.

    For example, you can return only groups that have read and write access to the admin module by adding the following query parameter

    acl_admin=RW

    Attributes

    Name Type Description
    id integer Unique ID of the group
    name string Name of the group
    description string Desription of the group
    members array of objects Lists the members (currently only users) of this group
    acl_schedule string Level of access to the schedule module
    acl_project string Level of access to the project module
    acl_task string Level of access to the task module
    acl_finance string Level of access to the finance module
    acl_admin string Level of access to the admin module
    acl_account string Level of access to the account module (Reserved for future use)
    created_id integer The unique ID of the person (user) who created this record
    created integer The UNIX time value of the creation time
    updated_id integer The unique ID of the last person (user) who updated this record
    updated integer The UNIX time value of the last person (user) who updated this record

    Get a Specific Group

    curl "https://api.foxoms.com/v1/group?id=4&fields=id,name,description,acl_task"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 4,
          "name": "Super Administrators",
          "description": "Super Admins",
          "acl_task": "RW"
        }
      ],
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 1,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    The same group endpoint is used with a filter applied to return only a specific group. We've also specifically requested the fields we need to improve speed and readability.

    HTTP Request

    GET https://api.foxoms.com/v1/group?id=<ID>

    URL Parameters

    Parameter Description Example
    id The ID of the resource to retrieve
    fields Allows you to return only attributes that you require fields=id,name,description,acl_task

    Organizations

    Get All Organizations

    curl "https://api.foxoms.com/v1/organization"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 1,
          "name": "ABC Australia",
          "client": true,
          "email_1": "",
          "email_2": "",
          "phone_1": "",
          "phone_2": "",
          "address_line_1": "A Line",
          "address_line_2": "B Line",
          "address_line_3": "C Line",
          "address_city": "City",
          "address_state": "VIC",
          "address_postcode": "2023",
          "address_country": "Australia",
          "website": "",
          "notes": "",
          "custom_fields": [
            {
              "id": 3,
              "name": "Organization Field",
              "value": "Test",
              "value_id": 0
            }
          ],
          "created_id": 1,
          "created": 1409651928,
          "updated_id": 1,
          "updated": 1481439436
        },
        ...MORE_RESULTS_TRUNCATED...
      ],
      "meta": {
        "pagination": {
          "total": 2,
          "count": 1,
          "per_page": 2,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    This endpoint retrieves all organizations. The results returned are paginated.

    HTTP Request

    GET https://api.foxoms.com/v1/organization

    Query Parameters

    Parameter Default Description Example
    page false Return results pertaining to that page page=3
    fields false Allows you to return only attributes that you require fields=id,name
    limit 10 The number of results returned per page limit=50

    Filtering Results

    You can also filter the results by specifying almost any attribute returned as a parameter.

    For example, you can return only groups that have read and write access to the admin module by adding the following query parameter

    acl_admin=RW

    Attributes

    Name Type Description
    id integer Unique ID of the organization
    name string Name of the organization
    client boolean Is the organization able to be selected as a client on bookings, projects etc.
    email_1 string First email address
    email_2 string Second email address
    phone_1 string First phone number
    phone_2 string Second phone number
    address_line_1 string Address Line 1
    address_line_2 string Address Line 2
    address_line_3 string Address Line 3
    address_city string Address City
    address_state string Address State
    address_postcode string Address Postcode
    address_country string Address Country
    website string Website
    notes string Any notes on the organization
    custom_fields array of objects Returns any custom fields that exist for the organization module as well as any values selected for this organization
    created_id integer The unique ID of the person (user) who created this record
    created integer The UNIX time value of the creation time
    updated_id integer The unique ID of the last person (user) who updated this record
    updated integer The UNIX time value of when this record was last updated

    Get a Specific Organization

    curl "https://api.foxoms.com/v1/organization?id=1&fields=id,name,address_state,address_country"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 1,
          "name": "ABC Australia",
          "address_state": "VIC",
          "address_country": "Australia"
        }
      ],
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 1,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    The same organization endpoint is used with a filter applied to return only a specific organization. We've also specifically requested the fields we need to improve speed and readability.

    HTTP Request

    GET https://api.foxoms.com/v1/organization?id=<ID>

    URL Parameters

    Parameter Description Example
    id The ID of the resource to retrieve
    fields Allows you to return only attributes that you require fields=id,name,description,address_state,address_country

    Custom Fields

    Get All Custom Fields

    curl "https://api.foxoms.com/v1/customfield"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 1,
          "name": "Producer",
          "description": "The name of the producer",
          "type": "text",
          "options": [],
          "module": "project",
          "order": 3,
          "required": true,
          "created_id": 0,
          "created": 0,
          "updated_id": 0,
          "updated": 0
        },
        {
          "id": 2,
          "name": "Lunch Choice",
          "description": "Pick your lunch choice",
          "type": "select",
          "options": [
            {
              "id": "1",
              "name": "Pizza",
              "order": "2"
            },
            {
              "id": "2",
              "name": "Butter Chicken Curry",
              "order": "0"
            },
            {
              "id": "3",
              "name": "Sushi",
              "order": "1"
            },
            {
              "id": "4",
              "name": "Lasanya",
              "order": "3"
            }
          ],
          "module": "project",
          "order": 1,
          "required": true,
          "created_id": 0,
          "created": 0,
          "updated_id": 0,
          "updated": 0
        },
        {
          "id": 3,
          "name": "Organization Field",
          "description": "",
          "type": "text",
          "options": [],
          "module": "organization",
          "order": 0,
          "required": false,
          "created_id": 1,
          "created": 1476831564,
          "updated_id": 1,
          "updated": 1476831564
        },
        {
          "id": 4,
          "name": "PO Field",
          "description": "This is a PO Field",
          "type": "text",
          "options": [],
          "module": "quote_invoice",
          "order": 0,
          "required": false,
          "created_id": 1,
          "created": 1477423612,
          "updated_id": 1,
          "updated": 1477423612
        },
        {
          "id": 5,
          "name": "Other Field",
          "description": "",
          "type": "select",
          "options": [
            {
              "id": "5",
              "name": "Test",
              "order": "0"
            },
            {
              "id": "6",
              "name": "Testing",
              "order": "1"
            },
            {
              "id": "7",
              "name": "Testing Again",
              "order": "2"
            }
          ],
          "module": "invoice",
          "order": 0,
          "required": false,
          "created_id": 1,
          "created": 1477509348,
          "updated_id": 1,
          "updated": 1477509719
        },
        {
          "id": 6,
          "name": "Booking Type",
          "description": "",
          "type": "select",
          "options": [
            {
              "id": "8",
              "name": "0. Grade",
              "order": "0"
            },
            {
              "id": "9",
              "name": "1. Sound Mix",
              "order": "1"
            },
            {
              "id": "10",
              "name": "2. Picture Edit",
              "order": "2"
            }
          ],
          "module": "booking",
          "order": 0,
          "required": false,
          "created_id": 1,
          "created": 1478544788,
          "updated_id": 1,
          "updated": 1489358581
        },
        {
          "id": 7,
          "name": "Booking Producer",
          "description": "",
          "type": "text",
          "options": [],
          "module": "booking",
          "order": 2,
          "required": true,
          "created_id": 1,
          "created": 1479506071,
          "updated_id": 1,
          "updated": 1489383284
        },
        {
          "id": 8,
          "name": "Extra Postcode",
          "description": "",
          "type": "text",
          "options": [],
          "module": "people",
          "order": 0,
          "required": false,
          "created_id": 1,
          "created": 1481432042,
          "updated_id": 1,
          "updated": 1481432042
        }
      ],
      "meta": {
        "pagination": {
          "total": 9,
          "count": 1,
          "per_page": 9,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    This endpoint retrieves all custom fields. The results returned are paginated.

    HTTP Request

    GET https://api.foxoms.com/v1/customfield

    Query Parameters

    Parameter Default Description Example
    page false Return results pertaining to that page page=3
    fields false Allows you to return only attributes that you require fields=id,name
    limit 10 The number of results returned per page limit=50

    Filtering Results

    You can also filter the results by specifying almost any attribute returned as a parameter.

    For example, you can return only text based custom fields by adding the following query parameter

    type=text

    Attributes

    Name Type Description
    id integer Unique ID of the custom field
    name string Name of the custom field
    description string Comments on the what information is tracked by the custom field
    type string Input type of field, eg text input or select menu
    options array of objects The available options for this field (if type is set to select)
    module string The module that this custom field is assigned to
    order integer The order in which the custom field appears
    required boolean Does this field need to be filled in or can it be left blank
    created_id integer The unique ID of the person (user) who created this record
    created integer The UNIX time value of the creation time
    updated_id integer The unique ID of the person (user) who last updated this record
    updated integer The UNIX time value of the last update

    Get a Specific Custom Field

    curl "https://api.foxoms.com/v1/customfield?id=4&fields=id,name,type,module"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 4,
          "name": "PO Field",
          "type": "text",
          "module": "quote_invoice"
        }
      ],
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 1,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    The same custom field endpoint is used with a filter applied to return only a specific custom field. We've also specifically requested the fields we need to improve speed and readability.

    HTTP Request

    GET https://api.foxoms.com/v1/customfield?id=<ID>

    URL Parameters

    Parameter Description Example
    id The ID of the custom field to retrieve
    fields Allows you to return only attributes that you require fields=id,name,type

    Rate Schemes

    Get All Rate Schemes

    curl "https://api.foxoms.com/v1/ratescheme"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 1,
          "type_id": 1,
          "name": "Edit Suites",
          "resources": [
            {
              "id": 1,
              "name": "Edit Suite 1",
              "description": "Avid Media Composer",
              "type_id": 1,
              "type_user_id": 0,
              "parent_id": 0
            },
            {
              "id": 2,
              "name": "Edit Suite 2",
              "description": "Avid Media Composer",
              "type_id": 1,
              "type_user_id": 0,
              "parent_id": 0
            },
            {
              "id": 3,
              "name": "Edit Suite 3",
              "description": "Avid ProTools",
              "type_id": 1,
              "type_user_id": 0,
              "parent_id": 0
            }
          ],
          "clients": [],
          "projects": [],
          "hour_rate": "55.00",
          "day_rate": "150.00",
          "fixed_date": false,
          "date_start": "0000-00-00",
          "date_end": "0000-00-00",
          "time_start": "00:00:00",
          "time_end": "00:00:00",
          "overtime_hours": "0.00",
          "override_base": true,
          "default_unit": 0,
          "default_tax": true,
          "note": "",
          "created_id": 0,
          "created": 1534572218,
          "updated_id": 0,
          "updated": 1534572218
        }
      ],
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 1,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    This endpoint retrieves all rate schemes. The results are returned paginated.

    HTTP Request

    GET https://api.foxoms.com/v1/ratescheme

    Query Paramaters

    Parameter Default Description Example
    page false Return results pertaining to that page page=3
    fields false Allows you to return only attributes that you require fields=id,start,end
    limit 10 The number of results returned per page limit=50
    filter_operator OR Allows overriding of the default filtering method (either AND or OR). filter_operator=AND

    Filtering Results

    You can also filter the results by specifying almost any attribute returned as a parameter.

    For example, you can return only rateschemes that have a type id of 4 by adding the following query parameter

    type_id=4

    You can also separate multiple search values by a comma, for example to return multiple records.

    id=2,3,43,109,23

    You can also concatenate multiple attributes to search for and change the filtering logic using the filter_operator

    id=5&type_id=3&filter_operator=AND

    The above code snippet would only return records that have an id of 5 AND a type_id of 3

    Attributes

    Name Type Description
    id integer Unique ID of the rate scheme
    type_id integer 1 = Base Rate, 2 = Seasonal Adjustment, 3 = Hourly Adjustment, 4 = Client Adjustment, 5 = Advanced Adjustment, 6 = Project Adjustment
    name string Name of the Rate Scheme
    resources array of objects Returns resources that have been added to this rate scheme
    clients array of objects Returns people and organizations that have been added as clients to this rate scheme
    projects array of objects Returns projects that have been added to this rate scheme
    hour_rate string The hourly rate of all resources scoped to this rate scheme
    hour_rate_percent boolean If the hourly rate is actually a percentage (worked out from a base rate)
    day_rate string The daily rate of all resources scoped to this rate scheme
    day_rate_percent boolean If the daily rate is actually a percentage (worked out from a base rate)
    fixed_date boolean True if the rate scheme does not recur every year
    date_start string Date this rate scheme starts in SQL Date format
    date_end string Date this rate scheme ends in SQL Date format
    time_start string Time this rate scheme starts in SQL Time format
    time_end string Time this rate scheme ends in SQL Time format
    overtime_hours string Number of hours can elapse in a booking before it goes into overtime
    override_base boolean False = don't override any other base rates, True = Override other base rates and replace with this one
    default_unit integer 0 = Hourly, 1 = Daily
    default_tax boolean 0 = Dont Apply Tax, 1 = Apply Tax
    note string Any notes relating to this rate scheme
    created_id integer The unique ID of the person (user) who created this record
    created integer The UNIX time value of the creation time
    updated_id integer The unique ID of the person (user) who last updated this record
    updated integer The UNIX time value of the last update

    Get a Specific Rate Scheme

    curl "https://api.foxoms.com/v1/ratescheme?id=3&fields=id,name,date_start,date_end"
      -H "Authorization: Bearer 74305f35862b76db"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "id": 3,
          "name": "Project Discounts",
          "date_start": "0000-00-00",
          "date_end": "0000-00-00"
        }
      ],
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 1,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    The same endpoint is used with a filter applied to return only a specific ratescheme. We've also specifically requested the fields we need to improve speed and efficiency.

    HTTP Request

    GET https://api.foxoms.com/v1/ratescheme?id=<ID>

    URL Parameters

    Parameter Description Example
    id The ID of the ratescheme to retrieve
    fields Allows you to return only attributes that you require fields=id,start,end
    filter_operator Allows overriding of the default filtering method (either AND or OR). filter_operator=AND

    Errors

    The FoxOMS API uses the following error codes:

    Error Code Meaning
    400 Bad Request -- The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications
    401 Unauthorized -- If the request already included Authorization credentials, then the 401 response indicates that authorization has been refused for those credentials
    403 Forbidden -- The server understood the request, but is refusing to fulfill it. Authorization will not help and the request SHOULD NOT be repeated
    404 Not Found -- The server has not found anything matching the Request-URI.
    409 Conflict -- The request could not be completed due to a conflict with the current state of the resource
    429 Too Many Requests -- We allow a maximum of 1 request per second
    500 Internal Server Error -- The server encountered an unexpected condition which prevented it from fulfilling the request
    503 Service Unavailable -- We're temporarially offline for maintanance. Please try again later.