{"openapi":"3.1.0","info":{"title":"Runn API","version":"1.0.0","description":"<p>See <a target=\"_blank\" href=\"https://help.runn.io/en/articles/8579592-api-v1-beta\" title=\"Runn API full documentation\">the full documentation and guide</a> to using the Runn API.</p><p>The domain for your API endpoint can be found in <strong>Accounts > Settings > API</strong> in your Runn application</p>"},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"Role":{"type":"object","properties":{"id":{"minimum":0,"type":"integer"},"name":{"type":"string","nullable":true},"isArchived":{"type":"boolean"},"defaultHourCost":{"type":"number"},"standardRate":{"type":"number"},"references":{"type":"array","items":{"$ref":"#/components/schemas/Reference"}},"personIds":{"type":"array","items":{"type":"integer"}},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","name","isArchived","defaultHourCost","standardRate","references","personIds","createdAt","updatedAt"]},"SortOrder":{"type":"string","enum":["asc","desc"],"description":"Sort order: asc or desc","default":"asc"},"ClientInput":{"type":"object","properties":{"name":{"minLength":1,"type":"string"},"website":{"format":"url","type":"string"},"references":{"type":"array","items":{"$ref":"#/components/schemas/Reference"}}},"required":["name"]},"Client":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"website":{"type":"string","nullable":true},"isArchived":{"type":"boolean"},"references":{"type":"array","items":{"$ref":"#/components/schemas/Reference"}},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","name","website","isArchived","references","createdAt","updatedAt"]},"ActualInput":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The date this actual is for. Format: YYYY-MM-DD"},"billableMinutes":{"description":"The number of minutes that are billable. Either this or nonbillableMinutes must be set","default":0,"minimum":0,"type":"number"},"nonbillableMinutes":{"description":"The number of minutes that are non billable. Either this or billableMinutes must be set","default":0,"minimum":0,"type":"number"},"billableNote":{"description":"A note about the billable minutes","type":"string"},"nonbillableNote":{"description":"A note about the nonbillable minutes","type":"string"},"phaseId":{"description":"The phase this actual is for, if any","type":"number","nullable":true},"personId":{"description":"The person this actual is for","type":"number"},"projectId":{"description":"The project this actual is for","type":"number"},"roleId":{"description":"The role the person was in when for this actual","type":"number"},"workstreamId":{"description":"The workstream the actual belongs to","type":"number","nullable":true}},"required":["date","billableMinutes","nonbillableMinutes","personId","projectId","roleId"]},"Actual":{"type":"object","properties":{"id":{"description":"The unique identifier for the actual","type":"integer"},"date":{"type":"string","format":"date","description":"The date the actual took place. Format: YYYY-MM-DD"},"billableMinutes":{"description":"The number of billable minutes for the actual","type":"number"},"nonbillableMinutes":{"description":"The number of nonbillable minutes for the actual","type":"number"},"billableNote":{"description":"A note or comment related to the billable minutes, if any.","type":"string","nullable":true},"nonbillableNote":{"description":"A note or comment related to the nonbillable minutes, if any.","type":"string","nullable":true},"phaseId":{"description":"The ID referencing the phase of the actual, if applicable.","type":"number","nullable":true},"personId":{"description":"The ID referencing the person associated with the actual.","type":"number"},"projectId":{"description":"The ID referencing the project associated with the actual.","type":"number"},"roleId":{"description":"The ID referencing the role associated with the actual.","type":"number"},"workstreamId":{"description":"The ID referencing the workstream of the actual, if applicable.","type":"number","nullable":true},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","date","billableMinutes","nonbillableMinutes","billableNote","nonbillableNote","phaseId","personId","projectId","roleId","workstreamId","createdAt","updatedAt"]},"ActualTimeEntry":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The date the actual is for. Format: YYYY-MM-DD"},"billableMinutes":{"description":"The number of billable minutes to either add to a matching actual or create a new actual with","default":0,"minimum":0,"type":"number"},"billableNote":{"description":"A note about the billable minutes","type":"string"},"nonbillableNote":{"description":"A note about the nonbillable minutes","type":"string"},"nonbillableMinutes":{"description":"The number of nonbillable minutes to either add to a matching actual or create a new actual with","default":0,"minimum":0,"type":"number"},"phaseId":{"description":"The optional phase the actual is for. Leaving this undefined will not update the phase id on any existing actual. Providing `null` will clear it. Providing a value will update the phase id","type":"number","nullable":true},"personId":{"description":"The person this time entry is for","type":"number"},"projectId":{"description":"The project this time entry is for","type":"number"},"roleId":{"description":"The role the person was in for the actual","type":"number"},"workstreamId":{"description":"The optional workstream the actual is for. Leaving this undefined will not update the workstream id on any existing actual. Providing `null` will clear it. Providing a value will update the workstream id","type":"number","nullable":true}},"required":["date","billableMinutes","nonbillableMinutes","personId","projectId","roleId"]},"Assignment":{"type":"object","properties":{"id":{"description":"The unique identifier for the assignment.","type":"integer"},"personId":{"description":"id referencing the person associated with the assignment.","type":"integer"},"startDate":{"type":"string","format":"date","description":"The start date of the assignment. Format: YYYY-MM-DD"},"endDate":{"type":"string","format":"date","description":"The end date of the assignment. Format: YYYY-MM-DD"},"projectId":{"description":"The ID referencing the project to which the assignment belongs.","type":"integer"},"minutesPerDay":{"description":"The number of minutes allocated to the assignment per day.","type":"integer"},"roleId":{"description":"The ID referencing the role associated with the assignment.","type":"integer"},"isActive":{"description":"A flag indicating whether the assignment is currently active. (Deprecated. Assignments are always hard delete so are now always active).","deprecated":true,"type":"boolean"},"note":{"type":"string","nullable":true},"isBillable":{"description":"A flag indicating whether the assignment is billable.","type":"boolean"},"phaseId":{"type":"integer","nullable":true},"isNonWorkingDay":{"description":"A flag indicating if the assignment falls on a non-working day.","type":"boolean"},"isTemplate":{"description":"A flag indicating if the assignment is a template.","type":"boolean"},"isPlaceholder":{"description":"A flag indicating if the assignment's person is a placeholder.","type":"boolean"},"workstreamId":{"type":"number","nullable":true},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","personId","startDate","endDate","projectId","minutesPerDay","roleId","isActive","note","isBillable","phaseId","isNonWorkingDay","isTemplate","isPlaceholder","workstreamId","createdAt","updatedAt"]},"BadRequest":{"type":"object","properties":{"error":{"type":"string","enum":["Bad Request"]},"message":{"type":"string"},"statusCode":{"type":"number","enum":[400]}},"required":["error","message","statusCode"]},"CollectionPerson":{"type":"object","properties":{"id":{"type":"number"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string","nullable":true},"isArchived":{"type":"boolean"},"teamId":{"type":"integer","nullable":true},"references":{"type":"array","items":{"$ref":"#/components/schemas/Reference"}},"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}},"holidaysGroupId":{"type":"number","nullable":true},"managers":{"type":"array","items":{"type":"object","properties":{"id":{"description":"The ID referencing the user managing the person.","type":"integer"}},"required":["id"]}},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","firstName","lastName","email","isArchived","teamId","references","tags","holidaysGroupId","managers","createdAt","updatedAt"]},"Competency":{"type":"object","properties":{"level":{"anyOf":[{"type":"number","enum":[1],"nullable":true},{"type":"number","enum":[2],"nullable":true},{"type":"number","enum":[3],"nullable":true},{"type":"number","enum":[4],"nullable":true}]},"skillId":{"type":"integer"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["skillId","createdAt","updatedAt"]},"Conflict":{"type":"object","properties":{"error":{"type":"string","enum":["Conflict"]},"message":{"type":"string"},"statusCode":{"type":"number","enum":[409]}},"required":["error","message","statusCode"]},"ContractInput":{"type":"object","properties":{"roleId":{"type":"integer"},"startDate":{"type":"string","format":"date","description":"Defaults to today. Format: YYYY-MM-DD"},"endDate":{"type":"string","format":"date","description":"Format: YYYY-MM-DD"},"employmentType":{"type":"string","enum":["employee","contractor"],"description":"The type of employment for the contract.","default":"employee"},"costPerHour":{"description":"Defaults to the role's cost per hour","type":"number"},"minutesPerDay":{"minimum":1,"description":"Defaults to the account's default minutes per day","type":"number"},"rosteredDays":{"description":"Every value must be the same as minutesPerDay or 0.","type":"object","properties":{"monday":{"type":"number"},"tuesday":{"type":"number"},"wednesday":{"type":"number"},"thursday":{"type":"number"},"friday":{"type":"number"}},"required":["monday","tuesday","wednesday","thursday","friday"]},"jobTitle":{"description":"This feature is currently hidden, and can not be seen in the app","type":"string"}},"required":["roleId"]},"Contract":{"type":"object","properties":{"id":{"type":"integer"},"costPerHour":{"type":"number","nullable":true},"employmentType":{"type":"string"},"minutesPerDay":{"type":"number","nullable":true},"rosteredDays":{"$ref":"#/components/schemas/RosteredDays"},"startDate":{"type":"string","format":"date","description":"Format: YYYY-MM-DD"},"endDate":{"type":"string","format":"date","description":"Format: YYYY-MM-DD","nullable":true},"roleId":{"type":"integer"},"personId":{"type":"integer"},"jobTitle":{"description":"This feature is currently hidden, and can not be seen in the app","type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","costPerHour","employmentType","minutesPerDay","rosteredDays","startDate","endDate","roleId","personId","jobTitle","createdAt","updatedAt"]},"CustomFieldCheckbox":{"type":"object","properties":{"id":{"description":"Unique identifier for the custom field checkbox","type":"integer"},"name":{"description":"Display name for the custom field checkbox","type":"string"},"description":{"type":"string","nullable":true},"model":{"type":"string","enum":["PERSON","PROJECT"],"description":"The field type of the custom field"},"required":{"description":"Whether or not the checkbox is a required field","type":"boolean"},"showInPlanner":{"description":"Whether or not the custom field checkbox is shown in the project or person planner in the app UI","type":"boolean"},"sortOrder":{"description":"The sort order of the custom field checkbox","type":"integer"},"filterableInPlanner":{"description":"Whether or not the custom field checkbox is filterable in the project or person planner in the app UI","type":"boolean"}},"required":["id","name","description","model","required","showInPlanner","sortOrder","filterableInPlanner"]},"CustomFieldDate":{"type":"object","properties":{"id":{"description":"Unique identifier for the custom field date","type":"integer"},"name":{"description":"Display name for the custom field date","type":"string"},"description":{"description":"Description for the custom field date","type":"string","nullable":true},"model":{"type":"string","enum":["PERSON","PROJECT"],"description":"The field type of the custom field"},"required":{"description":"Whether or not the date is a required field","type":"boolean"},"showInPlanner":{"description":"Whether or not the custom field date is shown in the project or person planner in the app UI","type":"boolean"},"sortOrder":{"description":"The sort order of the custom field date","type":"integer"},"filterableInPlanner":{"description":"Whether or not the custom field select is filterable in the project or person planner in the app UI","type":"boolean"}},"required":["id","name","description","model","required","showInPlanner","sortOrder","filterableInPlanner"]},"CustomFieldSelect":{"type":"object","properties":{"id":{"description":"Unique identifier for the custom field select","type":"integer"},"name":{"description":"Display name for the custom field select","type":"string"},"description":{"type":"string","nullable":true},"model":{"type":"string","enum":["PERSON","PROJECT"],"description":"The field type of the custom field"},"options":{"description":"All selectable options","type":"array","items":{"type":"object","properties":{"id":{"description":"Unique identifier for the select option","type":"integer"},"name":{"description":"Display name for the select option","type":"string"}},"required":["id","name"]}},"singleSelect":{"description":"Whether this select is a single or multi select","type":"boolean"},"required":{"description":"Whether or not the select is a required field","type":"boolean"},"showInPlanner":{"description":"Whether or not the custom field select is shown in the project or person planner in the app UI","type":"boolean"},"sortOrder":{"description":"The sort order of the custom field select","type":"integer"},"filterableInPlanner":{"description":"Whether or not the custom field select is filterable in the project or person planner in the app UI","type":"boolean"}},"required":["id","name","description","model","options","singleSelect","required","showInPlanner","sortOrder","filterableInPlanner"]},"CustomFieldText":{"type":"object","properties":{"id":{"description":"Unique identifier for the custom field text","type":"integer"},"name":{"description":"Display name for the custom field text","type":"string"},"description":{"type":"string","nullable":true},"model":{"type":"string","enum":["PERSON","PROJECT"],"description":"The field type of the custom field"},"required":{"description":"Whether or not the text is a required field","type":"boolean"},"showInPlanner":{"description":"Whether or not the custom field text is shown in the project or person planner in the app UI","type":"boolean"},"sortOrder":{"description":"The sort order of the custom field text","type":"integer"},"filterableInPlanner":{"description":"Whether or not the custom field text is filterable in the project or person planner in the app UI","type":"boolean"}},"required":["id","name","description","model","required","showInPlanner","sortOrder","filterableInPlanner"]},"Milestone":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string","nullable":true},"icon":{"type":"string","nullable":true},"note":{"type":"string","nullable":true},"date":{"type":"string","format":"date","description":"Format: YYYY-MM-DD"},"projectId":{"type":"number"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","title","icon","date","projectId","createdAt","updatedAt"]},"ModifiedAfter":{"description":"If provided, will only return objects modified after this timestamp. Format: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ.","anyOf":[{"format":"date","type":"string"},{"format":"date-time","type":"string"}]},"NotFound":{"type":"object","properties":{"error":{"type":"string","enum":["Not Found"]},"message":{"type":"string"},"statusCode":{"type":"number","enum":[404]}},"required":["error","message","statusCode"]},"PaginatedQuery":{"type":"object","properties":{"cursor":{"description":"Cursor for paginated requests","type":"string"},"limit":{"description":"The number of results per page","default":50,"minimum":1,"maximum":200,"type":"integer"}}},"PersonRequest":{"type":"object","properties":{"id":{"type":"number"},"personId":{"description":"The ID of the placeholder associated with this request","type":"number"},"projectId":{"type":"number"},"status":{"type":"string","enum":["NEED_TO_HIRE","REQUESTED","PENDING"]},"requesterId":{"description":"The ID of the user who requested this person","type":"number","nullable":true},"updaterId":{"description":"The ID of the user who last updated this request","type":"number","nullable":true},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","personId","projectId","status","requesterId","updaterId","createdAt","updatedAt"]},"Person":{"type":"object","properties":{"id":{"type":"integer"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string","nullable":true},"isArchived":{"type":"boolean"},"references":{"type":"array","items":{"$ref":"#/components/schemas/Reference"}},"notes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"note":{"type":"string"},"createdBy":{"type":"string"}},"required":["id","note","createdBy"]}},"teamId":{"type":"integer","nullable":true},"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}},"skills":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"level":{"type":"integer","nullable":true}},"required":["id","level"]}},"holidaysGroupId":{"type":"integer","nullable":true},"customFields":{"type":"object","properties":{"select":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"values":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"id":{"type":"integer"}},"required":["name","id"]}}},"required":["id","name","values"]}},"text":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"value":{"type":"string"}},"required":["id","name","value"]}},"checkbox":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"value":{"type":"boolean"}},"required":["id","name","value"]}},"date":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"value":{"type":"string","format":"date","description":"Format: YYYY-MM-DD","nullable":true}},"required":["id","name","value"]}}},"required":["select","text","checkbox","date"]},"managers":{"type":"array","items":{"type":"object","properties":{"id":{"description":"The ID referencing the user managing the person.","type":"integer"}},"required":["id"]}},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","firstName","lastName","email","isArchived","references","notes","teamId","tags","skills","holidaysGroupId","customFields","managers","createdAt","updatedAt"]},"PersonCompetency":{"type":"object","allOf":[{"type":"object","properties":{"personId":{"type":"integer"}},"required":["personId"]},{"type":"object","properties":{"level":{"anyOf":[{"type":"number","enum":[1],"nullable":true},{"type":"number","enum":[2],"nullable":true},{"type":"number","enum":[3],"nullable":true},{"type":"number","enum":[4],"nullable":true}]},"skillId":{"type":"integer"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["skillId","createdAt","updatedAt"]}]},"PersonNote":{"type":"object","properties":{"id":{"type":"integer"},"createdBy":{"type":"string","nullable":true},"createdByEmail":{"type":"string","nullable":true},"note":{"type":"string"},"personId":{"type":"integer"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","createdBy","createdByEmail","note","personId","createdAt","updatedAt"]},"ProjectPhase":{"title":"Project Phase","description":"Project phases divide your project into smaller sections so you can group similar tasks and assignments together.","type":"object","properties":{"id":{"description":"Unique identifier for the phase","type":"number"},"name":{"description":"The name of the project phase","type":"string"},"color":{"description":"Color of the project phase (hex code)","type":"string"},"startDate":{"type":"string","format":"date","description":"Start date of the project phase in ISO 8601 format"},"endDate":{"type":"string","format":"date","description":"End date of the phase in ISO 8601 format"},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"projectId":{"description":"The project the phase is associated with.","type":"number"},"budget":{"description":"The budget for the phase. This is returned when the project's budget method is set to 'PHASE' or 'PHASE_AND_ROLE', and is null when it is set to 'ROLE'. Note: for 'PHASE_AND_ROLE' the budget is derived from role estimates and rates held on related records, so it can change without updating the phase's `updatedAt` and is therefore not picked up by the `modifiedAfter` filter.","type":"number","nullable":true}},"required":["id","name","color","startDate","endDate","updatedAt","createdAt","projectId","budget"]},"Placeholder":{"type":"object","properties":{"id":{"type":"integer"},"firstName":{"type":"string"},"lastName":{"type":"string"},"isArchived":{"type":"boolean"},"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}},"references":{"type":"array","items":{"$ref":"#/components/schemas/Reference"}},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","firstName","lastName","isArchived","tags","references","createdAt","updatedAt"]},"PlaceholderInput":{"type":"object","properties":{"id":{"type":"number"},"firstName":{"type":"string"},"lastName":{"type":"string"},"costPerHour":{"type":"number"},"roleId":{"type":"number"},"teamId":{"type":"number","nullable":true},"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}}},"required":["id","firstName","lastName","costPerHour","roleId","teamId","tags"]},"ProjectBudgetRole":{"description":"Project budget role","type":"object","properties":{"projectId":{"type":"integer"},"roleId":{"type":"integer"},"estimatedMinutes":{"description":"Estimated Minutes: The total number of minutes budgeted for a role on a project.","type":"integer"},"estimatedBudget":{"description":"The budget in local currency. This value is calculated live and rounded using ROUND_HALF_UP. estimatedBudget = estimatedMinutes / 60 * projectRateMinute","type":"integer"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["projectId","roleId","estimatedMinutes","estimatedBudget","createdAt","updatedAt"]},"ProjectNote":{"type":"object","properties":{"id":{"type":"integer"},"createdBy":{"type":"string","nullable":true},"createdByEmail":{"type":"string","nullable":true},"note":{"type":"string"},"projectId":{"type":"integer"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","createdBy","createdByEmail","note","projectId","createdAt","updatedAt"]},"ProjectOtherExpense":{"title":"Project Other Expense","description":"A non-labour expense for a project.","type":"object","properties":{"id":{"description":"Unique identifier for the other expense.","readOnly":true,"type":"integer"},"cost":{"minimum":0,"description":"How much the item costs for your business (in your account's currency).","type":"number"},"charge":{"minimum":0,"description":"How much you are charging your clients for the item (in your account's currency).","type":"number"},"name":{"minLength":1,"description":"The item or service that was purchased.","type":"string"},"date":{"type":"string","format":"date","description":"The date the expense was incurred."},"updatedAt":{"type":"string","format":"date-time","description":"The date the expense was last updated."},"createdAt":{"type":"string","format":"date-time","description":"The date the expense was created."},"projectId":{"description":"The project the expense is associated with.","type":"integer"}},"required":["id","cost","charge","name","date","updatedAt","createdAt","projectId"]},"ProjectRate":{"type":"object","properties":{"id":{"type":"integer"},"projectId":{"type":"integer"},"roleId":{"type":"integer"},"rate":{"type":"number"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","projectId","roleId","rate","createdAt","updatedAt"]},"Project":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"isTemplate":{"type":"boolean"},"isArchived":{"type":"boolean"},"isConfirmed":{"type":"boolean"},"pricingModel":{"type":"string","enum":["fp","tm","nb"]},"rateType":{"type":"string","enum":["hours","days"]},"budgetMethod":{"type":"string","enum":["ROLE","PHASE","PHASE_AND_ROLE"],"description":"How the project budget is structured. One of ROLE, PHASE, or PHASE_AND_ROLE."},"teamId":{"type":"integer","nullable":true},"budget":{"type":"number","nullable":true},"expensesBudget":{"type":"number","nullable":true},"references":{"type":"array","items":{"$ref":"#/components/schemas/Reference"}},"clientId":{"type":"integer"},"rateCardId":{"type":"integer"},"customFields":{"type":"object","properties":{"select":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"values":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"id":{"type":"integer"}},"required":["name","id"]}}},"required":["id","name","values"]}},"text":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"value":{"type":"string"}},"required":["id","name","value"]}},"checkbox":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"value":{"type":"boolean"}},"required":["id","name","value"]}},"date":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"value":{"type":"string","format":"date","description":"Format: YYYY-MM-DD","nullable":true}},"required":["id","name","value"]}}},"required":["select","text","checkbox","date"]},"managerIds":{"type":"array","items":{"type":"number"}},"tags":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","name","isTemplate","isArchived","isConfirmed","pricingModel","rateType","budgetMethod","teamId","budget","expensesBudget","references","clientId","rateCardId","customFields","managerIds","tags","createdAt","updatedAt"]},"Reference":{"type":"object","properties":{"referenceName":{"minLength":1,"type":"string"},"externalId":{"minLength":1,"type":"string"}},"required":["referenceName","externalId"]},"RosteredDays":{"description":"Shows minutes per day working.","type":"object","properties":{"monday":{"type":"number"},"tuesday":{"type":"number"},"wednesday":{"type":"number"},"thursday":{"type":"number"},"friday":{"type":"number"}},"required":["monday","tuesday","wednesday","thursday","friday"]},"Tag":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]},"Team":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","name","createdAt","updatedAt"]},"TimeOffHolidayInput":{"type":"object","properties":{"personId":{"description":"The unique identifier for the person.","type":"integer"},"note":{"description":"A note or comment related to the time-off, if any.","type":"string"},"holidayId":{"description":"The unique identifier for the holiday.","type":"integer"}},"required":["personId","holidayId"]},"TimeOffLeaveInput":{"type":"object","properties":{"personId":{"description":"The unique identifier for the person.","type":"integer"},"startDate":{"type":"string","format":"date","description":"The start date of the time-off. Format: YYYY-MM-DD"},"endDate":{"type":"string","format":"date","description":"The end date of the time-off. Format: YYYY-MM-DD"},"note":{"description":"A note or comment related to the time-off, if any.","type":"string"},"minutesPerDay":{"description":"The minutes per day taken as time off. Omit this property if time-off is for full day(s) as per person's contract.","minimum":15,"type":"integer","nullable":true}},"required":["personId","startDate","endDate"]},"TimeOff":{"type":"object","properties":{"id":{"description":"The unique identifier for the assignment.","type":"integer"},"personId":{"description":"The identifier referencing the person associated with the time-off.","type":"integer"},"startDate":{"type":"string","format":"date","description":"The start date of the time-off. Format: YYYY-MM-DD"},"endDate":{"type":"string","format":"date","description":"The end date of the time-off. Format: YYYY-MM-DD"},"note":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."},"minutesPerDay":{"type":"integer","nullable":true}},"required":["id","personId","startDate","endDate","note","createdAt","updatedAt","minutesPerDay"]},"Unauthorized":{"type":"object","properties":{"error":{"type":"string","enum":["Unauthorized"]},"message":{"type":"string","enum":["Unauthorized"]},"statusCode":{"type":"number","enum":[401]}},"required":["error","message","statusCode"]},"UnprocessableEntity":{"type":"object","properties":{"error":{"type":"string","enum":["Unprocessable Entity"]},"message":{"type":"string"},"statusCode":{"type":"number","enum":[422]}},"required":["error","message","statusCode"]},"Workstream":{"type":"object","properties":{"id":{"minimum":0,"type":"integer"},"name":{"type":"string"},"archived":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","name","archived","createdAt","updatedAt"]},"CustomTextFieldCollection":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["text"]},"customTextId":{"type":"integer"},"value":{"type":"string","nullable":true}},"required":["name","type","customTextId","value"]},"CustomSelectFieldCollection":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["select"]},"customSelectId":{"type":"integer"},"value":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]}}},"required":["name","type","customSelectId","value"]},"CustomCheckboxFieldCollection":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["checkbox"]},"customCheckboxId":{"type":"integer"},"value":{"type":"boolean"}},"required":["name","type","customCheckboxId","value"]},"CustomDateFieldCollection":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["date"]},"customDateId":{"type":"integer"},"value":{"type":"string","format":"date","description":"Format: YYYY-MM-DD","nullable":true}},"required":["name","type","customDateId","value"]},"PersonCustomField":{"type":"object","properties":{"personId":{"type":"integer"},"customFields":{"type":"array","items":{"discriminator":{"propertyName":"type","mapping":{"text":"#/components/schemas/CustomTextFieldCollection","date":"#/components/schemas/CustomDateFieldCollection","checkbox":"#/components/schemas/CustomCheckboxFieldCollection","select":"#/components/schemas/CustomSelectFieldCollection"}},"anyOf":[{"$ref":"#/components/schemas/CustomTextFieldCollection"},{"$ref":"#/components/schemas/CustomDateFieldCollection"},{"$ref":"#/components/schemas/CustomCheckboxFieldCollection"},{"$ref":"#/components/schemas/CustomSelectFieldCollection"}]}},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["personId","customFields","createdAt","updatedAt"]},"ProjectCustomField":{"type":"object","properties":{"projectId":{"type":"integer"},"customFields":{"type":"array","items":{"discriminator":{"propertyName":"type","mapping":{"text":"#/components/schemas/CustomTextFieldCollection","date":"#/components/schemas/CustomDateFieldCollection","checkbox":"#/components/schemas/CustomCheckboxFieldCollection","select":"#/components/schemas/CustomSelectFieldCollection"}},"anyOf":[{"$ref":"#/components/schemas/CustomTextFieldCollection"},{"$ref":"#/components/schemas/CustomDateFieldCollection"},{"$ref":"#/components/schemas/CustomCheckboxFieldCollection"},{"$ref":"#/components/schemas/CustomSelectFieldCollection"}]}},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["projectId","customFields","createdAt","updatedAt"]},"ActorRunnSupport":{"title":"Runn Support Actor","description":"The Runn Support actor represents an action performed by the Runn supprt team. If you have questions about actions performed by the Runn support team, please contact the Runn team.","type":"object","properties":{"type":{"type":"string","enum":["runn_support"]}},"required":["type"]},"ActorUser":{"title":"User Actor","description":"The user actor represents a user. This usually means a user who interacted with the web application.","type":"object","properties":{"type":{"type":"string","enum":["user"]},"userId":{"type":"number"},"userEmail":{"type":"string"}},"required":["type","userId"]},"ActorApi":{"title":"API Actor","description":"The api actor represents an action performed by an api key.","type":"object","properties":{"type":{"type":"string","enum":["api"]},"tokenId":{"description":"The id of the api key.","type":"number"},"tokenName":{"description":"The name of the api key.","type":"string"},"apiVersion":{"description":"The api version.","type":"string"}},"required":["type","tokenId","tokenName","apiVersion"]},"ActorCsv":{"title":"CSV Actor","description":"The csv actor represents an action performed by a csv file upload.","type":"object","properties":{"type":{"type":"string","enum":["csv"]},"userId":{"description":"The id of the user who uploaded the csv file.","type":"number"},"userEmail":{"description":"The email of the user who uploaded the csv file.","type":"string"}},"required":["type"]},"ActorIntegration":{"title":"Integration Actor","description":"The integration actor represents an action performed by an integration with a third-party service.","type":"object","properties":{"type":{"type":"string","enum":["integration"]},"id":{"description":"The id of the integration.","type":"number"},"name":{"description":"The name of the integration.","type":"string"}},"required":["type","id","name"]},"ActorSystem":{"title":"System Actor","description":"The system actor represents an action performed by the system, such as a scheduled task, migration, or other automated process. Some actions may not have a specific actor and will default to the system actor.","type":"object","properties":{"type":{"type":"string","enum":["system"]}},"required":["type"]},"Actor":{"discriminator":{"propertyName":"type","mapping":{"runn_support":"#/components/schemas/ActorRunnSupport","user":"#/components/schemas/ActorUser","api":"#/components/schemas/ActorApi","csv":"#/components/schemas/ActorCsv","integration":"#/components/schemas/ActorIntegration","system":"#/components/schemas/ActorSystem"}},"title":"Actor","description":"An actor represents an entity that can perform actions such as a user, api key, or system process. Each actor type has a unique set of properties. The `type` property is used to determine the actor type.","anyOf":[{"$ref":"#/components/schemas/ActorRunnSupport"},{"$ref":"#/components/schemas/ActorUser"},{"$ref":"#/components/schemas/ActorApi"},{"$ref":"#/components/schemas/ActorCsv"},{"$ref":"#/components/schemas/ActorIntegration"},{"$ref":"#/components/schemas/ActorSystem"}]},"Event.Subresource.Person":{"title":"Person Event Subresource","description":"A subset of details about the person used on an event","type":"object","properties":{"id":{"description":"The unique identifier of the person","type":"integer"},"firstName":{"description":"The first name of the person","type":"string"},"lastName":{"description":"The last name of the person","type":"string"},"email":{"description":"The email address of the person","type":"string","nullable":true,"example":"user@example.com"},"isPlaceholder":{"description":"A flag indicating if the person is a placeholder","type":"boolean"}},"required":["id","firstName","lastName","email","isPlaceholder"]},"Event.Subresource.Project":{"title":"Project Event Subresource","description":"A subset of details about the project used on an event","type":"object","properties":{"id":{"description":"The unique identifier of the project","type":"integer"},"name":{"description":"The name of the project","type":"string"}},"required":["id","name"]},"Event.Subresource.Role":{"title":"Role Event Subresource","description":"A subset of details about the role used on an event","type":"object","properties":{"id":{"description":"The unique identifier of the role","type":"integer"},"name":{"description":"The name of the role","type":"string"},"active":{"description":"Whether the role is active","type":"boolean"}},"required":["id","name","active"]},"Event.Subresource.Phase":{"title":"Phase Event Subresource","description":"A subset of details about the phase used on an event","type":"object","properties":{"id":{"description":"The unique identifier of the phase","type":"integer"},"name":{"description":"The name of the phase","type":"string"}},"required":["id","name"]},"Event.Subresource.Workstream":{"title":"Workstream Event Subresource","description":"A subset of details about the workstream used on an event","type":"object","properties":{"id":{"description":"The unique identifier of the workstream","type":"integer"},"name":{"description":"The name of the workstream","type":"string"}},"required":["id","name"]},"Event.ActualDeleted":{"title":"Actual Deleted Event","description":"An actual was deleted.","type":"object","properties":{"eventId":{"type":"string"},"type":{"description":"The unique type of the event","type":"string","enum":["actual_deleted"]},"actor":{"$ref":"#/components/schemas/Actor"},"timestamp":{"type":"string","format":"date-time","description":"The time the event occurred in ISO8601 format."},"actual":{"description":"Details about the actual that was deleted.","type":"object","properties":{"id":{"description":"The id of the actual at the time it was deleted.","type":"integer"},"date":{"description":"The date of the actual at the time it was deleted.","type":"string"},"personId":{"description":"The id of the person associated with the actual.","type":"integer"},"roleId":{"description":"The id of the role associated with the actual.","type":"integer"},"projectId":{"description":"The id of the project associated with the actual.","type":"integer"},"phaseId":{"description":"The id referencing the phase of the actual, if applicable.","type":"number","nullable":true},"workstreamId":{"description":"The id of the workstream associated with the actual.","type":"integer","nullable":true},"billableMinutes":{"description":"The number of billable minutes for the actual","type":"number"},"nonbillableMinutes":{"description":"The number of nonbillable minutes for the actual","type":"number"},"billableNote":{"description":"A note or comment related to the billable minutes, if any.","type":"string","nullable":true},"nonbillableNote":{"description":"A note or comment related to the nonbillable minutes, if any.","type":"string","nullable":true},"person":{"$ref":"#/components/schemas/Event.Subresource.Person","nullable":true},"role":{"$ref":"#/components/schemas/Event.Subresource.Role","nullable":true},"project":{"$ref":"#/components/schemas/Event.Subresource.Project","nullable":true},"workstream":{"$ref":"#/components/schemas/Event.Subresource.Workstream","nullable":true}},"required":["id","date","personId","roleId","projectId","phaseId","workstreamId","billableMinutes","nonbillableMinutes","billableNote","nonbillableNote","person","role","project","workstream"]}},"required":["eventId","type","actor","timestamp","actual"]},"Event.ContractDeleted":{"title":"Contract Deleted Event","description":"A contract was deleted.","type":"object","properties":{"eventId":{"type":"string"},"type":{"description":"The unique type of the event","type":"string","enum":["contract_deleted"]},"actor":{"$ref":"#/components/schemas/Actor"},"timestamp":{"type":"string","format":"date-time","description":"The time the event occurred in ISO8601 format."},"contract":{"type":"object","properties":{"id":{"description":"The unique identifier of the contract.","type":"integer"},"personId":{"description":"The unique identifier of the person associated with the contract.","type":"integer"},"roleId":{"description":"The unique identifier of the role associated with the contract.","type":"integer"},"startDate":{"description":"The start date of the contract.","format":"date","type":"string"},"endDate":{"format":"date","description":"The end date of the contract. If the contract was ongoing, this field will be null.","type":"string","nullable":true},"person":{"$ref":"#/components/schemas/Event.Subresource.Person","nullable":true},"role":{"$ref":"#/components/schemas/Event.Subresource.Role","nullable":true}},"required":["id","personId","roleId","startDate","endDate","person","role"]}},"required":["eventId","type","actor","timestamp","contract"]},"Event.PersonDeleted":{"title":"Person Deleted Event","description":"A person was deleted.","type":"object","properties":{"eventId":{"type":"string"},"type":{"description":"The unique type of the event","type":"string","enum":["person_deleted"]},"actor":{"$ref":"#/components/schemas/Actor"},"timestamp":{"type":"string","format":"date-time","description":"The time the event occurred in ISO8601 format."},"person":{"description":"Details about the person that was deleted.","type":"object","properties":{"id":{"description":"The id of the person at the time they were deleted.","type":"integer"},"email":{"description":"The email of the person at the time they were deleted.","type":"string","nullable":true},"firstName":{"description":"The first name of the person at the time they were deleted.","type":"string"},"lastName":{"description":"The last name of the person at the time they were deleted.","type":"string"}},"required":["id","email","firstName","lastName"]}},"required":["eventId","type","actor","timestamp","person"]},"Event.ProjectDeleted":{"title":"Project Deleted Event","description":"A project was deleted.","type":"object","properties":{"eventId":{"type":"string"},"type":{"description":"The unique type of the event","type":"string","enum":["project_deleted"]},"actor":{"$ref":"#/components/schemas/Actor"},"timestamp":{"type":"string","format":"date-time","description":"The time the event occurred in ISO8601 format."},"project":{"description":"Details about the project that was deleted.","type":"object","properties":{"id":{"description":"The id of the project at the time it was deleted.","type":"integer"},"name":{"description":"The name of the project at the time it was deleted.","type":"string"}},"required":["id","name"]}},"required":["eventId","type","actor","timestamp","project"]},"Event.TimeOffDeleted":{"title":"Time Off Deleted Event","description":"A time off was deleted.","type":"object","properties":{"eventId":{"type":"string"},"type":{"description":"The unique type of the event","type":"string","enum":["time_off_deleted"]},"actor":{"$ref":"#/components/schemas/Actor"},"timestamp":{"type":"string","format":"date-time","description":"The time the event occurred in ISO8601 format."},"timeOff":{"type":"object","properties":{"id":{"description":"The unique identifier for the time-off.","type":"integer"},"personId":{"description":"The identifier referencing the person associated with the time-off.","type":"integer"},"startDate":{"format":"date","description":"The start date of the time-off.","type":"string"},"endDate":{"format":"date","description":"The end date of the time-off.","type":"string"},"note":{"type":"string","nullable":true},"minutesPerDay":{"type":"integer","nullable":true},"person":{"$ref":"#/components/schemas/Event.Subresource.Person","nullable":true}},"required":["id","personId","startDate","endDate","note","minutesPerDay","person"]}},"required":["eventId","type","actor","timestamp","timeOff"]},"Event.AssignmentDeleted":{"title":"Assignment Deleted Event","description":"An assignment was deleted.","type":"object","properties":{"eventId":{"type":"string"},"type":{"description":"The unique type of the event","type":"string","enum":["assignment_deleted"]},"actor":{"$ref":"#/components/schemas/Actor"},"timestamp":{"type":"string","format":"date-time","description":"The time the event occurred in ISO8601 format."},"assignment":{"description":"Details about the assignment that was deleted.","type":"object","properties":{"id":{"description":"The unique identifier of the assignment.","type":"integer"},"personId":{"description":"The unique identifier of the person associated with the assignment.","type":"integer"},"startDate":{"format":"date","description":"The start date of the assignment. Format: YYYY-MM-DD","type":"string"},"endDate":{"format":"date","description":"The end date of the assignment. Format: YYYY-MM-DD","type":"string"},"projectId":{"description":"The ID referencing the project to which the assignment belongs.","type":"integer"},"minutesPerDay":{"description":"The number of minutes allocated to the assignment per day.","type":"integer"},"roleId":{"description":"The unique identifier of the role associated with the assignment.","type":"integer"},"isActive":{"description":"A flag indicating whether the assignment is currently active.","type":"boolean"},"note":{"type":"string","nullable":true},"isBillable":{"description":"A flag indicating whether the assignment is billable.","type":"boolean"},"phaseId":{"type":"integer","nullable":true},"isNonWorkingDay":{"description":"A flag indicating if the assignment falls on a non-working day.","type":"boolean"},"isTemplate":{"description":"A flag indicating if the assignment is a template.","type":"boolean"},"workstreamId":{"type":"number","nullable":true},"project":{"$ref":"#/components/schemas/Event.Subresource.Project","nullable":true},"person":{"$ref":"#/components/schemas/Event.Subresource.Person","nullable":true},"role":{"$ref":"#/components/schemas/Event.Subresource.Role","nullable":true},"phase":{"$ref":"#/components/schemas/Event.Subresource.Phase","nullable":true},"workstream":{"$ref":"#/components/schemas/Event.Subresource.Workstream","nullable":true}},"required":["id","personId","startDate","endDate","projectId","minutesPerDay","roleId","isActive","note","isBillable","phaseId","isNonWorkingDay","isTemplate","workstreamId","project","person","role","phase","workstream"]}},"required":["eventId","type","actor","timestamp","assignment"]},"Event":{"discriminator":{"propertyName":"type","mapping":{"project_deleted":"#/components/schemas/Event.ProjectDeleted","person_deleted":"#/components/schemas/Event.PersonDeleted","contract_deleted":"#/components/schemas/Event.ContractDeleted","actual_deleted":"#/components/schemas/Event.ActualDeleted","time_off_deleted":"#/components/schemas/Event.TimeOffDeleted","assignment_deleted":"#/components/schemas/Event.AssignmentDeleted"}},"title":"Event","description":"An event represents an action that occurred.       Every event has a `type`, `actor`, and `timestamp` property.       Use the `type` property to determine which event occurred.","anyOf":[{"$ref":"#/components/schemas/Event.ProjectDeleted"},{"$ref":"#/components/schemas/Event.PersonDeleted"},{"$ref":"#/components/schemas/Event.ContractDeleted"},{"$ref":"#/components/schemas/Event.ActualDeleted"},{"$ref":"#/components/schemas/Event.TimeOffDeleted"},{"$ref":"#/components/schemas/Event.AssignmentDeleted"}]},"HolidayGroup":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"countryCode":{"type":"string"},"countryName":{"type":"string","nullable":true},"regionName":{"type":"string","nullable":true},"holidayIds":{"type":"array","items":{"type":"integer"}}},"required":["id","name","countryCode","countryName","regionName","holidayIds"]},"Holiday":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"date":{"type":"string","format":"date","description":"Format: YYYY-MM-DD"},"observed":{"type":"string","format":"date","description":"Format: YYYY-MM-DD","nullable":true},"type":{"type":"string"}},"required":["id","name","date","observed","type"]},"Invitation":{"type":"object","properties":{"id":{"description":"Unique identifier for the invitation.","type":"integer"},"email":{"description":"Email for the invitation.","type":"string"},"userType":{"type":"string","enum":["admin","editor","viewer_all","viewer_basic","timesheet_only","manager","contributor"],"description":"Permission level"},"financialPermission":{"type":"string","enum":["all","no_salaries","restricted","none"],"description":"Financial permission level"},"editProjectsPermission":{"type":"string","enum":["all","specific","restricted","none"],"deprecated":true,"description":"Edit projects permission level (deprecated: use manageProjectsPermission)"},"editOthersPermission":{"type":"string","enum":["all","none"],"deprecated":true,"description":"Edit others permission level (deprecated: use managePeoplePermission)"},"manageProjectsPermission":{"type":"string","enum":["all","specific","restricted","none"],"description":"Manage projects permission level"},"managePeoplePermission":{"type":"string","enum":["all","restricted","none"],"description":"Manage people permission level"},"manageAccountPermission":{"description":"Manage account permission level","type":"boolean"},"addAllPeopleToProjectsPermission":{"description":"Add all people to projects permission level","type":"boolean"},"viewPlannerPermission":{"description":"View planner permission level","type":"boolean"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"sentAt":{"type":"string","format":"date-time","description":"Date and time when the invitation was last sent"},"expiresAt":{"type":"string","format":"date-time","description":"Date and time when the invitation expires"}},"required":["id","email","userType","financialPermission","editProjectsPermission","editOthersPermission","manageProjectsPermission","managePeoplePermission","manageAccountPermission","addAllPeopleToProjectsPermission","viewPlannerPermission","createdAt","sentAt","expiresAt"]},"ProjectTag":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"projectIds":{"type":"array","items":{"type":"integer"}},"archived":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","name","projectIds","archived","createdAt","updatedAt"]},"ProjectWorkstream":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"archived":{"type":"boolean"},"projectIds":{"type":"array","items":{"type":"integer"}}},"required":["id","name","archived","projectIds"]},"RateCard":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"isArchived":{"type":"boolean"},"references":{"type":"array","items":{"type":"object","properties":{"referenceName":{"type":"string"},"externalId":{"type":"string"}},"required":["referenceName","externalId"]}},"isBlendedRateCard":{"type":"boolean"},"blendedRate":{"type":"number","nullable":true},"rateType":{"type":"string","enum":["hours","days"],"nullable":true},"projectIds":{"type":"array","items":{"type":"integer"}},"rates":{"type":"array","items":{"type":"object","properties":{"role":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"}},"required":["id","name"]},"rateHourly":{"type":"number"},"rateDaily":{"type":"number"}},"required":["role","rateHourly","rateDaily"]}},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","name","description","isArchived","references","isBlendedRateCard","blendedRate","rateType","projectIds","rates","createdAt","updatedAt"]},"ReportsHoursPeople":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The date of the entry. Multi-day assignments will get split over multiple days. Format: YYYY-MM-DD"},"roleId":{"description":"The project-specific role for the associated person","type":"integer"},"projectId":{"description":"The project related to this entry","type":"integer"},"personId":{"description":"The person for this entry","type":"integer"},"workstreamId":{"description":"The workstream for this entry","type":"integer","nullable":true},"phaseId":{"description":"Associated phase (using actual phase, and falling back to assignment phase)","type":"integer","nullable":true},"billableMinutes":{"description":"Billable minutes for this day. Returns Actual minutes where it exists, otherwise returns Assignment minutes.","type":"integer"},"nonBillableMinutes":{"description":"Non-billable minutes for this day. Returns Actual minutes where it exists, otherwise returns Assignment minutes.","type":"integer"},"totalMinutes":{"description":"Total minutes for this day (sum of billable and non-billable)","type":"integer"},"assignments":{"type":"object","properties":{"billableMinutes":{"description":"Billable minutes for this assignment","type":"integer"},"nonBillableMinutes":{"description":"Non-billable minutes for this assignment","type":"integer"},"totalMinutes":{"description":"Total billable and non-billable minutes for this assignment","type":"integer"},"phaseId":{"description":"Associated phase","type":"integer","nullable":true}},"required":["billableMinutes","nonBillableMinutes","totalMinutes","phaseId"]},"actuals":{"type":"object","properties":{"billableMinutes":{"description":"Billable minutes for this actual","type":"integer"},"nonBillableMinutes":{"description":"Non-billable minutes for this actual","type":"integer"},"totalMinutes":{"description":"Total billable and non-billable minutes for this actual","type":"integer"},"phaseId":{"description":"Associated phase","type":"integer","nullable":true}},"required":["billableMinutes","nonBillableMinutes","totalMinutes","phaseId"]}},"required":["date","roleId","projectId","personId","workstreamId","phaseId","billableMinutes","nonBillableMinutes","totalMinutes","assignments","actuals"]},"ReportsHoursProjects":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"The date of the entry. Multi-day assignments will get split over multiple days. Format: YYYY-MM-DD"},"roleId":{"description":"The project-specific role for the associated person","type":"integer"},"personId":{"description":"The person related to this entry","type":"integer"},"projectId":{"description":"The project for this entry","type":"integer"},"workstreamId":{"description":"The workstream for this entry","type":"integer","nullable":true},"phaseId":{"description":"Associated phase (using actual phase, and falling back to assignment phase)","type":"integer","nullable":true},"billableMinutes":{"description":"Billable minutes for this day. Returns Actual minutes where it exists, otherwise returns Assignment minutes.","type":"integer"},"nonBillableMinutes":{"description":"Non-billable minutes for this day. Returns Actual minutes where it exists, otherwise returns Assignment minutes.","type":"integer"},"totalMinutes":{"description":"Total minutes for this day (sum of billable and non-billable)","type":"integer"},"assignments":{"type":"object","properties":{"billableMinutes":{"description":"Billable minutes for this assignment","type":"integer"},"nonBillableMinutes":{"description":"Non-billable minutes for this assignment","type":"integer"},"totalMinutes":{"description":"Total billable and non-billable minutes for this assignment","type":"integer"},"phaseId":{"description":"Associated phase","type":"integer","nullable":true}},"required":["billableMinutes","nonBillableMinutes","totalMinutes","phaseId"]},"actuals":{"type":"object","properties":{"billableMinutes":{"description":"Billable minutes for this actual","type":"integer"},"nonBillableMinutes":{"description":"Non-billable minutes for this actual","type":"integer"},"totalMinutes":{"description":"Total billable and non-billable minutes for this actual","type":"integer"},"phaseId":{"description":"Associated phase","type":"integer","nullable":true}},"required":["billableMinutes","nonBillableMinutes","totalMinutes","phaseId"]}},"required":["date","roleId","personId","projectId","workstreamId","phaseId","billableMinutes","nonBillableMinutes","totalMinutes","assignments","actuals"]},"ProjectAggregate":{"type":"object","properties":{"id":{"description":"The project identifier","type":"integer"},"billableMinutes":{"description":"Sum of billable minutes (using actuals if available, falling back to assignments)","type":"integer"},"nonBillableMinutes":{"description":"Sum of non-billable minutes (using actuals if available, falling back to assignments)","type":"integer"},"totalMinutes":{"description":"Total of the sums of billable and non-billable minutes","type":"integer"},"assignments":{"type":"object","properties":{"billableMinutes":{"description":"Sum of billable minutes for assignments","type":"integer"},"nonBillableMinutes":{"description":"Sum of non-billable minutes for assignments","type":"integer"},"totalMinutes":{"description":"Total of the sums of billable and non-billable minutes","type":"integer"}},"required":["billableMinutes","nonBillableMinutes","totalMinutes"]},"actuals":{"type":"object","properties":{"billableMinutes":{"description":"Sum of billable minutes for actuals","type":"integer"},"nonBillableMinutes":{"description":"Sum of non-billable minutes for actuals","type":"integer"},"totalMinutes":{"description":"Total of the sums of billable and non-billable minutes","type":"integer"}},"required":["billableMinutes","nonBillableMinutes","totalMinutes"]}},"required":["id","billableMinutes","nonBillableMinutes","totalMinutes","assignments","actuals"]},"Skill":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","name","createdAt","updatedAt"]},"User":{"type":"object","properties":{"id":{"type":"integer"},"firstName":{"type":"string","nullable":true},"lastName":{"type":"string","nullable":true},"email":{"type":"string"},"personId":{"type":"integer","nullable":true},"permissions":{"type":"object","properties":{"type":{"type":"string","enum":["superuser","admin","editor","viewer_all","viewer_basic","timesheet_only"],"deprecated":true,"description":"Mapped permission type (deprecated: use userType)"},"userType":{"type":"string","enum":["superuser","admin","manager","contributor"],"description":"The user's unmapped database permission type"},"financial":{"type":"string","enum":["all","no_salaries","restricted","none"]},"editProjects":{"type":"string","enum":["all","specific","restricted","none"],"deprecated":true,"description":"Edit projects permission (deprecated: use manageProjects)"},"manageProjects":{"type":"string","enum":["all","specific","restricted","none"]},"editOthers":{"type":"string","enum":["all","none"],"deprecated":true,"description":"Edit others permission (deprecated: use managePeople)"},"managePeople":{"type":"string","enum":["all","restricted","none"]},"manageAccount":{"type":"boolean"},"addAllPeopleToProjects":{"type":"boolean"},"viewPlanner":{"type":"boolean"}},"required":["type","userType","financial","editProjects","manageProjects","editOthers","managePeople","manageAccount","addAllPeopleToProjects","viewPlanner"]},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","firstName","lastName","email","personId","permissions","createdAt","updatedAt"]},"View":{"type":"object","properties":{"id":{"minimum":0,"type":"integer"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","name","description","createdAt","updatedAt"]}}},"paths":{"/activity-log/":{"get":{"operationId":"listActivityLog","summary":"List events","description":"Get a list of events that have occurred. Expand the RESPONSES (200) panel below to see supported events. Test accounts are not supported. More events will be added in the future.","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"array","items":{"type":"string","enum":["project_deleted","person_deleted","contract_deleted","actual_deleted","time_off_deleted","assignment_deleted"]}},"in":"query","name":"eventType","required":false,"description":"Filter by event type, e.g. project_deleted. If not provided, all event types are returned."},{"schema":{"format":"date-time","type":"string"},"in":"query","name":"occurredAfter","required":false,"description":"Only return events that occurred after this time. ISO 8601 format."},{"schema":{"type":"string","enum":["asc","desc"],"default":"desc"},"in":"query","name":"orderBy","required":false,"description":"Order the events by when they occurred."},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Event"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnprocessableEntity"}}}}}}},"/actuals/":{"get":{"operationId":"listActuals","summary":"List actuals","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":100,"minimum":1,"maximum":500,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["createdAt","updatedAt","id"],"default":"id"},"in":"query","name":"sortBy","required":false,"description":"Field to sort by: createdAt or updatedAt or id"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"order","required":false,"description":"Sort order: asc or desc"},{"schema":{"type":"string","format":"date"},"in":"query","name":"minDate","required":false,"description":"Start date to filter by. Format: YYYY-MM-DD"},{"schema":{"type":"string","format":"date"},"in":"query","name":"maxDate","required":false,"description":"End date (inclusive). Format: YYYY-MM-DD"},{"schema":{"type":"integer"},"in":"query","name":"projectId","required":false},{"schema":{"type":"integer"},"in":"query","name":"roleId","required":false},{"schema":{"type":"integer"},"in":"query","name":"personId","required":false},{"schema":{"type":"integer"},"in":"query","name":"workstreamId","required":false},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Actual"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"post":{"operationId":"createActual","summary":"Create or update an actual","description":"Minutes values represent the total time for a day and overwrite any previous actual on the same day (for the same project/person/role/workstream). [Learn more](https://developer.runn.io/docs/actuals-notes).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActualInput"}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Actual"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/actuals/time-entry":{"post":{"operationId":"createActualTimeEntry","summary":"Update an actual","description":"Returns Actual with updated minutes. Creates a new actual when there is none to update [Learn more](https://developer.runn.io/docs/actuals-notes).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActualTimeEntry"}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Actual"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/actuals/{actualId}/":{"delete":{"operationId":"deleteActual","summary":"Delete a specific actual","description":"Deletes the actual record identified by the provided unique identifier `actualId`. This operation is irreversible and removes the actual record from the system.","parameters":[{"schema":{"type":"integer"},"in":"path","name":"actualId","required":true,"description":"Unique identifier of the actual to be deleted."},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Successful deletion of the actual record."},"400":{"description":"Invalid actualId format.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"The actual record with the specified ID was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/actuals/bulk/":{"post":{"operationId":"createActualsBulk","summary":"Create or update actuals in bulk","description":"Create or update up to 100 'actuals' in a single API call. [Learn more](https://developer.runn.io/docs/actuals-notes).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"actuals":{"minItems":1,"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/ActualInput"}}},"required":["actuals"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Actual"}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/BadRequest"},{"type":"array","items":{"$ref":"#/components/schemas/Actual"}}]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/assignments/":{"post":{"operationId":"createAssignment","summary":"Create an assignment","description":"Creates a new assignment and returns a list of assignments. If the specified time period of the assignment overlaps with scheduled leave, the assignment is split into multiple segments. Each segment is returned as a separate assignment in the response.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"phaseId":{"description":"The phase this assignment is for, if any","type":"number","nullable":true},"personId":{"description":"The person this assignment is for","type":"number"},"projectId":{"description":"The project this assignment is for","type":"number"},"roleId":{"description":"The role the person will be in for this assignment","type":"number"},"startDate":{"type":"string","format":"date","description":"The date this assignment starts. Format: YYYY-MM-DD"},"endDate":{"type":"string","format":"date","description":"The date this assignment ends. When using isNonWorkingDay=true, this needs to be the same as the startDate. Format: YYYY-MM-DD"},"minutesPerDay":{"description":"How many minutes per day are assigned","default":0,"minimum":0,"type":"number"},"note":{"description":"A note about this assignment","type":"string"},"isBillable":{"description":"Whether this assignment is billable. Must be false if the project is non-billable.","default":true,"type":"boolean"},"isNonWorkingDay":{"description":"Determine whether this assignment is for a single weekend day or a single holiday. If left blank it will be set automatically","type":"boolean"},"workstreamId":{"description":"The workstream this assignment is for, if any","type":"number","nullable":true}},"required":["personId","projectId","roleId","startDate","endDate","minutesPerDay"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Assignment created successfully. Returns an array of assignment references, possibly multiple if split due to overlapping leave.","content":{"application/json":{"schema":{"description":"Assignment created successfully. Returns an array of assignment references, possibly multiple if split due to overlapping leave.","type":"array","items":{"$ref":"#/components/schemas/Assignment"}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"get":{"operationId":"listAssignments","summary":"List assignments","description":"Get a list of assignments, paginated","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":100,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["createdAt","updatedAt","id"],"default":"id"},"in":"query","name":"sortBy","required":false,"description":"Field to sort by: createdAt or updatedAt or id"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"order","required":false,"description":"Sort order: asc or desc"},{"schema":{"type":"integer"},"in":"query","name":"personId","required":false},{"schema":{"type":"integer"},"in":"query","name":"roleId","required":false},{"schema":{"type":"integer"},"in":"query","name":"projectId","required":false},{"schema":{"type":"string","format":"date"},"in":"query","name":"startDate","required":false,"description":"Format: YYYY-MM-DD"},{"schema":{"type":"string","format":"date"},"in":"query","name":"endDate","required":false,"description":"Format: YYYY-MM-DD"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Assignment"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/assignments/{assignmentId}/":{"delete":{"operationId":"deleteAssignment","summary":"Delete an assignment","parameters":[{"schema":{"type":"integer"},"in":"path","name":"assignmentId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Assignment"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/budget-roles/":{"get":{"operationId":"listBudgetRoles","summary":"List budget roles","description":"List all budget roles across all projects","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":100,"minimum":1,"maximum":500,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/ProjectBudgetRole"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/clients/":{"get":{"operationId":"listClients","summary":"List clients","parameters":[{"schema":{"type":"string"},"in":"query","name":"name","required":false,"description":"If provided, will only return clients with a name that is a substring of this value (case-insensitive)."},{"schema":{"type":"string","enum":["id","createdAt","updatedAt"],"default":"id"},"in":"query","name":"sortBy","required":true},{"schema":{"$ref":"#/components/schemas/SortOrder"},"in":"query","name":"order","required":false},{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Client"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"post":{"operationId":"createClient","summary":"Create a client","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientInput"}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Client"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/clients/{clientId}":{"get":{"operationId":"getClient","summary":"Show a client","parameters":[{"schema":{"type":"integer"},"in":"path","name":"clientId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Client"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updateClient","summary":"Update a client","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"},"website":{"format":"url","type":"string"},"isArchived":{"type":"boolean"},"references":{"type":"array","items":{"$ref":"#/components/schemas/Reference"}}}}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"clientId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Client"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/clients/{clientId}/projects/":{"get":{"operationId":"listClientProjects","summary":"List a client's projects","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"default":false,"type":"boolean"},"in":"query","name":"includeArchived","required":true},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"type":"integer"},"in":"path","name":"clientId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Project"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/clients/bulk/":{"post":{"operationId":"createClientsBulk","summary":"Create clients in bulk","description":"Create up to 100 'clients' in a single API call. [Learn more](https://developer.runn.io/docs/clients-notes).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"clients":{"minItems":1,"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/ClientInput"}}},"required":["clients"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Client"}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/contracts/":{"get":{"operationId":"listContracts","summary":"List contracts","description":"See GET /people/{personId}/contracts to view all contracts for a specific person. See POST /people/{personId}/contracts to create a new contract for a person","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"type":"string","enum":["id","createdAt","updatedAt"],"default":"id"},"in":"query","name":"sortBy","required":true},{"schema":{"$ref":"#/components/schemas/SortOrder"},"in":"query","name":"order","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Contract"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/contracts/{contractId}":{"patch":{"operationId":"updateContract","summary":"Update a contract","description":"Update a contract","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"roleId":{"type":"number"},"startDate":{"format":"date","type":"string"},"endDate":{"format":"date","type":"string","nullable":true},"employmentType":{"type":"string","enum":["employee","contractor"]},"costPerHour":{"type":"number"},"minutesPerDay":{"minimum":1,"type":"number"},"rosteredDays":{"type":"object","properties":{"monday":{"type":"number"},"tuesday":{"type":"number"},"wednesday":{"type":"number"},"thursday":{"type":"number"},"friday":{"type":"number"}},"required":["monday","tuesday","wednesday","thursday","friday"]},"jobTitle":{"type":"string"}}}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"contractId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contract"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/custom-fields/checkbox/":{"get":{"operationId":"listCheckboxCustomFields","summary":"List checkbox custom fields","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["PERSON","PROJECT"]},"in":"query","name":"model","required":false,"description":"The field type of the custom field"},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldCheckbox"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"post":{"operationId":"createCheckboxCustomField","summary":"Create a checkbox custom field","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"},"description":{"type":"string"},"model":{"type":"string","enum":["PERSON","PROJECT"],"description":"The field type of the custom field"},"required":{"default":false,"type":"boolean"},"showInPlanner":{"default":false,"type":"boolean"},"filterableInPlanner":{"default":true,"type":"boolean"}},"required":["name","model","required","showInPlanner","filterableInPlanner"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldCheckbox"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/custom-fields/checkbox/{checkboxFieldId}":{"patch":{"operationId":"updateCheckboxCustomField","summary":"Update a checkbox custom field","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"},"description":{"type":"string"},"required":{"type":"boolean"},"showInPlanner":{"type":"boolean"},"filterableInPlanner":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"checkboxFieldId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldCheckbox"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"delete":{"operationId":"deleteCheckboxCustomField","summary":"Delete a checkbox custom field","parameters":[{"schema":{"type":"integer"},"in":"path","name":"checkboxFieldId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/custom-fields/date/":{"post":{"operationId":"createDateCustomField","summary":"Create a date custom field","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"model":{"type":"string","enum":["PERSON","PROJECT"],"description":"The field type of the custom field"},"required":{"default":false,"type":"boolean"},"showInPlanner":{"default":false,"type":"boolean"},"filterableInPlanner":{"default":true,"type":"boolean"}},"required":["name","model","required","showInPlanner","filterableInPlanner"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldDate"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"get":{"operationId":"listDateCustomFields","summary":"List date custom fields","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["PERSON","PROJECT"]},"in":"query","name":"model","required":false,"description":"The field type of the custom field"},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldDate"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/custom-fields/date/{dateFieldId}":{"delete":{"operationId":"deleteDateCustomField","summary":"Delete a date custom field","parameters":[{"schema":{"type":"integer"},"in":"path","name":"dateFieldId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updateDateCustomField","summary":"Update a date custom field","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"required":{"type":"boolean"},"showInPlanner":{"type":"boolean"},"filterableInPlanner":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"dateFieldId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldDate"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/custom-fields/select/":{"post":{"operationId":"createSelectCustomField","summary":"Create a select custom field","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"},"description":{"type":"string"},"model":{"type":"string","enum":["PERSON","PROJECT"],"description":"The field type of the custom field"},"options":{"type":"array","items":{"type":"object","properties":{"name":{"description":"Display name for the select option","type":"string"}},"required":["name"]}},"singleSelect":{"default":false,"type":"boolean"},"required":{"default":false,"type":"boolean"},"showInPlanner":{"default":false,"type":"boolean"},"filterableInPlanner":{"default":true,"type":"boolean"}},"required":["name","model","options","singleSelect","required","showInPlanner","filterableInPlanner"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldSelect"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"get":{"operationId":"listSelectCustomFields","summary":"Show a select custom field","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["PERSON","PROJECT"]},"in":"query","name":"model","required":false,"description":"The field type of the custom field"},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldSelect"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/custom-fields/select/{selectFieldId}":{"patch":{"operationId":"updateSelectCustomField","summary":"Update a select custom field","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"},"description":{"type":"string"},"required":{"type":"boolean"},"showInPlanner":{"type":"boolean"},"filterableInPlanner":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"selectFieldId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldSelect"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"delete":{"operationId":"deleteSelectCustomField","summary":"Delete a select custom field","parameters":[{"schema":{"type":"integer"},"in":"path","name":"selectFieldId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/custom-fields/select/{selectFieldId}/options/{selectOptionId}":{"delete":{"operationId":"deleteSelectCustomFieldOption","summary":"Delete a select custom field option","parameters":[{"schema":{"type":"integer"},"in":"path","name":"selectFieldId","required":true},{"schema":{"type":"integer"},"in":"path","name":"selectOptionId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updateSelectCustomFieldOption","summary":"Update a select custom field option","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"}},"required":["name"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"selectFieldId","required":true},{"schema":{"type":"integer"},"in":"path","name":"selectOptionId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"option":{"type":"object","properties":{"id":{"description":"Unique identifier for the select option","type":"integer"},"name":{"description":"Display name for the select option","type":"string"}},"required":["id","name"]}},"required":["option"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/custom-fields/select/{selectFieldId}/options":{"post":{"operationId":"createSelectCustomFieldOption","summary":"Create a select custom field option","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"}},"required":["name"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"selectFieldId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"option":{"type":"object","properties":{"id":{"description":"Unique identifier for the select option","type":"integer"},"name":{"description":"Display name for the select option","type":"string"}},"required":["id","name"]}},"required":["option"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/custom-fields/text/":{"post":{"operationId":"createTextCustomField","summary":"Create a text custom field","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"},"description":{"type":"string"},"model":{"type":"string","enum":["PERSON","PROJECT"],"description":"The field type of the custom field"},"required":{"default":false,"type":"boolean"},"showInPlanner":{"default":false,"type":"boolean"},"filterableInPlanner":{"default":true,"type":"boolean"}},"required":["name","model","required","showInPlanner","filterableInPlanner"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldText"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"get":{"operationId":"listTextCustomFields","summary":"Show a text custom field","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["PERSON","PROJECT"]},"in":"query","name":"model","required":false,"description":"The field type of the custom field"},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldText"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/custom-fields/text/{textFieldId}":{"delete":{"operationId":"deleteTextCustomField","summary":"Delete a text custom field","parameters":[{"schema":{"type":"integer"},"in":"path","name":"textFieldId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updateTextCustomField","summary":"Update a text custom field","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"},"description":{"type":"string"},"required":{"type":"boolean"},"showInPlanner":{"type":"boolean"},"filterableInPlanner":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"textFieldId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldText"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/holiday-groups/":{"get":{"operationId":"listHolidayGroups","summary":"List holiday groups","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["createdAt","updatedAt","id"],"default":"id"},"in":"query","name":"sortBy","required":false,"description":"Field to sort by: createdAt or updatedAt or id"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"order","required":false,"description":"Sort order: asc or desc"},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/HolidayGroup"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/holiday-groups/{holidayGroupId}":{"get":{"operationId":"getHolidayGroup","summary":"Show a holiday group","parameters":[{"schema":{"type":"integer"},"in":"path","name":"holidayGroupId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HolidayGroup"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/holiday-groups/{holidayGroupId}/holidays":{"get":{"operationId":"listHolidayGroupHolidays","summary":"Show holidays for a holiday group","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"holidayGroupId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Holiday"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/invitations/":{"get":{"operationId":"listInvitations","summary":"List invitations","description":"Get a list of invitations. Does not contain the invitation token for security reasons","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["createdAt","sentAt","id"],"default":"id"},"in":"query","name":"sortBy","required":false,"description":"Field to sort by: createdAt or sentAt or id"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"order","required":false,"description":"Sort order: asc or desc"},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Invitation"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"post":{"operationId":"createInvitation","summary":"Create an invitation for a user","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"email":{"description":"Email for the invitation.","type":"string"},"userType":{"type":"string","enum":["admin","editor","viewer_all","viewer_basic","timesheet_only","manager","contributor"],"description":"Permission level"},"financialPermission":{"type":"string","enum":["all","no_salaries","restricted","none"],"description":"Financial permission level"},"fromUser":{"description":"Email address of user the invite should be sent from (must be a Runn user with admin permissions).","type":"string"}},"required":["email","userType","financialPermission","fromUser"]},{"anyOf":[{"type":"object","properties":{"editProjectsPermission":{"type":"string","enum":["all","specific","restricted","none"],"deprecated":true,"description":"Permissions for editing projects. (deprecated: use manageProjectsPermission)"},"editOthersPermission":{"type":"string","enum":["all","none"],"deprecated":true,"description":"Permissions for editing other parts of the account (people, clients, teams etc.). (deprecated: use managePeoplePermission)"}},"required":["editProjectsPermission","editOthersPermission"]},{"type":"object","properties":{"manageProjectsPermission":{"type":"string","enum":["all","specific","restricted","none"],"description":"Permissions for managing projects."},"manageOthersPermission":{"type":"string","enum":["all","none"],"deprecated":true,"description":"Permissions for managing other parts of the account (people, clients, teams etc.). (deprecated: use managePeoplePermission)"}},"required":["manageProjectsPermission","manageOthersPermission"]}]}]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invitation"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/invitations/{invitationId}":{"delete":{"operationId":"deleteInvitation","summary":"Delete an invitation","parameters":[{"schema":{"type":"integer"},"in":"path","name":"invitationId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/legacy-id/{model}/{legacyId}":{"get":{"operationId":"getLegacyId","summary":"Convert a legacy ID from API v0 to a new ID","parameters":[{"schema":{"type":"string","enum":["accounts","actuals","assignments","clients","contracts","help_documents","invitations","milestones","notes","people","phases","project_member","project_rates","projects","rate_cards","role_charge_our_rate","roles","tags","teams","time_offs","users","user_accounts","holiday_groups","skills","other_expenses","people_notes"]},"in":"path","name":"model","required":true},{"schema":{"type":"string"},"in":"path","name":"legacyId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"integer"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/me/":{"get":{"operationId":"getMe","summary":"Who am I?","description":"Get information about the currently authenticated user.","parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/milestones/":{"get":{"operationId":"listMilestones","summary":"List project milestones","description":"List all milestones across all projects","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":100,"minimum":1,"maximum":500,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Milestone"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/other-expenses/":{"get":{"operationId":"listOtherExpenses","summary":"List other expenses","description":"List all other expenses across all projects","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":100,"minimum":1,"maximum":500,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/ProjectOtherExpense"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/people/{personId}":{"get":{"operationId":"getPerson","summary":"Show a person or placeholder","parameters":[{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Person"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updatePerson","summary":"Update a person or placeholder","description":"To add a new role or job title to a person, see POST /people/{personId}/contracts. Archiving a person (isArchived: true) fails while they have ongoing or future contracts. Add an end date to each ongoing contract via PATCH /people/{personId}/contracts/{contractId}, and delete any contract that starts in the future via DELETE /people/{personId}/contracts/{contractId}, before archiving.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"minLength":1,"type":"string"},"lastName":{"minLength":1,"type":"string"},"email":{"type":"string"},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"}},"required":["id"]}},"teamId":{"type":"integer","nullable":true},"references":{"type":"array","items":{"$ref":"#/components/schemas/Reference"}},"isArchived":{"type":"boolean"},"managers":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"integer"}},"required":["userId"]}}}}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Person"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"delete":{"operationId":"deletePerson","summary":"Delete a person or placeholder","description":"Delete a person or placeholder by their ID; fails when person has existing assignments or actuals to preserve\n          historical reports. Override this behaviour by using the force query flag.","parameters":[{"schema":{"default":false,"type":"boolean"},"in":"query","name":"force","required":true},{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/people/":{"get":{"operationId":"listPeople","summary":"List people","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["createdAt","updatedAt","id"],"default":"id"},"in":"query","name":"sortBy","required":false,"description":"Field to sort by: createdAt or updatedAt or id"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"order","required":false,"description":"Sort order: asc or desc"},{"schema":{"default":false,"type":"boolean"},"in":"query","name":"includePlaceholders","required":false},{"schema":{"type":"string"},"in":"query","name":"email","required":false,"description":"If provided, will only return people with an email that are a substring of this value (case-insensitive)."},{"schema":{"type":"string"},"in":"query","name":"firstName","required":false,"description":"If provided, will only return people with a first name that is a substring of this value (case-insensitive)."},{"schema":{"type":"string"},"in":"query","name":"lastName","required":false,"description":"If provided, will only return people with a last name that is a substring of this value (case-insensitive)."},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"type":"string"},"in":"query","name":"externalId","required":false,"description":"External ID value"},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/CollectionPerson"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"post":{"operationId":"createPerson","summary":"Create a person","description":"Also creates a new contract for the person","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"minLength":1,"type":"string"},"lastName":{"minLength":1,"type":"string"},"email":{"type":"string"},"teamId":{"type":"integer","nullable":true},"holidaysGroupId":{"type":"integer"},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"}},"required":["id"]}},"references":{"type":"array","items":{"$ref":"#/components/schemas/Reference"}},"managers":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"integer"}},"required":["userId"]}},"roleId":{"type":"integer"},"startDate":{"type":"string","format":"date","description":"Defaults to today. Format: YYYY-MM-DD"},"endDate":{"type":"string","format":"date","description":"Format: YYYY-MM-DD"},"employmentType":{"type":"string","enum":["employee","contractor"],"description":"The type of employment for the contract.","default":"employee"},"costPerHour":{"description":"Defaults to the role's cost per hour","type":"number"},"minutesPerDay":{"minimum":1,"description":"Defaults to the account's default minutes per day","type":"number"},"rosteredDays":{"description":"Every value must be the same as minutesPerDay or 0.","type":"object","properties":{"monday":{"type":"number"},"tuesday":{"type":"number"},"wednesday":{"type":"number"},"thursday":{"type":"number"},"friday":{"type":"number"}},"required":["monday","tuesday","wednesday","thursday","friday"]},"jobTitle":{"description":"This feature is currently hidden, and can not be seen in the app","type":"string"}},"required":["firstName","lastName","roleId"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Person"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/people/skills":{"get":{"operationId":"listPeopleSkills","summary":"List people skills","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"default":false,"type":"boolean"},"in":"query","name":"includePlaceholders","required":false},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/PersonCompetency"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/people/notes":{"get":{"operationId":"listPeopleNotes","summary":"List people notes","description":"List all person notes across all people","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":100,"minimum":1,"maximum":500,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/PersonNote"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/people/contracts/current":{"get":{"operationId":"listPeopleCurrentContracts","summary":"List people current contracts","description":"List current contracts across all people","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":100,"minimum":1,"maximum":500,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Contract"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/people/custom-fields":{"get":{"operationId":"listPeopleCustomFields","summary":"List people custom fields","description":"List all custom fields across all people","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":100,"minimum":1,"maximum":500,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/PersonCustomField"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/people/{personId}/actuals/":{"get":{"operationId":"listPersonActuals","summary":"List actuals for a person","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"query","name":"projectId","required":false},{"schema":{"type":"integer"},"in":"query","name":"roleId","required":false},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Actual"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/people/{personId}/assignments/":{"get":{"operationId":"listPersonAssignments","summary":"List assignments for a person or placeholder","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"query","name":"projectId","required":false},{"schema":{"type":"integer"},"in":"query","name":"roleId","required":false},{"schema":{"type":"string","format":"date"},"in":"query","name":"startDate","required":false,"description":"Include assignments that start or overlap with this date. Format: YYYY-MM-DD"},{"schema":{"type":"string","format":"date"},"in":"query","name":"endDate","required":false,"description":"Include assignments that end on or overlap with this date. Format: YYYY-MM-DD"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Assignment"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/people/{personId}/contracts/":{"get":{"operationId":"listPersonContracts","summary":"List contracts for a person","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":20,"minimum":1,"maximum":50,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Contract"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"post":{"operationId":"createPersonContract","summary":"Add a new contract to a person","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContractInput"}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contract"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/people/{personId}/contracts/current":{"get":{"operationId":"getPersonCurrentContract","summary":"Show current contract for a person","parameters":[{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contract"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","enum":["Not Found"]},"message":{"type":"string"},"statusCode":{"type":"number","enum":[404]}},"required":["error","message","statusCode"]}}}}}}},"/people/{personId}/contracts/{contractId}":{"delete":{"operationId":"deletePersonContract","summary":"Delete a contract for a person","parameters":[{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"type":"integer"},"in":"path","name":"contractId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updatePersonContract","summary":"Update a contract for a person","description":"Update one of a person's contracts. Adding an end date to an ongoing contract here lets the person be archived (see PATCH /people/{personId}).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"roleId":{"type":"integer"},"startDate":{"type":"string","format":"date","description":"Defaults to today. Format: YYYY-MM-DD"},"endDate":{"type":"string","format":"date","description":"Format: YYYY-MM-DD","nullable":true},"employmentType":{"type":"string","enum":["employee","contractor"],"description":"The type of employment for the contract.","default":"employee"},"costPerHour":{"description":"Defaults to the role's cost per hour","type":"number"},"minutesPerDay":{"minimum":1,"description":"Defaults to the account's default minutes per day","type":"number"},"rosteredDays":{"description":"Every value must be the same as minutesPerDay or 0.","type":"object","properties":{"monday":{"type":"number"},"tuesday":{"type":"number"},"wednesday":{"type":"number"},"thursday":{"type":"number"},"friday":{"type":"number"}},"required":["monday","tuesday","wednesday","thursday","friday"]},"jobTitle":{"description":"This feature is currently hidden, and can not be seen in the app","type":"string"}}}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"type":"integer"},"in":"path","name":"contractId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contract"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/people/{personId}/custom-fields/checkbox/":{"patch":{"operationId":"updatePersonCheckboxCustomFields","summary":"Add a checkbox custom value to a person or placeholder","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"value":{"type":"boolean"}},"required":["id","value"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"value":{"type":"boolean"}},"required":["id","value"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/people/{personId}/custom-fields/date/":{"patch":{"operationId":"updatePersonDateCustomFields","summary":"Add a date custom value to a person or placeholder","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"value":{"type":"string","format":"date","description":"Format: YYYY-MM-DD","nullable":true}},"required":["id","value"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"value":{"type":"string","format":"date","description":"Format: YYYY-MM-DD","nullable":true}},"required":["id","value"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/people/{personId}/custom-fields/select/":{"patch":{"operationId":"updatePersonSelectCustomFields","summary":"Add custom select options to a person or placeholder","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"values":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"}},"required":["id"]}}},"required":["id","values"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"values":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"}},"required":["id"]}}},"required":["id","values"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/people/{personId}/custom-fields/text/":{"patch":{"operationId":"updatePersonTextCustomFields","summary":"Add a text custom value to a person or placeholder","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"value":{"type":"string"}},"required":["id","value"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"value":{"type":"string"}},"required":["id","value"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/people/{personId}/projects/":{"get":{"operationId":"listPersonProjects","summary":"List projects for a person or placeholder","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Project"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"post":{"operationId":"createPersonProject","summary":"Add project to a person or placeholder","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projectId":{"type":"integer"},"roleId":{"type":"integer"},"workstreamId":{"type":"integer"}},"required":["projectId","roleId"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conflict"}}}}}}},"/people/{personId}/skills/":{"get":{"operationId":"listPersonSkills","summary":"List skills for a person or placeholder","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Competency"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"post":{"operationId":"createPersonSkill","summary":"Add a skill to a person or placeholder","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"skillId":{"type":"integer"},"level":{"anyOf":[{"type":"number","enum":[1],"nullable":true},{"type":"number","enum":[2],"nullable":true},{"type":"number","enum":[3],"nullable":true},{"type":"number","enum":[4],"nullable":true}]}},"required":["skillId"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Competency"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/people/{personId}/skills/{skillId}":{"patch":{"operationId":"updatePersonSkill","summary":"Update a skill for a person or placeholder","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"level":{"anyOf":[{"type":"number","enum":[1],"nullable":true},{"type":"number","enum":[2],"nullable":true},{"type":"number","enum":[3],"nullable":true},{"type":"number","enum":[4],"nullable":true}]}},"required":["level"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"type":"integer"},"in":"path","name":"skillId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Competency"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"delete":{"operationId":"deletePersonSkill","summary":"Remove a skill from a person or placeholder","parameters":[{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"type":"integer"},"in":"path","name":"skillId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/people/{personId}/teams/current":{"get":{"operationId":"getPersonCurrentTeam","summary":"Show current team for a person or placeholder","description":"This endpoint is deprecated. You may view the current team for a person using the `GET /people/:personId/` endpoint.","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":20,"minimum":1,"maximum":50,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"deprecated":true,"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","name","createdAt","updatedAt"]}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/people/{personId}/teams/":{"post":{"operationId":"createPersonTeam","summary":"Add a person or placeholder to a team","description":"This endpoint is deprecated. You may assign the person to a team using the `PATCH /people/:personId/` endpoint.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"teamId":{"type":"integer"}},"required":["teamId"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"deprecated":true,"responses":{"201":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/people/{personId}/teams/{teamId}":{"delete":{"operationId":"deletePersonTeam","summary":"Remove a person or placeholder from a team","description":"This endpoint is deprecated. You may remove the person from a team using the `PATCH /people/:personId/` endpoint.","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":20,"minimum":1,"maximum":50,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"type":"integer"},"in":"path","name":"teamId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"deprecated":true,"responses":{"202":{"description":"Default Response"},"400":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/people/{personId}/time-offs/leave":{"get":{"operationId":"listPersonLeave","summary":"List leave for a person","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/TimeOff"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/people/{personId}/time-offs/holidays":{"get":{"operationId":"listPersonHolidays","summary":"List holidays for a person","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/TimeOff"},{"type":"object","properties":{"holidayId":{"description":"The identifier referencing the holiday associated with the time-off.","type":"integer"}},"required":["holidayId"]}]}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/people/{personId}/time-offs/rostered-off":{"get":{"operationId":"listPersonRosteredOff","summary":"List rostered time offs for a person","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/TimeOff"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/people-tags/":{"get":{"operationId":"listPeopleTags","summary":"List people tags","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["createdAt","updatedAt","id"],"default":"id"},"in":"query","name":"sortBy","required":false,"description":"Field to sort by: createdAt or updatedAt or id"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"order","required":false,"description":"Sort order: asc or desc"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"archived":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","name","archived","createdAt","updatedAt"]}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"post":{"operationId":"createPeopleTag","summary":"Create a people tag","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"}},"required":["name"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"archived":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","name","archived","createdAt","updatedAt"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/people-tags/{peopleTagId}":{"get":{"operationId":"getPeopleTag","summary":"Show a people tag","parameters":[{"schema":{"type":"integer"},"in":"path","name":"peopleTagId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"archived":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","name","archived","createdAt","updatedAt"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updatePeopleTag","summary":"Update a people tag","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"archived":{"type":"boolean"}},"required":["archived"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"peopleTagId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"archived":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","name","archived","createdAt","updatedAt"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"delete":{"operationId":"deletePeopleTag","summary":"Delete a people tag","parameters":[{"schema":{"type":"integer"},"in":"path","name":"peopleTagId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"202":{"description":"Default Response"},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/person-requests/":{"get":{"operationId":"listPersonRequests","summary":"List person requests","description":"List all person requests across all projects","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":100,"minimum":1,"maximum":500,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/PersonRequest"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/phases/":{"get":{"operationId":"listPhases","summary":"List phases","description":"List all phases across all projects","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":100,"minimum":1,"maximum":500,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/ProjectPhase"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response"}}}},"/placeholders/":{"get":{"operationId":"listPlaceholders","summary":"List placeholders","description":"Note: The /people/* endpoints also allows getting information on placeholders when using the `includePlaceholders` query parameter.","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["createdAt","updatedAt","id"],"default":"id"},"in":"query","name":"sortBy","required":false,"description":"Field to sort by: createdAt or updatedAt or id"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"order","required":false,"description":"Sort order: asc or desc"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Placeholder"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"post":{"operationId":"createPlaceholder","summary":"Create a placeholder","description":"Also creates a contract that defaults to the role cost.\nPlease note that placeholders that are not assigned to a project will be deleted within 24 hours.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"roleId":{"type":"integer"},"costPerHour":{"description":"Defaults to the role's cost per hour","type":"number"},"teamId":{"type":"integer","nullable":true},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"}},"required":["id"]}}},"required":["roleId"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceholderInput"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/placeholders/{placeholderId}/skills/":{"post":{"operationId":"createPlaceholderSkill","summary":"Add a skill to a placeholder","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"skillId":{"type":"integer"},"level":{"anyOf":[{"type":"number","enum":[1],"nullable":true},{"type":"number","enum":[2],"nullable":true},{"type":"number","enum":[3],"nullable":true},{"type":"number","enum":[4],"nullable":true}]}},"required":["skillId"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"placeholderId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Competency"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/placeholders/{placeholderId}/skills/{skillId}":{"delete":{"operationId":"deletePlaceholderSkill","summary":"Remove a skill from a placeholder","parameters":[{"schema":{"type":"integer"},"in":"path","name":"placeholderId","required":true},{"schema":{"type":"integer"},"in":"path","name":"skillId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/placeholders/{placeholderId}/teams/":{"post":{"operationId":"createPlaceholderTeam","summary":"Add a placeholder to a team","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"teamId":{"type":"integer"}},"required":["teamId"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"placeholderId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/placeholders/{placeholderId}/teams/{teamId}":{"delete":{"operationId":"deletePlaceholderTeam","summary":"Remove a placeholder from a team","parameters":[{"schema":{"type":"integer"},"in":"path","name":"placeholderId","required":true},{"schema":{"type":"integer"},"in":"path","name":"teamId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"202":{"description":"Default Response"},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/project-members/":{"get":{"operationId":"listProjectMembers","summary":"List members of projects","description":"This endpoint excludes changes for when people are removed from a project","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":100,"minimum":1,"maximum":500,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"personId":{"type":"number"},"projectId":{"type":"number"},"roleId":{"type":"number"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"isPlaceholder":{"type":"boolean"},"workstreamId":{"type":"number","nullable":true},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["id","personId","projectId","roleId","createdAt","isPlaceholder","workstreamId","updatedAt"]}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/project-notes/":{"get":{"operationId":"listProjectNotes","summary":"List project notes","description":"List all project notes across all projects","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":100,"minimum":1,"maximum":500,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/ProjectNote"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/project-rates/":{"get":{"operationId":"listProjectRates","summary":"List role rates","description":"List all role rates across all projects","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":100,"minimum":1,"maximum":500,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/ProjectRate"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/project-tags/{projectTagId}":{"get":{"operationId":"getProjectTag","summary":"Show a project tag","parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectTagId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectTag"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updateProjectTag","summary":"Update a project tag","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"archived":{"type":"boolean"}},"required":["archived"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectTagId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectTag"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/project-tags/":{"get":{"operationId":"listProjectTags","summary":"List project tags","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["createdAt","updatedAt","id"],"default":"id"},"in":"query","name":"sortBy","required":false,"description":"Field to sort by: createdAt or updatedAt or id"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"order","required":false,"description":"Sort order: asc or desc"},{"schema":{"default":false,"type":"boolean"},"in":"query","name":"includeArchived","required":false},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/ProjectTag"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"post":{"operationId":"createProjectTag","summary":"Create a project tag","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"}},"required":["name"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectTag"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/project-tags/{projectTagId}/project/{projectId}":{"post":{"operationId":"createProjectTagProject","summary":"Add a project tag to a project","parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectTagId","required":true},{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectTag"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"delete":{"operationId":"deleteProjectTagProject","summary":"Remove a project tag from a project","parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectTagId","required":true},{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/project-workstreams/":{"get":{"operationId":"listProjectWorkstreams","summary":"List project workstreams","description":"List all project workstreams across all projects","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"type":"object","properties":{"projectId":{"type":"number"},"workstreamId":{"type":"number"},"createdAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was created."},"updatedAt":{"type":"string","format":"date-time","description":"Timestamp of when the object was last updated."}},"required":["projectId","workstreamId","createdAt","updatedAt"]}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/projects/{projectId}":{"get":{"operationId":"getProject","summary":"Show a project","parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updateProject","summary":"Update a project","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"},"isConfirmed":{"type":"boolean"},"isArchived":{"type":"boolean"},"isTemplate":{"type":"boolean"},"budget":{"minimum":0,"description":"Budget value in local currency","type":"number"},"expensesBudget":{"minimum":0,"description":"Expenses budget value in local currency","type":"number"},"clientId":{"type":"number"},"teamId":{"type":"number","nullable":true},"pricingModel":{"type":"string","enum":["fp","tm","nb"]},"rateType":{"type":"string","enum":["hours","days"]},"references":{"type":"array","items":{"$ref":"#/components/schemas/Reference"}},"tags":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"}},"required":["id"]}},"managerIds":{"description":"List of User IDs that manage the project.","uniqueItems":true,"type":"array","items":{"type":"integer"}}}}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/projects/":{"get":{"operationId":"listProjects","summary":"List projects","description":"See `GET /people/{id}/projects` for all projects by person","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["createdAt","updatedAt","id"],"default":"id"},"in":"query","name":"sortBy","required":false,"description":"Field to sort by: createdAt or updatedAt or id"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"order","required":false,"description":"Sort order: asc or desc"},{"schema":{"default":true,"type":"boolean"},"in":"query","name":"includeArchived","required":true},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"type":"string"},"in":"query","name":"externalId","required":false,"description":"External ID value"},{"schema":{"type":"string"},"in":"query","name":"name","required":false,"description":"Case-insensitive substring match on project name (e.g. `Acme`)."},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Project"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"post":{"operationId":"createProject","summary":"Create a project","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"emoji":{"type":"string"},"name":{"minLength":1,"type":"string"},"isConfirmed":{"type":"boolean"},"isTemplate":{"type":"boolean"},"budget":{"minimum":0,"description":"Budget value in local currency","type":"number"},"expensesBudget":{"minimum":0,"description":"Expenses budget value in local currency","type":"number"},"clientId":{"type":"number"},"teamId":{"type":"number","nullable":true},"pricingModel":{"type":"string","enum":["fp","tm","nb"],"description":"Defaults to 'tm' if not specified"},"rateCardId":{"description":"Used to create initial project rates. Uses standard rate card if not specified","type":"integer"},"rateType":{"type":"string","enum":["hours","days"],"description":"Defaults to account rate type if not specified"},"references":{"type":"array","items":{"$ref":"#/components/schemas/Reference"}},"managerIds":{"description":"List of User IDs that manage the project.","uniqueItems":true,"type":"array","items":{"type":"integer"}}},"required":["name","clientId"]},{"type":"object","properties":{"fromTemplate":{"type":"object","properties":{"templateId":{"description":"ID of the template project to duplicate","type":"integer"},"startDate":{"description":"New start date for the project","format":"date","type":"string"}},"required":["templateId","startDate"]},"name":{"minLength":1,"type":"string"},"clientId":{"type":"number"}},"required":["fromTemplate"]}]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/projects/custom-fields":{"get":{"operationId":"listProjectCustomFields","summary":"List project custom fields","description":"List all custom fields across all projects","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":100,"minimum":1,"maximum":500,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/ProjectCustomField"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/projects/{projectId}/":{"delete":{"operationId":"deleteProject","summary":"Delete a project","description":"Delete a project by id. You cannot delete a project that has any actuals or assignments.","parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Successful deletion of the project."},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conflict"}}}}}}},"/projects/{projectId}/actuals/":{"get":{"operationId":"listProjectActuals","summary":"List actuals for a project","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"query","name":"personId","required":false},{"schema":{"type":"integer"},"in":"query","name":"roleId","required":false},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Actual"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/projects/{projectId}/assignments/":{"get":{"operationId":"listProjectAssignments","summary":"List assignments for a project","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"query","name":"personId","required":false},{"schema":{"type":"integer"},"in":"query","name":"roleId","required":false},{"schema":{"type":"string","format":"date"},"in":"query","name":"startDate","required":false,"description":"Include assignments that start or overlap with this date. Format: YYYY-MM-DD"},{"schema":{"type":"string","format":"date"},"in":"query","name":"endDate","required":false,"description":"Include assignments that end on or overlap with this date. Format: YYYY-MM-DD"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Assignment"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/projects/{projectId}/budget-roles/{roleId}":{"get":{"operationId":"getProjectBudgetRole","summary":"Get a project budget role","parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"type":"integer"},"in":"path","name":"roleId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Project budget role","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectBudgetRole"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updateProjectBudgetRole","summary":"Update a project budget role","description":"Update a project budget role for a project. You cannot update a              project budget role using estimated budget if a project rate does              not exist for the role because the project rate is used to set              the estimatedMinutes.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"estimatedMinutes":{"minimum":0,"type":"integer"}},"required":["estimatedMinutes"]},{"type":"object","properties":{"estimatedBudget":{"minimum":0,"type":"integer"}},"required":["estimatedBudget"]}]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"type":"integer"},"in":"path","name":"roleId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Project budget role","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectBudgetRole"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"delete":{"operationId":"deleteProjectBudgetRole","summary":"Delete a project budget role","description":"Delete a project budget role for a project. You cannot delete a              project budget role if it is implicitly created from a project membership.","parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"type":"integer"},"in":"path","name":"roleId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conflict"}}}}}}},"/projects/{projectId}/budget-roles/":{"get":{"operationId":"listProjectBudgetRoles","summary":"Get a paginated list of project budget roles for a project","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/ProjectBudgetRole"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"post":{"operationId":"createProjectBudgetRole","summary":"Create a project budget role","description":"Create a project budget role for a project. You cannot create a              project budget role using estimated budget if a project rate does              not exist for the role because the project rate is used to set              the estimatedMinutes.","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"roleId":{"type":"integer"}},"required":["roleId"]},{"anyOf":[{"type":"object","properties":{"estimatedMinutes":{"minimum":0,"type":"integer"}},"required":["estimatedMinutes"]},{"type":"object","properties":{"estimatedBudget":{"minimum":0,"type":"integer"}},"required":["estimatedBudget"]}]}]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response"},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conflict"}}}}}}},"/projects/{projectId}/custom-fields/checkbox/":{"patch":{"operationId":"updateProjectCheckboxCustomFields","summary":"Add a checkbox custom value to a project","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"value":{"type":"boolean"}},"required":["id","value"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"value":{"type":"boolean"}},"required":["id","value"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/projects/{projectId}/custom-fields/date/":{"patch":{"operationId":"updateProjectDateCustomFields","summary":"Add a date custom field value to a project","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"value":{"type":"string","format":"date","description":"Format: YYYY-MM-DD","nullable":true}},"required":["id","value"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"value":{"type":"string","format":"date","description":"Format: YYYY-MM-DD","nullable":true}},"required":["id","value"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/projects/{projectId}/custom-fields/select/":{"patch":{"operationId":"updateProjectSelectCustomFields","summary":"Add a select custom field to a project","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"values":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"}},"required":["id"]}}},"required":["id","values"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"values":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"}},"required":["id"]}}},"required":["id","values"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/projects/{projectId}/custom-fields/text/":{"patch":{"operationId":"updateProjectTextCustomFields","summary":"Add a text custom field value to a project","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"value":{"type":"string"}},"required":["id","value"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"number"},"value":{"type":"string"}},"required":["id","value"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/projects/{projectId}/milestones/":{"post":{"operationId":"createProjectMilestone","summary":"Create a milestone for a project","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"icon":{"anyOf":[{"type":"string","enum":["start","end","flag","dollar","warning"]},{"description":"emoji to use as icon","type":"string"}]},"note":{"type":"string"},"date":{"type":"string","format":"date","description":"Format: YYYY-MM-DD"}},"required":["title","icon","date"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Milestone"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"get":{"operationId":"listProjectMilestones","summary":"List milestones for a project","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","format":"date"},"in":"query","name":"startDate","required":false,"description":"Milestones on this date or newer. Defaults to Monday of the current week. Format: YYYY-MM-DD."},{"schema":{"type":"string","format":"date"},"in":"query","name":"endDate","required":false,"description":"Milestones on this date or older. Format: YYYY-MM-DD."},{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Milestone"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/projects/{projectId}/milestones/{milestoneId}":{"delete":{"operationId":"deleteProjectMilestone","summary":"Delete a milestone for a project","parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"type":"integer"},"in":"path","name":"milestoneId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updateProjectMilestone","summary":"Update a milestone for a project","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string"},"icon":{"anyOf":[{"type":"string","enum":["start","end","flag","dollar","warning"]},{"description":"emoji to use as icon","type":"string"}]},"note":{"type":"string"},"date":{"type":"string","format":"date","description":"Format: YYYY-MM-DD"}}}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"type":"integer"},"in":"path","name":"milestoneId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Milestone"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/projects/{projectId}/notes/":{"post":{"operationId":"createProjectNote","summary":"Create a project note","description":"Defaults creator to 'API' user","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"note":{"type":"string"}},"required":["note"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectNote"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"get":{"operationId":"getProjectNotes","summary":"List notes for a project","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/ProjectNote"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/projects/{projectId}/other-expenses/":{"get":{"operationId":"listProjectOtherExpenses","summary":"List other expenses for a project","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":20,"minimum":1,"maximum":50,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true,"description":"Unique identifier for the project the expenses are for."},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/ProjectOtherExpense"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"post":{"operationId":"createProjectOtherExpense","summary":"Create an other expense for a project","requestBody":{"required":true,"content":{"application/json":{"schema":{"title":"Project Other Expense","description":"A non-labour expense for a project.","type":"object","properties":{"cost":{"minimum":0,"description":"How much the item costs for your business (in your account's currency).","type":"number"},"charge":{"minimum":0,"description":"How much you are charging your clients for the item (in your account's currency).","type":"number"},"name":{"minLength":1,"description":"The item or service that was purchased.","type":"string"},"date":{"format":"date","description":"The date the expense was incurred.","type":"string"}},"required":["cost","charge","name","date"]}}},"description":"A non-labour expense for a project."},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true,"description":"Unique identifier for the project the expense is for."},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"A non-labour expense for a project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectOtherExpense"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/projects/{projectId}/other-expenses/{otherExpenseId}/":{"patch":{"operationId":"updateProjectOtherExpense","summary":"Update an other expense on a project","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cost":{"minimum":0,"description":"How much the item costs for your business (in your account's currency).","type":"number"},"charge":{"minimum":0,"description":"How much you are charging your clients for the item (in your account's currency).","type":"number"},"name":{"minLength":1,"description":"The item or service that was purchased.","type":"string"},"date":{"format":"date","description":"The date the expense was incurred.","type":"string"}},"title":"Project Other Expense","description":"A non-labour expense for a project."}}},"description":"A non-labour expense for a project."},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true,"description":"Unique identifier for the project the expense is for."},{"schema":{"type":"integer"},"in":"path","name":"otherExpenseId","required":true,"description":"Unique identifier for the other expense to update."},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"A non-labour expense for a project.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectOtherExpense"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/projects/{projectId}/people/":{"get":{"operationId":"listProjectPeople","summary":"List people assigned to a project","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"default":true,"type":"boolean"},"in":"query","name":"includeArchived","required":true},{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/CollectionPerson"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/projects/{projectId}/person-requests/":{"get":{"operationId":"listProjectPersonRequests","summary":"List the person requests for a project","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/PersonRequest"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"post":{"operationId":"createProjectPersonRequest","summary":"Create a person request on a project","description":"Person requests are used to request a placeholder role be filled with a person in the account or to request a new person be hired. This endpoint can be used to create a new person request.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"personId":{"type":"integer"},"status":{"type":"string","enum":["NEED_TO_HIRE","REQUESTED","PENDING"]}},"required":["personId","status"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonRequest"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/projects/{projectId}/person-requests/{personRequestId}":{"get":{"operationId":"getProjectPersonRequest","summary":"Show a single person request for a project","parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"type":"integer"},"in":"path","name":"personRequestId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updateProjectPersonRequest","summary":"Update the status of a person request on a project","description":"Person requests are used to request a placeholder role be filled with another person in the account or to request a new person be hired. This endpoint can be used to update the status of a request to 'REQUESTED' or 'NEED_TO_HIRE', respectively.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["NEED_TO_HIRE","REQUESTED","PENDING"]}},"required":["status"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"type":"integer"},"in":"path","name":"personRequestId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"status":{"type":"string","enum":["NEED_TO_HIRE","REQUESTED","PENDING"]}},"required":["id","status"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/projects/{projectId}/phases/":{"get":{"operationId":"listProjectPhases","summary":"List phases for a project","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":20,"minimum":1,"maximum":50,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/ProjectPhase"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response"}}},"post":{"operationId":"createProjectPhase","summary":"Create a phase for a project","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"title":"Name","description":"The name of the project phase. Must be at least 1 character long.","minLength":1,"type":"string","example":"Initial Planning"},"startDate":{"title":"Start Date","description":"The start date of the project phase in ISO8061 format: YYYY-MM-DD","format":"date","type":"string"},"endDate":{"title":"End Date","description":"The end date of the project phase in ISO8061 format: YYYY-MM-DD","format":"date","type":"string"},"color":{"type":"string","enum":["#67D0D5","#FDCD4F","#F191CC","#B19DE6","#9CE277","#CD97DA","#84DBA0","#FFB077","#9CC5BF","#E8C681","#6899F1","#DDAE9F"],"title":"Color","description":"Hex color of the phase. Only a subset of colors is allowed.","default":"#67D0D5"}},"required":["name","startDate","endDate","color"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Project phases divide your project into smaller sections so you can group similar tasks and assignments together.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPhase"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/projects/{projectId}/phases/{phaseId}":{"get":{"operationId":"getProjectPhase","summary":"Show a phase for a project","parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"type":"integer"},"in":"path","name":"phaseId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Project phases divide your project into smaller sections so you can group similar tasks and assignments together.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPhase"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response"}}},"patch":{"operationId":"updateProjectPhase","summary":"Update a phase for a project","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"title":"Name","description":"The name of the project phase. Must be at least 1 character long.","minLength":1,"type":"string","example":"Initial Planning"},"startDate":{"title":"Start Date","description":"The start date of the project phase in ISO8061 format: YYYY-MM-DD","format":"date","type":"string"},"endDate":{"title":"End Date","description":"The end date of the project phase in ISO8061 format: YYYY-MM-DD","format":"date","type":"string"},"color":{"type":"string","enum":["#67D0D5","#FDCD4F","#F191CC","#B19DE6","#9CE277","#CD97DA","#84DBA0","#FFB077","#9CC5BF","#E8C681","#6899F1","#DDAE9F"],"title":"Color","description":"Hex color of the phase. Only a subset of colors is allowed.","default":"#67D0D5"}}}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"type":"integer"},"in":"path","name":"phaseId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Project phases divide your project into smaller sections so you can group similar tasks and assignments together.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPhase"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"delete":{"operationId":"deleteProjectPhase","summary":"Delete a phase for a project","parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"type":"integer"},"in":"path","name":"phaseId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Project phases divide your project into smaller sections so you can group similar tasks and assignments together.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPhase"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response"}}}},"/projects/{projectId}/project-rates/":{"get":{"operationId":"getProjectRates","summary":"List role rates for a project","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/ProjectRate"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/projects/{projectId}/project-rates/{projectRateId}/":{"patch":{"operationId":"updateProjectRate","summary":"Update a rate for a role on a project","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rate":{"minimum":0,"type":"number"}},"required":["rate"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"type":"integer"},"in":"path","name":"projectRateId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectRate"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/projects/{projectId}/project-workstreams/":{"get":{"operationId":"getProjectWorkstreams","summary":"List workstreams assigned to a project","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"default":true,"type":"boolean"},"in":"query","name":"includeArchived","required":true},{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/ProjectWorkstream"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/projects/{projectId}/project-workstreams/{workstreamId}/":{"get":{"operationId":"getProjectWorkstream","summary":"View project workstream","parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"type":"integer"},"in":"path","name":"workstreamId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectWorkstream"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"post":{"operationId":"createProjectWorkstream","summary":"Add a workstream to a project","parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"type":"integer"},"in":"path","name":"workstreamId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectWorkstream"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"delete":{"operationId":"deleteProjectWorkstream","summary":"Delete project workstream","parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"type":"integer"},"in":"path","name":"workstreamId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectWorkstream"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/projects/{projectId}/timesheet-lock/":{"get":{"operationId":"getProjectTimesheetLock","summary":"Show a timesheet lock for a project","description":"This feature currently in beta and only available to selected customers.","parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["LOCKED","UNLOCKED"],"nullable":true},"lockedUntil":{"type":"string","format":"date-time","description":"Format: YYYY-MM-DDTHH:MM:SSZ","nullable":true},"lastUpdatedBy":{"type":"string","nullable":true},"updatedAt":{"type":"string","format":"date-time","description":"Format: YYYY-MM-DDTHH:MM:SSZ","nullable":true}},"required":["status","lockedUntil","lastUpdatedBy","updatedAt"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updateProjectTimesheetLock","summary":"Update a timesheet lock for a project","description":"This feature currently in beta and only available to selected customers.This will return an error and message if all timesheets haven't been filled out to selected date.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["LOCKED"]},"lockedUntil":{"format":"date","type":"string"}},"required":["status","lockedUntil"]},{"type":"object","properties":{"status":{"type":"string","enum":["UNLOCKED"]}},"required":["status"]}]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["LOCKED","UNLOCKED"],"nullable":true},"lockedUntil":{"type":"string","format":"date-time","description":"Format: YYYY-MM-DDTHH:MM:SSZ","nullable":true},"lastUpdatedBy":{"type":"string","nullable":true},"updatedAt":{"type":"string","format":"date-time","description":"Format: YYYY-MM-DDTHH:MM:SSZ","nullable":true}},"required":["status","lockedUntil","lastUpdatedBy","updatedAt"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","enum":[404]},"error":{"type":"string","enum":["Not Found"]},"message":{"type":"string"}},"required":["statusCode","error","message"]}}}}}}},"/rate-cards/":{"get":{"operationId":"listRateCards","summary":"List rate cards","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["createdAt","updatedAt","id"],"default":"id"},"in":"query","name":"sortBy","required":false,"description":"Field to sort by: createdAt or updatedAt or id"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"order","required":false,"description":"Sort order: asc or desc"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/RateCard"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"post":{"operationId":"createRateCard","summary":"Create a rate card","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string","nullable":true},"references":{"type":"array","items":{"type":"object","properties":{"referenceName":{"type":"string"},"externalId":{"type":"string"}},"required":["referenceName","externalId"]}},"isBlendedRateCard":{"type":"boolean"},"blendedRate":{"type":"number","nullable":true},"rateType":{"type":"string","enum":["hours","days"],"nullable":true}},"required":["name","description","references","isBlendedRateCard","blendedRate","rateType"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateCard"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/rate-cards/{rateCardId}":{"get":{"operationId":"getRateCard","summary":"Show a rate card","parameters":[{"schema":{"type":"integer"},"in":"path","name":"rateCardId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateCard"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"delete":{"operationId":"deleteRateCard","summary":"Delete a rate card","description":"Rate cards that are internal, standard, or have projects cannot be deleted","parameters":[{"schema":{"type":"integer"},"in":"path","name":"rateCardId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updateRateCard","summary":"Update a rate card","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string","nullable":true},"references":{"type":"array","items":{"type":"object","properties":{"referenceName":{"type":"string"},"externalId":{"type":"string"}},"required":["referenceName","externalId"]}},"isBlendedRateCard":{"type":"boolean"},"blendedRate":{"minimum":0,"type":"number","nullable":true},"rateType":{"type":"string","enum":["hours","days"]}}}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"rateCardId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateCard"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/reports/hours/people/{personId}":{"get":{"operationId":"getPersonHoursReport","summary":"Get by-day entries for a person with assignments and actuals","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","format":"date"},"in":"query","name":"startDate","required":false,"description":"Only include entries that start on or after this date. Format: YYYY-MM-DD"},{"schema":{"type":"string","format":"date"},"in":"query","name":"endDate","required":false,"description":"Only include entries that end on or before this date. Format: YYYY-MM-DD"},{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/ReportsHoursPeople"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/reports/hours/projects/{projectId}":{"get":{"operationId":"getProjectHoursReport","summary":"Get by-day entries for a project with assignments and actuals","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","format":"date"},"in":"query","name":"startDate","required":false,"description":"Only include entries that start on or after this date. Format: YYYY-MM-DD"},{"schema":{"type":"string","format":"date"},"in":"query","name":"endDate","required":false,"description":"Only include entries that end on or before this date. Format: YYYY-MM-DD"},{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/ReportsHoursProjects"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/reports/people/{personId}/":{"get":{"operationId":"getPersonReport","summary":"Show metrics (beta)","description":"Get a report for a person containing data from the People Overview Report. This endpoint is available only to Advanced Plan users, and the beta is currently closed. Please contact help@runn.io if you'd like to join the waiting list.","parameters":[{"schema":{"type":"string","format":"date"},"in":"query","name":"startDate","required":false,"description":"The start date for the report. For monthly reports, this must be the first day of the month. For weekly reports, this must be a Monday. For quarterly reports, this must be the first day of the quarter. Format: YYYY-MM-DD"},{"schema":{"type":"string","enum":["monthly","weekly","quarterly"],"default":"monthly"},"in":"query","name":"periodType","required":false,"description":"The time interval at which to split the metrics on the report. A monthly report made in June, for instance, will show revenue for June, July, August, and September."},{"schema":{"type":"integer"},"in":"path","name":"personId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"},"jobTitle":{"type":"string"},"team":{"type":"string"},"employmentType":{"type":"string"},"metrics":{"type":"array","items":{"type":"object","properties":{"startDate":{"type":"string"},"endDate":{"type":"string"},"revenue":{"type":"number"},"projectCosts":{"type":"number"},"businessCosts":{"type":"number"},"totalEffortHours":{"type":"number"},"billableEffortHours":{"type":"number"},"nonBillableEffortHours":{"type":"number"},"totalUtilization":{"type":"number"},"billableUtilization":{"type":"number"},"contractCapacity":{"type":"number"},"effectiveCapacity":{"type":"number"},"overtime":{"type":"number"},"remainingAvailability":{"type":"number"},"timeOffHours":{"type":"number"},"completedTimesheet":{"type":"boolean"}},"required":["startDate","endDate","revenue","projectCosts","businessCosts","totalEffortHours","billableEffortHours","nonBillableEffortHours","totalUtilization","billableUtilization","contractCapacity","effectiveCapacity","overtime","remainingAvailability","timeOffHours","completedTimesheet"]}}},"required":["id","firstName","lastName","email","jobTitle","team","employmentType","metrics"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/reports/projects/{projectId}/":{"get":{"operationId":"getProjectReport","summary":"Show metrics (beta)","description":"Get a report for a project containing data from the Project Overview Report. Tentative projects are included: as in the in-app report, days scheduled before today are treated as not having materialised and are excluded from a tentative project's metrics. This endpoint is available only to Advanced Plan users, and the beta is currently closed. Please contact help@runn.io if you'd like to join the waiting list.","parameters":[{"schema":{"type":"string","format":"date"},"in":"query","name":"startDate","required":false,"description":"The start date for the report. For monthly reports, this must be the first day of the month. For weekly reports, this must be a Monday. For quarterly reports, this must be the first day of the quarter. Format: YYYY-MM-DD"},{"schema":{"type":"string","enum":["monthly","weekly","quarterly"]},"in":"query","name":"periodType","required":false,"description":"The time interval at which to split the metrics on the report. A monthly report made in June, for instance, will show revenue for June, July, August, and September. If not provided, the report will be for the Overview report (all inclusive)."},{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"period":{"type":"string"},"pricingModel":{"type":"string","enum":["tm","fp","nb"]},"budget":{"type":"number","nullable":true},"budgetRemaining":{"type":"number"},"timeBudgetRemaining":{"type":"number","nullable":true},"metrics":{"type":"array","items":{"type":"object","properties":{"startDate":{"type":"string","nullable":true},"endDate":{"type":"string","nullable":true},"timeMaterialsBenchmark":{"type":"number"},"revenue":{"type":"number"},"profit":{"type":"number"},"costs":{"type":"number"},"margin":{"description":"Percentage value of the profit margin","type":"number"},"totalEffortHours":{"type":"number"},"billableEffortHours":{"type":"number"},"nonBillableEffortHours":{"type":"number"}},"required":["startDate","endDate","timeMaterialsBenchmark","revenue","profit","costs","margin","totalEffortHours","billableEffortHours","nonBillableEffortHours"]}}},"required":["id","name","pricingModel","budget","budgetRemaining","timeBudgetRemaining","metrics"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}}}}},"/reports/totals/projects/":{"get":{"operationId":"listProjectTotalsReports","summary":"List totals for projects with assignments and actuals","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":10,"minimum":1,"maximum":10,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"default":false,"type":"boolean"},"in":"query","name":"includeArchived","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/ProjectAggregate"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/reports/totals/projects/{projectId}":{"get":{"operationId":"getProjectTotalsReport","summary":"Show totals for a project with assignments and actuals","parameters":[{"schema":{"type":"integer"},"in":"path","name":"projectId","required":true,"description":"The unique identifier for the project."},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAggregate"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/roles/":{"get":{"operationId":"listRoles","summary":"List roles","parameters":[{"schema":{"type":"string"},"in":"query","name":"name","required":false,"description":"If provided, will only return roles with a name that is a substring of this value (case-insensitive)."},{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["createdAt","updatedAt","id"],"default":"id"},"in":"query","name":"sortBy","required":false,"description":"Field to sort by: createdAt or updatedAt or id"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"order","required":false,"description":"Sort order: asc or desc"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Role"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"post":{"operationId":"createRole","summary":"Create a role","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"},"defaultHourCost":{"minimum":0,"default":0,"type":"number"},"standardRate":{"minimum":0,"default":0,"type":"number"},"references":{"type":"array","items":{"$ref":"#/components/schemas/Reference"}}},"required":["name"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/roles/{roleId}":{"get":{"operationId":"getRole","summary":"Show a role","parameters":[{"schema":{"type":"integer"},"in":"path","name":"roleId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updateRole","summary":"Update a role","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"},"isArchived":{"type":"boolean"},"references":{"type":"array","items":{"$ref":"#/components/schemas/Reference"}},"standardRate":{"minimum":0,"type":"number"},"defaultHourCost":{"minimum":0,"type":"number"}}}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"roleId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/skills/":{"get":{"operationId":"listSkills","summary":"List skills","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["id","createdAt","updatedAt"],"default":"id"},"in":"query","name":"sortBy","required":true},{"schema":{"$ref":"#/components/schemas/SortOrder"},"in":"query","name":"order","required":false},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Skill"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"post":{"operationId":"createSkill","summary":"Create a skill","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"}},"required":["name"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Skill"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/skills/{skillId}":{"get":{"operationId":"getSkill","summary":"Show a skill","parameters":[{"schema":{"type":"integer"},"in":"path","name":"skillId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Skill"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updateSkill","summary":"Update a skill","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"}},"required":["name"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"skillId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Skill"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"delete":{"operationId":"deleteSkill","summary":"Delete a skill","parameters":[{"schema":{"type":"integer"},"in":"path","name":"skillId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","enum":[404]},"error":{"type":"string","enum":["Not Found"]},"message":{"type":"string"}},"required":["statusCode","error","message"]}}}}}}},"/skills/{skillId}/people/":{"get":{"operationId":"listSkillPeople","summary":"List people for a skill","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"skillId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/CollectionPerson"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"post":{"operationId":"createSkillPerson","summary":"Add people to a skill","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"people":{"type":"array","items":{"type":"object","properties":{"personId":{"type":"integer"},"level":{"anyOf":[{"type":"number","enum":[1],"nullable":true},{"type":"number","enum":[2],"nullable":true},{"type":"number","enum":[3],"nullable":true},{"type":"number","enum":[4],"nullable":true}]}},"required":["personId"]}}},"required":["people"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"skillId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Competency"}}},"required":["values"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/teams/":{"get":{"operationId":"listTeams","summary":"List teams","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"type":"string","enum":["createdAt","updatedAt","id"],"default":"id"},"in":"query","name":"sortBy","required":false,"description":"Field to sort by: createdAt or updatedAt or id"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"order","required":false,"description":"Sort order: asc or desc"},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Team"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"post":{"operationId":"createTeam","summary":"Create a team","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"}},"required":["name"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/teams/{teamId}/":{"get":{"operationId":"getTeam","summary":"Show a team","parameters":[{"schema":{"type":"integer"},"in":"path","name":"teamId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updateTeam","summary":"Update a team","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"}},"required":["name"]}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"teamId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"delete":{"operationId":"deleteTeam","summary":"Delete a team","parameters":[{"schema":{"type":"integer"},"in":"path","name":"teamId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/teams/{teamId}/people/":{"get":{"operationId":"listTeamPeople","summary":"List people in a team","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"teamId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/CollectionPerson"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/time-offs/holidays/":{"get":{"operationId":"listHolidays","summary":"List holiday time offs","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["id","createdAt","updatedAt"],"default":"id"},"in":"query","name":"sortBy","required":true},{"schema":{"$ref":"#/components/schemas/SortOrder"},"in":"query","name":"order","required":false},{"schema":{"type":"number"},"in":"query","name":"personId","required":false},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/TimeOff"},{"type":"object","properties":{"holidayId":{"description":"The identifier referencing the holiday associated with the time-off.","type":"integer"}},"required":["holidayId"]}]}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"post":{"operationId":"createHoliday","summary":"Create a holiday time off","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeOffHolidayInput"}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeOff"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/time-offs/holidays/{timeOffId}":{"delete":{"operationId":"deleteHoliday","summary":"Delete a holiday time off","parameters":[{"schema":{"type":"integer"},"in":"path","name":"timeOffId","required":true,"description":"The unique identifier for the time-off."},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"202":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}}}}},"/time-offs/leave/":{"get":{"operationId":"listLeave","summary":"List leave time offs","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["id","createdAt","updatedAt"],"default":"id"},"in":"query","name":"sortBy","required":true},{"schema":{"$ref":"#/components/schemas/SortOrder"},"in":"query","name":"order","required":false},{"schema":{"type":"number"},"in":"query","name":"personId","required":false},{"schema":{"type":"string","format":"date"},"in":"query","name":"startDate","required":false,"description":"Format: YYYY-MM-DD"},{"schema":{"type":"string","format":"date"},"in":"query","name":"endDate","required":false,"description":"Format: YYYY-MM-DD"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/TimeOff"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"post":{"operationId":"createLeave","summary":"Create a leave time off","description":"\n#### Create or Update\n\nThis endpoint may return an existing time off if the new time off is a subset of an existing one.\n\n#### Automatic Merging\n\nIf one or more existing time offs overlap with the specified start/end date, they will be automatically merged.\n\n#### Partial Time Offs\n\nIf the `minutesPerDay` field is provided, automatic merging will only occur if any overlapping time off has the same `minutesPerDay` value. If the `minutesPerDay` value differs, the request will fail.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeOffLeaveInput"}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeOff"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/time-offs/leave/{timeOffId}/":{"get":{"operationId":"getLeave","summary":"Show a leave time off","parameters":[{"schema":{"type":"integer"},"in":"path","name":"timeOffId","required":true,"description":"The unique identifier for the time-off."},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeOff"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"delete":{"operationId":"deleteLeave","summary":"Delete a leave time off","parameters":[{"schema":{"type":"integer"},"in":"path","name":"timeOffId","required":true,"description":"The unique identifier for the time-off."},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"202":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}}}}},"/time-offs/leave/bulk/":{"post":{"operationId":"createLeaveBulk","summary":"Create leave time offs in bulk","description":"\n#### Create or Update\n\nThis endpoint may return existing time offs if the new time off is a subset of an existing one.\n\n#### Automatic Merging\n\nIf one or more existing time offs overlap with the specified start/end date, they will be automatically merged.\n\n#### Partial Time Offs\n\nIf the `minutesPerDay` field is provided, automatic merging will only occur if any overlapping time off has the same `minutesPerDay` value. If the `minutesPerDay` value differs, the request will fail.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"time_offs":{"minItems":1,"maxItems":100,"type":"array","items":{"$ref":"#/components/schemas/TimeOffLeaveInput"}}},"required":["time_offs"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TimeOff"}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"delete":{"operationId":"deleteLeaveBulk","summary":"Delete leave time offs in bulk","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"timeOffIds":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"number"}}},"required":["timeOffIds"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"202":{"description":"Default Response"},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/time-offs/rostered-off/":{"get":{"operationId":"listRosteredOff","summary":"List rostered time offs","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["id","createdAt","updatedAt"],"default":"id"},"in":"query","name":"sortBy","required":true},{"schema":{"$ref":"#/components/schemas/SortOrder"},"in":"query","name":"order","required":false},{"schema":{"type":"number"},"in":"query","name":"personId","required":false},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/TimeOff"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/time-offs/rostered-off/{timeOffId}":{"delete":{"operationId":"deleteRosteredOff","summary":"Delete a rostered time off","parameters":[{"schema":{"type":"integer"},"in":"path","name":"timeOffId","required":true,"description":"The unique identifier for the time-off."},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"202":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}}}}},"/users/":{"get":{"operationId":"listUsers","summary":"List users","description":"See `POST /invitations` for creating users","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/User"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/users/{userId}":{"get":{"operationId":"getUser","summary":"Show a user","parameters":[{"schema":{"type":"integer"},"in":"path","name":"userId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"delete":{"operationId":"deleteUser","summary":"Delete a user","parameters":[{"schema":{"type":"integer"},"in":"path","name":"userId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/users/{userId}/views/":{"get":{"operationId":"listUserViews","summary":"List allocated views for a user","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"integer"},"in":"path","name":"userId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/View"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/users/{userId}/views/{viewId}":{"post":{"operationId":"createUserView","summary":"Allocate a view to a user","parameters":[{"schema":{"type":"integer"},"in":"path","name":"userId","required":true,"description":"The Id of the user to allocate the view to."},{"schema":{"type":"integer"},"in":"path","name":"viewId","required":true,"description":"The Id of the view to allocate to the user."},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conflict"}}}}}}},"/users/{userId}/views/{viewId}/":{"delete":{"operationId":"deleteUserView","summary":"Remove allocated view from user","parameters":[{"schema":{"type":"integer"},"in":"path","name":"userId","required":true},{"schema":{"type":"integer"},"in":"path","name":"viewId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}},"/views/":{"get":{"operationId":"listViews","summary":"List views","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/View"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/workstreams/":{"get":{"operationId":"listWorkstreams","summary":"List workstreams","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false,"description":"Cursor for paginated requests"},{"schema":{"default":50,"minimum":1,"maximum":200,"type":"integer"},"in":"query","name":"limit","required":false,"description":"The number of results per page"},{"schema":{"type":"string","enum":["createdAt","updatedAt","id"],"default":"id"},"in":"query","name":"sortBy","required":false,"description":"Field to sort by: createdAt or updatedAt or id"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"in":"query","name":"order","required":false,"description":"Sort order: asc or desc"},{"schema":{"$ref":"#/components/schemas/ModifiedAfter"},"in":"query","name":"modifiedAfter","required":false},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"values":{"type":"array","items":{"$ref":"#/components/schemas/Workstream"}},"nextCursor":{"type":"string","nullable":true}},"required":["values","nextCursor"]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}},"post":{"operationId":"createWorkstream","summary":"Create a workstream","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"}},"required":["name"]}}}},"parameters":[{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workstream"}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequest"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}}}}},"/workstreams/{workstreamId}/":{"get":{"operationId":"getWorkstream","summary":"Show a workstream","parameters":[{"schema":{"type":"integer"},"in":"path","name":"workstreamId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workstream"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"patch":{"operationId":"updateWorkstream","summary":"Update a workstream","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"minLength":1,"type":"string"},"archived":{"type":"boolean"}}}}}},"parameters":[{"schema":{"type":"integer"},"in":"path","name":"workstreamId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workstream"}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}},"delete":{"operationId":"deleteWorkstream","summary":"Delete a workstream","parameters":[{"schema":{"type":"integer"},"in":"path","name":"workstreamId","required":true},{"schema":{"default":"1.0.0","enum":["1.0.0"]},"in":"header","name":"accept-version","required":true}],"responses":{"204":{"description":"Default Response"},"401":{"description":"Default Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"number","enum":[404]},"error":{"type":"string","enum":["Not Found"]},"message":{"type":"string"}},"required":["statusCode","error","message"]}}}}}}}},"servers":[{"url":"https://api.runn.io","description":"EU Server"},{"url":"https://api.us.runn.io","description":"US Server"}],"security":[{"bearerAuth":[]}],"x-readme":{"proxy-enabled":false}}