{
    "swagger": "2.0",
    "info": {
        "title": "Intervals API",
        "description": "The Intervals REST API provides programmatic access to your Intervals account — projects, tasks, time entries, invoices, clients, and more.\n\n**Base URL:** `https://api.myintervals.com/`\n\n**Authentication:** HTTP Basic Auth. Use your Intervals API token as the username and any non-empty string as the password. Your API token is available under My Profile in the Intervals web app.\n\n**Response format:** Set the `Accept` header to `application/json` (recommended) or `application/xml`. If you omit `Accept`, responses default to XML.\n\n**Dates and times (query parameters and request bodies):**\n- **Calendar date only:** `YYYY-MM-DD` in the account's local calendar.\n- **Date and time (UTC):** `YYYY-MM-DD HH:MM:SS` with a space between the date and time (not `T` or a `Z`/offset suffix). Encode the space as `%20` in query strings.\n\n**Pagination:** Collection `GET` endpoints accept `limit` and `offset` (defaults 10 and 0). Each response includes `listcount` for the full match count before paging.\n\n**Collection responses:** `GET /{resource}/` wraps results with `personid`, `status`, `code`, `listcount`, and an array under the resource name.\n\n**Rate limiting:** Each account has a daily quota. `GET /quota/` reports usage and the next reset (GMT) and does not count against the quota.\n\n**Roles:** Access follows the signed-in user's role: Administrator, Manager, Resource, or Executive.\n\n**Current user:** `GET /me/` returns the authenticated account. Overview: https://www.myintervals.com/api/introduction#current-user\n\n**Errors:** Non-2xx responses include `status`, HTTP `code`, and `error` with Intervals `code` and `message`. See `/api/errors` for codes. Typical HTTP statuses: 400 (bad request), 401 (authentication), 403 (forbidden), 404 (not found).\n",
        "version": "1.2",
        "contact": {
            "name": "Intervals API Support",
            "email": "api@myintervals.com",
            "url": "https://www.myintervals.com/api/"
        }
    },
    "host": "api.myintervals.com",
    "schemes": [
        "https"
    ],
    "externalDocs": {
        "description": "Intervals API documentation",
        "url": "https://www.myintervals.com/api/"
    },
    "securityDefinitions": {
        "basicAuth": {
            "type": "basic"
        }
    },
    "security": [
        {
            "basicAuth": []
        }
    ],
    "paths": {
        "/client": {
            "get": {
                "tags": [
                    "client"
                ],
                "summary": "Get one or more clients",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "localid",
                        "in": "query",
                        "description": "Restricts the list based on a client's \"localid,\" which is the number that appears associated with the client in the Intervals application. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "active",
                        "in": "query",
                        "description": "Limits the list to clients who are either active or inactive.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Limits the list to clients who match the search string. Searches client name, description and localid.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "projectsonly",
                        "in": "query",
                        "description": "Limits the list to clients who have active projects only.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "sortfield",
                        "in": "query",
                        "description": "Sort the list by any of the following fields: id, localid, name, datecreated",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "sortdir",
                        "in": "query",
                        "description": "Sets the sort direction of the returned list. Must be either \"ASC\" or \"DESC\".",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return clients starting from the nth client.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of clients returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/client_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "client"
                ],
                "summary": "Add a client",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "client",
                        "schema": {
                            "$ref": "#/definitions/client"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/client_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/client/{id}/": {
            "get": {
                "tags": [
                    "client"
                ],
                "summary": "Retrieve a client by id.",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/client_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "client"
                ],
                "summary": "Update a client by id.",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "client",
                        "schema": {
                            "$ref": "#/definitions/client"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/client_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "client"
                ],
                "summary": "Delete a client",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/contactdescriptor": {
            "get": {
                "tags": [
                    "contactdescriptor"
                ],
                "summary": "Get one or more contactdescriptors",
                "description": "Available to user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "contacttypeid",
                        "in": "query",
                        "description": "Each contact type has various descriptors. This limits the list by the contact type of the ID passed.",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/contactdescriptor_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/contacttype": {
            "get": {
                "tags": [
                    "contacttype"
                ],
                "summary": "Get one or more contacttypes",
                "description": "Available to user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/contacttype_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/document": {
            "get": {
                "tags": [
                    "document"
                ],
                "summary": "Get one or more documents",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "public",
                        "in": "query",
                        "description": "Limits the list to only documents visible to executive-level users.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "taskid",
                        "in": "query",
                        "description": "Limits the list to documents that are part of the task having the ID passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "milestoneid",
                        "in": "query",
                        "description": "Limits the list to documents that are part of the milestone having the ID passed, either belonging to the milestone itself or belonging to a task that is part of that milestone. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "queueid",
                        "in": "query",
                        "description": "Limits the list to documents that are part of the work request having the ID passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "clientid",
                        "in": "query",
                        "description": "Limits the list to documents belonging to the client with the ID passed; belonging to projects, tasks or milestones that are part of that client. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "projectid",
                        "in": "query",
                        "description": "Limits the list to documents belonging to the project with the ID passed, either belonging to the project itself or belonging to tasks or milestones that are part of that project. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "moduleid",
                        "in": "query",
                        "description": "Limits the list to documents belonging to tasks that have the module with the ID passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "personid",
                        "in": "query",
                        "description": "Limits the list to documents originally uploaded by the person with the ID passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Limits the list to documents that match the search string.. Searches title, notes, filename and tags.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "projectactive",
                        "in": "query",
                        "description": "Limits the list to documents belonging to either active or inactive projects.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "taskassignedorownedby",
                        "in": "query",
                        "description": "Excludes task documents in which the person with the ID passed is not a task assignee, owner or follower.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "tag",
                        "in": "query",
                        "description": "Limits the list to documents tagged with the tag passed.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "datebegin",
                        "in": "query",
                        "description": "Limits the list to documents uploaded on or after the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "dateend",
                        "in": "query",
                        "description": "Limits the list to documents uploaded on or before the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "sortfield",
                        "in": "query",
                        "description": "Sort the list by any of the following fields: id, personid, title, public, datemodified, active.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "sortdir",
                        "in": "query",
                        "description": "Sets the sort direction of the returned list. Must be either \"ASC\" or \"DESC\".",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return documents starting from the nth document.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of documents returned in the response.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "id",
                        "in": "query",
                        "description": "A workaround to requesting the member resource, as the collection resource is much more detailed.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/document_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/document/{id}/": {
            "get": {
                "tags": [
                    "document"
                ],
                "summary": "Retrieve a document by id.",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/document_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/document/{documentid}/download/": {
            "get": {
                "tags": [
                    "document"
                ],
                "summary": "Download a document",
                "description": "Allows you to download the most recent version of this document.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "documentid",
                        "in": "path",
                        "description": "The id of the document being downloaded.",
                        "required": true,
                        "type": "integer"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/expense": {
            "get": {
                "tags": [
                    "expense"
                ],
                "summary": "Get one or more expenses",
                "description": "Available to Administrator, Manager, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "projectid",
                        "in": "query",
                        "description": "Limits the list to expenses belonging to the projects with the ID(s) passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "personid",
                        "in": "query",
                        "description": "Limits the list to expenses added by the persons with the ID passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "clientid",
                        "in": "query",
                        "description": "Limits the list to expenses belonging to a project belonging to the clients with the ID passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "managerid",
                        "in": "query",
                        "description": "Limits the list to expenses belonging to a project managed by the persons with the ID passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "datebegin",
                        "in": "query",
                        "description": "Limits the list to expenses having a date on or after the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "dateend",
                        "in": "query",
                        "description": "Limits the list to expenses having a date on or before the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "date",
                        "in": "query",
                        "description": "Limits the list to expenses having the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "sortfield",
                        "in": "query",
                        "description": "Sort the list by any of the following fields: id, projectid, date, expense, fee, note, personid, project, client, and person",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "sortdir",
                        "in": "query",
                        "description": "Sets the sort direction of the returned list. Must be either \"ASC\" or \"DESC\".",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return expenses starting from the nth expense.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of expenses returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/expense_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "expense"
                ],
                "summary": "Add a expense",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "expense",
                        "schema": {
                            "$ref": "#/definitions/expense"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/expense_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/expense/{id}/": {
            "get": {
                "tags": [
                    "expense"
                ],
                "summary": "Retrieve a expense by id.",
                "description": "Available to Administrator, Manager, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/expense_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "expense"
                ],
                "summary": "Update a expense by id.",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "expense",
                        "schema": {
                            "$ref": "#/definitions/expense"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/expense_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "expense"
                ],
                "summary": "Delete a expense",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/group": {
            "get": {
                "tags": [
                    "group"
                ],
                "summary": "Get one or more groups",
                "description": "Available to user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/group_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/group/{id}/": {
            "get": {
                "tags": [
                    "group"
                ],
                "summary": "Retrieve a group by id.",
                "description": "Available to user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/group_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/invoice": {
            "get": {
                "tags": [
                    "invoice"
                ],
                "summary": "Get one or more invoices",
                "description": "Available to Administrator, Manager, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "localid",
                        "in": "query",
                        "description": "Restricts the list based on a invoice's \"localid,\" which is the number that appears associated with the invoice in the Intervals application. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "clientid",
                        "in": "query",
                        "description": "Limits the list to invoices belonging to the client with the ID passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "projectid",
                        "in": "query",
                        "description": "Limits the list to invoices belonging to the project with the ID passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "datebegin",
                        "in": "query",
                        "description": "Limits the list to expenses having a date on or after the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "dateend",
                        "in": "query",
                        "description": "Limits the list to expenses having a date on or before the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "description": "Useful for specifying specific invoice statuses. Can be either \"outstanding\" or \"paid\".",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Limits the list to invoices that match the search string.. Searches title, description, localid, purchase order and address fields.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "sortfield",
                        "in": "query",
                        "description": "Sort the list by any of the following fields: id, projectid, date, title, description, localid, purchaseorder, project, client, datepaid, subtotal, total, payments, balance, datedue, and daysoverdue.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "sortdir",
                        "in": "query",
                        "description": "Sets the sort direction of the returned list. Must be either \"ASC\" or \"DESC\".",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return invoices starting from the nth invoice.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of invoices returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/invoice_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "invoice"
                ],
                "summary": "Add a invoice",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "invoice",
                        "schema": {
                            "$ref": "#/definitions/invoice"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/invoice_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/invoice/{id}/": {
            "get": {
                "tags": [
                    "invoice"
                ],
                "summary": "Retrieve a invoice by id.",
                "description": "Available to Administrator, Manager, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/invoice_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "invoice"
                ],
                "summary": "Update a invoice by id.",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "invoice",
                        "schema": {
                            "$ref": "#/definitions/invoice"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/invoice_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "invoice"
                ],
                "summary": "Delete a invoice",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/invoiceitem": {
            "get": {
                "tags": [
                    "invoiceitem"
                ],
                "summary": "Get one or more invoiceitems",
                "description": "Available to Administrator, Manager, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "invoiceid",
                        "in": "query",
                        "description": "Limits the list to invoice items belonging to the invoice with the ID passed.",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "name": "sortfield",
                        "in": "query",
                        "description": "Sort the list by any of the following fields: id, invoiceid, name, description, quantity, rate, and amount.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "sortdir",
                        "in": "query",
                        "description": "Sets the sort direction of the returned list. Must be either \"ASC\" or \"DESC\".",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return invoiceitems starting from the nth invoiceitem.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of invoiceitems returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/invoiceitem_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "invoiceitem"
                ],
                "summary": "Add a invoiceitem",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "invoiceitem",
                        "schema": {
                            "$ref": "#/definitions/invoiceitem"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/invoiceitem_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/invoiceitem/{id}/": {
            "get": {
                "tags": [
                    "invoiceitem"
                ],
                "summary": "Retrieve a invoiceitem by id.",
                "description": "Available to Administrator, Manager, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/invoiceitem_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "invoiceitem"
                ],
                "summary": "Update a invoiceitem by id.",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "invoiceitem",
                        "schema": {
                            "$ref": "#/definitions/invoiceitem"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/invoiceitem_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "invoiceitem"
                ],
                "summary": "Delete a invoiceitem",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/invoicenote": {
            "get": {
                "tags": [
                    "invoicenote"
                ],
                "summary": "Get one or more invoicenotes",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "invoiceid",
                        "in": "query",
                        "description": "Limits the list to invoice notes belonging to the invoice with the ID passed.",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "name": "authorid",
                        "in": "query",
                        "description": "Limits the list to invoice notes created by the person with the ID passed.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return invoicenotes starting from the nth invoicenote.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of invoicenotes returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/invoicenote_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "invoicenote"
                ],
                "summary": "Add a invoicenote",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "invoicenote",
                        "schema": {
                            "$ref": "#/definitions/invoicenote"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/invoicenote_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/invoicenote/{id}/": {
            "get": {
                "tags": [
                    "invoicenote"
                ],
                "summary": "Retrieve a invoicenote by id.",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/invoicenote_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "invoicenote"
                ],
                "summary": "Update a invoicenote by id.",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "invoicenote",
                        "schema": {
                            "$ref": "#/definitions/invoicenote"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/invoicenote_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "invoicenote"
                ],
                "summary": "Delete a invoicenote",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/invoiceterm": {
            "get": {
                "tags": [
                    "invoiceterm"
                ],
                "summary": "Get one or more invoiceterms",
                "description": "Available to user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/invoiceterm_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/invoiceterm/{id}/": {
            "get": {
                "tags": [
                    "invoiceterm"
                ],
                "summary": "Retrieve a invoiceterm by id.",
                "description": "Available to user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/invoiceterm_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/me": {
            "get": {
                "tags": [
                    "me"
                ],
                "summary": "View your account",
                "description": "Available to user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/me_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/milestone": {
            "get": {
                "tags": [
                    "milestone"
                ],
                "summary": "Get one or more milestones",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "localid",
                        "in": "query",
                        "description": "Restricts the task list based on a task's \"localid,\" which is the number that appears associated with the task in the Intervals application. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Limits the list to milestones that match the search string. Searches title, description, notes, and localid.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "clientid",
                        "in": "query",
                        "description": "Limits the list to milestones that belong to the client corresponding to the ID(s) passed. You can pass a value of -1 for projects that have no client. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "projectid",
                        "in": "query",
                        "description": "Limits the list to milestones that belong to the project corresponding to the ID(s) passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "ownerid",
                        "in": "query",
                        "description": "Limits the list to milestones that belong to the owner corresponding to the ID(s) passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "hasmilestonerelation",
                        "in": "query",
                        "description": "Limits the list to milestones that are either owned by, or contains tasks which the people with the IDs specified are assigned, own, or are followers of. For restricted resources (users who can only see tasks that they own or that are assigned to them), this value will be set to the user by default. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "complete",
                        "in": "query",
                        "description": "Limits the list to milestones that are either complete or incomplete.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "dateduebegin",
                        "in": "query",
                        "description": "Limits the list to milestones that have a due date on or after the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "datedueend",
                        "in": "query",
                        "description": "Limits the list to milestones that have a due date on or before the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "title",
                        "in": "query",
                        "description": "Limits the list to milestones with titles containing the search string.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "sortfield",
                        "in": "query",
                        "description": "Sort the list by any of the following fields: id, localid, projectid, clientid, datedue, title, description, progress, estimate, actual, owner.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "sortdir",
                        "in": "query",
                        "description": "Sets the sort direction of the returned list. Must be either \"ASC\" or \"DESC\".",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return milestones starting from the nth milestone.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of milestones returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/milestone_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "milestone"
                ],
                "summary": "Add a milestone",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "milestone",
                        "schema": {
                            "$ref": "#/definitions/milestone"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/milestone_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/milestone/{id}/": {
            "get": {
                "tags": [
                    "milestone"
                ],
                "summary": "Retrieve a milestone by id.",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/milestone_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "milestone"
                ],
                "summary": "Update a milestone by id.",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "milestone",
                        "schema": {
                            "$ref": "#/definitions/milestone"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/milestone_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "milestone"
                ],
                "summary": "Delete a milestone",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/milestonenote": {
            "get": {
                "tags": [
                    "milestonenote"
                ],
                "summary": "Get one or more milestonenotes",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "milestoneid",
                        "in": "query",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return milestonenotes starting from the nth milestonenote.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of milestonenotes returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/milestonenote_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "milestonenote"
                ],
                "summary": "Add a milestonenote",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "milestonenote",
                        "schema": {
                            "$ref": "#/definitions/milestonenote"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/milestonenote_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/milestonenote/{id}/": {
            "get": {
                "tags": [
                    "milestonenote"
                ],
                "summary": "Retrieve a milestonenote by id.",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/milestonenote_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "milestonenote"
                ],
                "summary": "Update a milestonenote by id.",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "milestonenote",
                        "schema": {
                            "$ref": "#/definitions/milestonenote"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/milestonenote_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "milestonenote"
                ],
                "summary": "Delete a milestonenote",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/module": {
            "get": {
                "tags": [
                    "module"
                ],
                "summary": "Get one or more modules",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "active",
                        "in": "query",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return modules starting from the nth module.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of modules returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/module_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/module/{id}/": {
            "get": {
                "tags": [
                    "module"
                ],
                "summary": "Retrieve a module by id.",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/module_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/payment": {
            "get": {
                "tags": [
                    "payment"
                ],
                "summary": "Get one or more payments",
                "description": "Available to Administrator, Manager, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "clientid",
                        "in": "query",
                        "description": "Limits the list to payments belonging to the client with the ID passed.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "projectid",
                        "in": "query",
                        "description": "Limits the list to payments belonging to the client with the ID passed.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "personid",
                        "in": "query",
                        "description": "Limits the list to payments posted by the persons with the ID passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "date",
                        "in": "query",
                        "description": "Limits the list to payments having the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "typeid",
                        "in": "query",
                        "description": "Limits the list to payments having the payment type of the ID passed. For more information, see the paymenttype resource.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "invoiceid",
                        "in": "query",
                        "description": "Limits the list to payments belonging to the invoice with the ID passed.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "sortfield",
                        "in": "query",
                        "description": "Sort the list by any of the following fields: id, projectid, date, amount, typeid, reference, note, invoiceid, type, project, and client.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "sortdir",
                        "in": "query",
                        "description": "Sets the sort direction of the returned list. Must be either \"ASC\" or \"DESC\".",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return payments starting from the nth payment.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of invoices returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/payment_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "payment"
                ],
                "summary": "Add a payment",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "payment",
                        "schema": {
                            "$ref": "#/definitions/payment"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/payment_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/payment/{id}/": {
            "get": {
                "tags": [
                    "payment"
                ],
                "summary": "Retrieve a payment by id.",
                "description": "Available to Administrator, Manager, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/payment_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "payment"
                ],
                "summary": "Update a payment by id.",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "payment",
                        "schema": {
                            "$ref": "#/definitions/payment"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/payment_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "payment"
                ],
                "summary": "Delete a payment",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/paymenttype": {
            "get": {
                "tags": [
                    "paymenttype"
                ],
                "summary": "Get one or more paymenttypes",
                "description": "Available to user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/paymenttype_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/paymenttype/{id}/": {
            "get": {
                "tags": [
                    "paymenttype"
                ],
                "summary": "Retrieve a paymenttype by id.",
                "description": "Available to user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/paymenttype_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/person": {
            "get": {
                "tags": [
                    "person"
                ],
                "summary": "Get one or more persons",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "localid",
                        "in": "query",
                        "description": "Restricts the list based on a person's \"localid,\" which is the number that appears associated with the person in the Intervals application. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "username",
                        "in": "query",
                        "description": "Limits the list to people whose usernames match the search string.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "email",
                        "in": "query",
                        "description": "Limits the list to people whose emails match the search string.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "firstname",
                        "in": "query",
                        "description": "Limits the list to people whose first names match the search string.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "lastname",
                        "in": "query",
                        "description": "Limits the list to people whose last names match the search string.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "excludegroupids",
                        "in": "query",
                        "description": "Excludes people from the list who fall in the group IDs submitted. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "projectid",
                        "in": "query",
                        "description": "Limits the list to people who have access to the project IDs submitted. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "clientid",
                        "in": "query",
                        "description": "Limits the list to people who are associated with the ID of this client. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "projectclientid",
                        "in": "query",
                        "description": "Limits the list to people who have access to projects that belong to the client IDs submitted. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Limits the list to people who match the search string. Searches firstname, lastname, client, username, notes and contact info.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "active",
                        "in": "query",
                        "description": "Limits the list to people who are either active or inactive.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "groupid",
                        "in": "query",
                        "description": "Limits the list to people who are in the group of the ID submitted.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "allprojects",
                        "in": "query",
                        "description": "Limits the list to people who should be added to all future projects.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "restricttasks",
                        "in": "query",
                        "description": "Limits the list to people who are restricted to only tasks to which they own or have been assigned.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return people starting from the nth person.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of people returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/person_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "person"
                ],
                "summary": "Add a person",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "person",
                        "schema": {
                            "$ref": "#/definitions/person"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/person_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/person/{id}/": {
            "get": {
                "tags": [
                    "person"
                ],
                "summary": "Retrieve a person by id.",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/person_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "person"
                ],
                "summary": "Update a person by id.",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "person",
                        "schema": {
                            "$ref": "#/definitions/person"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/person_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "person"
                ],
                "summary": "Delete a person",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/personcontact": {
            "get": {
                "tags": [
                    "personcontact"
                ],
                "summary": "Get one or more personcontacts",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "personid",
                        "in": "query",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "name": "contacttypeid",
                        "in": "query",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "contactdescriptorid",
                        "in": "query",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/personcontact_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "personcontact"
                ],
                "summary": "Add a personcontact",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "personcontact",
                        "schema": {
                            "$ref": "#/definitions/personcontact"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/personcontact_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/personcontact/{id}/": {
            "get": {
                "tags": [
                    "personcontact"
                ],
                "summary": "Retrieve a personcontact by id.",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/personcontact_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "personcontact"
                ],
                "summary": "Update a personcontact by id.",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "personcontact",
                        "schema": {
                            "$ref": "#/definitions/personcontact"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/personcontact_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "personcontact"
                ],
                "summary": "Delete a personcontact",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/project": {
            "get": {
                "tags": [
                    "project"
                ],
                "summary": "Get one or more projects",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "localid",
                        "in": "query",
                        "description": "Restricts the list based on a project's \"localid,\" which is the number that appears associated with the project in the Intervals application. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "clientid",
                        "in": "query",
                        "description": "Limits the list to projects belonging to the client whose ID was passed. Passing a value of -1 returns projects that do not belong to any client. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "managerid",
                        "in": "query",
                        "description": "Limits the list to projects managed by the person whose ID was passed. Passing a value of -1 returns projects that do not have any manager. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "name",
                        "in": "query",
                        "description": "Limits the list to projects with name matching the search string.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "datestart",
                        "in": "query",
                        "description": "Limits the list to projects beginning on this date.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "dateend",
                        "in": "query",
                        "description": "Limits the list to projects ending on this date.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Limits the list to propjects that match the search string. Searches name, description and client and localid.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "active",
                        "in": "query",
                        "description": "Limits the list to active or inactive projects only.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "billable",
                        "in": "query",
                        "description": "Limits the list to billable or unbillable projects only.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "personid",
                        "in": "query",
                        "description": "Limits the list to only projects to which the person ID has access.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "sortfield",
                        "in": "query",
                        "description": "Sort the list by any of the following fields: id, localid, clientid, managerid, name, datestart, dateend, billable",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "sortdir",
                        "in": "query",
                        "description": "Sets the sort direction of the returned list. Must be either \"ASC\" or \"DESC\".",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return projects starting from the nth project.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of projects returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/project_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "project"
                ],
                "summary": "Add a project",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "project",
                        "schema": {
                            "$ref": "#/definitions/project"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/project_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/project/{id}/": {
            "get": {
                "tags": [
                    "project"
                ],
                "summary": "Retrieve a project by id.",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/project_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "project"
                ],
                "summary": "Update a project by id.",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "project",
                        "schema": {
                            "$ref": "#/definitions/project"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/project_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "project"
                ],
                "summary": "Delete a project",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/projectmodule": {
            "get": {
                "tags": [
                    "projectmodule"
                ],
                "summary": "Get one or more projectmodules",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "projectid",
                        "in": "query",
                        "description": "Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "active",
                        "in": "query",
                        "description": "This filter will automatically be applied to resource users, as they cannot see inactive modules.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "personid",
                        "in": "query",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return projectmodules starting from the nth projectmodule.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of projectmodules returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectmodule_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "projectmodule"
                ],
                "summary": "Add a projectmodule",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "projectmodule",
                        "schema": {
                            "$ref": "#/definitions/projectmodule"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectmodule_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/projectmodule/{id}/": {
            "get": {
                "tags": [
                    "projectmodule"
                ],
                "summary": "Retrieve a projectmodule by id.",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectmodule_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "projectmodule"
                ],
                "summary": "Update a projectmodule by id.",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "projectmodule",
                        "schema": {
                            "$ref": "#/definitions/projectmodule"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectmodule_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "projectmodule"
                ],
                "summary": "Delete a projectmodule",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/projectnote": {
            "get": {
                "tags": [
                    "projectnote"
                ],
                "summary": "Get one or more projectnotes",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "localid",
                        "in": "query",
                        "description": "Restricts the list based on a project note's \"localid,\" which is the number that appears associated with the note in the Intervals application. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "clientid",
                        "in": "query",
                        "description": "Restricts the list to project notes belonging to projects for the clients corresponding to the ID(s) passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "projectid",
                        "in": "query",
                        "description": "Restricts the list to project notes belonging to projects corresponding to the ID(s) passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "authorid",
                        "in": "query",
                        "description": "Restricts the list to project notes created by the person corresponding to the ID(s) passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "title",
                        "in": "query",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Limits the list to project notes that match the search string. Searches title and note* (* only searched when project note is not secure).",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "noteid",
                        "in": "query",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return projectnotes starting from the nth projectnote.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of projectnotes returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectnote_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "projectnote"
                ],
                "summary": "Add a projectnote",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "projectnote",
                        "schema": {
                            "$ref": "#/definitions/projectnote"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectnote_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/projectnote/{id}/": {
            "get": {
                "tags": [
                    "projectnote"
                ],
                "summary": "Retrieve a projectnote by id.",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectnote_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "projectnote"
                ],
                "summary": "Update a projectnote by id.",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "projectnote",
                        "schema": {
                            "$ref": "#/definitions/projectnote"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectnote_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "projectnote"
                ],
                "summary": "Delete a projectnote",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/projectteam": {
            "post": {
                "tags": [
                    "projectteam"
                ],
                "summary": "Add a projectteam",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "projectteam",
                        "schema": {
                            "$ref": "#/definitions/projectteam"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectteam_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "get": {
                "tags": [
                    "projectteam"
                ],
                "summary": "Get one or more projectteams",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "projectid",
                        "in": "query",
                        "description": "Limits the list to people belonging to this project.",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectteam_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/projectteam/{id}/": {
            "get": {
                "tags": [
                    "projectteam"
                ],
                "summary": "Retrieve a projectteam by id.",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectteam_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "projectteam"
                ],
                "summary": "Update a projectteam by id.",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "projectteam",
                        "schema": {
                            "$ref": "#/definitions/projectteam"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectteam_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "projectteam"
                ],
                "summary": "Delete a projectteam",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/projectworktype": {
            "get": {
                "tags": [
                    "projectworktype"
                ],
                "summary": "Get one or more projectworktypes",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "projectid",
                        "in": "query",
                        "description": "Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "active",
                        "in": "query",
                        "description": "This filter will automatically be applied to resource users, as they cannot see inactive modules.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "personid",
                        "in": "query",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return projectworktypes starting from the nth projectworktype.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of projectworktypes returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectworktype_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "projectworktype"
                ],
                "summary": "Add a projectworktype",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "projectworktype",
                        "schema": {
                            "$ref": "#/definitions/projectworktype"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectworktype_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/projectworktype/{id}/": {
            "get": {
                "tags": [
                    "projectworktype"
                ],
                "summary": "Retrieve a projectworktype by id.",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectworktype_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "projectworktype"
                ],
                "summary": "Update a projectworktype by id.",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "projectworktype",
                        "schema": {
                            "$ref": "#/definitions/projectworktype"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectworktype_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "projectworktype"
                ],
                "summary": "Delete a projectworktype",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/request": {
            "get": {
                "tags": [
                    "request"
                ],
                "summary": "Get one or more requests",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "priorityid",
                        "in": "query",
                        "description": "Limits the list to work requests having this priority.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "personid",
                        "in": "query",
                        "description": "Limits the list to work requests submitted by this person.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "projectid",
                        "in": "query",
                        "description": "Limits the list to work requests belonging to this project.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "sortfield",
                        "in": "query",
                        "description": "Sort the list by any of the following fields: id, title, date, datedue, personid, person, projectid, project, clientid, client, email, priorityid, priority.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "sortdir",
                        "in": "query",
                        "description": "Sets the sort direction of the returned list. Must be either \"ASC\" or \"DESC\".",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return requests starting from the nth request.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of requests returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/request_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "request"
                ],
                "summary": "Add a request",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "request",
                        "schema": {
                            "$ref": "#/definitions/request"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/request_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/request/{id}/": {
            "get": {
                "tags": [
                    "request"
                ],
                "summary": "Retrieve a request by id.",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/request_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "request"
                ],
                "summary": "Update a request by id.",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "request",
                        "schema": {
                            "$ref": "#/definitions/request"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/request_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "request"
                ],
                "summary": "Delete a request",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/task": {
            "get": {
                "tags": [
                    "task"
                ],
                "summary": "Get one or more tasks",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "localid",
                        "in": "query",
                        "description": "Restricts the task list based on a task's \"localid,\" which is the number that appears associated with the task in the Intervals application. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "personid",
                        "in": "query",
                        "description": "Limits the list to people who have access to the project this task belongs to.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "includetimerid",
                        "in": "query",
                        "description": "Retrieves timerid and starttime for the passed-in personid (if present).",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "assigneeid",
                        "in": "query",
                        "description": "Limits the list to tasks assigned to this person. To include tasks with no assignee, pass a value of -1. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "followerid",
                        "in": "query",
                        "description": "Limits the list to tasks followed by this person. To include tasks with no followers, pass a value of -1. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "statusid",
                        "in": "query",
                        "description": "Limits the list to tasks having this status. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "clientid",
                        "in": "query",
                        "description": "Limits the list to tasks belonging to this client. To include tasks with no client, pass a value of -1. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "projectid",
                        "in": "query",
                        "description": "Limits the list to tasks belonging to this project. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "moduleid",
                        "in": "query",
                        "description": "Limits the list to tasks having this module. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "milestoneid",
                        "in": "query",
                        "description": "Limits the list to tasks belonging to this milestone. To include tasks with no milestone, pass a value of -1. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "title",
                        "in": "query",
                        "description": "Limits the list to tasks containing this string in the title.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "dateopen",
                        "in": "query",
                        "description": "Limits the list to tasks opening on this specific date.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "dateopenbegin",
                        "in": "query",
                        "description": "Limits the list to tasks starting after the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "dateopenend",
                        "in": "query",
                        "description": "Limits the list to tasks starting before the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "datedue",
                        "in": "query",
                        "description": "Limits the list to tasks due on this specific date.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "dateduebegin",
                        "in": "query",
                        "description": "Limits the list to tasks due after the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "datedueend",
                        "in": "query",
                        "description": "Limits the list to tasks due before the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "dateclosed",
                        "in": "query",
                        "description": "Limits the list to tasks closed on this specific date.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "dateclosedbegin",
                        "in": "query",
                        "description": "Limits the list to tasks closed after the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "dateclosedend",
                        "in": "query",
                        "description": "Limits the list to tasks closed before the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "datemodifiedbegin",
                        "in": "query",
                        "description": "Limits the list to tasks modified after the date passed. Pass UTC YYYY-MM-DD HH:MM:SS; encode the space as %20 in the query string.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "datemodifiedend",
                        "in": "query",
                        "description": "Limits the list to tasks modified before the date passed. Pass UTC YYYY-MM-DD HH:MM:SS; encode the space as %20 in the query string.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "hasduedate",
                        "in": "query",
                        "description": "Limits the list to tasks with or without a due date.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "ownerid",
                        "in": "query",
                        "description": "Limits the list to tasks owned by this person. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "priorityid",
                        "in": "query",
                        "description": "Limits the list to tasks having this priority. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "tasklistfilterid",
                        "in": "query",
                        "description": "Limits the list to tasks matching this tasklistfilter.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "overdue",
                        "in": "query",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "excludeclosed",
                        "in": "query",
                        "description": "Limits the list to tasks that are not closed.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "assignedorownedby",
                        "in": "query",
                        "description": "[DEPRECATED] Previously limited the list to tasks that are either assigned to or owned by the people specified. Now this filter operates like the 'hastaskrelation' filter, which is described below and includes tasks followed by the people listed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "hastaskrelation",
                        "in": "query",
                        "description": "Limits the list to tasks that are either assigned to, followed by or owned by the people with the IDs specified. For restricted resources (users who can only see tasks that they own or that are assigned to them), this value will be set to the user by default; anything in the assigneeid or ownerid fields will be overridden. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Limits the list to tasks that match the search string. Searches title, summary, request queue title, request queue description, and localid.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "sortfield",
                        "in": "query",
                        "description": "Sort the list by any of the following fields: id, localid, queueid, assigneeid, statusid, projectid, module, moduleid, title, summary, dateopen, datedue, dateclosed, estimate, ownerid, priorityid, sev.priority, severity, status (returns status alphabetically), status_order (returns status ordered by level of completion), project, client, assignee, milestoneid, milestone, owners.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "sortdir",
                        "in": "query",
                        "description": "Sets the sort direction of the returned list. Must be either \"ASC\" or \"DESC\".",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return tasks starting from the nth task.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of tasks returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/task_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "task"
                ],
                "summary": "Add a task",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "task",
                        "schema": {
                            "$ref": "#/definitions/task"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/task_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/task/{id}/": {
            "get": {
                "tags": [
                    "task"
                ],
                "summary": "Retrieve a task by id.",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/task_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "task"
                ],
                "summary": "Update a task by id.",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "task",
                        "schema": {
                            "$ref": "#/definitions/task"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/task_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "task"
                ],
                "summary": "Delete a task",
                "description": "Available to Administrator, Manager user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/tasklistfilter": {
            "get": {
                "tags": [
                    "tasklistfilter"
                ],
                "summary": "Get one or more tasklistfilters",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return tasklistfilters starting from the nth tasklistfilter.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of tasklistfilters returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/tasklistfilter_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/tasklistfilter/{id}/": {
            "get": {
                "tags": [
                    "tasklistfilter"
                ],
                "summary": "Retrieve a tasklistfilter by id.",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/tasklistfilter_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/tasknote": {
            "get": {
                "tags": [
                    "tasknote"
                ],
                "summary": "Get one or more tasknotes",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "taskid",
                        "in": "query",
                        "description": "Limits the list to task notes belonging to a task. If not submitted, only last 7 days of task notes created will be returned. Or, use the datemodifiedbegin and datemodifiedend fields to return task notes modified instead of created. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "title",
                        "in": "query",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "date",
                        "in": "query",
                        "description": "Limits the list to task notes created on this date. Pass UTC YYYY-MM-DD HH:MM:SS; encode the space as %20 in the query string.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "datebegin",
                        "in": "query",
                        "description": "Limits the list to task notes created on or after this date. Pass UTC YYYY-MM-DD HH:MM:SS; encode the space as %20 in the query string.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "dateend",
                        "in": "query",
                        "description": "Limits the list to task notes created before or on this date. Pass UTC YYYY-MM-DD HH:MM:SS; encode the space as %20 in the query string.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "datemodifiedbegin",
                        "in": "query",
                        "description": "Limits the list to task notes modified on or after this date. Pass UTC YYYY-MM-DD HH:MM:SS; encode the space as %20 in the query string.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "datemodifiedend",
                        "in": "query",
                        "description": "Limits the list to task notes modified before or on this date. Pass UTC YYYY-MM-DD HH:MM:SS; encode the space as %20 in the query string.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "authorid",
                        "in": "query",
                        "description": "Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "public",
                        "in": "query",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "sortfield",
                        "in": "query",
                        "description": "Sort the list by any of the following fields: id, taskid, authorid, date.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "sortdir",
                        "in": "query",
                        "description": "Sets the sort direction of the returned list. Must be either \"ASC\" or \"DESC\".",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return tasknotes starting from the nth tasknote.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of tasknotes returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/tasknote_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "tasknote"
                ],
                "summary": "Add a tasknote",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "tasknote",
                        "schema": {
                            "$ref": "#/definitions/tasknote"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/tasknote_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/tasknote/{id}/": {
            "get": {
                "tags": [
                    "tasknote"
                ],
                "summary": "Retrieve a tasknote by id.",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/tasknote_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "tasknote"
                ],
                "summary": "Update a tasknote by id.",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "tasknote",
                        "schema": {
                            "$ref": "#/definitions/tasknote"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/tasknote_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "tasknote"
                ],
                "summary": "Delete a tasknote",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/taskpriority": {
            "get": {
                "tags": [
                    "taskpriority"
                ],
                "summary": "Get one or more taskprioritys",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "active",
                        "in": "query",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return taskpriorities starting from the nth taskpriority.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of taskpriorities returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/taskpriority_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/taskpriority/{id}/": {
            "get": {
                "tags": [
                    "taskpriority"
                ],
                "summary": "Retrieve a taskpriority by id.",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/taskpriority_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/taskstatus": {
            "get": {
                "tags": [
                    "taskstatus"
                ],
                "summary": "Get one or more taskstatus",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "active",
                        "in": "query",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return taskstatuses starting from the nth taskstatus.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of taskstatuses returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/taskstatus_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/taskstatus/{id}/": {
            "get": {
                "tags": [
                    "taskstatus"
                ],
                "summary": "Retrieve a taskstatus by id.",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/taskstatus_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/time": {
            "get": {
                "tags": [
                    "time"
                ],
                "summary": "Get one or more times",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "activeonly",
                        "in": "query",
                        "description": "If set to true, limits the list to time entries for active projects and people only.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "moduleid",
                        "in": "query",
                        "description": "Limits the list to time entries belonging to the module whose ID was passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "taskid",
                        "in": "query",
                        "description": "Limits the list to time entries belonging to the task whose ID was passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "worktypeid",
                        "in": "query",
                        "description": "Limits the list to time entries belonging to the worktype whose ID was passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "personid",
                        "in": "query",
                        "description": "Limits the list to time entries belonging to the person whose ID was passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "clientid",
                        "in": "query",
                        "description": "Limits the list to time entries belonging to the client whose ID was passed. Passing a value of -1 returns time entries belonging to projects that do not have a client. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "projectid",
                        "in": "query",
                        "description": "Limits the list to time entries belonging to the project whose ID was passed. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "milestoneid",
                        "in": "query",
                        "description": "Limits the list to time entries belonging to the milestone whose ID was passed. Passing a value of -1 returns time entries that are not associated with any milestone. Allows multiple values in CSV format (e.g. \"3,5,11,19\").",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "date",
                        "in": "query",
                        "description": "Limits the list to time entries occuring on the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "datebegin",
                        "in": "query",
                        "description": "Limits the list to time entries occuring after the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "dateend",
                        "in": "query",
                        "description": "Limits the list to time entries occuring before the date passed.",
                        "type": "string",
                        "format": "date",
                        "required": false
                    },
                    {
                        "name": "datemodifiedbegin",
                        "in": "query",
                        "description": "Limits the list to time modified after the date passed. Pass UTC YYYY-MM-DD HH:MM:SS; encode the space as %20 in the query string.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "datemodifiedend",
                        "in": "query",
                        "description": "Limits the list to time modified before the date passed. Pass UTC YYYY-MM-DD HH:MM:SS; encode the space as %20 in the query string.",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "billable",
                        "in": "query",
                        "description": "Limits the list to time entries marked as either billable or unbillable.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "approved",
                        "in": "query",
                        "description": "Limits the list to time entries on timesheets that have been approved (for 't') or timesheets that have not been approved (for 'f').",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "sortfield",
                        "in": "query",
                        "description": "Sort the list by any of the following fields: id, t.date, datemodified",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "sortdir",
                        "in": "query",
                        "description": "Sets the sort direction of the returned list. Must be either \"ASC\" or \"DESC\".",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return time starting from the nth time entry.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of time entries returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/time_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "time"
                ],
                "summary": "Add a time",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "time",
                        "schema": {
                            "$ref": "#/definitions/time"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/time_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/time/{id}/": {
            "get": {
                "tags": [
                    "time"
                ],
                "summary": "Retrieve a time by id.",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/time_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "time"
                ],
                "summary": "Update a time by id.",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "time",
                        "schema": {
                            "$ref": "#/definitions/time"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/time_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "time"
                ],
                "summary": "Delete a time",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/timer": {
            "get": {
                "tags": [
                    "timer"
                ],
                "summary": "Get one or more timers",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "generaltimers",
                        "in": "query",
                        "description": "Ordinarily, the list returns a list of active task timers. Appending this to your request returns the list of General Timers. Setting this to true returns the list of General Timers.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "gettimerinfo",
                        "in": "query",
                        "description": "Setting this to true combines the list to return both general timers AND task timers in one request, and returns extra task information for task timers.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "taskid",
                        "in": "query",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "personid",
                        "in": "query",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "projectid",
                        "in": "query",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "clientid",
                        "in": "query",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "sortfield",
                        "in": "query",
                        "description": "Sort the list by any of the following fields: lastupdate",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "sortdir",
                        "in": "query",
                        "description": "Sets the sort direction of the returned list. Must be either \"ASC\" or \"DESC\".",
                        "type": "string",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return timers starting from the nth timer.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of timers returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/timer_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "timer"
                ],
                "summary": "Add a timer",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "body",
                        "name": "timer",
                        "schema": {
                            "$ref": "#/definitions/timer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/timer_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/timer/{id}/": {
            "get": {
                "tags": [
                    "timer"
                ],
                "summary": "Retrieve a timer by id.",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/timer_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "timer"
                ],
                "summary": "Update a timer by id.",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    },
                    {
                        "in": "body",
                        "name": "timer",
                        "schema": {
                            "$ref": "#/definitions/timer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/timer_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "400": {
                        "description": "Bad request — malformed request, unrecognized filter/parameter (Intervals API code 17), or validation failure such as missing/invalid fields (API code 18). Validation is returned as 400, not 422.",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "timer"
                ],
                "summary": "Delete a timer",
                "description": "Available to Administrator, Manager, Resource user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "ID of item to delete",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success — resource deleted"
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/worktype": {
            "get": {
                "tags": [
                    "worktype"
                ],
                "summary": "Get one or more worktypes",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "active",
                        "in": "query",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return worktypes starting from the nth worktype.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Sets a limit to the amount of worktypes returned in the response.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/worktype_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/worktype/{id}/": {
            "get": {
                "tags": [
                    "worktype"
                ],
                "summary": "Retrieve a worktype by id.",
                "description": "Available to Administrator user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/worktype_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/projectlabel": {
            "get": {
                "tags": [
                    "projectlabel"
                ],
                "summary": "Get one or more project labels",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "active",
                        "in": "query",
                        "description": "Limits the list to active or inactive project labels.",
                        "type": "boolean",
                        "required": false
                    },
                    {
                        "name": "offset",
                        "in": "query",
                        "description": "Return project labels starting from the nth result.",
                        "type": "integer",
                        "required": false
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Maximum number of project labels to return. Default: 10.",
                        "type": "integer",
                        "required": false
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectlabel_collection"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/projectlabel/{id}/": {
            "get": {
                "tags": [
                    "projectlabel"
                ],
                "summary": "Retrieve a project label by id",
                "description": "Available to Administrator, Manager, Resource, Executive user levels.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "type": "integer",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/projectlabel_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "404": {
                        "description": "Not found — no record exists with the given ID",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        },
        "/quota": {
            "get": {
                "tags": [
                    "quota"
                ],
                "summary": "Get API quota usage",
                "description": "Returns the number of API requests consumed today and the time of the next daily reset (GMT). Available to all user levels. This endpoint does not count against the daily quota.",
                "consumes": [
                    "application/json",
                    "application/xml"
                ],
                "produces": [
                    "application/json",
                    "application/xml"
                ],
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "Success",
                        "schema": {
                            "$ref": "#/definitions/quota_response"
                        }
                    },
                    "401": {
                        "description": "Authentication required — missing or invalid API token",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    },
                    "403": {
                        "description": "Forbidden — authenticated user lacks permission for this operation",
                        "schema": {
                            "$ref": "#/definitions/error_response"
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "client": {
            "xml": {
                "name": "client"
            },
            "required": [
                "name",
                "datecreated",
                "active"
            ],
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The name of the client",
                    "maxLength": 255
                },
                "datecreated": {
                    "type": "string",
                    "description": "",
                    "format": "date"
                },
                "description": {
                    "type": "string",
                    "description": "The client description/notes area. This field accepts HTML, but certain HTML elements may be stripped out."
                },
                "email": {
                    "type": "string",
                    "description": "The main client email address. This email can also be part of a person contact, that is a person profile who cannot login.",
                    "maxLength": 255
                },
                "website": {
                    "type": "string",
                    "description": "Client website URL.",
                    "maxLength": 255
                },
                "phone": {
                    "type": "string",
                    "description": "Client phone number.",
                    "maxLength": 50
                },
                "fax": {
                    "type": "string",
                    "description": "Client fax number.",
                    "maxLength": 50
                },
                "address": {
                    "type": "string",
                    "description": "The client address."
                },
                "active": {
                    "type": "boolean",
                    "description": ""
                }
            }
        },
        "expense": {
            "xml": {
                "name": "expense"
            },
            "required": [
                "projectid",
                "date",
                "expense",
                "fee"
            ],
            "properties": {
                "projectid": {
                    "type": "integer",
                    "description": ""
                },
                "personid": {
                    "type": "integer",
                    "description": "Set the person for the expense. If omitted, it defaults to the current person who is saving the expense."
                },
                "date": {
                    "type": "string",
                    "description": "The date that the expense was incurred.",
                    "format": "date"
                },
                "expense": {
                    "type": "number",
                    "description": "The amount of the expense is what the expense cost the company. Executive users do not see this value.",
                    "format": "double"
                },
                "fee": {
                    "type": "number",
                    "description": "This is what you are charging the client. If you are marking up the expense, the fee should be greater than the expense value. If you are not marking up the expense, this should be the same as the expense value.",
                    "format": "double"
                },
                "note": {
                    "type": "string",
                    "description": "The description of the expense.",
                    "maxLength": 255
                }
            }
        },
        "invoice": {
            "xml": {
                "name": "invoice"
            },
            "required": [
                "projectid",
                "date",
                "termid",
                "title"
            ],
            "properties": {
                "projectid": {
                    "type": "integer",
                    "description": ""
                },
                "date": {
                    "type": "string",
                    "description": "",
                    "format": "date"
                },
                "termid": {
                    "type": "integer",
                    "description": ""
                },
                "termother": {
                    "type": "string",
                    "description": "If you specify the termid as \"other\" (6), you can assign a custom term name to this invoice.",
                    "maxLength": 255
                },
                "termotherdatedue": {
                    "type": "string",
                    "description": "If you specify the termid as \"other\" (6), you must specify the custom due date of this invoice.",
                    "format": "date"
                },
                "title": {
                    "type": "string",
                    "description": "The invoice title.",
                    "maxLength": 255
                },
                "description": {
                    "type": "string",
                    "description": ""
                },
                "addressfrom": {
                    "type": "string",
                    "description": ""
                },
                "addressto": {
                    "type": "string",
                    "description": ""
                },
                "purchaseorder": {
                    "type": "string",
                    "description": "",
                    "maxLength": 55
                },
                "tax": {
                    "type": "number",
                    "description": "",
                    "format": "double"
                },
                "secondtax": {
                    "type": "number",
                    "description": "For places with dual taxation levels, the value of the secondary tax level.",
                    "format": "double"
                },
                "secondtaxcompound": {
                    "type": "boolean",
                    "description": "For places with dual taxation levels, true if the second tax is compounded, false if the second tax is added."
                },
                "disclaimer": {
                    "type": "string",
                    "description": ""
                },
                "datebegin": {
                    "type": "string",
                    "description": "If you wish to create a pre-filled invoice based on work performed, set this to the start date of the time entries you wish to include.",
                    "format": "date"
                },
                "dateend": {
                    "type": "string",
                    "description": "If you wish to create a pre-filled invoice based on work performed, set this to the end date of the time entries you wish to include.",
                    "format": "date"
                }
            }
        },
        "invoiceitem": {
            "xml": {
                "name": "invoiceitem"
            },
            "required": [
                "invoiceid",
                "name",
                "amount"
            ],
            "properties": {
                "invoiceid": {
                    "type": "integer",
                    "description": "The ID of the invoice to which this item applies. Not settable for existing non-custom items."
                },
                "name": {
                    "type": "string",
                    "description": "The name for this line item.",
                    "maxLength": 255
                },
                "description": {
                    "type": "string",
                    "description": "The line item description."
                },
                "quantity": {
                    "type": "number",
                    "description": "Settable only for new/custom line items.",
                    "format": "double"
                },
                "rate": {
                    "type": "number",
                    "description": "Settable only for new/custom line items.",
                    "format": "double"
                },
                "amount": {
                    "type": "number",
                    "description": "The value for the amount must be the product of the quantity and the rate, if they are both specified. Not settable for existing non-custom items.",
                    "format": "double"
                }
            }
        },
        "invoicenote": {
            "xml": {
                "name": "invoicenote"
            },
            "required": [
                "invoiceid",
                "title"
            ],
            "properties": {
                "invoiceid": {
                    "type": "integer",
                    "description": ""
                },
                "title": {
                    "type": "string",
                    "description": "The title of the note.",
                    "maxLength": 255
                },
                "note": {
                    "type": "string",
                    "description": "The description of the note."
                },
                "date": {
                    "type": "string",
                    "description": "Note date and time. Send in UTC as `YYYY-MM-DD HH:MM:SS` (space between date and time)."
                }
            }
        },
        "milestone": {
            "xml": {
                "name": "milestone"
            },
            "required": [
                "projectid",
                "ownerid",
                "title",
                "datedue",
                "complete"
            ],
            "properties": {
                "projectid": {
                    "type": "integer",
                    "description": "The ID of the project the milestone belongs to."
                },
                "ownerid": {
                    "type": "integer",
                    "description": "The ID of the owner of this milestone. You can submit multiple owners in the form of comma separated integers (e.g. '22,334,222')."
                },
                "title": {
                    "type": "string",
                    "description": "The title of the milestone.",
                    "maxLength": 255
                },
                "datedue": {
                    "type": "string",
                    "description": "The due date of the milestone. Milestones that are not completed and have a due date in the past are considered overdue. Milestones that are completed that have a due date in the future are considered in progress.",
                    "format": "date"
                },
                "description": {
                    "type": "string",
                    "description": "The milestone description. This field accepts HTML, but certain HTML elements may be stripped out."
                },
                "complete": {
                    "type": "boolean",
                    "description": "Whether the milestone has been completed or not. Milestones that are not completed that have a due date in the past are considered overdue. Milestones that are completed that have a due date in the future are considered in progress."
                }
            }
        },
        "milestonenote": {
            "xml": {
                "name": "milestonenote"
            },
            "required": [
                "milestoneid",
                "note",
                "public"
            ],
            "properties": {
                "milestoneid": {
                    "type": "integer",
                    "description": "The ID of the milestone this note belongs to."
                },
                "note": {
                    "type": "string",
                    "description": "The body of the milestone note. This field accepts HTML, but certain HTML elements may be stripped out."
                },
                "public": {
                    "type": "boolean",
                    "description": "If true, this task note will be visible to executive users. For executive users, all notes created are public."
                }
            }
        },
        "payment": {
            "xml": {
                "name": "payment"
            },
            "required": [
                "projectid",
                "date",
                "amount",
                "typeid"
            ],
            "properties": {
                "projectid": {
                    "type": "integer",
                    "description": ""
                },
                "date": {
                    "type": "string",
                    "description": "",
                    "format": "date"
                },
                "amount": {
                    "type": "number",
                    "description": "",
                    "format": "double"
                },
                "typeid": {
                    "type": "integer",
                    "description": ""
                },
                "reference": {
                    "type": "string",
                    "description": "If the payment type is of type Other, a descriptor for that can be stored here.",
                    "maxLength": 35
                },
                "note": {
                    "type": "string",
                    "description": "A description for the payment.",
                    "maxLength": 255
                },
                "invoiceid": {
                    "type": "integer",
                    "description": ""
                }
            }
        },
        "person": {
            "xml": {
                "name": "person"
            },
            "required": [
                "firstname",
                "private",
                "active"
            ],
            "properties": {
                "clientid": {
                    "type": "integer",
                    "description": "This ID of the client this person is associated with."
                },
                "title": {
                    "type": "string",
                    "description": "",
                    "maxLength": 255
                },
                "firstname": {
                    "type": "string",
                    "description": "",
                    "maxLength": 65
                },
                "lastname": {
                    "type": "string",
                    "description": "",
                    "maxLength": 85
                },
                "allprojects": {
                    "type": "boolean",
                    "description": "If 'Yes', this person will be added to the project team for all future projects. It does not grant access to existing projects."
                },
                "notes": {
                    "type": "string",
                    "description": "A short description for this person. This field accepts HTML, but certain HTML elements may be stripped out."
                },
                "private": {
                    "type": "boolean",
                    "description": "Whether this person's contact information is visible to resource- and executive-level users."
                },
                "active": {
                    "type": "boolean",
                    "description": "Whether the person is active or inactive."
                },
                "username": {
                    "type": "string",
                    "description": "For users that can log in, the username they will log in with. To remove a person's ability to log in, set this field to blank.",
                    "maxLength": 255
                },
                "password": {
                    "type": "string",
                    "description": "For users that can log in, the password they will log in with.",
                    "maxLength": 30
                },
                "email": {
                    "type": "string",
                    "description": "REQUIRED for adding a new person who can log in. Otherwise, edit a person's contact information using the personcontact resource.",
                    "maxLength": 255
                },
                "groupid": {
                    "type": "integer",
                    "description": "REQUIRED for adding a person who can log in."
                }
            }
        },
        "personcontact": {
            "xml": {
                "name": "personcontact"
            },
            "required": [
                "personid",
                "value",
                "contacttypeid",
                "contactdescriptorid"
            ],
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "The ID of the person to whom this contact information applies. Keep in mind only administrators may edit other people's contact information."
                },
                "value": {
                    "type": "string",
                    "description": ""
                },
                "contacttypeid": {
                    "type": "integer",
                    "description": ""
                },
                "contactdescriptorid": {
                    "type": "integer",
                    "description": ""
                }
            }
        },
        "project": {
            "xml": {
                "name": "project"
            },
            "required": [
                "name",
                "datestart",
                "billable",
                "active"
            ],
            "properties": {
                "clientid": {
                    "type": "integer",
                    "description": "The ID of the client this project belongs to."
                },
                "managerid": {
                    "type": "integer",
                    "description": "The ID of the person who is manager of this project. Only administrator and manager user levels can be project managers. You can submit multiple managers in the form of comma separated integers (e.g. '22,334,222')."
                },
                "name": {
                    "type": "string",
                    "description": "The name of this project.",
                    "maxLength": 255
                },
                "description": {
                    "type": "string",
                    "description": "A short description of the project. This field accepts HTML, but certain HTML elements may be stripped out."
                },
                "datestart": {
                    "type": "string",
                    "description": "The start date of the project.",
                    "format": "date"
                },
                "dateend": {
                    "type": "string",
                    "description": "The end date of the project.",
                    "format": "date"
                },
                "budget": {
                    "type": "number",
                    "description": "The project budget.",
                    "format": "double"
                },
                "billable": {
                    "type": "boolean",
                    "description": "Whether this project is billable or unbillable. This value becomes the default value for time submitted for this project."
                },
                "active": {
                    "type": "boolean",
                    "description": "Whether the project is active or not. Certain plans have a limited number of active accounts available."
                },
                "alert_percent": {
                    "type": "number",
                    "description": "Setting this value will send an alert to the project manager when a certain percentage of the budget is reached.",
                    "format": "double"
                }
            }
        },
        "projectmodule": {
            "xml": {
                "name": "projectmodule"
            },
            "required": [
                "projectid",
                "active"
            ],
            "properties": {
                "projectid": {
                    "type": "integer",
                    "description": "Once a project ID has been set for a project module, it cannot be changed. It must be deleted for this project and then re-created for the new project."
                },
                "moduleid": {
                    "type": "integer",
                    "description": "moduleid corresponds to the default module id located on the 'module' resource. ONLY REQUIRED IF adding a default module, NOT REQUIRED if adding a custom module."
                },
                "description": {
                    "type": "string",
                    "description": ""
                },
                "active": {
                    "type": "boolean",
                    "description": ""
                },
                "module": {
                    "type": "string",
                    "description": "The name of the module. REQUIRED IF adding a custom module OR converting a default module to a custom module.",
                    "maxLength": 155
                }
            }
        },
        "projectnote": {
            "xml": {
                "name": "projectnote"
            },
            "required": [
                "projectid",
                "title",
                "note",
                "secure"
            ],
            "properties": {
                "projectid": {
                    "type": "integer",
                    "description": "The project this note belongs to. You can only add new notes to active projects."
                },
                "title": {
                    "type": "string",
                    "description": "The title of the project note.",
                    "maxLength": 255
                },
                "note": {
                    "type": "string",
                    "description": "The body of the project note. This field accepts HTML, but certain HTML elements may be stripped out."
                },
                "secure": {
                    "type": "boolean",
                    "description": "Secure project notes are securely encoded before storage; they are also only visible to people with access to secure notes for this project."
                }
            }
        },
        "projectteam": {
            "xml": {
                "name": "projectteam"
            },
            "required": [
                "projectid"
            ],
            "properties": {
                "projectid": {
                    "type": "integer",
                    "description": "Limits the list to people belonging to this project."
                }
            }
        },
        "projectworktype": {
            "xml": {
                "name": "projectworktype"
            },
            "required": [
                "projectid",
                "hourlyrate",
                "active"
            ],
            "properties": {
                "projectid": {
                    "type": "integer",
                    "description": "Once a project ID has been set for a project worktype, it cannot be changed. It must be deleted for this project and then re-created for the new project."
                },
                "worktypeid": {
                    "type": "integer",
                    "description": "REQUIRED IF adding a project work type from the defaults section. NOT REQUIRED when editing."
                },
                "hourlyrate": {
                    "type": "number",
                    "description": "REQUIRED IF adding a custom work type.",
                    "format": "double"
                },
                "esttime": {
                    "type": "number",
                    "description": "",
                    "format": "double"
                },
                "active": {
                    "type": "boolean",
                    "description": ""
                },
                "worktype": {
                    "type": "string",
                    "description": "REQUIRED IF adding a custom project worktype. The name of the work type.",
                    "maxLength": 155
                }
            }
        },
        "request": {
            "xml": {
                "name": "request"
            },
            "required": [
                "personid",
                "priorityid",
                "title"
            ],
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "The ID of the owner of the work request."
                },
                "projectid": {
                    "type": "integer",
                    "description": "The project the work request belongs to."
                },
                "priorityid": {
                    "type": "integer",
                    "description": "The ID of the priority of the work request. Please see the taskpriority resource for more information."
                },
                "title": {
                    "type": "string",
                    "description": "The work request title.",
                    "maxLength": 255
                },
                "datedue": {
                    "type": "string",
                    "description": "The date on which the work request is due. If this is left blank, the date will default to one week ahead",
                    "format": "date"
                },
                "description": {
                    "type": "string",
                    "description": "The work request description. This field accepts HTML, but certain HTML elements may be stripped out."
                }
            }
        },
        "task": {
            "xml": {
                "name": "task"
            },
            "required": [
                "statusid",
                "projectid",
                "moduleid",
                "title",
                "dateopen",
                "ownerid",
                "priorityid"
            ],
            "properties": {
                "assigneeid": {
                    "type": "integer",
                    "description": "Allows you to specify the task assignee. You can submit multiple assignees in the form of comma separated integers (e.g. '22,334,222')."
                },
                "followerid": {
                    "type": "integer",
                    "description": "Allows you to specify the task followers. You can submit multiple followers in the form of comma separated integers (e.g. '22,334,222')."
                },
                "milestoneid": {
                    "type": "integer",
                    "description": "The milestone the task belongs to."
                },
                "statusid": {
                    "type": "integer",
                    "description": "The corresponding status of the task. Tasks that have a status other than closed and a due date in the past are considered overdue."
                },
                "projectid": {
                    "type": "integer",
                    "description": "The project the task belongs to."
                },
                "moduleid": {
                    "type": "integer",
                    "description": "The module the task belongs to."
                },
                "title": {
                    "type": "string",
                    "description": "The task title.",
                    "maxLength": 255
                },
                "summary": {
                    "type": "string",
                    "description": "The task summary. This field accepts HTML, but certain HTML elements may be stripped out."
                },
                "dateopen": {
                    "type": "string",
                    "description": "The start date of the task.",
                    "format": "date"
                },
                "datedue": {
                    "type": "string",
                    "description": "The due date of the task. Tasks that have a due date in the past that don't have the status set to closed are considered overdue.",
                    "format": "date"
                },
                "dateclosed": {
                    "type": "string",
                    "description": "The date on which the task was closed.",
                    "format": "date"
                },
                "estimate": {
                    "type": "number",
                    "description": "The estimated hours for the task.",
                    "format": "double"
                },
                "ownerid": {
                    "type": "integer",
                    "description": "The ID of the owner of the task. You can submit multiple owners in the form of comma separated integers (e.g. '22,334,222'). NOTE: Resource-level users may not set the owner of a new task to someone other than themselves, and they are not allowed to change the owner of an existing task."
                },
                "priorityid": {
                    "type": "integer",
                    "description": "The ID of the priority of the task."
                }
            }
        },
        "tasknote": {
            "xml": {
                "name": "tasknote"
            },
            "required": [
                "taskid",
                "note",
                "public"
            ],
            "properties": {
                "taskid": {
                    "type": "integer",
                    "description": "The ID of the task this note belongs to."
                },
                "note": {
                    "type": "string",
                    "description": "The body of the task note. This field accepts HTML, but certain HTML elements may be stripped out."
                },
                "public": {
                    "type": "boolean",
                    "description": "If true, this task note will be visible to executive users. For executive users, all notes created are public."
                }
            }
        },
        "time": {
            "xml": {
                "name": "time"
            },
            "required": [
                "worktypeid",
                "personid",
                "date",
                "time",
                "billable"
            ],
            "properties": {
                "projectid": {
                    "type": "integer",
                    "description": "For adding general time, projectid is required, as is moduleid; the taskid field must be left blank (otherwise the entry will be interpreted as task time). For adding time associated with a task, this field, along with the moduleid field, may be left blank, as its values will be ignored."
                },
                "moduleid": {
                    "type": "integer",
                    "description": "For adding general time, moduleid is required, as is projectid; the taskid field must be left blank (otherwise the entry will be interpreted as task time). For adding time associated with a task, this field, along with the projectid field, may be left blank, as its values will be ignored."
                },
                "taskid": {
                    "type": "integer",
                    "description": "For adding time associated with a task, taskid is required. Since the task contains project and module information, moduleid and projectid may be left blank. By passing taskid, any values you pass for projectid and/or moduleid will be ignored."
                },
                "worktypeid": {
                    "type": "integer",
                    "description": "The worktypeid you pass should be associated with the project you pass, or in the case of task time, the project of the task you pass."
                },
                "personid": {
                    "type": "integer",
                    "description": "The personid you pass should be associated with the project you pass, or in the case of task time, the project of the task you pass."
                },
                "date": {
                    "type": "string",
                    "description": "",
                    "format": "date"
                },
                "time": {
                    "type": "number",
                    "description": "The time in decimal format.",
                    "format": "double"
                },
                "description": {
                    "type": "string",
                    "description": ""
                },
                "billable": {
                    "type": "boolean",
                    "description": ""
                },
                "datemodified": {
                    "type": "string",
                    "description": "If supplied, send in UTC as `YYYY-MM-DD HH:MM:SS`."
                }
            }
        },
        "timer": {
            "xml": {
                "name": "timer"
            },
            "required": [
                "personid"
            ],
            "properties": {
                "taskid": {
                    "type": "integer",
                    "description": "The ID of the task this timer is associated with. If left blank, this timer will be a General Timer"
                },
                "personid": {
                    "type": "integer",
                    "description": "The ID of the person this timer is associated with."
                },
                "starttime": {
                    "type": "string",
                    "description": "REQUIRED IF time field is blank. Setting this field indicates that a timer is running. If missing, server time will be used when creating a new timer. Send in UTC as `YYYY-MM-DD HH:MM:SS`."
                },
                "time": {
                    "type": "number",
                    "description": "REQUIRED IF starttime field is blank.",
                    "format": "double"
                },
                "timelapsed": {
                    "type": "number",
                    "description": "Time elapsed since timer was started. This field is ready only.",
                    "format": "double"
                },
                "name": {
                    "type": "string",
                    "description": "A description you want to apply to the timer.",
                    "maxLength": 255
                },
                "lastupdate": {
                    "type": "string",
                    "description": "Send in UTC as `YYYY-MM-DD HH:MM:SS` when updating this field."
                }
            }
        },
        "client_response": {
            "type": "object",
            "description": "A client record",
            "properties": {
                "id": {
                    "description": "Unique identifier for the client",
                    "type": "string",
                    "readOnly": true
                },
                "name": {
                    "description": "Client name",
                    "type": "string"
                },
                "datecreated": {
                    "description": "Date the client was created.",
                    "type": "string",
                    "x-notes": "Admin only"
                },
                "description": {
                    "description": "Client description/notes (may contain HTML)",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin only"
                },
                "email": {
                    "description": "Primary client email address",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin only"
                },
                "website": {
                    "description": "Client website URL",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin only"
                },
                "phone": {
                    "description": "Client phone number",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin only"
                },
                "fax": {
                    "description": "Client fax number",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin only"
                },
                "address": {
                    "description": "Client mailing address",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin only"
                },
                "active": {
                    "description": "Whether the client is active (\"t\") or inactive (\"f\")",
                    "type": "string"
                },
                "localidunpadded": {
                    "description": "Numeric client local ID without leading-zero padding",
                    "type": "integer",
                    "readOnly": true
                },
                "localid": {
                    "description": "Human-readable local ID shown in the Client app UI (zero-padded)",
                    "type": "string",
                    "readOnly": true
                }
            }
        },
        "client_collection": {
            "type": "object",
            "description": "Collection response for client",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "client": {
                    "type": "array",
                    "description": "Array of client objects",
                    "items": {
                        "$ref": "#/definitions/client_response"
                    }
                }
            }
        },
        "contactdescriptor_response": {
            "type": "object",
            "description": "A contact descriptor (label within a contact type, e.g. \"Work\" or \"Home\" under phone)",
            "properties": {
                "id": {
                    "description": "Unique identifier for the contact descriptor",
                    "type": "string",
                    "readOnly": true
                },
                "contact_type_id": {
                    "description": "ID of the parent contact type this descriptor belongs to",
                    "type": "string",
                    "readOnly": true
                },
                "name": {
                    "description": "Descriptor label (e.g. Other, Work, Mobile)",
                    "type": "string"
                },
                "contact_type": {
                    "description": "Parent contact type key or name (e.g. email, phone)",
                    "type": "string",
                    "readOnly": true
                },
                "rank": {
                    "description": "Display sort order within the contact type (lower appears first; often returned as a string in JSON)",
                    "type": "string"
                }
            }
        },
        "contactdescriptor_collection": {
            "type": "object",
            "description": "Collection response for contactdescriptor",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "contactdescriptor": {
                    "type": "array",
                    "description": "Array of contactdescriptor objects",
                    "items": {
                        "$ref": "#/definitions/contactdescriptor_response"
                    }
                }
            }
        },
        "contacttype_response": {
            "type": "object",
            "description": "A contact type category (e.g. phone, email, website) used with contact descriptors and person contacts",
            "properties": {
                "id": {
                    "description": "Unique identifier for the contact type",
                    "type": "string",
                    "readOnly": true
                },
                "name": {
                    "description": "Contact type key or label (e.g. website, email, phone)",
                    "type": "string"
                }
            }
        },
        "contacttype_collection": {
            "type": "object",
            "description": "Collection response for contacttype",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "contacttype": {
                    "type": "array",
                    "description": "Array of contacttype objects",
                    "items": {
                        "$ref": "#/definitions/contacttype_response"
                    }
                }
            }
        },
        "document_response": {
            "type": "object",
            "description": "A document attached to a task, project, milestone, or work request",
            "properties": {
                "id": {
                    "description": "Unique identifier for the document",
                    "type": "string",
                    "readOnly": true
                },
                "personid": {
                    "description": "ID of the person who uploaded the document",
                    "type": "string"
                },
                "title": {
                    "description": "Document title (often the original filename)",
                    "type": "string"
                },
                "notes": {
                    "description": "Notes about the document",
                    "type": "string",
                    "x-nullable": true
                },
                "public": {
                    "description": "Whether the document is visible to executive-level users (\"t\"/\"f\")",
                    "type": "string",
                    "x-notes": "Semantics depend on account; see API filters for `public`"
                },
                "datemodified": {
                    "description": "When the document metadata or file was last modified",
                    "type": "string",
                    "readOnly": true
                },
                "active": {
                    "description": "Whether the document record is active (\"t\") or inactive (\"f\")",
                    "type": "string"
                },
                "parent_visible": {
                    "description": "Whether the parent entity (task, project, etc.) is visible to the current user (\"t\"/\"f\")",
                    "type": "string",
                    "readOnly": true
                },
                "filename": {
                    "description": "Stored file name",
                    "type": "string",
                    "readOnly": true
                },
                "filesize": {
                    "description": "File size in bytes (often returned as a string in JSON)",
                    "type": "string",
                    "readOnly": true
                },
                "vlocalid": {
                    "description": "Version local identifier within the document/version sequence",
                    "type": "string",
                    "readOnly": true
                },
                "mimetype": {
                    "description": "MIME type of the file (e.g. image/jpeg)",
                    "type": "string",
                    "readOnly": true
                },
                "versionid": {
                    "description": "ID of the current file version",
                    "type": "string",
                    "readOnly": true
                },
                "itemid": {
                    "description": "Internal item id linking the document to its container context",
                    "type": "string",
                    "readOnly": true
                },
                "targetid": {
                    "description": "Target entity id within the parent (e.g. task id when attached to a task)",
                    "type": "string",
                    "readOnly": true
                },
                "location_title": {
                    "description": "Human-readable title of where the document lives (e.g. task title)",
                    "type": "string",
                    "readOnly": true
                },
                "project": {
                    "description": "Name of the associated project (empty when not on a project context)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectid": {
                    "description": "ID of the associated project",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectlocalidunpadded": {
                    "description": "Project local ID without zero-padding (empty when no project)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectlabelid": {
                    "description": "ID of the project label (empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectlabel": {
                    "description": "Project label name",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectlabel_order": {
                    "description": "Sort order of the project label within the account",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "client": {
                    "description": "Name of the associated client (empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "clientid": {
                    "description": "ID of the associated client",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "author": {
                    "description": "Full name of the person who uploaded the document",
                    "type": "string",
                    "readOnly": true
                }
            }
        },
        "document_collection": {
            "type": "object",
            "description": "Collection response for document",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "document": {
                    "type": "array",
                    "description": "Array of document objects",
                    "items": {
                        "$ref": "#/definitions/document_response"
                    }
                }
            }
        },
        "expense_response": {
            "type": "object",
            "description": "An expense record",
            "properties": {
                "id": {
                    "description": "Unique identifier for the expense",
                    "type": "string",
                    "readOnly": true
                },
                "projectid": {
                    "description": "ID of the associated project",
                    "type": "string"
                },
                "date": {
                    "description": "Date the expense was incurred.",
                    "type": "string"
                },
                "expense": {
                    "description": "Amount the expense cost the company",
                    "type": "string",
                    "x-notes": "Not shown to Executive users; may be returned as a string in JSON"
                },
                "fee": {
                    "description": "Amount charged to the client (markup over expense when higher)",
                    "type": "string",
                    "x-notes": "May be returned as a string in JSON"
                },
                "note": {
                    "description": "Description of the expense",
                    "type": "string",
                    "x-nullable": true
                },
                "personid": {
                    "description": "ID of the person the expense belongs to",
                    "type": "string",
                    "x-notes": "Not shown to Executive users"
                },
                "dateiso": {
                    "description": "Same calendar date as `date` (duplicated for clients that read `dateiso`).",
                    "type": "string",
                    "readOnly": true
                },
                "project": {
                    "description": "Name of the associated project",
                    "type": "string",
                    "readOnly": true
                },
                "projectlabel": {
                    "description": "Project label name (empty when the project has no label)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectlabelcolor": {
                    "description": "Project label color for UI (e.g. hex without #)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "client": {
                    "description": "Name of the associated client (empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "person": {
                    "description": "Full name of the person the expense belongs to",
                    "type": "string",
                    "readOnly": true,
                    "x-notes": "Not shown to Executive users"
                },
                "clientlocalid": {
                    "description": "Client local ID when a client is linked (empty otherwise)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectlocalidunpadded": {
                    "description": "Project local ID without zero-padding",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "clientid": {
                    "description": "ID of the associated client",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "clientlocalidunpadded": {
                    "description": "Client local ID without zero-padding (empty when no client)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                }
            }
        },
        "expense_collection": {
            "type": "object",
            "description": "Collection response for expense",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "expense": {
                    "type": "array",
                    "description": "Array of expense objects",
                    "items": {
                        "$ref": "#/definitions/expense_response"
                    }
                }
            }
        },
        "group_response": {
            "type": "object",
            "description": "Each object in the `group` array from GET /group/. The response uses the usual collection envelope (`personid`, `status`, `code`, `listcount`, `group`). Each entry is a fixed account role (ids 2–5: Administrator, Manager, Resource, Executive).",
            "properties": {
                "id": {
                    "description": "Unique identifier for the group / role",
                    "type": "string",
                    "readOnly": true
                },
                "name": {
                    "description": "Role name: Administrator, Manager, Resource, or Executive",
                    "type": "string",
                    "readOnly": true
                }
            }
        },
        "group_collection": {
            "type": "object",
            "description": "Collection response for group",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "group": {
                    "type": "array",
                    "description": "Array of group objects",
                    "items": {
                        "$ref": "#/definitions/group_response"
                    }
                }
            }
        },
        "invoice_response": {
            "type": "object",
            "description": "An invoice",
            "properties": {
                "id": {
                    "description": "Unique identifier for the invoice",
                    "type": "string",
                    "readOnly": true
                },
                "projectid": {
                    "description": "ID of the associated project",
                    "type": "string"
                },
                "date": {
                    "description": "Invoice date.",
                    "type": "string"
                },
                "termid": {
                    "description": "ID of the payment term",
                    "type": "string"
                },
                "termother": {
                    "description": "Custom term text when using a non-standard term (empty when using a predefined term)",
                    "type": "string",
                    "x-nullable": true
                },
                "termotherdatedue": {
                    "description": "Due date when using a custom term (empty when not applicable)",
                    "type": "string",
                    "x-nullable": true
                },
                "title": {
                    "description": "Invoice title",
                    "type": "string"
                },
                "description": {
                    "description": "Invoice description",
                    "type": "string",
                    "x-nullable": true
                },
                "localid": {
                    "description": "Human-readable invoice number / local ID (zero-padded)",
                    "type": "string",
                    "readOnly": true
                },
                "addressfrom": {
                    "description": "Billing address (from)",
                    "type": "string",
                    "x-nullable": true
                },
                "addressto": {
                    "description": "Billing address (to)",
                    "type": "string",
                    "x-nullable": true
                },
                "purchaseorder": {
                    "description": "Purchase order number",
                    "type": "string",
                    "x-nullable": true
                },
                "tax": {
                    "description": "Primary tax rate or configuration (empty when none; often a string in JSON)",
                    "type": "string",
                    "x-nullable": true
                },
                "disclaimer": {
                    "description": "Invoice disclaimer text",
                    "type": "string",
                    "x-nullable": true
                },
                "datebegin": {
                    "description": "Work period start (invoiced range).",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin/Manager only"
                },
                "dateend": {
                    "description": "Work period end (invoiced range).",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin/Manager only"
                },
                "second_tax": {
                    "description": "Second tax rate or configuration (empty when dual tax not used)",
                    "type": "string",
                    "x-nullable": true
                },
                "second_tax_compound": {
                    "description": "Second tax compound flag or value (empty when not applicable)",
                    "type": "string",
                    "x-nullable": true
                },
                "project": {
                    "description": "Name of the associated project",
                    "type": "string",
                    "readOnly": true
                },
                "client": {
                    "description": "Name of the associated client (empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "clientid": {
                    "description": "ID of the associated client (may be absent in some serializers; empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "term": {
                    "description": "Human-readable payment term label (e.g. Net 90)",
                    "type": "string",
                    "readOnly": true
                },
                "datepaid": {
                    "description": "Date the invoice was fully paid (empty when unpaid)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "subtotal": {
                    "description": "Invoice subtotal before taxes",
                    "type": "string",
                    "readOnly": true,
                    "x-notes": "May be returned as a string in JSON"
                },
                "taxamount": {
                    "description": "Computed primary tax amount (empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "secondtaxamount": {
                    "description": "Computed second tax amount (empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "numitems": {
                    "description": "Count of line items on the invoice",
                    "type": "string",
                    "readOnly": true
                },
                "total": {
                    "description": "Invoice total after taxes",
                    "type": "string",
                    "readOnly": true,
                    "x-notes": "May be returned as a string in JSON"
                },
                "payments": {
                    "description": "Total payments applied to this invoice",
                    "type": "string",
                    "readOnly": true,
                    "x-notes": "May be returned as a string in JSON"
                },
                "balance": {
                    "description": "Outstanding balance (total minus payments)",
                    "type": "string",
                    "readOnly": true,
                    "x-notes": "May be returned as a string in JSON"
                },
                "datedue": {
                    "description": "Invoice due date.",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "daysoverdue": {
                    "description": "Days past the due date (0 when not overdue; often a string in JSON)",
                    "type": "string",
                    "readOnly": true
                },
                "daysoverduepaid": {
                    "description": "Days overdue before paid, or related paid-overdue metric (empty when not applicable)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "status": {
                    "description": "Invoice status (e.g. overdue, paid — values depend on account)",
                    "type": "string",
                    "readOnly": true
                },
                "projectlabel": {
                    "description": "Name of the associated project label",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectlabel_order": {
                    "description": "Sort order of the project label within the account",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectlabelid": {
                    "description": "ID of the associated project label",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                }
            }
        },
        "invoice_collection": {
            "type": "object",
            "description": "Collection response for invoice",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "invoice": {
                    "type": "array",
                    "description": "Array of invoice objects",
                    "items": {
                        "$ref": "#/definitions/invoice_response"
                    }
                }
            }
        },
        "invoiceitem_response": {
            "type": "object",
            "description": "A line item on an invoice",
            "properties": {
                "id": {
                    "description": "Unique identifier for the invoice line item",
                    "type": "string",
                    "readOnly": true
                },
                "invoiceid": {
                    "description": "ID of the parent invoice",
                    "type": "string"
                },
                "name": {
                    "description": "Line item title or label",
                    "type": "string"
                },
                "description": {
                    "description": "Line item description (may be empty)",
                    "type": "string",
                    "x-nullable": true
                },
                "quantity": {
                    "description": "Quantity (empty for custom lines or when not used; may be a string in JSON)",
                    "type": "string",
                    "x-nullable": true
                },
                "rate": {
                    "description": "Rate per unit (empty when not used; may be a string in JSON)",
                    "type": "string",
                    "x-nullable": true
                },
                "amount": {
                    "description": "Line total amount",
                    "type": "string",
                    "x-notes": "May be returned as a string in JSON"
                },
                "custom": {
                    "description": "Whether this is a custom line item (\"t\") or a standard/catalog line (\"f\")",
                    "type": "string",
                    "readOnly": true
                },
                "priority": {
                    "description": "Display sort order on the invoice (lower first; often a string in JSON)",
                    "type": "string"
                }
            }
        },
        "invoiceitem_collection": {
            "type": "object",
            "description": "Collection response for invoiceitem",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "invoiceitem": {
                    "type": "array",
                    "description": "Array of invoiceitem objects",
                    "items": {
                        "$ref": "#/definitions/invoiceitem_response"
                    }
                }
            }
        },
        "invoicenote_response": {
            "type": "object",
            "description": "A note or history entry on an invoice",
            "properties": {
                "id": {
                    "description": "Unique identifier for the invoice note",
                    "type": "string",
                    "readOnly": true
                },
                "invoiceid": {
                    "description": "ID of the parent invoice",
                    "type": "string"
                },
                "authorid": {
                    "description": "ID of the person who created the note",
                    "type": "string",
                    "readOnly": true
                },
                "title": {
                    "description": "Short title or event label (e.g. Invoice Created)",
                    "type": "string"
                },
                "note": {
                    "description": "Free-form note body (may be empty for system-generated entries)",
                    "type": "string",
                    "x-nullable": true
                },
                "date": {
                    "description": "When the note was recorded.",
                    "type": "string",
                    "readOnly": true
                },
                "actions": {
                    "description": "Rendered HTML summary of actions (e.g. status changes, invoice events)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "author": {
                    "description": "Full name of the note author",
                    "type": "string",
                    "readOnly": true
                },
                "authorlocalid": {
                    "description": "Author’s person local ID in the Person app",
                    "type": "string",
                    "readOnly": true
                }
            }
        },
        "invoicenote_collection": {
            "type": "object",
            "description": "Collection response for invoicenote",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "invoicenote": {
                    "type": "array",
                    "description": "Array of invoicenote objects",
                    "items": {
                        "$ref": "#/definitions/invoicenote_response"
                    }
                }
            }
        },
        "invoiceterm_response": {
            "type": "object",
            "description": "Each payment term in the `invoiceterm` list from GET /invoiceterm/. JSON uses the usual collection envelope (`personid`, `status`, `code`, `listcount`, `invoiceterm`). XML returns `<intervals …><invoiceterm><item>…</item></invoiceterm></intervals>` with the same fields per `<item>`.",
            "properties": {
                "id": {
                    "description": "Unique identifier for the payment term",
                    "type": "string",
                    "readOnly": true
                },
                "name": {
                    "description": "Display name (e.g. Upon Receipt, Net 30, Other)",
                    "type": "string"
                },
                "duration": {
                    "description": "Net days for the term (0 for Upon Receipt; empty for custom \"Other\")",
                    "type": "string",
                    "x-nullable": true
                },
                "priority": {
                    "description": "Sort order when listing terms (lower first; often a string in JSON)",
                    "type": "string"
                }
            }
        },
        "invoiceterm_collection": {
            "type": "object",
            "description": "Collection response for invoiceterm",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "invoiceterm": {
                    "type": "array",
                    "description": "Array of invoiceterm objects",
                    "items": {
                        "$ref": "#/definitions/invoiceterm_response"
                    }
                }
            }
        },
        "me_response": {
            "type": "object",
            "description": "Each object in the `me` array from GET /me/. The collection response uses the usual envelope (`personid`, `status`, `code`, `listcount`, `me`).",
            "properties": {
                "id": {
                    "description": "Unique identifier for the person (same as authenticated user)",
                    "type": "string",
                    "readOnly": true
                },
                "localid": {
                    "description": "Human-readable local ID shown in the Person app UI",
                    "type": "string",
                    "readOnly": true
                },
                "clientid": {
                    "description": "ID of the associated client when this user is a client contact (empty when not)",
                    "type": "string",
                    "x-nullable": true
                },
                "title": {
                    "description": "Job title",
                    "type": "string",
                    "x-nullable": true
                },
                "firstname": {
                    "description": "First name",
                    "type": "string"
                },
                "lastname": {
                    "description": "Last name",
                    "type": "string"
                },
                "primaryaccount": {
                    "description": "Whether this person is the primary account holder (\"t\"/\"f\")",
                    "type": "string",
                    "readOnly": true
                },
                "notes": {
                    "description": "Person notes (may contain HTML)",
                    "type": "string",
                    "x-nullable": true
                },
                "allprojects": {
                    "description": "Whether the person is on all projects (\"t\"/\"f\")",
                    "type": "string"
                },
                "private": {
                    "description": "Whether contact info is private from Resource users (\"t\"/\"f\")",
                    "type": "string"
                },
                "tips": {
                    "description": "Whether in-app tips are enabled (\"t\"/\"f\")",
                    "type": "string"
                },
                "username": {
                    "description": "Login username (often the same as the account email)",
                    "type": "string"
                },
                "groupid": {
                    "description": "ID of the user's group/role",
                    "type": "string"
                },
                "group": {
                    "description": "Group/role name (e.g. Administrator)",
                    "type": "string",
                    "readOnly": true
                },
                "client": {
                    "description": "Name of the associated client (empty when not a client contact)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "numlogins": {
                    "description": "Total number of logins (returned as a string in JSON)",
                    "type": "string",
                    "readOnly": true
                },
                "lastlogin": {
                    "description": "Last login timestamp (may include fractional seconds)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "timezone": {
                    "description": "IANA timezone name (slashes escaped in JSON)",
                    "type": "string",
                    "readOnly": true
                },
                "timezone_offset": {
                    "description": "Human-readable timezone label from account settings.",
                    "type": "string",
                    "readOnly": true
                },
                "clientlocalid": {
                    "description": "Client local ID when linked to a client (empty otherwise)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "calendarorientation": {
                    "description": "Calendar display preference code (returned as a string in JSON)",
                    "type": "string",
                    "readOnly": true
                },
                "editordisabled": {
                    "description": "Rich text editor flag: \"0\" enabled, non-zero disabled (returned as a string in JSON)",
                    "type": "string",
                    "readOnly": true
                }
            }
        },
        "me_collection": {
            "type": "object",
            "description": "Collection response for me",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "me": {
                    "type": "array",
                    "description": "Array of me objects",
                    "items": {
                        "$ref": "#/definitions/me_response"
                    }
                }
            }
        },
        "milestone_response": {
            "type": "object",
            "description": "A project milestone",
            "properties": {
                "id": {
                    "description": "Unique identifier for the milestone",
                    "type": "string",
                    "readOnly": true
                },
                "projectid": {
                    "description": "ID of the parent project",
                    "type": "string"
                },
                "ownerid": {
                    "description": "ID of the milestone owner",
                    "type": "string"
                },
                "title": {
                    "description": "Milestone title",
                    "type": "string"
                },
                "datedue": {
                    "description": "Target due date.",
                    "type": "string"
                },
                "description": {
                    "description": "Milestone description (may contain HTML)",
                    "type": "string",
                    "x-nullable": true
                },
                "complete": {
                    "description": "Whether the milestone is complete (\"t\") or open (\"f\")",
                    "type": "string"
                },
                "localid": {
                    "description": "Milestone local ID within the project (often a string in JSON)",
                    "type": "string",
                    "readOnly": true
                },
                "dateclosed": {
                    "description": "Date the milestone was closed (empty when not complete)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "project": {
                    "description": "Name of the parent project",
                    "type": "string",
                    "readOnly": true
                },
                "client": {
                    "description": "Name of the associated client (empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "clientid": {
                    "description": "ID of the associated client",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "numtasksclosed": {
                    "description": "Count of tasks in this milestone that are closed",
                    "type": "string",
                    "readOnly": true
                },
                "numtaskstotal": {
                    "description": "Total count of tasks in this milestone",
                    "type": "string",
                    "readOnly": true
                },
                "progress": {
                    "description": "Completion percentage 0–100 (may have high precision; may be a string in JSON)",
                    "type": "string",
                    "readOnly": true
                },
                "estimate": {
                    "description": "Total estimated hours for tasks in this milestone",
                    "type": "string",
                    "readOnly": true,
                    "x-notes": "May be returned as a string in JSON"
                },
                "actual": {
                    "description": "Total actual hours logged against this milestone",
                    "type": "string",
                    "readOnly": true,
                    "x-notes": "May be returned as a string in JSON"
                },
                "remaining": {
                    "description": "Estimated hours remaining (estimate minus actual when derived that way)",
                    "type": "string",
                    "readOnly": true,
                    "x-notes": "May be returned as a string in JSON"
                },
                "owner": {
                    "description": "Full name of the milestone owner",
                    "type": "string",
                    "readOnly": true,
                    "x-notes": "Not shown to Executive users"
                },
                "projectlabel": {
                    "description": "Name of the associated project label",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectlabel_order": {
                    "description": "Sort order of the project label within the account",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectlabelid": {
                    "description": "ID of the associated project label",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                }
            }
        },
        "milestone_collection": {
            "type": "object",
            "description": "Collection response for milestone",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "milestone": {
                    "type": "array",
                    "description": "Array of milestone objects",
                    "items": {
                        "$ref": "#/definitions/milestone_response"
                    }
                }
            }
        },
        "milestonenote_response": {
            "type": "object",
            "description": "A note or history entry on a milestone (includes system events and comments)",
            "properties": {
                "id": {
                    "description": "Unique identifier for the milestone note",
                    "type": "string",
                    "readOnly": true
                },
                "milestoneid": {
                    "description": "ID of the parent milestone",
                    "type": "string"
                },
                "title": {
                    "description": "Short title or event label (e.g. Milestone updated)",
                    "type": "string"
                },
                "date": {
                    "description": "When the note or event was recorded.",
                    "type": "string",
                    "readOnly": true
                },
                "authorid": {
                    "description": "ID of the person who created the note",
                    "type": "string",
                    "readOnly": true
                },
                "note": {
                    "description": "Free-form note body (may be empty for system-generated rows)",
                    "type": "string",
                    "x-nullable": true
                },
                "public": {
                    "description": "Whether the note is visible to Executive-level users (\"t\"/\"f\")",
                    "type": "string"
                },
                "actions": {
                    "description": "Rendered HTML summary of actions (empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "state": {
                    "description": "Human-readable description of what changed (may span multiple lines)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "meta": {
                    "description": "Additional metadata (often empty)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "author": {
                    "description": "Full name of the note author",
                    "type": "string",
                    "readOnly": true
                },
                "authorlocalid": {
                    "description": "Author’s person local ID in the Person app",
                    "type": "string",
                    "readOnly": true
                }
            }
        },
        "milestonenote_collection": {
            "type": "object",
            "description": "Collection response for milestonenote",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "milestonenote": {
                    "type": "array",
                    "description": "Array of milestonenote objects",
                    "items": {
                        "$ref": "#/definitions/milestonenote_response"
                    }
                }
            }
        },
        "module_response": {
            "type": "object",
            "description": "A global (default) module. Project-specific modules are accessible via /projectmodule/.",
            "properties": {
                "id": {
                    "description": "Unique identifier for the module",
                    "type": "string",
                    "readOnly": true
                },
                "name": {
                    "description": "Module name",
                    "type": "string"
                },
                "description": {
                    "description": "Module description (may be empty)",
                    "type": "string",
                    "x-nullable": true
                },
                "active": {
                    "description": "Whether the module is active (\"t\") or inactive (\"f\")",
                    "type": "string"
                }
            }
        },
        "module_collection": {
            "type": "object",
            "description": "Collection response for module",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "module": {
                    "type": "array",
                    "description": "Array of module objects",
                    "items": {
                        "$ref": "#/definitions/module_response"
                    }
                }
            }
        },
        "payment_response": {
            "type": "object",
            "description": "A payment applied to an invoice",
            "properties": {
                "id": {
                    "description": "Unique identifier for the payment",
                    "type": "string",
                    "readOnly": true
                },
                "projectid": {
                    "description": "ID of the associated project",
                    "type": "string"
                },
                "date": {
                    "description": "Payment date.",
                    "type": "string"
                },
                "amount": {
                    "description": "Payment amount",
                    "type": "string",
                    "x-notes": "May be returned as a string in JSON"
                },
                "typeid": {
                    "description": "ID of the payment type",
                    "type": "string"
                },
                "reference": {
                    "description": "Payment reference (check number, transaction id, etc.)",
                    "type": "string",
                    "x-nullable": true
                },
                "note": {
                    "description": "Payment description or notes",
                    "type": "string",
                    "x-nullable": true
                },
                "invoiceid": {
                    "description": "ID of the invoice this payment is applied to",
                    "type": "string",
                    "x-nullable": true
                },
                "personid": {
                    "description": "ID of the person who recorded the payment",
                    "type": "string",
                    "x-notes": "Not shown to Executive users"
                },
                "type": {
                    "description": "Payment type name (e.g. Credit Card)",
                    "type": "string",
                    "readOnly": true
                },
                "project": {
                    "description": "Name of the associated project",
                    "type": "string",
                    "readOnly": true
                },
                "person": {
                    "description": "Full name of the person who recorded the payment",
                    "type": "string",
                    "readOnly": true,
                    "x-notes": "Not shown to Executive users"
                },
                "invoice": {
                    "description": "Human-readable invoice identifier shown in the app (e.g. invoice number)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "client": {
                    "description": "Name of the associated client (empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "clientid": {
                    "description": "ID of the associated client (empty or omitted when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                }
            }
        },
        "payment_collection": {
            "type": "object",
            "description": "Collection response for payment",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "payment": {
                    "type": "array",
                    "description": "Array of payment objects",
                    "items": {
                        "$ref": "#/definitions/payment_response"
                    }
                }
            }
        },
        "paymenttype_response": {
            "type": "object",
            "description": "Each object in the `paymenttype` array from GET /paymenttype/. The response uses the usual collection envelope (`personid`, `status`, `code`, `listcount`, `paymenttype`). Fixed account-wide types (e.g. Cash, Check, Credit Card, Project Credit, Bank Transfer, Other).",
            "properties": {
                "id": {
                    "description": "Unique identifier for the payment type",
                    "type": "string",
                    "readOnly": true
                },
                "name": {
                    "description": "Payment type label (e.g. Cash, Check, Credit Card)",
                    "type": "string",
                    "readOnly": true
                }
            }
        },
        "paymenttype_collection": {
            "type": "object",
            "description": "Collection response for paymenttype",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "paymenttype": {
                    "type": "array",
                    "description": "Array of paymenttype objects",
                    "items": {
                        "$ref": "#/definitions/paymenttype_response"
                    }
                }
            }
        },
        "person_response": {
            "type": "object",
            "description": "A person (team member or client contact) as returned by GET /person/ or a member GET.",
            "properties": {
                "id": {
                    "description": "Unique identifier for the person",
                    "type": "string",
                    "readOnly": true
                },
                "localid": {
                    "description": "Human-readable local ID shown in the Person app UI",
                    "type": "string",
                    "readOnly": true
                },
                "clientid": {
                    "description": "ID of the associated client for client contacts (empty for team members)",
                    "type": "string",
                    "x-nullable": true
                },
                "title": {
                    "description": "Job title",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin/Manager only"
                },
                "firstname": {
                    "description": "First name",
                    "type": "string"
                },
                "lastname": {
                    "description": "Last name",
                    "type": "string"
                },
                "primaryaccount": {
                    "description": "Whether this person is the primary account holder (\"t\"/\"f\")",
                    "type": "string",
                    "readOnly": true
                },
                "notes": {
                    "description": "Person notes (may contain HTML)",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin/Manager only"
                },
                "allprojects": {
                    "description": "Whether the person is on all projects (\"t\"/\"f\")",
                    "type": "string",
                    "x-notes": "Admin/Manager only"
                },
                "active": {
                    "description": "Whether the person is active (\"t\") or inactive (\"f\")",
                    "type": "string"
                },
                "private": {
                    "description": "Whether contact info is private from Resource users (\"t\"/\"f\")",
                    "type": "string",
                    "x-notes": "Admin/Manager only"
                },
                "tips": {
                    "description": "Whether in-app tips are enabled (\"t\"/\"f\")",
                    "type": "string"
                },
                "username": {
                    "description": "Login username",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin/Manager only"
                },
                "groupid": {
                    "description": "ID of the user's group/role",
                    "type": "string",
                    "x-nullable": true
                },
                "group": {
                    "description": "Group/role name (e.g. Administrator, Manager)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "client": {
                    "description": "Name of the associated client (empty when not a client contact)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "numlogins": {
                    "description": "Total number of logins (often a string in JSON)",
                    "type": "string",
                    "readOnly": true,
                    "x-notes": "Admin/Manager only"
                },
                "lastlogin": {
                    "description": "Last login timestamp (may include fractional seconds)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true,
                    "x-notes": "Admin/Manager only"
                },
                "timezone": {
                    "description": "IANA timezone name",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true,
                    "x-notes": "Admin/Manager only"
                },
                "timezone_offset": {
                    "description": "Human-readable timezone label from account settings.",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true,
                    "x-notes": "Admin/Manager only"
                },
                "restricttasks": {
                    "description": "Whether the person is restricted to only their own tasks (\"t\"/\"f\")",
                    "type": "string",
                    "x-notes": "Admin/Manager only"
                },
                "clientlocalid": {
                    "description": "Client local ID when linked to a client (empty otherwise)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "calendarorientation": {
                    "description": "Calendar display preference code (often a string in JSON)",
                    "type": "string",
                    "readOnly": true
                },
                "editordisabled": {
                    "description": "\"0\" when the rich text editor is enabled, non-zero when disabled (often a string in JSON)",
                    "type": "string",
                    "readOnly": true
                },
                "email": {
                    "description": "Email address",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "May be omitted depending on role or response shape"
                },
                "hourlyrate": {
                    "description": "Default hourly rate",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin only; may be omitted"
                },
                "cancomment": {
                    "description": "Whether the person can add comments (\"t\"/\"f\")",
                    "type": "string",
                    "x-notes": "Admin/Manager only; may be omitted"
                }
            }
        },
        "person_collection": {
            "type": "object",
            "description": "Collection response for person",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "person": {
                    "type": "array",
                    "description": "Array of person objects",
                    "items": {
                        "$ref": "#/definitions/person_response"
                    }
                }
            }
        },
        "personcontact_response": {
            "type": "object",
            "description": "A contact detail (phone, email, URL, etc.) for a person",
            "properties": {
                "id": {
                    "description": "Unique identifier for the person contact",
                    "type": "string",
                    "readOnly": true
                },
                "personid": {
                    "description": "ID of the person this contact belongs to",
                    "type": "string"
                },
                "contact_type_id": {
                    "description": "ID of the contact type (see `/contacttype/`)",
                    "type": "string"
                },
                "contact_descriptor_id": {
                    "description": "ID of the contact descriptor (see `/contactdescriptor/`)",
                    "type": "string"
                },
                "value": {
                    "description": "The stored value (email address, phone number, URL, etc.)",
                    "type": "string"
                },
                "contact_type": {
                    "description": "Contact type key or label (e.g. email, phone)",
                    "type": "string",
                    "readOnly": true
                },
                "contact_descriptor": {
                    "description": "Descriptor label within the type (e.g. Work, Home, Other)",
                    "type": "string",
                    "readOnly": true
                }
            }
        },
        "personcontact_collection": {
            "type": "object",
            "description": "Collection response for personcontact",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "personcontact": {
                    "type": "array",
                    "description": "Array of personcontact objects",
                    "items": {
                        "$ref": "#/definitions/personcontact_response"
                    }
                }
            }
        },
        "project_response": {
            "type": "object",
            "description": "A project as returned by GET /project/ (or a member GET).",
            "properties": {
                "id": {
                    "description": "Unique identifier for the project",
                    "type": "string",
                    "readOnly": true
                },
                "name": {
                    "description": "Project name",
                    "type": "string"
                },
                "description": {
                    "description": "Project description (may contain HTML)",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin/Manager only"
                },
                "datestart": {
                    "description": "Project start date.",
                    "type": "string"
                },
                "dateend": {
                    "description": "Project end date.",
                    "type": "string",
                    "x-nullable": true
                },
                "alert_percent": {
                    "description": "Budget alert threshold as a percentage (0 when not set or disabled)",
                    "type": "string",
                    "x-notes": "Admin/Manager only"
                },
                "alert_date": {
                    "description": "Date when a budget or schedule alert applies (empty when not set)",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin/Manager only"
                },
                "active": {
                    "description": "Whether the project is active (\"t\") or inactive (\"f\")",
                    "type": "string"
                },
                "billable": {
                    "description": "Whether the project is billable (\"t\") or unbillable (\"f\")",
                    "type": "string"
                },
                "budget": {
                    "description": "Project budget (hours or currency depending on account settings)",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin/Manager only"
                },
                "clientid": {
                    "description": "ID of the associated client (empty when the project has no client)",
                    "type": "string",
                    "x-nullable": true
                },
                "client": {
                    "description": "Name of the associated client (empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "clientlocalid": {
                    "description": "Client local ID when a client is assigned (empty otherwise)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "labelid": {
                    "description": "ID of the project label (empty when unlabeled)",
                    "type": "string",
                    "x-nullable": true
                },
                "label": {
                    "description": "Project label name (empty when unlabeled)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "labelcolor": {
                    "description": "Label color as stored for display (e.g. hex; empty when no label)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "label_order": {
                    "description": "Sort order for the label within the account (empty when no label)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "localidunpadded": {
                    "description": "Numeric project local ID without leading-zero padding",
                    "type": "integer",
                    "readOnly": true
                },
                "localid": {
                    "description": "Human-readable local ID shown in the Project app UI (zero-padded)",
                    "type": "string",
                    "readOnly": true
                },
                "manager": {
                    "description": "Full name of the project manager (primary or first listed)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true,
                    "x-notes": "Visibility may vary by role"
                },
                "managerid": {
                    "description": "ID of the project manager (API may accept multiple managers on write; response reflects assigned manager)",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin/Manager focused; write supports CSV of person IDs per OpenAPI"
                }
            }
        },
        "project_collection": {
            "type": "object",
            "description": "Collection response for project",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "project": {
                    "type": "array",
                    "description": "Array of project objects",
                    "items": {
                        "$ref": "#/definitions/project_response"
                    }
                }
            }
        },
        "projectlabel_response": {
            "type": "object",
            "description": "A project label used to categorize or color-code projects",
            "properties": {
                "id": {
                    "description": "Unique identifier for the project label",
                    "type": "string",
                    "readOnly": true
                },
                "name": {
                    "description": "Label name",
                    "type": "string"
                },
                "color": {
                    "description": "Label color as stored for display (typically 6 hex digits without a leading `#`, e.g. 44bb44)",
                    "type": "string"
                },
                "priority": {
                    "description": "Sort order when listing labels (lower values first; often a string in JSON)",
                    "type": "string"
                },
                "active": {
                    "description": "Whether the label is active (\"t\") or inactive (\"f\")",
                    "type": "string"
                }
            }
        },
        "projectlabel_collection": {
            "type": "object",
            "description": "Collection response for projectlabel",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "projectlabel": {
                    "type": "array",
                    "description": "Array of projectlabel objects",
                    "items": {
                        "$ref": "#/definitions/projectlabel_response"
                    }
                }
            }
        },
        "projectmodule_response": {
            "type": "object",
            "description": "A module assigned to a specific project (default module linked to a global module, or a custom project-only module)",
            "properties": {
                "id": {
                    "description": "Unique identifier for the project module row",
                    "type": "string",
                    "readOnly": true
                },
                "projectid": {
                    "description": "ID of the parent project",
                    "type": "string"
                },
                "moduleid": {
                    "description": "ID of the global `/module/` record when this row is based on a default module (empty or null for a custom project-only module)",
                    "type": "string",
                    "x-nullable": true
                },
                "description": {
                    "description": "Optional description for this project module instance (may be empty)",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Admin only"
                },
                "active": {
                    "description": "Whether the project module is active (\"t\") or inactive (\"f\")",
                    "type": "string"
                },
                "modulename": {
                    "description": "Display name of the module for this project",
                    "type": "string",
                    "readOnly": true
                },
                "module": {
                    "description": "Module name (often the same value as `modulename`)",
                    "type": "string",
                    "readOnly": true
                }
            }
        },
        "projectmodule_collection": {
            "type": "object",
            "description": "Collection response for projectmodule",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "projectmodule": {
                    "type": "array",
                    "description": "Array of projectmodule objects",
                    "items": {
                        "$ref": "#/definitions/projectmodule_response"
                    }
                }
            }
        },
        "projectnote_response": {
            "type": "object",
            "description": "A note on a project (may be a secure note restricted by project permissions)",
            "properties": {
                "id": {
                    "description": "Unique identifier for the project note",
                    "type": "string",
                    "readOnly": true
                },
                "projectid": {
                    "description": "ID of the parent project",
                    "type": "string"
                },
                "authorid": {
                    "description": "ID of the person who created the note",
                    "type": "string",
                    "readOnly": true
                },
                "title": {
                    "description": "Note title",
                    "type": "string"
                },
                "note": {
                    "description": "Note body (may contain HTML)",
                    "type": "string",
                    "x-nullable": true
                },
                "date": {
                    "description": "When the note was created.",
                    "type": "string",
                    "readOnly": true
                },
                "secure": {
                    "description": "Whether this is a secure project note (\"t\"/\"f\") — visibility follows project secure-note rules",
                    "type": "string"
                },
                "localid": {
                    "description": "Note local ID / sequence within the project (often a string in JSON)",
                    "type": "string",
                    "readOnly": true
                },
                "projectactive": {
                    "description": "Whether the parent project is active (\"t\"/\"f\")",
                    "type": "string",
                    "readOnly": true
                },
                "author": {
                    "description": "Full name of the note author",
                    "type": "string",
                    "readOnly": true
                },
                "projectlocalid": {
                    "description": "Parent project’s local ID",
                    "type": "string",
                    "readOnly": true
                },
                "clientlocalid": {
                    "description": "Client local ID when the project has a client (empty otherwise)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "mod_authorlocalid": {
                    "description": "Local ID of the last modifier, if different from author (often empty)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectlabel": {
                    "description": "Project label name when set (empty when the project has no label)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectlabelcolor": {
                    "description": "Project label color (e.g. hex; empty when no label)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectlabelactive": {
                    "description": "Whether the project label is active (\"t\"/\"f\") when a label is set; empty when no label",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                }
            }
        },
        "projectnote_collection": {
            "type": "object",
            "description": "Collection response for projectnote",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "projectnote": {
                    "type": "array",
                    "description": "Array of projectnote objects",
                    "items": {
                        "$ref": "#/definitions/projectnote_response"
                    }
                }
            }
        },
        "projectteam_response": {
            "type": "object",
            "description": "Collection GET with required `projectid` returns one aggregate object: the project id and every team member’s person id in a single array. POST/PUT/DELETE on `/projectteam/{projectid}/` use JSON bodies (see resource examples); responses may differ.",
            "properties": {
                "projectid": {
                    "description": "Project whose team is listed",
                    "type": "string",
                    "readOnly": true
                },
                "personid": {
                    "description": "All person IDs assigned to the project (order is not guaranteed; JSON may use strings or numbers per element)",
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "Element (JSON may use string or number per element)"
                    },
                    "readOnly": true
                }
            }
        },
        "projectteam_collection": {
            "type": "object",
            "description": "Collection response for projectteam",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "projectteam": {
                    "type": "array",
                    "description": "Array of projectteam objects",
                    "items": {
                        "$ref": "#/definitions/projectteam_response"
                    }
                }
            }
        },
        "projectworktype_response": {
            "type": "object",
            "description": "A work type assigned to a project with project-level rate and time rollups",
            "properties": {
                "id": {
                    "description": "Unique identifier for the project–worktype row",
                    "type": "string",
                    "readOnly": true
                },
                "projectid": {
                    "description": "ID of the parent project",
                    "type": "string"
                },
                "worktypeid": {
                    "description": "ID of the global `/worktype/` when this row is based on a standard work type (empty for a custom project-only work type)",
                    "type": "string",
                    "x-nullable": true
                },
                "worktype": {
                    "description": "Display name of the work type for this project",
                    "type": "string",
                    "readOnly": true
                },
                "active": {
                    "description": "Whether this project work type is active (\"t\") or inactive (\"f\")",
                    "type": "string"
                },
                "total": {
                    "description": "Total hours logged against this work type on the project (0 when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-notes": "May be returned as a string in JSON; not shown to Resource/Executive users"
                },
                "hourlyrate": {
                    "description": "Project-specific hourly rate for this work type",
                    "type": "string",
                    "x-notes": "Not shown to Resource/Executive users; may be returned as a string in JSON"
                },
                "esttime": {
                    "description": "Estimated hours budgeted for this work type on the project",
                    "type": "string",
                    "x-notes": "Not shown to Resource/Executive users; may be returned as a string in JSON"
                }
            }
        },
        "projectworktype_collection": {
            "type": "object",
            "description": "Collection response for projectworktype",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "projectworktype": {
                    "type": "array",
                    "description": "Array of projectworktype objects",
                    "items": {
                        "$ref": "#/definitions/projectworktype_response"
                    }
                }
            }
        },
        "request_response": {
            "type": "object",
            "description": "A work request (queued task) as returned by GET /request/ (or a member GET).",
            "properties": {
                "id": {
                    "description": "Unique identifier for the request",
                    "type": "string",
                    "readOnly": true
                },
                "personid": {
                    "description": "ID of the person who submitted the request",
                    "type": "string"
                },
                "title": {
                    "description": "Request title",
                    "type": "string"
                },
                "date": {
                    "description": "When the request was submitted.",
                    "type": "string",
                    "readOnly": true
                },
                "description": {
                    "description": "Request description (may contain HTML, images, and inline assets)",
                    "type": "string",
                    "x-nullable": true
                },
                "projectid": {
                    "description": "ID of the associated project (empty when not yet assigned to a project)",
                    "type": "string",
                    "x-nullable": true
                },
                "priorityid": {
                    "description": "ID of the priority",
                    "type": "string"
                },
                "datedue": {
                    "description": "Due date.",
                    "type": "string",
                    "x-nullable": true
                },
                "localid": {
                    "description": "Human-readable request number shown in the app",
                    "type": "string",
                    "readOnly": true
                },
                "headers": {
                    "description": "Original email headers when the request was created from email (empty when not applicable)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "clientid": {
                    "description": "ID of the associated client (empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "client": {
                    "description": "Name of the associated client (empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "person": {
                    "description": "Full name of the submitter",
                    "type": "string",
                    "readOnly": true
                },
                "person_localid": {
                    "description": "Local ID of the submitter in the Person app",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "email": {
                    "description": "Email address of the submitter",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "project": {
                    "description": "Name of the associated project (empty when not assigned)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectactive": {
                    "description": "Whether the linked project is active (\"t\"/\"f\")",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true,
                    "x-notes": "Empty when no project is linked (not only \"t\"/\"f\")."
                },
                "priority": {
                    "description": "Priority label (e.g. P1, P3)",
                    "type": "string",
                    "readOnly": true
                },
                "projectlocalid": {
                    "description": "Local ID of the associated project (empty when not assigned)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "personvisible": {
                    "description": "Whether the submitter is visible to the current viewer (\"t\"/\"f\"); used for privacy across roles",
                    "type": "string",
                    "readOnly": true
                }
            }
        },
        "request_collection": {
            "type": "object",
            "description": "Collection response for request",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "request": {
                    "type": "array",
                    "description": "Array of request objects",
                    "items": {
                        "$ref": "#/definitions/request_response"
                    }
                }
            }
        },
        "task_response": {
            "type": "object",
            "description": "Each object in the `task` array from GET /task/. The response uses the usual collection envelope (`personid`, `status`, `code`, `listcount`, `task`). Hour and estimate fields are often JSON strings (e.g. `\"0\"`).",
            "properties": {
                "id": {
                    "description": "Unique identifier for the task",
                    "type": "string",
                    "readOnly": true
                },
                "localid": {
                    "description": "Task local ID within the project",
                    "type": "string",
                    "readOnly": true
                },
                "queueid": {
                    "description": "Work request ID if the task came from a queue (JSON `null` when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "assigneeid": {
                    "description": "Comma-separated assignee person IDs (empty string when unassigned)",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Not shown to Executive users"
                },
                "statusid": {
                    "description": "ID of the task status",
                    "type": "string"
                },
                "projectid": {
                    "description": "ID of the parent project",
                    "type": "string"
                },
                "moduleid": {
                    "description": "ID of the task module (project module)",
                    "type": "string"
                },
                "title": {
                    "description": "Task title",
                    "type": "string"
                },
                "summary": {
                    "description": "Task summary (may contain HTML, links, inline images)",
                    "type": "string",
                    "x-nullable": true
                },
                "dateopen": {
                    "description": "Start / open date.",
                    "type": "string"
                },
                "datedue": {
                    "description": "Due date.",
                    "type": "string",
                    "x-nullable": true
                },
                "dateclosed": {
                    "description": "Date closed (empty when open).",
                    "type": "string",
                    "x-nullable": true
                },
                "estimate": {
                    "description": "Estimated hours (numeric string in JSON)",
                    "type": "string"
                },
                "ownerid": {
                    "description": "Owner person ID(s); may be comma-separated when multiple owners",
                    "type": "string",
                    "x-notes": "Not shown to Executive users"
                },
                "priorityid": {
                    "description": "ID of the task priority row",
                    "type": "string"
                },
                "datemodified": {
                    "description": "Last modification timestamp.",
                    "type": "string",
                    "readOnly": true
                },
                "color": {
                    "description": "Priority color (6 hex digits, no `#`)",
                    "type": "string",
                    "readOnly": true
                },
                "priority": {
                    "description": "Numeric priority rank for sorting",
                    "type": "string",
                    "readOnly": true
                },
                "severity": {
                    "description": "Severity label (e.g. P1, P3)",
                    "type": "string",
                    "readOnly": true
                },
                "status": {
                    "description": "Human-readable status name (e.g. Closed, Open)",
                    "type": "string",
                    "readOnly": true
                },
                "status_order": {
                    "description": "Sort key for status in pipelines / boards",
                    "type": "string",
                    "readOnly": true
                },
                "project": {
                    "description": "Parent project name",
                    "type": "string",
                    "readOnly": true
                },
                "clientid": {
                    "description": "Associated client ID (`null` when the project has no client)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "clientlocalid": {
                    "description": "Client local ID (`null` when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "client": {
                    "description": "Client name (`null` when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "milestoneid": {
                    "description": "Milestone ID when the task is in a milestone",
                    "type": "string",
                    "x-nullable": true
                },
                "milestone": {
                    "description": "Milestone title",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "module": {
                    "description": "Module display name",
                    "type": "string",
                    "readOnly": true
                },
                "projectlocalid": {
                    "description": "Parent project local ID",
                    "type": "string",
                    "readOnly": true
                },
                "assignees": {
                    "description": "Comma-separated assignee names (empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true,
                    "x-notes": "Not shown to Executive users"
                },
                "followers": {
                    "description": "Comma-separated follower names (empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true,
                    "x-notes": "Not shown to Executive users"
                },
                "followerid": {
                    "description": "Comma-separated follower person IDs (empty when none)",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Not shown to Executive users"
                },
                "owners": {
                    "description": "Comma-separated owner names",
                    "type": "string",
                    "readOnly": true,
                    "x-notes": "Not shown to Executive users"
                },
                "billable": {
                    "description": "Total billable hours logged (numeric string)",
                    "type": "string",
                    "readOnly": true
                },
                "unbillable": {
                    "description": "Total unbillable hours logged (numeric string)",
                    "type": "string",
                    "readOnly": true
                },
                "actual": {
                    "description": "Total actual hours logged (numeric string)",
                    "type": "string",
                    "readOnly": true
                },
                "datecreated": {
                    "description": "Date the task was created.",
                    "type": "string",
                    "readOnly": true
                },
                "projectlabel": {
                    "description": "Project label name when set",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectlabel_order": {
                    "description": "Project label sort order",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectlabelid": {
                    "description": "Project label ID when set",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                }
            }
        },
        "task_collection": {
            "type": "object",
            "description": "Collection response for task",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "task": {
                    "type": "array",
                    "description": "Array of task objects",
                    "items": {
                        "$ref": "#/definitions/task_response"
                    }
                }
            }
        },
        "tasklistfilter_response": {
            "type": "object",
            "description": "A saved task list filter (personal or shared view definition)",
            "properties": {
                "id": {
                    "description": "Unique identifier for the filter",
                    "type": "string",
                    "readOnly": true
                },
                "filtertypeid": {
                    "description": "ID of the filter type (e.g. tasks vs other list kinds)",
                    "type": "string"
                },
                "personid": {
                    "description": "ID of the person who owns this filter",
                    "type": "string"
                },
                "title": {
                    "description": "User-visible name for the saved filter",
                    "type": "string"
                },
                "subfilterid": {
                    "description": "Optional nested filter id (empty when not used)",
                    "type": "string",
                    "x-nullable": true
                },
                "shared": {
                    "description": "Whether the filter is shared with others (\"t\"/\"f\")",
                    "type": "string"
                },
                "scheduled": {
                    "description": "Whether this filter is used on a schedule (\"t\"/\"f\")",
                    "type": "string"
                },
                "filtertype": {
                    "description": "Filter type key or label (e.g. tasks)",
                    "type": "string",
                    "readOnly": true
                },
                "person": {
                    "description": "Full name of the owning person",
                    "type": "string",
                    "readOnly": true
                },
                "datesent": {
                    "description": "When a scheduled report was last sent (empty when not scheduled or never sent)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                }
            }
        },
        "tasklistfilter_collection": {
            "type": "object",
            "description": "Collection response for tasklistfilter",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "tasklistfilter": {
                    "type": "array",
                    "description": "Array of tasklistfilter objects",
                    "items": {
                        "$ref": "#/definitions/tasklistfilter_response"
                    }
                }
            }
        },
        "tasknote_response": {
            "type": "object",
            "description": "A note or history entry on a task (comments, status changes, and system events)",
            "properties": {
                "id": {
                    "description": "Unique identifier for the task note",
                    "type": "string",
                    "readOnly": true
                },
                "taskid": {
                    "description": "ID of the parent task",
                    "type": "string"
                },
                "title": {
                    "description": "Short title or event label (e.g. Task closed)",
                    "type": "string"
                },
                "date": {
                    "description": "When the note or event was recorded.",
                    "type": "string",
                    "readOnly": true
                },
                "authorid": {
                    "description": "ID of the person who created the note",
                    "type": "string",
                    "readOnly": true
                },
                "note": {
                    "description": "Free-form note body (may be empty for system-generated rows)",
                    "type": "string",
                    "x-nullable": true
                },
                "public": {
                    "description": "Whether the note is visible to Executive-level users (\"t\"/\"f\")",
                    "type": "string"
                },
                "actions": {
                    "description": "Rendered HTML summary of actions (empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "state": {
                    "description": "Human-readable description of what changed (e.g. status change text)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "mod_authorid": {
                    "description": "ID of the last editor when the note was modified (empty when never edited)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "mod_date": {
                    "description": "When the note was last edited (empty when never modified)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "meta": {
                    "description": "Additional metadata (often empty)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "author": {
                    "description": "Full name of the note author",
                    "type": "string",
                    "readOnly": true
                },
                "authorlocalid": {
                    "description": "Author’s person local ID in the Person app",
                    "type": "string",
                    "readOnly": true
                }
            }
        },
        "tasknote_collection": {
            "type": "object",
            "description": "Collection response for tasknote",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "tasknote": {
                    "type": "array",
                    "description": "Array of tasknote objects",
                    "items": {
                        "$ref": "#/definitions/tasknote_response"
                    }
                }
            }
        },
        "taskpriority_response": {
            "type": "object",
            "description": "Each object in the `taskpriority` array from GET /taskpriority/. The response uses the usual collection envelope (`personid`, `status`, `code`, `listcount`, `taskpriority`).",
            "properties": {
                "id": {
                    "description": "Unique identifier for the task priority row",
                    "type": "string",
                    "readOnly": true
                },
                "name": {
                    "description": "Priority label (e.g. P1, P3, PLG)",
                    "type": "string"
                },
                "color": {
                    "description": "Display color as 6 hex digits without `#`",
                    "type": "string"
                },
                "priority": {
                    "description": "Sort order when listing priorities (lower first; string in JSON, e.g. `\"1\"` … `\"5\"`)",
                    "type": "string"
                },
                "isdefault": {
                    "description": "Whether this is the account default priority for new tasks (\"t\"/\"f\")",
                    "type": "string"
                },
                "active": {
                    "description": "Whether this priority is in use (\"t\") or retired (\"f\")",
                    "type": "string"
                }
            }
        },
        "taskpriority_collection": {
            "type": "object",
            "description": "Collection response for taskpriority",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "taskpriority": {
                    "type": "array",
                    "description": "Array of taskpriority objects",
                    "items": {
                        "$ref": "#/definitions/taskpriority_response"
                    }
                }
            }
        },
        "taskstatus_response": {
            "type": "object",
            "description": "Each object in the `taskstatus` array from GET /taskstatus/. The response uses the usual collection envelope (`personid`, `status`, `code`, `listcount`, `taskstatus`).",
            "properties": {
                "id": {
                    "description": "Unique identifier for the task status",
                    "type": "string",
                    "readOnly": true
                },
                "name": {
                    "description": "Status name (e.g. Open, In Progress)",
                    "type": "string"
                },
                "priority": {
                    "description": "Workflow order for this status within the account (lower values come first in the pipeline; string in JSON, e.g. `\"1\"` … `\"10\"`)",
                    "type": "string"
                },
                "frozen": {
                    "description": "Whether this status is frozen and cannot be edited or reordered in the UI (\"t\"/\"f\")",
                    "type": "string"
                },
                "active": {
                    "description": "Whether the status is in use (\"t\") or retired (\"f\")",
                    "type": "string"
                }
            }
        },
        "taskstatus_collection": {
            "type": "object",
            "description": "Collection response for taskstatus",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "taskstatus": {
                    "type": "array",
                    "description": "Array of taskstatus objects",
                    "items": {
                        "$ref": "#/definitions/taskstatus_response"
                    }
                }
            }
        },
        "time_response": {
            "type": "object",
            "description": "Each object in the `time` array from GET /time/. The response uses the usual collection envelope (`personid`, `status`, `code`, `listcount`, `time`). In JSON, `billable`, `active`, and `clientactive` are often the strings `\"t\"` / `\"f\"`; hours and rates are numeric strings.",
            "properties": {
                "id": {
                    "description": "Unique identifier for the time entry",
                    "type": "string",
                    "readOnly": true
                },
                "projectid": {
                    "description": "ID of the project the time is logged against",
                    "type": "string",
                    "x-nullable": true
                },
                "moduleid": {
                    "description": "ID of the project module",
                    "type": "string"
                },
                "taskid": {
                    "description": "ID of the task (JSON `null` for general / non-task time when applicable)",
                    "type": "string",
                    "x-nullable": true
                },
                "worktypeid": {
                    "description": "ID of the work type",
                    "type": "string"
                },
                "personid": {
                    "description": "ID of the person who logged the time",
                    "type": "string",
                    "x-notes": "Not shown to Executive users"
                },
                "date": {
                    "description": "Calendar date of the entry.",
                    "type": "string"
                },
                "time": {
                    "description": "Hours logged as a decimal string (e.g. `\"0.25\"`, `\"1\"`, `\"1.25\"`)",
                    "type": "string"
                },
                "description": {
                    "description": "Optional description (empty string when none)",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "Not shown to Executive users"
                },
                "billable": {
                    "description": "Whether the entry is billable: `\"t\"` or `\"f\"` in JSON",
                    "type": "string"
                },
                "datemodified": {
                    "description": "When this entry was last modified.",
                    "type": "string"
                },
                "dateiso": {
                    "description": "Same calendar date as `date`.",
                    "type": "string",
                    "readOnly": true
                },
                "module": {
                    "description": "Module display name",
                    "type": "string",
                    "readOnly": true
                },
                "project": {
                    "description": "Project name",
                    "type": "string",
                    "readOnly": true
                },
                "worktype": {
                    "description": "Work type name",
                    "type": "string",
                    "readOnly": true
                },
                "tasklocalid": {
                    "description": "Task local ID within the project",
                    "type": "string",
                    "readOnly": true
                },
                "task": {
                    "description": "Task title (HTML entities may be escaped in JSON)",
                    "type": "string",
                    "readOnly": true
                },
                "firstname": {
                    "description": "Logger’s first name",
                    "type": "string",
                    "readOnly": true,
                    "x-notes": "Not shown to Executive users"
                },
                "lastname": {
                    "description": "Logger’s last name",
                    "type": "string",
                    "readOnly": true,
                    "x-notes": "Not shown to Executive users"
                },
                "active": {
                    "description": "Whether the logger’s person record is active (`\"t\"` / `\"f\"` in JSON)",
                    "type": "string",
                    "readOnly": true
                },
                "person": {
                    "description": "Logger’s full name",
                    "type": "string",
                    "readOnly": true,
                    "x-notes": "Not shown to Executive users"
                },
                "clientid": {
                    "description": "Client ID (`null` when the project has no client)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "client": {
                    "description": "Client name, or a placeholder such as `No client` when none",
                    "type": "string",
                    "readOnly": true
                },
                "clientactive": {
                    "description": "Whether the client is active (`\"t\"` / `\"f\"` in JSON)",
                    "type": "string",
                    "readOnly": true
                },
                "statusid": {
                    "description": "ID of the related task’s status when a task is linked",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "hourlyrate": {
                    "description": "Effective hourly rate for this entry as a string (visibility may vary by role)",
                    "type": "string",
                    "x-notes": "Admin / Manager context"
                }
            }
        },
        "time_collection": {
            "type": "object",
            "description": "Collection response for time",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "time": {
                    "type": "array",
                    "description": "Array of time objects",
                    "items": {
                        "$ref": "#/definitions/time_response"
                    }
                }
            }
        },
        "timer_response": {
            "type": "object",
            "description": "A timer as returned by GET /timer/ (each element of the `timer` array in the usual collection envelope, or a member GET).",
            "properties": {
                "id": {
                    "description": "Unique identifier for the timer",
                    "type": "string",
                    "readOnly": true
                },
                "taskid": {
                    "description": "ID of the associated task (empty for a general timer)",
                    "type": "string",
                    "x-nullable": true
                },
                "personid": {
                    "description": "ID of the person this timer belongs to",
                    "type": "string"
                },
                "starttime": {
                    "description": "When the timer was started (empty when paused or not running)",
                    "type": "string",
                    "x-nullable": true
                },
                "time": {
                    "description": "Accumulated time logged before the current running interval (decimal hours)",
                    "type": "string",
                    "x-nullable": true,
                    "x-notes": "May be empty; often a string in JSON."
                },
                "name": {
                    "description": "Timer label or description",
                    "type": "string",
                    "x-nullable": true
                },
                "lastupdate": {
                    "description": "When the timer was last started, stopped, or updated.",
                    "type": "string",
                    "readOnly": true
                },
                "notified": {
                    "description": "Whether a notification was sent for this timer (\"t\"/\"f\")",
                    "type": "string",
                    "readOnly": true
                },
                "tasklocalid": {
                    "description": "Local ID of the linked task (empty for general timers)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "task": {
                    "description": "Title of the linked task (empty for general timers)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "timelapsed": {
                    "description": "Elapsed time on the current run in decimal hours (read-only)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true,
                    "x-notes": "May be a string in JSON."
                },
                "isrunning": {
                    "description": "Whether the timer is currently running (\"t\"/\"f\")",
                    "type": "string",
                    "readOnly": true
                },
                "totaltime": {
                    "description": "Total elapsed decimal hours for this timer (read-only)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true,
                    "x-notes": "May be a string in JSON."
                },
                "key": {
                    "description": "Client correlation key (often matches `id`)",
                    "type": "string",
                    "readOnly": true
                },
                "personlocalid": {
                    "description": "Local ID of the person in the Person app",
                    "type": "string",
                    "readOnly": true
                },
                "person": {
                    "description": "Full name of the person",
                    "type": "string",
                    "readOnly": true
                },
                "profile_image": {
                    "description": "Profile image token or blob reference (empty when none)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "datedue": {
                    "description": "Due date of the linked task (empty when not applicable)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "project": {
                    "description": "Name of the linked project (empty when not applicable)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "task_status": {
                    "description": "Status label of the linked task (empty when not applicable)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectid": {
                    "description": "ID of the linked project (empty when not applicable)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "projectactive": {
                    "description": "Whether the linked project is active (\"t\"/\"f\")",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true,
                    "x-notes": "Empty when there is no linked project."
                },
                "client": {
                    "description": "Name of the linked client (empty when not applicable)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "clientid": {
                    "description": "ID of the linked client (empty when not applicable)",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true
                },
                "clientactive": {
                    "description": "Whether the linked client is active (\"t\"/\"f\")",
                    "type": "string",
                    "readOnly": true,
                    "x-nullable": true,
                    "x-notes": "Empty when there is no linked client."
                }
            }
        },
        "timer_collection": {
            "type": "object",
            "description": "Collection response for timer",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "timer": {
                    "type": "array",
                    "description": "Array of timer objects",
                    "items": {
                        "$ref": "#/definitions/timer_response"
                    }
                }
            }
        },
        "worktype_response": {
            "type": "object",
            "description": "A global work type as returned by GET /worktype/ (or a member GET). Project-specific work types (with project-level rates) are accessible via /projectworktype/.",
            "properties": {
                "id": {
                    "description": "Unique identifier for the work type",
                    "type": "string",
                    "readOnly": true
                },
                "name": {
                    "description": "Work type name",
                    "type": "string"
                },
                "defaulthourlyrate": {
                    "description": "Default hourly rate when logging time with this work type (account currency)",
                    "type": "string",
                    "x-notes": "May appear as a string in JSON (e.g. `\"80\"`)."
                },
                "active": {
                    "description": "Whether the work type is active (\"t\") or inactive (\"f\")",
                    "type": "string"
                }
            }
        },
        "worktype_collection": {
            "type": "object",
            "description": "Collection response for worktype",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "listcount": {
                    "type": "integer",
                    "description": "Total records matching the query before limit/offset",
                    "readOnly": true
                },
                "worktype": {
                    "type": "array",
                    "description": "Array of worktype objects",
                    "items": {
                        "$ref": "#/definitions/worktype_response"
                    }
                }
            }
        },
        "error_response": {
            "type": "object",
            "description": "Error envelope for non-2xx responses (JSON). Same logical fields as XML: root element `intervals` with `status` and `code` attributes, child `error` with `code` and `message`. Numeric API error meanings: https://www.myintervals.com/api/errors — Responses are minified (whitespace stripped).",
            "properties": {
                "status": {
                    "type": "string",
                    "description": "HTTP reason phrase (e.g. \"Unauthorized\", \"Forbidden\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (same as the HTTP response status line)",
                    "readOnly": true
                },
                "error": {
                    "type": "object",
                    "readOnly": true,
                    "properties": {
                        "code": {
                            "type": "integer",
                            "description": "Intervals API error code (1–20); see /api/errors for meanings"
                        },
                        "message": {
                            "type": "string",
                            "description": "Human-readable explanation (wording may vary)"
                        }
                    }
                }
            }
        },
        "quota_response": {
            "type": "object",
            "description": "GET /quota/ JSON: envelope `personid`, `status` (\"OK\"), `code` (200), and nested object `quota`. The fields below describe only the `quota` object. There is no `listcount`; `quota` is a single object, not an array.",
            "properties": {
                "personid": {
                    "type": "integer",
                    "description": "Authenticated user's person ID",
                    "readOnly": true
                },
                "status": {
                    "type": "string",
                    "description": "Request status (\"OK\")",
                    "readOnly": true
                },
                "code": {
                    "type": "integer",
                    "description": "HTTP status code (200)",
                    "readOnly": true
                },
                "quota": {
                    "type": "object",
                    "description": "Quota counters and reset time",
                    "properties": {
                        "quota": {
                            "description": "Maximum number of API requests allowed for the quota window",
                            "type": "integer",
                            "readOnly": true,
                            "x-notes": "JSON may return a number; same key as the parent object name."
                        },
                        "used": {
                            "description": "Number of API requests already consumed in the current window",
                            "type": "string",
                            "readOnly": true,
                            "x-notes": "Often a string in JSON (e.g. `\"91\"`)."
                        },
                        "next_reset": {
                            "description": "When the quota resets (GMT)",
                            "type": "string",
                            "readOnly": true
                        },
                        "exceeded": {
                            "description": "Whether the account has exceeded its API quota for the window (\"t\"/\"f\")",
                            "type": "string",
                            "readOnly": true
                        }
                    }
                }
            }
        }
    }
}
