{"openapi":"3.1.0","info":{"title":"Apizie","version":"2.0.0","description":"One API key, one envelope, many public data sources."},"servers":[{"url":"https://apizie.tech"}],"security":[{"ApiKeyAuth":[]}],"paths":{"/v1/finance:xero-projects/get-projects":{"get":{"operationId":"finance_xero_projects_get_projects","summary":"Retrieves all projects","description":"GET /Projects","tags":["finance"],"parameters":[{"name":"Xero-Tenant-Id","in":"query","required":true,"description":"Xero identifier for Tenant","schema":{"type":"string","description":"Xero identifier for Tenant"}},{"name":"projectIds","in":"query","required":false,"description":"Search for all projects that match a comma separated list of projectIds","schema":{"type":"array","description":"Search for all projects that match a comma separated list of projectIds"}},{"name":"contactID","in":"query","required":false,"description":"Filter for projects for a specific contact","schema":{"type":"string","description":"Filter for projects for a specific contact"}},{"name":"states","in":"query","required":false,"description":"Filter for projects in a particular state (INPROGRESS or CLOSED)","schema":{"type":"string","description":"Filter for projects in a particular state (INPROGRESS or CLOSED)"}},{"name":"page","in":"query","required":false,"description":"set to 1 by default. The requested number of the page in paged response - Must be a number greater than 0.","schema":{"type":"integer","default":1,"description":"set to 1 by default. The requested number of the page in paged response - Must be a number greater than 0."}},{"name":"pageSize","in":"query","required":false,"description":"Optional, it is set to 50 by default. The number of items to return per page in a paged response - Must be a number between 1 and 500.","schema":{"type":"integer","default":50,"description":"Optional, it is set to 50 by default. The number of items to return per page in a paged response - Must be a number between 1 and 500."}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":60,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"byok"}},"/v1/finance:xero-projects/create-project":{"post":{"operationId":"finance_xero_projects_create_project","summary":"Create one or more new projects","description":"POST /Projects","tags":["finance"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["Xero-Tenant-Id","body"],"properties":{"Xero-Tenant-Id":{"type":"string","description":"Xero identifier for Tenant"},"Idempotency-Key":{"type":"string","description":"This allows you to safely retry requests without the risk of duplicate processing. 128 character max."},"body":{"type":"object","description":"JSON request body"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}},"/v1/finance:xero-projects/get-project":{"get":{"operationId":"finance_xero_projects_get_project","summary":"Retrieves a single project","description":"GET /Projects/{projectId}","tags":["finance"],"parameters":[{"name":"Xero-Tenant-Id","in":"query","required":true,"description":"Xero identifier for Tenant","schema":{"type":"string","description":"Xero identifier for Tenant"}},{"name":"projectId","in":"query","required":true,"description":"You can specify an individual project by appending the projectId to the endpoint","schema":{"type":"string","description":"You can specify an individual project by appending the projectId to the endpoint"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":60,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"byok"}},"/v1/finance:xero-projects/update-project":{"post":{"operationId":"finance_xero_projects_update_project","summary":"Updates a specific project","description":"PUT /Projects/{projectId}","tags":["finance"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["Xero-Tenant-Id","projectId","body"],"properties":{"Xero-Tenant-Id":{"type":"string","description":"Xero identifier for Tenant"},"Idempotency-Key":{"type":"string","description":"This allows you to safely retry requests without the risk of duplicate processing. 128 character max."},"projectId":{"type":"string","description":"You can specify an individual project by appending the projectId to the endpoint"},"body":{"type":"object","description":"JSON request body"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}},"/v1/finance:xero-projects/patch-project":{"post":{"operationId":"finance_xero_projects_patch_project","summary":"creates a project for the specified contact","description":"PATCH /Projects/{projectId}","tags":["finance"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["Xero-Tenant-Id","projectId","body"],"properties":{"Xero-Tenant-Id":{"type":"string","description":"Xero identifier for Tenant"},"Idempotency-Key":{"type":"string","description":"This allows you to safely retry requests without the risk of duplicate processing. 128 character max."},"projectId":{"type":"string","description":"You can specify an individual project by appending the projectId to the endpoint"},"body":{"type":"object","description":"JSON request body"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}},"/v1/finance:xero-projects/get-project-users":{"get":{"operationId":"finance_xero_projects_get_project_users","summary":"Retrieves a list of all project users","description":"GET /ProjectsUsers","tags":["finance"],"parameters":[{"name":"Xero-Tenant-Id","in":"query","required":true,"description":"Xero identifier for Tenant","schema":{"type":"string","description":"Xero identifier for Tenant"}},{"name":"page","in":"query","required":false,"description":"set to 1 by default. The requested number of the page in paged response - Must be a number greater than 0.","schema":{"type":"integer","default":1,"description":"set to 1 by default. The requested number of the page in paged response - Must be a number greater than 0."}},{"name":"pageSize","in":"query","required":false,"description":"Optional, it is set to 50 by default. The number of items to return per page in a paged response - Must be a number between 1 and 500.","schema":{"type":"integer","default":50,"description":"Optional, it is set to 50 by default. The number of items to return per page in a paged response - Must be a number between 1 and 500."}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":60,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"byok"}},"/v1/finance:xero-projects/get-tasks":{"get":{"operationId":"finance_xero_projects_get_tasks","summary":"Retrieves all project tasks","description":"GET /Projects/{projectId}/Tasks","tags":["finance"],"parameters":[{"name":"Xero-Tenant-Id","in":"query","required":true,"description":"Xero identifier for Tenant","schema":{"type":"string","description":"Xero identifier for Tenant"}},{"name":"projectId","in":"query","required":true,"description":"You can specify an individual project by appending the projectId to the endpoint","schema":{"type":"string","description":"You can specify an individual project by appending the projectId to the endpoint"}},{"name":"page","in":"query","required":false,"description":"Set to 1 by default. The requested number of the page in paged response - Must be a number greater than 0.","schema":{"type":"integer","description":"Set to 1 by default. The requested number of the page in paged response - Must be a number greater than 0."}},{"name":"pageSize","in":"query","required":false,"description":"Optional, it is set to 50 by default. The number of items to return per page in a paged response - Must be a number between 1 and 500.","schema":{"type":"integer","description":"Optional, it is set to 50 by default. The number of items to return per page in a paged response - Must be a number between 1 and 500."}},{"name":"taskIds","in":"query","required":false,"description":"Search for all tasks that match a comma separated list of taskIds, i.e. GET https://.../tasks?taskIds={taskID},{taskID}","schema":{"type":"string","description":"Search for all tasks that match a comma separated list of taskIds, i.e. GET https://.../tasks?taskIds={taskID},{taskID}"}},{"name":"chargeType","in":"query","required":false,"description":"Can be `TIME`, `FIXED` or `NON_CHARGEABLE`, defines how the task will be charged. Use `TIME` when you want to charge per hour and `FIXED`…","schema":{"type":"string","enum":["TIME","FIXED","NON_CHARGEABLE"],"description":"Can be `TIME`, `FIXED` or `NON_CHARGEABLE`, defines how the task will be charged. Use `TIME` when you want to charge per hour and `FIXED`…"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":60,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"byok"}},"/v1/finance:xero-projects/create-task":{"post":{"operationId":"finance_xero_projects_create_task","summary":"Allows you to create a task","description":"POST /Projects/{projectId}/Tasks","tags":["finance"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["Xero-Tenant-Id","projectId","body"],"properties":{"Xero-Tenant-Id":{"type":"string","description":"Xero identifier for Tenant"},"Idempotency-Key":{"type":"string","description":"This allows you to safely retry requests without the risk of duplicate processing. 128 character max."},"projectId":{"type":"string","description":"You can create a task on a specified projectId"},"body":{"type":"object","description":"JSON request body"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}},"/v1/finance:xero-projects/get-task":{"get":{"operationId":"finance_xero_projects_get_task","summary":"Retrieves a single project task","description":"GET /Projects/{projectId}/Tasks/{taskId}","tags":["finance"],"parameters":[{"name":"Xero-Tenant-Id","in":"query","required":true,"description":"Xero identifier for Tenant","schema":{"type":"string","description":"Xero identifier for Tenant"}},{"name":"projectId","in":"query","required":true,"description":"You can specify an individual project by appending the projectId to the endpoint","schema":{"type":"string","description":"You can specify an individual project by appending the projectId to the endpoint"}},{"name":"taskId","in":"query","required":true,"description":"You can specify an individual task by appending the taskId to the endpoint, i.e. GET https://.../tasks/{taskID}","schema":{"type":"string","description":"You can specify an individual task by appending the taskId to the endpoint, i.e. GET https://.../tasks/{taskID}"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":60,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"byok"}},"/v1/finance:xero-projects/update-task":{"post":{"operationId":"finance_xero_projects_update_task","summary":"Allows you to update a task","description":"PUT /Projects/{projectId}/Tasks/{taskId}","tags":["finance"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["Xero-Tenant-Id","projectId","taskId","body"],"properties":{"Xero-Tenant-Id":{"type":"string","description":"Xero identifier for Tenant"},"Idempotency-Key":{"type":"string","description":"This allows you to safely retry requests without the risk of duplicate processing. 128 character max."},"projectId":{"type":"string","description":"You can specify an individual project by appending the projectId to the endpoint"},"taskId":{"type":"string","description":"You can specify an individual task by appending the id to the endpoint"},"body":{"type":"object","description":"JSON request body"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}},"/v1/finance:xero-projects/delete-task":{"post":{"operationId":"finance_xero_projects_delete_task","summary":"Allows you to delete a task","description":"DELETE /Projects/{projectId}/Tasks/{taskId}","tags":["finance"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["Xero-Tenant-Id","projectId","taskId"],"properties":{"Xero-Tenant-Id":{"type":"string","description":"Xero identifier for Tenant"},"projectId":{"type":"string","description":"You can specify an individual project by appending the projectId to the endpoint"},"taskId":{"type":"string","description":"You can specify an individual task by appending the id to the endpoint"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}},"/v1/finance:xero-projects/get-time-entries":{"get":{"operationId":"finance_xero_projects_get_time_entries","summary":"Retrieves all time entries associated with a specific project","description":"GET /Projects/{projectId}/Time","tags":["finance"],"parameters":[{"name":"Xero-Tenant-Id","in":"query","required":true,"description":"Xero identifier for Tenant","schema":{"type":"string","description":"Xero identifier for Tenant"}},{"name":"projectId","in":"query","required":true,"description":"Identifier of the project, that the task (which the time entry is logged against) belongs to.","schema":{"type":"string","description":"Identifier of the project, that the task (which the time entry is logged against) belongs to."}},{"name":"userId","in":"query","required":false,"description":"The xero user identifier of the person who logged time.","schema":{"type":"string","description":"The xero user identifier of the person who logged time."}},{"name":"taskId","in":"query","required":false,"description":"Identifier of the task that time entry is logged against.","schema":{"type":"string","description":"Identifier of the task that time entry is logged against."}},{"name":"invoiceId","in":"query","required":false,"description":"Finds all time entries for this invoice.","schema":{"type":"string","description":"Finds all time entries for this invoice."}},{"name":"contactId","in":"query","required":false,"description":"Finds all time entries for this contact identifier.","schema":{"type":"string","description":"Finds all time entries for this contact identifier."}},{"name":"page","in":"query","required":false,"description":"Set to 1 by default. The requested number of the page in paged response - Must be a number greater than 0.","schema":{"type":"integer","description":"Set to 1 by default. The requested number of the page in paged response - Must be a number greater than 0."}},{"name":"pageSize","in":"query","required":false,"description":"Optional, it is set to 50 by default. The number of items to return per page in a paged response - Must be a number between 1 and 500.","schema":{"type":"integer","description":"Optional, it is set to 50 by default. The number of items to return per page in a paged response - Must be a number between 1 and 500."}},{"name":"states","in":"query","required":false,"description":"Comma-separated list of states to find. Will find all time entries that are in the status of whatever is specified.","schema":{"type":"array","description":"Comma-separated list of states to find. Will find all time entries that are in the status of whatever is specified."}},{"name":"isChargeable","in":"query","required":false,"description":"Finds all time entries which relate to tasks with the charge type `TIME` or `FIXED`.","schema":{"type":"boolean","description":"Finds all time entries which relate to tasks with the charge type `TIME` or `FIXED`."}},{"name":"dateAfterUtc","in":"query","required":false,"description":"ISO 8601 UTC date. Finds all time entries on or after this date filtered on the `dateUtc` field.","schema":{"type":"string","description":"ISO 8601 UTC date. Finds all time entries on or after this date filtered on the `dateUtc` field."}},{"name":"dateBeforeUtc","in":"query","required":false,"description":"ISO 8601 UTC date. Finds all time entries on or before this date filtered on the `dateUtc` field.","schema":{"type":"string","description":"ISO 8601 UTC date. Finds all time entries on or before this date filtered on the `dateUtc` field."}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":60,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"byok"}},"/v1/finance:xero-projects/create-time-entry":{"post":{"operationId":"finance_xero_projects_create_time_entry","summary":"Creates a time entry for a specific project","description":"POST /Projects/{projectId}/Time","tags":["finance"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["Xero-Tenant-Id","projectId","body"],"properties":{"Xero-Tenant-Id":{"type":"string","description":"Xero identifier for Tenant"},"Idempotency-Key":{"type":"string","description":"This allows you to safely retry requests without the risk of duplicate processing. 128 character max."},"projectId":{"type":"string","description":"You can specify an individual project by appending the projectId to the endpoint"},"body":{"type":"object","description":"JSON request body"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}},"/v1/finance:xero-projects/get-time-entry":{"get":{"operationId":"finance_xero_projects_get_time_entry","summary":"Retrieves a single time entry for a specific project","description":"GET /Projects/{projectId}/Time/{timeEntryId}","tags":["finance"],"parameters":[{"name":"Xero-Tenant-Id","in":"query","required":true,"description":"Xero identifier for Tenant","schema":{"type":"string","description":"Xero identifier for Tenant"}},{"name":"projectId","in":"query","required":true,"description":"You can specify an individual project by appending the projectId to the endpoint","schema":{"type":"string","description":"You can specify an individual project by appending the projectId to the endpoint"}},{"name":"timeEntryId","in":"query","required":true,"description":"You can specify an individual time entry by appending the id to the endpoint","schema":{"type":"string","description":"You can specify an individual time entry by appending the id to the endpoint"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":60,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"byok"}},"/v1/finance:xero-projects/update-time-entry":{"post":{"operationId":"finance_xero_projects_update_time_entry","summary":"Updates a time entry for a specific project","description":"PUT /Projects/{projectId}/Time/{timeEntryId}","tags":["finance"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["Xero-Tenant-Id","projectId","timeEntryId","body"],"properties":{"Xero-Tenant-Id":{"type":"string","description":"Xero identifier for Tenant"},"Idempotency-Key":{"type":"string","description":"This allows you to safely retry requests without the risk of duplicate processing. 128 character max."},"projectId":{"type":"string","description":"You can specify an individual project by appending the projectId to the endpoint"},"timeEntryId":{"type":"string","description":"You can specify an individual time entry by appending the id to the endpoint"},"body":{"type":"object","description":"JSON request body"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}},"/v1/finance:xero-projects/delete-time-entry":{"post":{"operationId":"finance_xero_projects_delete_time_entry","summary":"Deletes a time entry for a specific project","description":"DELETE /Projects/{projectId}/Time/{timeEntryId}","tags":["finance"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["Xero-Tenant-Id","projectId","timeEntryId"],"properties":{"Xero-Tenant-Id":{"type":"string","description":"Xero identifier for Tenant"},"projectId":{"type":"string","description":"You can specify an individual project by appending the projectId to the endpoint"},"timeEntryId":{"type":"string","description":"You can specify an individual task by appending the id to the endpoint"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"RunEnvelope":{"type":"object","required":["project","data","timestamp"],"properties":{"project":{"type":"string","example":"dev-tools:hash"},"data":{},"timestamp":{"type":"string","format":"date-time"}}},"ErrorEnvelope":{"type":"object","properties":{"content":{},"message":{"type":"string"},"errors":{"type":"array","items":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}},"responses":{"Error":{"description":"Invalid key, plan gate, rate limit or upstream failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}}