{"openapi":"3.1.0","info":{"version":"1.0.0","title":"Untether Labs API"},"servers":[{"url":"https://app.untetherlabs.com/api","description":"Untether Labs Production API","x-speakeasy-server-id":"production"}],"security":[{"BearerAuth":[]}],"components":{"schemas":{"UpdateAppointmentTypeRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2},"length":{"type":"integer","minimum":5,"description":"in minutes"},"allowedRoles":{"type":["array","null"],"items":{"type":"string","format":"uuid"},"description":"Roles which are considered for this appointment type. Null means any role is allowed."},"skillRequirement":{"$ref":"#/components/schemas/NullableSkillRequirement"}}},"NullableSkillRequirement":{"anyOf":[{"$ref":"#/components/schemas/SkillRequirementCondition"},{"$ref":"#/components/schemas/SkillRequirementGroup"},{"type":"null"}]},"SkillRequirementCondition":{"type":"object","properties":{"type":{"type":"string","enum":["equal"]},"skill":{"type":"string","minLength":1},"value":{"type":"string"}},"required":["type","skill","value"]},"SkillRequirementGroup":{"type":"object","properties":{"type":{"type":"string","enum":["and","or"],"x-fern-enum":{"and":{},"or":{}}},"entries":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/SkillRequirementCondition"},{"$ref":"#/components/schemas/SkillRequirementNestedGroup"}]},"minItems":1}},"required":["type","entries"]},"SkillRequirementNestedGroup":{"type":"object","properties":{"type":{"type":"string","enum":["and","or"],"x-fern-enum":{"and":{},"or":{}}},"entries":{"type":"array","items":{"$ref":"#/components/schemas/SkillRequirementCondition"},"minItems":1}},"required":["type","entries"]},"AppointmentType":{"type":"object","properties":{"name":{"type":"string"},"length":{"type":"integer","description":"in minutes"},"allowedRoles":{"type":["array","null"],"items":{"type":"string","format":"uuid"},"description":"Roles which are considered for this appointment type. Null means any role is allowed."},"skillRequirement":{"$ref":"#/components/schemas/NullableSkillRequirement"}},"required":["id","name","length","allowedRoles"],"additionalProperties":{}},"CreateAppointmentTypeRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2},"length":{"type":"integer","minimum":5,"description":"in minutes"},"allowedRoles":{"type":["array","null"],"items":{"type":"string","format":"uuid"},"description":"Roles which are considered for this appointment type. Null means any role is allowed."},"skillRequirement":{"$ref":"#/components/schemas/NullableSkillRequirement"}},"required":["name","length"]},"UpdateAppointmentRequest":{"type":"object","properties":{"createdAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"type":{"type":"string","description":"Appointment type, company specific","example":"video"},"status":{"$ref":"#/components/schemas/AppointmentStatus"},"providerId":{"type":"string","format":"uuid"},"memberId":{"type":["string","null"],"format":"uuid"},"startDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"endDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"actualStartDate":{"type":["string","null"],"example":"2024-11-20T07:43:34+0000"},"actualEndDate":{"type":["string","null"],"example":"2024-11-20T07:43:34+0000"},"location":{"type":["string","null"]},"cancellationDate":{"type":["string","null"],"description":"Only present when status = `cancelled`","example":"2024-11-20T07:43:34+0000"},"cancellationReason":{"type":["string","null"],"description":"Only present when status = `cancelled`"},"version":{"type":"integer","description":"Object version to change, will return a version conflict error if out of date"}}},"AppointmentStatus":{"type":"string","enum":["upcoming","occurred","cancelled","no-show","re-scheduled"],"x-fern-enum":{"upcoming":{},"occurred":{},"cancelled":{},"no-show":{},"re-scheduled":{}}},"AppointmentSlot":{"type":"object","properties":{"score":{"type":"number","description":"Arbitrary number for ranking slots relative to each other. Should not be compared to anything besides the appointments returned by this request."},"appointmentTypeId":{"type":"string"},"startDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"endDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"providerId":{"type":"string"}},"required":["score","appointmentTypeId","startDate","endDate","providerId"]},"SkillRequirement":{"anyOf":[{"$ref":"#/components/schemas/SkillRequirementCondition"},{"$ref":"#/components/schemas/SkillRequirementGroup"}]},"SearchAppointmentSlotsRequest":{"type":"object","properties":{"appointmentTypeId":{"type":"string"},"startDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"endDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"requirements":{"type":"object","properties":{"providerIds":{"type":"array","items":{"type":"string"}},"skill":{"$ref":"#/components/schemas/SkillRequirement"}},"additionalProperties":{},"description":"Hard filters for possible slots"},"preferences":{"type":"object","properties":{"providerIds":{"type":"array","items":{"type":"string"}},"skill":{"$ref":"#/components/schemas/SkillRequirement"}},"additionalProperties":{},"description":"Soft filters for possible slots"},"limit":{"type":"number","default":10,"description":"Maximum number of slots to return"}},"required":["appointmentTypeId","startDate","endDate"]},"SearchAppointmentSlotsResponse":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/AppointmentSlot"}}},"required":["results"]},"Appointment":{"type":"object","properties":{"createdAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"type":{"type":"string","description":"Appointment type, company specific","example":"video"},"status":{"$ref":"#/components/schemas/AppointmentStatus"},"providerId":{"type":"string","format":"uuid"},"memberId":{"type":["string","null"]},"startDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"endDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"actualStartDate":{"type":["string","null"],"example":"2024-11-20T07:43:34+0000"},"actualEndDate":{"type":["string","null"],"example":"2024-11-20T07:43:34+0000"},"location":{"type":["string","null"]},"cancellationDate":{"type":["string","null"],"description":"Only present when status = `cancelled`","example":"2024-11-20T07:43:34+0000"},"cancellationReason":{"type":["string","null"],"description":"Only present when status = `cancelled`"}},"required":["id","createdAt","type","status","providerId","memberId","startDate","endDate","actualStartDate","actualEndDate","location","cancellationDate","cancellationReason"]},"CreateAppointmentRequest":{"type":"object","properties":{"createdAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"type":{"type":"string","description":"Appointment type, company specific","example":"video"},"status":{"$ref":"#/components/schemas/AppointmentStatus","default":"upcoming"},"providerId":{"type":"string","format":"uuid"},"memberId":{"type":["string","null"]},"startDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"endDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"actualStartDate":{"type":["string","null"],"example":"2024-11-20T07:43:34+0000"},"actualEndDate":{"type":["string","null"],"example":"2024-11-20T07:43:34+0000"},"location":{"type":["string","null"]},"cancellationDate":{"type":["string","null"],"description":"Only present when status = `cancelled`","example":"2024-11-20T07:43:34+0000"},"cancellationReason":{"type":["string","null"],"description":"Only present when status = `cancelled`"}},"required":["type","providerId","startDate","endDate"]},"EmploymentType":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["contractor","employee"]},"compensationTimePeriod":{"type":"string","enum":["hourly","salaried"]},"amountWorked":{"type":"string","enum":["part_time","full_time","temporary"]},"createdAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"updatedAt":{"type":"string","example":"2024-11-20T07:43:34+0000"}},"required":["id","name","type","compensationTimePeriod","amountWorked","createdAt","updatedAt"]},"UploadDemandForecastRow":{"type":"object","properties":{"role":{"type":"string","format":"uuid"},"startDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"endDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"demand":{"type":"number","minimum":0}},"required":["role","startDate","endDate","demand"]},"DailyHours":{"type":"array","items":{"$ref":"#/components/schemas/TimeOffDayEntry"},"description":"Represents the number of hours requested off for each day in the time off request.","example":[{"date":"2024-10-06T00:00:00.000Z","duration":0},{"date":"2024-10-07T00:00:00.000Z","duration":8},{"date":"2024-10-08T00:00:00.000Z","duration":8}]},"TimeOffDayEntry":{"type":"object","properties":{"date":{"type":"string","description":"ISO timestamp of the date for the daily hours.","example":"2024-10-06T00:00:00.000Z"},"duration":{"type":"number","description":"Number of hours requested off for this day.","example":8}},"required":["date","duration"],"description":"Represents the hours requested off for a single day."},"UserType":{"type":"string","enum":["user","bot"],"x-fern-enum":{"user":{},"bot":{}}},"EmploymentStatus":{"type":"string","enum":["onboarding","active","dismissed","unmanaged"],"x-fern-enum":{"onboarding":{},"active":{},"dismissed":{},"unmanaged":{}}},"ProviderWithRelations":{"type":"object","properties":{"name":{"type":["string","null"],"example":"Bruce Wayne"},"email":{"type":"string","example":"bruce.wayne@goodhealth.com"},"hireDate":{"type":["string","null"],"example":"2024-11-20T07:43:34+0000"},"status":{"type":"string","enum":["onboarding","active","dismissed","unmanaged"],"x-fern-enum":{"onboarding":{},"active":{},"dismissed":{},"unmanaged":{}},"example":"active"},"teamId":{"type":["string","null"],"format":"uuid"},"licensedRegions":{"type":"array","items":{"type":"string"}},"employmentType":{"type":["string","null"],"format":"uuid"},"enrollments":{"type":"array","items":{"$ref":"#/components/schemas/ProviderEnrollment"}},"skills":{"type":"array","items":{"$ref":"#/components/schemas/ProviderSkill"}},"skillLicensedRegion":{"type":"array","items":{"type":"string"}},"skillEnrollment":{"type":"array","items":{"type":"string"}},"manager":{"type":["object","null"],"properties":{"name":{"type":["string","null"]}},"required":["id","name"]},"team":{"type":["object","null"],"properties":{"name":{"type":"string"},"shorthandName":{"type":["string","null"]}},"required":["id","name","shorthandName"]}},"required":["id","name","email","hireDate","status","teamId","licensedRegions","employmentType","importedId","lastSyncedAt","personalInfo","dailyHours","minWeeklyHours","maxWeeklyHours","region","nationalProviderIdentifier","additionalInfo","enrollments","skills","manager","team"]},"ProviderEnrollment":{"type":"object","properties":{"name":{"type":"string"}},"required":["id","name"]},"ProviderSkill":{"type":"object","properties":{"skillName":{"type":"string"},"values":{"type":"array","items":{"type":"string"}}},"required":["skillName","values"]},"Provider":{"type":"object","properties":{"name":{"type":["string","null"],"example":"Bruce Wayne"},"email":{"type":"string","example":"bruce.wayne@goodhealth.com"},"hireDate":{"type":["string","null"],"example":"2024-11-20T07:43:34+0000"},"status":{"type":"string","enum":["onboarding","active","dismissed","unmanaged"],"x-fern-enum":{"onboarding":{},"active":{},"dismissed":{},"unmanaged":{}},"example":"active"},"teamId":{"type":["string","null"],"format":"uuid"},"licensedRegions":{"type":"array","items":{"type":"string"}},"employmentType":{"type":["string","null"],"format":"uuid"}},"required":["id","name","email","hireDate","status","teamId","licensedRegions","employmentType","importedId","lastSyncedAt","personalInfo","dailyHours","minWeeklyHours","maxWeeklyHours","region","nationalProviderIdentifier","additionalInfo"]},"ProvidersCountResponse":{"type":"object","properties":{"count":{"type":"number"}},"required":["count"]},"CreateReportRunRequest":{"type":"object","properties":{"reportId":{"type":"string","example":"payroll-report"},"parameters":{"type":"object","additionalProperties":{},"example":{"startDate":"2025-01-01","endDate":"2025-01-31"}}},"required":["reportId"]},"ReportDownload":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"expiresAt":{"type":"string","example":"2024-11-20T07:43:34+0000"}},"required":["url","expiresAt"]},"ReportRun":{"type":"object","properties":{"reportId":{"type":"string","example":"payroll-report"},"createdAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"createdBy":{"$ref":"#/components/schemas/ReportUser"},"status":{"$ref":"#/components/schemas/ReportStatus"},"file":{"type":"object","properties":{"name":{"type":"string","example":"payroll-2025-01-01.csv"},"mediaType":{"type":"string","example":"text/csv"},"sizeBytes":{"type":"number","minimum":0}},"required":["name","mediaType","sizeBytes"],"description":"Only present if the report has been completed."}},"required":["id","reportId","createdAt","createdBy","status"]},"ReportUser":{"type":"object","properties":{"name":{"type":"string","example":"Bruce Wayne"}},"required":["id","name"]},"ReportStatus":{"type":"string","enum":["running","completed","failed"],"x-fern-enum":{"running":{},"completed":{},"failed":{}}},"User":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/UserType"},"name":{"type":"string"},"email":{"type":"string"},"status":{"$ref":"#/components/schemas/EmploymentStatus"},"isAdmin":{"type":"boolean"}},"required":["id","type","name","email","status","isAdmin"]},"Role":{"type":"object","properties":{"createdAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"name":{"type":"string","example":"Care Coordinator"},"team":{"type":"string","format":"uuid"},"teamName":{"type":"string"},"hexColor":{"type":"string","example":"#6941c6"}},"required":["id","createdAt","name","team","teamName","hexColor"]},"UpdateLabelRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"example":"Video"},"description":{"type":["string","null"],"example":"Shift segment time is only available for video calls"},"color":{"type":"string","example":"#6941c6"}}},"CreateLabelRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"example":"Video"},"description":{"type":"string","example":"Shift segment time is only available for video calls"},"color":{"type":"string","example":"#6941c6"}},"required":["name"]},"Label":{"type":"object","properties":{"createdAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"updatedAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"name":{"type":"string","example":"Video"},"description":{"type":["string","null"],"example":"Shift segment time is only available for video calls"},"color":{"type":"string","example":"#6941c6"}},"required":["id","createdAt","updatedAt","name","description","color"]},"PayCode":{"type":"object","properties":{"name":{"type":"string","example":"Overtime"},"shorthandName":{"type":"string","example":"OT"},"hexColor":{"type":"string","example":"#f97316"},"type":{"type":"string","enum":["hours","days","money"],"x-fern-enum":{"hours":{},"days":{},"money":{}}},"value":{"type":"number","example":1.5}},"required":["id","name","shorthandName","hexColor","type","value"]},"Shift":{"type":"object","properties":{"createdAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"version":{"type":"number","description":"Version number for optimistic locking. Include this when updating to detect conflicts."},"provider":{"type":["string","null"],"format":"uuid","description":"The provider of the shift. If null, the shift is an open shift."},"providerName":{"type":["string","null"],"description":"The display name of the provider. Only populated when the request opts in via includeDisplayNames."},"startDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"endDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"segments":{"type":"array","items":{"$ref":"#/components/schemas/ShiftSegment"},"description":"The segments that make up a shift, ordered by startDate."},"payCodes":{"type":"array","items":{"$ref":"#/components/schemas/ShiftPayCode"},"maxItems":1},"team":{"type":["string","null"],"format":"uuid","description":"The team that the shift is associated with."},"note":{"type":["string","null"],"description":"A note about the shift. Visible to providers."},"isCallout":{"type":"boolean","description":"Whether the shift is marked as a callout. Callout shifts are hidden from reads unless an endpoint explicitly includes them."},"workRuleOverride":{"type":["string","null"],"format":"uuid"}},"required":["id","createdAt","provider","startDate","endDate","segments","team","note","isCallout","workRuleOverride"]},"ShiftSegment":{"type":"object","properties":{"importedId":{"type":["string","null"],"description":"If a segment was created in an external system, this is the ID of the segment in that system."},"createdAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"role":{"type":["string","null"],"format":"uuid","description":"The role of the shift. Can be null if the shift is pulled from an external system."},"roleName":{"type":["string","null"],"description":"The display name of the segment's role. Only populated when the request opts in via includeDisplayNames."},"roleColor":{"type":["string","null"],"description":"The hex color of the segment's role. Only populated when the request opts in via includeDisplayNames."},"roleImportedId":{"type":"string","description":"*DEPRECATED* The ID of the role in the external system. Once all roles are migrated to the system, this field will be removed."},"additionalInfo":{"description":"*DEPRECATED* Additional information about the segment."},"isBreak":{"type":"boolean","description":"Used to denote whether or not the provider will be on break during this segment.","example":false},"isOnCall":{"type":"boolean","example":false},"type":{"type":"string","enum":["working","paid_break","unpaid_break","on_call"],"x-fern-enum":{"working":{"description":"Regular working segment"},"paid_break":{"description":"Paid break segment"},"unpaid_break":{"description":"Unpaid break segment"},"on_call":{"description":"On-call segment"}},"description":"The type of the segment."},"startDate":{"type":"string","description":"The timestamp of when the shift starts.","example":"2024-11-20T07:43:34+0000"},"endDate":{"type":"string","description":"The timestamp of when the shift ends.","example":"2024-11-20T07:43:34+0000"},"skillRequirement":{"$ref":"#/components/schemas/NullableSkillRequirement"},"labels":{"type":"array","items":{"type":"string"},"description":"The label IDs associated with this shift segment."}},"required":["id","importedId","createdAt","role","isBreak","isOnCall","type","startDate","endDate","labels"]},"ShiftPayCode":{"type":"object","properties":{"payCodeId":{"type":"string","format":"uuid","description":"The pay code ID associated with this shift."},"value":{"type":"number","description":"Only present for variable pay codes. The value of the pay code for this shift."}},"required":["payCodeId"]},"Team":{"type":"object","properties":{"createdAt":{"type":"string","description":"The timestamp of when the team was created.","example":"2024-11-20T07:43:34+0000"},"name":{"type":"string","description":"The name of the team."},"shorthandName":{"type":["string","null"],"description":"The shorthand name of the team."}},"required":["id","createdAt","name"]},"AccrualUnit":{"type":"string","enum":["hours","days"],"x-fern-enum":{"hours":{},"days":{}}},"TimeOffPolicy":{"type":"object","properties":{"createdAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"type":{"type":"string","enum":["bereavement","floating-holiday","holiday-pay","jury-duty","learning-and-development","paid-time-off","vacation","parental-leave","personal-day","sick","volunteer","weather","wellness","flex-day","marriage-code","unpaid-day","absence","custom"],"x-fern-enum":{"bereavement":{},"floating-holiday":{},"holiday-pay":{},"jury-duty":{},"learning-and-development":{},"paid-time-off":{},"vacation":{},"parental-leave":{},"personal-day":{},"sick":{},"volunteer":{},"weather":{},"wellness":{},"flex-day":{},"marriage-code":{},"unpaid-day":{},"absence":{},"custom":{}},"example":"vacation"},"name":{"type":"string","example":"QC Vacation"},"description":{"type":["string","null"],"example":"Vacation policy for Quebec-based employees."},"accrualUnit":{"anyOf":[{"$ref":"#/components/schemas/AccrualUnit"},{"type":"null"}]},"properties":{},"payCodeId":{"type":["string","null"],"format":"uuid","description":"The pay code for which associated time will be paid out."},"payCode":{"anyOf":[{"$ref":"#/components/schemas/PayCode"},{"type":"null"}]}},"required":["id","createdAt","type","name","description","accrualUnit","payCodeId"]},"TimeOffRequest":{"type":"object","properties":{"createdAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"status":{"$ref":"#/components/schemas/TimeOffRequestStatus"},"startDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"endDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"policyId":{"type":"string","format":"uuid"},"policy":{"$ref":"#/components/schemas/TimeOffPolicy"},"providerId":{"type":"string","format":"uuid"},"provider":{"$ref":"#/components/schemas/Provider"},"note":{"type":["string","null"],"example":"Going on vacation with my family."},"dailyHours":{"$ref":"#/components/schemas/DailyHours"},"paidHours":{"type":"number","description":"The total number of hours that will be paid out for this time off request.","example":32},"rejectedById":{"type":"string","format":"uuid","description":"Only present for rejected time off requests, the user who rejected the request."},"rejectedBy":{"$ref":"#/components/schemas/User"},"rejectionReason":{"type":["string","null"],"description":"Only present for rejected time off requests, reason may be null for unspecified."},"syncError":{"type":["object","null"],"properties":{"status":{"type":"string","enum":["success","failed"],"x-fern-enum":{"success":{},"failed":{}}},"message":{"type":["string","null"]},"createdAt":{"type":"string","example":"2024-11-20T07:43:34+0000"}},"required":["status","message","createdAt"],"description":"Present for pending_sync requests, contains the latest Rippling sync status and error message."},"conflictResolution":{"type":["string","null"],"enum":["delete","deleteWithOpen","callout","calloutWithOpen","keep","keepWithOpen",null],"x-fern-enum":{"delete":{},"deleteWithOpen":{},"callout":{},"calloutWithOpen":{},"keep":{},"keepWithOpen":{}},"description":"The shift conflict resolution strategy selected when this request was approved."},"isFullDay":{"type":["boolean","null"],"description":"Whether the request blocks whole calendar days rather than the dailyHours windows. Null for requests created before this field existed; treated as full-day when the policy accrues in days."}},"required":["id","createdAt","status","startDate","endDate","policyId","providerId","note","dailyHours","paidHours"]},"TimeOffRequestStatus":{"type":"string","enum":["pending","approved","rejected","cancelled","pending_sync","sync_failed"],"x-fern-enum":{"pending":{},"approved":{},"rejected":{},"cancelled":{},"pending_sync":{},"sync_failed":{}},"example":"approved"},"TimeOffRequestsCountResponse":{"type":"object","properties":{"count":{"type":"number"}},"required":["count"]},"Timecard":{"type":"object","properties":{"punches":{"type":"array","items":{"$ref":"#/components/schemas/TimecardPunch"}},"nextActions":{"type":"array","items":{"type":"string"}}},"required":["punches","nextActions"]},"TimecardPunch":{"type":"object","properties":{"timecardId":{"type":"string","format":"uuid"},"providerId":{"type":"string","format":"uuid"},"generated":{"type":"boolean","default":false},"createdAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"updatedAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"action":{"type":"string"},"state":{"$ref":"#/components/schemas/TimecardPunchState"},"time":{"type":"string","example":"2024-11-20T07:43:34+0000"},"providerNote":{"type":["string","null"],"example":"Felt sick, had to leave early."},"adminNote":{"type":["string","null"],"example":"Adjusted to schedule."}},"required":["id","timecardId","providerId","createdAt","updatedAt","action","state","time","providerNote","adminNote"]},"TimecardPunchState":{"type":"string","enum":["pending","approved","rejected"],"x-fern-enum":{"pending":{},"approved":{},"rejected":{}}},"CreateTimecardPunchRequest":{"type":"object","properties":{"provider":{"type":"string","format":"uuid"},"action":{"type":"string"},"time":{"type":"string","description":"Punch timestamp, or now if not provided","example":"2024-11-20T07:43:34+0000"},"state":{"$ref":"#/components/schemas/TimecardPunchState","default":"pending"},"providerNote":{"type":"string","example":"Felt sick, had to leave early."},"adminNote":{"type":"string","example":"Adjusted to schedule."}},"required":["provider","action"]},"TimesheetWarning":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/TimesheetWarningType"},"punchId":{"type":"string","format":"uuid"}},"required":["type","punchId"]},"TimesheetWarningType":{"type":"string","enum":["clock_in_early","clock_out_early","clock_in_late","clock_out_late","missing_shift"],"x-fern-enum":{"clock_in_early":{},"clock_out_early":{},"clock_in_late":{},"clock_out_late":{},"missing_shift":{}}},"TimesheetError":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/TimesheetErrorType"},"shiftId":{"type":"string","format":"uuid"},"timecardId":{"type":"string","format":"uuid"}},"required":["type"]},"TimesheetErrorType":{"type":"string","enum":["no_clock_out","invalid_shift","missing_timecard","missing_pay_period_template"],"x-fern-enum":{"no_clock_out":{},"invalid_shift":{},"missing_timecard":{},"missing_pay_period_template":{}}},"PayCodeTotal":{"type":"object","properties":{"payCodeId":{"type":"string","format":"uuid"},"roleId":{"type":["string","null"],"format":"uuid","description":"The role worked during this time, or null for non-working time."},"scheduled":{"type":"number","description":"The number of minutes scheduled for this pay code and role."},"actual":{"type":"number","description":"The number of minutes actually worked for this pay code and role."}},"required":["payCodeId","roleId","scheduled","actual"]},"PaySegment":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/PaySegmentType"},"itemId":{"type":["string","null"]},"shiftId":{"type":["string","null"]},"timecardId":{"type":["string","null"]},"startDate":{"type":"string","description":"The start date of the pay segment.","example":"2024-11-20T07:43:34+0000"},"endDate":{"type":"string","description":"The end date of the pay segment.","example":"2024-11-20T07:43:34+0000"},"payCodes":{"type":"array","items":{"type":"string"}},"overtime":{"type":"array","items":{"type":"string"}},"timeRanges":{"type":"array","items":{"type":"string"}},"workRuleOverride":{"type":["string","null"]},"role":{"type":["string","null"]}},"required":["id","type","startDate","endDate","payCodes","overtime","timeRanges"]},"PaySegmentType":{"type":"string","enum":["paid","unpaid","on_call"],"x-fern-enum":{"paid":{},"unpaid":{},"on_call":{}}},"TimeRange":{"type":"object","properties":{"startDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"endDate":{"type":"string","example":"2024-11-20T07:43:34+0000"}},"required":["startDate","endDate"]},"Timesheet":{"type":"object","properties":{"providerId":{"type":"string","format":"uuid"},"provider":{"$ref":"#/components/schemas/Provider"},"startDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"endDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"payPeriodId":{"type":["string","null"],"format":"uuid","description":"The matching pay period, or null if the range does not align to a single pay period."},"scheduledShifts":{"type":"array","items":{"$ref":"#/components/schemas/Shift"}},"punches":{"type":"array","items":{"$ref":"#/components/schemas/TimecardPunch"}},"paySegments":{"type":"array","items":{"$ref":"#/components/schemas/PaySegment"}},"scheduledPaySegments":{"type":"array","items":{"$ref":"#/components/schemas/PaySegment"}},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/TimesheetWarning"}},"errors":{"type":"array","items":{"$ref":"#/components/schemas/TimesheetError"}},"approval":{"$ref":"#/components/schemas/TimesheetApproval"},"signOff":{"$ref":"#/components/schemas/TimesheetSignOff"},"historicalCorrections":{"type":"array","items":{"$ref":"#/components/schemas/HistoricalCorrection"}},"totals":{"type":"array","items":{"$ref":"#/components/schemas/PayCodeTotal"}},"historicalCorrectionTotals":{"type":"array","items":{"$ref":"#/components/schemas/PayCodeTotal"}}},"required":["providerId","startDate","endDate","payPeriodId","scheduledShifts","punches"]},"TimesheetApproval":{"type":"object","properties":{"approved":{"type":"boolean"},"ranges":{"type":"array","items":{"$ref":"#/components/schemas/TimeRange"}}},"required":["approved","ranges"]},"TimesheetSignOff":{"type":"object","properties":{"signedOff":{"type":"boolean"},"ranges":{"type":"array","items":{"$ref":"#/components/schemas/TimeRange"}}},"required":["signedOff","ranges"]},"HistoricalCorrection":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/HistoricalCorrectionStatus"},"changes":{"type":"array","items":{"$ref":"#/components/schemas/HistoricalCorrectionChange"}},"payCodeDifference":{"type":"array","items":{"$ref":"#/components/schemas/HistoricalCorrectionPayCodeDifference"}}},"required":["id","status","changes","payCodeDifference"]},"HistoricalCorrectionStatus":{"type":"string","enum":["pending","completed"],"x-fern-enum":{"pending":{"description":"The historical correction is still being processed. `payCodeDifference` will always be empty."},"completed":{}}},"HistoricalCorrectionChange":{"type":"object","properties":{"createdAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"actor":{"type":["object","null"],"properties":{"name":{"type":"string"}},"required":["id","name"],"description":"A null actor indicates a system-generated change"},"note":{"type":"string"},"auditLogReference":{"type":["string","null"],"format":"uuid","description":"A null audit log reference indicates a manually triggered historical correction"},"auditLogAction":{"type":["string","null"],"description":"The action associated with the audit log reference. Will be null if there is no audit log reference."}},"required":["id","createdAt","actor","auditLogReference","auditLogAction"]},"HistoricalCorrectionPayCodeDifference":{"type":"object","properties":{"date":{"type":"string","description":"Always represents the start of the day.","example":"2024-11-20T07:43:34+0000"},"payCode":{"type":"string","format":"uuid"},"role":{"type":["string","null"]},"value":{"type":"number","description":"The difference in **minutes** (may be negative)"}},"required":["date","payCode","role","value"]},"GetAppointmentTypesResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/AppointmentType"}},"cursor":{"type":"string"}},"required":["items"]},"GetAppointmentsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Appointment"}},"cursor":{"type":"string"}},"required":["items"]},"GetEmploymentTypesResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/EmploymentType"}},"cursor":{"type":"string"}},"required":["items"]},"UploadDemandForecastRequest":{"type":"array","items":{"$ref":"#/components/schemas/UploadDemandForecastRow"}},"GetProvidersResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ProviderWithRelations"}},"cursor":{"type":"string"}},"required":["items"]},"GetReportRunResponse":{"allOf":[{"$ref":"#/components/schemas/ReportRun"},{"type":"object","properties":{"download":{"$ref":"#/components/schemas/ReportDownload"}}}]},"GetReportRunsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ReportRun"}},"cursor":{"type":"string"}},"required":["items"]},"GetRolesResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Role"}},"cursor":{"type":"string"}},"required":["items"]},"DeleteLabelResponse":{"type":"object","properties":{"createdAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"updatedAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"name":{"type":"string","example":"Video"},"description":{"type":["string","null"],"example":"Shift segment time is only available for video calls"},"color":{"type":"string","example":"#6941c6"}},"required":["id","createdAt","updatedAt","name","description","color"],"description":"Returns the deleted label"},"GetLabelsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Label"}},"cursor":{"type":"string"}},"required":["items"]},"GetPayCodesResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PayCode"}},"cursor":{"type":"string"}},"required":["items"]},"GetShiftsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Shift"}},"cursor":{"type":"string"}},"required":["items"]},"GetTeamsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Team"}},"cursor":{"type":"string"}},"required":["items"]},"GetPoliciesResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/TimeOffPolicy"}},"cursor":{"type":"string"}},"required":["items"]},"GetRequestsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/TimeOffRequest"}},"cursor":{"type":"string"}},"required":["items"]},"GetTimesheetsResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Timesheet"}},"cursor":{"type":"string"}},"required":["items"]},"GetUsersResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/User"}},"cursor":{"type":"string"}},"required":["items"]}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer"}}},"paths":{"/v1/appointment-types/{appointmentTypeId}":{"delete":{"operationId":"v1_appointment-types__appointmentTypeId__archiveAppointmentType","summary":"Archive Appointment Type","description":"","x-speakeasy-name-override":"archiveAppointmentType","x-speakeasy-group":"v1.appointment-types","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"appointmentTypeId","in":"path"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppointmentType"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#appointment-type-not-found"]},"title":{"type":"string","example":"A specified appointmenttype does not exist in the system."}},"required":["type","title"]}],"title":"AppointmentType Not Found"}]}}}}}},"patch":{"operationId":"v1_appointment-types__appointmentTypeId__updateAppointmentType","summary":"Update Appointment Type","description":"","x-speakeasy-name-override":"updateAppointmentType","x-speakeasy-group":"v1.appointment-types","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"appointmentTypeId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAppointmentTypeRequest"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppointmentType"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#appointment-type-not-found"]},"title":{"type":"string","example":"A specified appointmenttype does not exist in the system."}},"required":["type","title"]}],"title":"AppointmentType Not Found"}]}}}}}}},"/v1/appointment-types":{"post":{"operationId":"v1_appointment-types_createAppointmentType","summary":"Create Appointment Type","description":"","x-speakeasy-name-override":"createAppointmentType","x-speakeasy-group":"v1.appointment-types","x-stability-level":"stable","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAppointmentTypeRequest"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppointmentType"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}}}},"get":{"operationId":"v1_appointment-types_getAppointmentTypes","summary":"Get Appointment Types","description":"","x-speakeasy-name-override":"getAppointmentTypes","x-speakeasy-group":"v1.appointment-types","x-speakeasy-pagination":{"type":"cursor","inputs":[{"type":"cursor","name":"cursor","in":"parameters"}],"outputs":{"nextCursor":"$.cursor","results":"$.items"}},"x-stability-level":"stable","parameters":[{"schema":{"type":"number","minimum":1,"maximum":200,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAppointmentTypesResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}}}}},"/v1/appointments/{appointmentId}":{"delete":{"operationId":"v1_appointments__appointmentId__deleteAppointment","summary":"Delete Appointment","description":"","x-speakeasy-name-override":"deleteAppointment","x-speakeasy-group":"v1.appointments","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"appointmentId","in":"path"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Appointment"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#appointment-not-found"]},"title":{"type":"string","example":"A specified appointment does not exist in the system."}},"required":["type","title"]}],"title":"Appointment Not Found"}]}}}}}},"get":{"operationId":"v1_appointments__appointmentId__getAppointment","summary":"Get Appointment","description":"","x-speakeasy-name-override":"getAppointment","x-speakeasy-group":"v1.appointments","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"appointmentId","in":"path"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Appointment"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#appointment-not-found"]},"title":{"type":"string","example":"A specified appointment does not exist in the system."}},"required":["type","title"]}],"title":"Appointment Not Found"}]}}}}}},"patch":{"operationId":"v1_appointments__appointmentId__updateAppointment","summary":"Update Appointment","description":"","x-speakeasy-name-override":"updateAppointment","x-speakeasy-group":"v1.appointments","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"appointmentId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAppointmentRequest"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Appointment"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#appointment-not-found"]},"title":{"type":"string","example":"A specified appointment does not exist in the system."}},"required":["type","title"]}],"title":"Appointment Not Found"}]}}}}}}},"/v1/appointments":{"post":{"operationId":"v1_appointments_createAppointment","summary":"Create Appointment","description":"","x-speakeasy-name-override":"createAppointment","x-speakeasy-group":"v1.appointments","x-stability-level":"stable","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAppointmentRequest"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Appointment"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}}}},"get":{"operationId":"v1_appointments_getAppointments","summary":"Get Appointments","description":"","x-speakeasy-name-override":"getAppointments","x-speakeasy-group":"v1.appointments","x-speakeasy-pagination":{"type":"cursor","inputs":[{"type":"cursor","name":"cursor","in":"parameters"}],"outputs":{"nextCursor":"$.cursor","results":"$.items"}},"x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":false,"name":"teamId","in":"query"},{"schema":{"type":"string","format":"uuid"},"required":false,"name":"providerId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"memberId","in":"query"},{"schema":{"type":"string","example":"2024-11-20T07:43:34+0000"},"required":false,"name":"startDate","in":"query"},{"schema":{"type":"string","example":"2024-11-20T07:43:34+0000"},"required":false,"name":"endDate","in":"query"},{"schema":{"$ref":"#/components/schemas/AppointmentStatus"},"required":false,"name":"status","in":"query"},{"schema":{"type":"string"},"required":false,"name":"type","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAppointmentsResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"},{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#negative-range"]},"title":{"type":"string","example":"Time range end date must come after start date."}},"required":["type","title"]}],"title":"Negative Range"}]}}}}}}},"/v1/appointments/slots":{"post":{"operationId":"v1_appointments_slots_searchAppointmentSlots","summary":"Search Appointment Slots","description":"<Warning>This is a beta endpoint. Breaking changes may occur without notice, use at your own risk.</Warning>\n\nGenerate appointment slot suggestions for a set of available providers in the given time range.\n\nSlots are based on working-type shifts in the period, filtered & ranked by the given requirements/preferences.\n\nOn ranking,\n* Skills are ranked by the closest match. For example, a skill requirement for specialty X will rank providers\n  with only specialty X highly, and providers with multiple specialties including X lower.\n* Slots which do not create unusable gaps are preferred.\n\nSkills are the primary mechanism for selecting providers, see [Using Skills](/guides/skills) for more information.","x-speakeasy-name-override":"searchAppointmentSlots","x-speakeasy-group":"v1.appointments","x-stability-level":"alpha","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchAppointmentSlotsRequest"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchAppointmentSlotsResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#appointment-type-not-found"]},"title":{"type":"string","example":"A specified appointmenttype does not exist in the system."}},"required":["type","title"]}],"title":"AppointmentType Not Found"}]}}}}}}},"/v1/employment-types/{id}":{"get":{"operationId":"v1_employment-types__id__getEmploymentType","summary":"Get Employment Type","description":"Retrieve a single employment type by ID","x-speakeasy-name-override":"getEmploymentType","x-speakeasy-group":"v1.employment-types","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmploymentType"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}}}}},"/v1/employment-types":{"get":{"operationId":"v1_employment-types_getEmploymentTypes","summary":"Get Employment Types","description":"Retrieve all employment types","x-speakeasy-name-override":"getEmploymentTypes","x-speakeasy-group":"v1.employment-types","x-speakeasy-pagination":{"type":"cursor","inputs":[{"type":"cursor","name":"cursor","in":"parameters"}],"outputs":{"nextCursor":"$.cursor","results":"$.items"}},"x-stability-level":"stable","parameters":[{"schema":{"type":"number","minimum":1,"maximum":200,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetEmploymentTypesResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}}}}},"/v1/forecasting/demand":{"post":{"operationId":"v1_forecasting_demand_uploadDemandForecast","summary":"Upload Demand Forecast","description":"Upload demand forecasts for one or more roles.\n\nDemand is the number of staff needed during a 15-minute window, the same\nstaffing level consumed by the autoscheduler and coverage metrics. A row\nspanning more than 15 minutes applies its demand to every 15-minute window\nin its range: a day-long row with a demand of 4 means 4 staff are needed\nthroughout that day.\n\nstartDate and endDate must be ISO-8601 strings with an explicit timezone\noffset and fall on 15-minute boundaries (:00, :15, :30 or :45). Rows may\nbe supplied in any order, but rows for the same role must not overlap.\nA single request may create at most 50000\n15-minute windows (a full year for one role is roughly 35,000).\n\nAny existing forecast data between each role's first startDate and last\nendDate is replaced.\n\nThe body may be sent as application/json, or as text/csv with a header\nrow containing the columns: role, startDate, endDate, demand.","x-speakeasy-name-override":"uploadDemandForecast","x-speakeasy-group":"v1.forecasting","x-stability-level":"stable","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadDemandForecastRequest"}},"text/csv":{"schema":{"type":"string","description":"CSV text with a header row containing the columns: role, startDate, endDate, demand."}}}},"responses":{"201":{"description":""},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#role-not-found"]},"title":{"type":"string","example":"A specified role does not exist in the system."}},"required":["type","title"]}],"title":"Role Not Found"}]}}}}}}},"/v1/providers/count":{"get":{"operationId":"v1_providers_count_getProvidersCount","summary":"Get Providers Count","description":"Retrieve the total provider count for the current filters","x-speakeasy-name-override":"getProvidersCount","x-speakeasy-group":"v1.providers","x-stability-level":"stable","parameters":[{"schema":{"anyOf":[{"$ref":"#/components/schemas/EmploymentStatus"},{"type":"array","items":{"$ref":"#/components/schemas/EmploymentStatus"}}],"default":["onboarding","active"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","description":"Filter by (case-insensitive) email, * wildcards allowed"},"required":false,"description":"Filter by (case-insensitive) email, * wildcards allowed","name":"email","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"array","items":{"type":"string","format":"uuid"}}],"description":"Filter providers by team ID(s)"},"required":false,"description":"Filter providers by team ID(s)","name":"teamId","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include enrollment data for each provider"},"required":false,"description":"Include enrollment data for each provider","name":"includeEnrollments","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include skills data for each provider"},"required":false,"description":"Include skills data for each provider","name":"includeSkills","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include manager data for each provider"},"required":false,"description":"Include manager data for each provider","name":"includeManager","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include team data for each provider"},"required":false,"description":"Include team data for each provider","name":"includeTeam","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvidersCountResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}}}}},"/v1/providers":{"get":{"operationId":"v1_providers_getProviders","summary":"Get Providers","description":"Retrieve providers with optional related data and pagination","x-speakeasy-name-override":"getProviders","x-speakeasy-group":"v1.providers","x-speakeasy-pagination":{"type":"cursor","inputs":[{"type":"cursor","name":"cursor","in":"parameters"}],"outputs":{"nextCursor":"$.cursor","results":"$.items"}},"x-stability-level":"stable","parameters":[{"schema":{"anyOf":[{"$ref":"#/components/schemas/EmploymentStatus"},{"type":"array","items":{"$ref":"#/components/schemas/EmploymentStatus"}}],"default":["onboarding","active"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","description":"Filter by (case-insensitive) email, * wildcards allowed"},"required":false,"description":"Filter by (case-insensitive) email, * wildcards allowed","name":"email","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"array","items":{"type":"string","format":"uuid"}}],"description":"Filter providers by team ID(s)"},"required":false,"description":"Filter providers by team ID(s)","name":"teamId","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include enrollment data for each provider"},"required":false,"description":"Include enrollment data for each provider","name":"includeEnrollments","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include skills data for each provider"},"required":false,"description":"Include skills data for each provider","name":"includeSkills","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include manager data for each provider"},"required":false,"description":"Include manager data for each provider","name":"includeManager","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Include team data for each provider"},"required":false,"description":"Include team data for each provider","name":"includeTeam","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetProvidersResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}}}}},"/v1/reporting/reports/runs/{reportRunId}":{"get":{"operationId":"v1_reporting_reports_runs__reportRunId__getReportRun","summary":"Get Report Run","description":"<Warning>This is a beta endpoint. Breaking changes may occur without notice, use at your own risk.</Warning>\n\nRetrieve metadata about a specific report run, including a temporary download link if the report has been completed.\n\nThe download link will expire after one hour, at the given `expiresAt` time.","x-speakeasy-name-override":"getReportRun","x-speakeasy-group":"v1.reporting","x-stability-level":"alpha","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"reportRunId","in":"path"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetReportRunResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#report-run-not-found"]},"title":{"type":"string","example":"A specified report run does not exist in the system."}},"required":["type","title"]}],"title":"Report Run Not Found"}]}}}}}}},"/v1/reporting/reports/runs":{"post":{"operationId":"v1_reporting_reports_runs_createReportRun","summary":"Create Report Run","description":"<Warning>This is a beta endpoint. Breaking changes may occur without notice, use at your own risk.</Warning>\n\nCreate a new report run for the given report ID.\n\nThe report parameters depend on the report being executed,\nsee the report documentation for more info.\n\nReports are generated asynchronously. The returned object\nwill always be marked as `running`, you will have to\nperiodically poll for status changes.","x-speakeasy-name-override":"createReportRun","x-speakeasy-group":"v1.reporting","x-stability-level":"alpha","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReportRunRequest"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportRun"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"},{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#report-parameter-validation"]},"title":{"type":"string","example":"A report parameter did not pass validation, see message."}},"required":["message","type","title"]}],"title":"Report Parameter Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#user-not-found"]},"title":{"type":"string","example":"A specified user does not exist in the system."}},"required":["type","title"]}],"title":"User Not Found"},{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#report-not-found"]},"title":{"type":"string","example":"A specified report does not exist in the system."}},"required":["type","title"]}],"title":"Report Not Found"}]}}}}}},"get":{"operationId":"v1_reporting_reports_runs_getReportRuns","summary":"Get Report Runs","description":"<Warning>This is a beta endpoint. Breaking changes may occur without notice, use at your own risk.</Warning>\n\nSearch through previously executed report runs.","x-speakeasy-name-override":"getReportRuns","x-speakeasy-group":"v1.reporting","x-speakeasy-pagination":{"type":"cursor","inputs":[{"type":"cursor","name":"cursor","in":"parameters"}],"outputs":{"nextCursor":"$.cursor","results":"$.items"}},"x-stability-level":"alpha","parameters":[{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ReportStatus"},"default":["running","completed","failed"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","format":"uuid","description":"Filter to only runs generated by this user"},"required":false,"description":"Filter to only runs generated by this user","name":"user","in":"query"},{"schema":{"type":"string","example":"employee-contact-info"},"required":false,"name":"report","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetReportRunsResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}}}}},"/v1/roles/{roleId}":{"get":{"operationId":"v1_roles__roleId__getRole","summary":"Get Role","description":"Fetch Role","x-speakeasy-name-override":"getRole","x-speakeasy-group":"v1.roles","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"roleId","in":"path"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Role"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#role-not-found"]},"title":{"type":"string","example":"A specified role does not exist in the system."}},"required":["type","title"]}],"title":"Role Not Found"}]}}}}}}},"/v1/roles":{"get":{"operationId":"v1_roles_getRoles","summary":"Get Roles","description":"Fetch Roles","x-speakeasy-name-override":"getRoles","x-speakeasy-group":"v1.roles","x-speakeasy-pagination":{"type":"cursor","inputs":[{"type":"cursor","name":"cursor","in":"parameters"}],"outputs":{"nextCursor":"$.cursor","results":"$.items"}},"x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":false,"name":"team","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRolesResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}}}}},"/v1/settings/labels/{labelId}":{"delete":{"operationId":"v1_settings_labels__labelId__deleteLabel","summary":"Delete Label","description":"Delete a label","x-speakeasy-name-override":"deleteLabel","x-speakeasy-group":"v1.settings.labels","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"labelId","in":"path"}],"responses":{"200":{"description":"Returns the deleted label","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteLabelResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#label-not-found"]},"title":{"type":"string","example":"A specified label does not exist in the system."}},"required":["type","title"]}],"title":"Label Not Found"}]}}}}}},"get":{"operationId":"v1_settings_labels__labelId__getLabel","summary":"Get Label","description":"Get an existing label by its ID","x-speakeasy-name-override":"getLabel","x-speakeasy-group":"v1.settings.labels","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"labelId","in":"path"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Label"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#label-not-found"]},"title":{"type":"string","example":"A specified label does not exist in the system."}},"required":["type","title"]}],"title":"Label Not Found"}]}}}}}},"put":{"operationId":"v1_settings_labels__labelId__updateLabel","summary":"Update Label","description":"Update an existing label","x-speakeasy-name-override":"updateLabel","x-speakeasy-group":"v1.settings.labels","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"labelId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLabelRequest"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Label"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#label-not-found"]},"title":{"type":"string","example":"A specified label does not exist in the system."}},"required":["type","title"]}],"title":"Label Not Found"}]}}}}}}},"/v1/settings/labels":{"post":{"operationId":"v1_settings_labels_createLabel","summary":"Create Label","description":"Create a new label","x-speakeasy-name-override":"createLabel","x-speakeasy-group":"v1.settings.labels","x-stability-level":"stable","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLabelRequest"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Label"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}}}},"get":{"operationId":"v1_settings_labels_getLabels","summary":"Get Labels","description":"Read all configured labels","x-speakeasy-name-override":"getLabels","x-speakeasy-group":"v1.settings.labels","x-speakeasy-pagination":{"type":"cursor","inputs":[{"type":"cursor","name":"cursor","in":"parameters"}],"outputs":{"nextCursor":"$.cursor","results":"$.items"}},"x-stability-level":"stable","parameters":[{"schema":{"type":"number","minimum":1,"maximum":200,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetLabelsResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}}}}},"/v1/settings/pay-codes/{payCodeId}":{"get":{"operationId":"v1_settings_pay-codes__payCodeId__getPayCode","summary":"Get Pay Code","description":"","x-speakeasy-name-override":"getPayCode","x-speakeasy-group":"v1.settings.pay-codes","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"payCodeId","in":"path"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayCode"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#pay-code-not-found"]},"title":{"type":"string","example":"A specified pay code does not exist in the system."}},"required":["type","title"]}],"title":"Pay Code Not Found"}]}}}}}}},"/v1/settings/pay-codes":{"get":{"operationId":"v1_settings_pay-codes_getPayCodes","summary":"Get Pay Codes","description":"Retrieve all defined pay codes.","x-speakeasy-name-override":"getPayCodes","x-speakeasy-group":"v1.settings.pay-codes","x-speakeasy-pagination":{"type":"cursor","inputs":[{"type":"cursor","name":"cursor","in":"parameters"}],"outputs":{"nextCursor":"$.cursor","results":"$.items"}},"x-stability-level":"stable","parameters":[{"schema":{"type":"number","minimum":1,"maximum":200,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPayCodesResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}}}}},"/v1/shifts":{"get":{"operationId":"v1_shifts_getShifts","summary":"Get Shifts","description":"Get shifts within a given time range.","x-speakeasy-name-override":"getShifts","x-speakeasy-group":"v1.shifts","x-speakeasy-pagination":{"type":"cursor","inputs":[{"type":"cursor","name":"cursor","in":"parameters"}],"outputs":{"nextCursor":"$.cursor","results":"$.items"}},"x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":false,"name":"provider","in":"query"},{"schema":{"type":"string","format":"uuid"},"required":false,"name":"team","in":"query"},{"schema":{"type":"string","description":"Used to inclusively filter shifts whose startDate is later than the provided start time, in yyyy-MM-dd format. Defaults to current date - 1 month.","example":"2024-11-20T07:43:34+0000"},"required":false,"description":"Used to inclusively filter shifts whose startDate is later than the provided start time, in yyyy-MM-dd format. Defaults to current date - 1 month.","name":"startDate","in":"query"},{"schema":{"type":"string","description":"Used to exclusively filter shifts whose endDate is earlier than the provided end time, in yyyy-MM-dd format. Defaults to current date + 1 month.","example":"2024-11-20T07:43:34+0000"},"required":false,"description":"Used to exclusively filter shifts whose endDate is earlier than the provided end time, in yyyy-MM-dd format. Defaults to current date + 1 month.","name":"endDate","in":"query"},{"schema":{"type":"boolean","default":false},"required":false,"name":"includeOpen","in":"query"},{"schema":{"type":"boolean","default":false},"required":false,"name":"includeDisplayNames","in":"query"},{"schema":{"type":"string","description":"Available fields: `startDate`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on sorting."},"required":false,"description":"Available fields: `startDate`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on sorting.","name":"sort","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetShiftsResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"403":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"action":{"type":"string"},"resource":{"type":"string"},"reason":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#unauthorized"]},"title":{"type":"string","example":"You do not have permission to perform this action."}},"required":["action","resource","type","title"]}],"title":"Unauthorized"}]}}}}}}},"/v1/teams/{teamId}":{"get":{"operationId":"v1_teams__teamId__getTeam","summary":"Get Team","description":"Get team information by ID","x-speakeasy-name-override":"getTeam","x-speakeasy-group":"v1.teams","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"teamId","in":"path"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#team-not-found"]},"title":{"type":"string","example":"A specified team does not exist in the system."}},"required":["type","title"]}],"title":"Team Not Found"}]}}}}}}},"/v1/teams":{"get":{"operationId":"v1_teams_getTeams","summary":"Get Teams","description":"Retrieve all teams","x-speakeasy-name-override":"getTeams","x-speakeasy-group":"v1.teams","x-speakeasy-pagination":{"type":"cursor","inputs":[{"type":"cursor","name":"cursor","in":"parameters"}],"outputs":{"nextCursor":"$.cursor","results":"$.items"}},"x-stability-level":"stable","parameters":[{"schema":{"type":"number","minimum":1,"maximum":200,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTeamsResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}}}}},"/v1/time-off/policies/{policyId}":{"get":{"operationId":"v1_time-off_policies__policyId__getPolicy","summary":"Get Policy","description":"","x-speakeasy-name-override":"getPolicy","x-speakeasy-group":"v1.time-off","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"policyId","in":"path"},{"schema":{"type":"string","description":"Available expansions: `properties`, `payCode`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on expansions."},"required":false,"description":"Available expansions: `properties`, `payCode`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on expansions.","name":"expand","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeOffPolicy"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#policy-not-found"]},"title":{"type":"string","example":"A specified policy does not exist in the system."}},"required":["type","title"]}],"title":"Policy Not Found"}]}}}}}}},"/v1/time-off/policies":{"get":{"operationId":"v1_time-off_policies_getPolicies","summary":"Get Policies","description":"","x-speakeasy-name-override":"getPolicies","x-speakeasy-group":"v1.time-off","x-speakeasy-pagination":{"type":"cursor","inputs":[{"type":"cursor","name":"cursor","in":"parameters"}],"outputs":{"nextCursor":"$.cursor","results":"$.items"}},"x-stability-level":"stable","parameters":[{"schema":{"type":"string","description":"Available expansions: `properties`, `payCode`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on expansions."},"required":false,"description":"Available expansions: `properties`, `payCode`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on expansions.","name":"expand","in":"query"},{"schema":{"type":"string","format":"uuid","description":"Filter to only policies assigned to the given provider."},"required":false,"description":"Filter to only policies assigned to the given provider.","name":"providerId","in":"query"},{"schema":{"type":"boolean","default":false,"description":"Filter to only policies with `properties.published = true`."},"required":false,"description":"Filter to only policies with `properties.published = true`.","name":"publishedOnly","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPoliciesResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}}}}},"/v1/time-off/requests/{requestId}":{"get":{"operationId":"v1_time-off_requests__requestId__getRequest","summary":"Get Request","description":"Get a specific time off request","x-speakeasy-name-override":"getRequest","x-speakeasy-group":"v1.time-off","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"requestId","in":"path"},{"schema":{"type":"string","description":"Available expansions: `policy`, `provider`, `rejectedBy`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on expansions."},"required":false,"description":"Available expansions: `policy`, `provider`, `rejectedBy`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on expansions.","name":"expand","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeOffRequest"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#time-off-request-not-found"]},"title":{"type":"string","example":"A specified time off request does not exist in the system."}},"required":["type","title"]}],"title":"Time Off Request Not Found"}]}}}}}}},"/v1/time-off/requests/count":{"get":{"operationId":"v1_time-off_requests_count_getTimeOffRequestsCount","summary":"Get Time Off Requests Count","description":"Get the total count of time off requests for the current filters.","x-speakeasy-name-override":"getTimeOffRequestsCount","x-speakeasy-group":"v1.time-off","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid","description":"Filter to requests for a specific provider."},"required":false,"description":"Filter to requests for a specific provider.","name":"providerId","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"array","items":{"type":"string","format":"uuid"}}],"description":"Filter to requests for providers in specific teams."},"required":false,"description":"Filter to requests for providers in specific teams.","name":"teamId","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"array","items":{"type":"string","format":"uuid"}}],"description":"Filter to requests for specific policies."},"required":false,"description":"Filter to requests for specific policies.","name":"policyId","in":"query"},{"schema":{"type":"string","description":"Filter to requests whose start date is on or after the given timestamp.","example":"2024-11-20T07:43:34+0000"},"required":false,"description":"Filter to requests whose start date is on or after the given timestamp.","name":"startDate","in":"query"},{"schema":{"type":"string","description":"Filter to requests whose end date is earlier than the provided timestamp.","example":"2024-11-20T07:43:34+0000"},"required":false,"description":"Filter to requests whose end date is earlier than the provided timestamp.","name":"endDate","in":"query"},{"schema":{"$ref":"#/components/schemas/TimeOffRequestStatus"},"required":false,"name":"status","in":"query"},{"schema":{"type":"string"},"required":false,"name":"query","in":"query"},{"schema":{"type":"string","description":"Available expansions: `policy`, `provider`, `rejectedBy`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on expansions."},"required":false,"description":"Available expansions: `policy`, `provider`, `rejectedBy`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on expansions.","name":"expand","in":"query"},{"schema":{"type":"string","description":"Available fields: `createdAt`, `startDate`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on sorting."},"required":false,"description":"Available fields: `createdAt`, `startDate`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on sorting.","name":"sort","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeOffRequestsCountResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"},{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#negative-range"]},"title":{"type":"string","example":"Time range end date must come after start date."}},"required":["type","title"]}],"title":"Negative Range"}]}}}}}}},"/v1/time-off/requests":{"get":{"operationId":"v1_time-off_requests_getRequests","summary":"Get Requests","description":"Get all time off requests. Can be filtered if necessary.","x-speakeasy-name-override":"getRequests","x-speakeasy-group":"v1.time-off","x-speakeasy-pagination":{"type":"cursor","inputs":[{"type":"cursor","name":"cursor","in":"parameters"}],"outputs":{"nextCursor":"$.cursor","results":"$.items"}},"x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid","description":"Filter to requests for a specific provider."},"required":false,"description":"Filter to requests for a specific provider.","name":"providerId","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"array","items":{"type":"string","format":"uuid"}}],"description":"Filter to requests for providers in specific teams."},"required":false,"description":"Filter to requests for providers in specific teams.","name":"teamId","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"array","items":{"type":"string","format":"uuid"}}],"description":"Filter to requests for specific policies."},"required":false,"description":"Filter to requests for specific policies.","name":"policyId","in":"query"},{"schema":{"type":"string","description":"Filter to requests whose start date is on or after the given timestamp.","example":"2024-11-20T07:43:34+0000"},"required":false,"description":"Filter to requests whose start date is on or after the given timestamp.","name":"startDate","in":"query"},{"schema":{"type":"string","description":"Filter to requests whose end date is earlier than the provided timestamp.","example":"2024-11-20T07:43:34+0000"},"required":false,"description":"Filter to requests whose end date is earlier than the provided timestamp.","name":"endDate","in":"query"},{"schema":{"$ref":"#/components/schemas/TimeOffRequestStatus"},"required":false,"name":"status","in":"query"},{"schema":{"type":"string"},"required":false,"name":"query","in":"query"},{"schema":{"type":"string","description":"Available expansions: `policy`, `provider`, `rejectedBy`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on expansions."},"required":false,"description":"Available expansions: `policy`, `provider`, `rejectedBy`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on expansions.","name":"expand","in":"query"},{"schema":{"type":"string","description":"Available fields: `createdAt`, `startDate`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on sorting."},"required":false,"description":"Available fields: `createdAt`, `startDate`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on sorting.","name":"sort","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRequestsResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"},{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#negative-range"]},"title":{"type":"string","example":"Time range end date must come after start date."}},"required":["type","title"]}],"title":"Negative Range"}]}}}}}}},"/v1/timekeeping/timecard/{provider}":{"get":{"operationId":"v1_timekeeping_timecard__provider__getTimecard","summary":"Get Timecard","description":"Get the current timecard for the given provider.\n\nReturns no punches + clock_in if there is no active timecard.","x-speakeasy-name-override":"getTimecard","x-speakeasy-group":"v1.timekeeping","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"provider","in":"path"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Timecard"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#provider-not-found"]},"title":{"type":"string","example":"A specified provider does not exist in the system."}},"required":["type","title"]}],"title":"Provider Not Found"}]}}}}}}},"/v1/timekeeping/timecard/punches/{punchId}":{"delete":{"operationId":"v1_timekeeping_timecard_punches__punchId__deleteTimecardPunch","summary":"Delete Timecard Punch","description":"Delete a punch","x-speakeasy-name-override":"deleteTimecardPunch","x-speakeasy-group":"v1.timekeeping","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"punchId","in":"path"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimecardPunch"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#timecard-punch-not-found"]},"title":{"type":"string","example":"A specified timecard punch does not exist in the system."}},"required":["type","title"]}],"title":"Timecard Punch Not Found"}]}}}}}}},"/v1/timekeeping/timecard/punches":{"post":{"operationId":"v1_timekeeping_timecard_punches_createTimecardPunch","summary":"Create Timecard Punch","description":"Create a new punch for a specific timecard","x-speakeasy-name-override":"createTimecardPunch","x-speakeasy-group":"v1.timekeeping","x-stability-level":"stable","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTimecardPunchRequest"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimecardPunch"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#timecard-not-found"]},"title":{"type":"string","example":"A specified timecard does not exist in the system."}},"required":["type","title"]}],"title":"Timecard Not Found"}]}}}}}}},"/v1/timekeeping/timesheet":{"get":{"operationId":"v1_timekeeping_timesheet_getTimesheets","summary":"Get Timesheets","description":"Allows reading computed timesheet data for one or more providers.\n\nTimesheets are returned for any matching provider who was active during the\nspecified date range even if they worked zero hours. These values are impacted\nby historical corrections, you are advised to review the [Historical \nCorrections](/using-the-api/historical-corrections) documentation.\n\n<ResponseField name=\"Available Expansions\">\n<Expandable title=\"expand options\">\n    * **provider**: Includes the entire provider object for each timesheet.\n    * **paySegments**: Pay segments describe each individually worked span\n        during the timesheet. They are the primitive unit of timekeeping data.\n    * **scheduledPaySegments**: Scheduled pay segments represent the expected\n        set of worked segments based on the schedule only, not punch data.\n    * **problems**: Includes any warnings and errors for the timesheet.\n    * **approval**: Includes whether the entire range is approved, and the\n        exact sub ranges that have been approved.\n    * **signOff**: Includes whether the entire range is signed off, and the\n        exact sub ranges that have been signed off.\n    * **historicalCorrections**: Includes any historical corrections which\n        are applied to the time range of the timesheet. These are historical\n        corrections which were made _to_ this time range as opposed to applied\n        to/paid out in this range.\n    * **totals**: The computed totals broken down by pay code and role for the\n        requested range.\n    * **historicalCorrectionTotals**: The totals from any historical corrections\n        which are applied _to_ this timesheet (as opposed to corrections made\n        to this timesheet). Historical correction totals are only available\n        when requesting a particular pay period (by offset or exact reference).\n</Expandable>\n</ResponseField>\n\n<Warning>\n    This endpoint may have to do significant computation to generate timesheet data on-the-fly,\n    you are advised to set appropriate timeout and consider caching the results if applicable.\n</Warning>","x-speakeasy-name-override":"getTimesheets","x-speakeasy-group":"v1.timekeeping","x-speakeasy-pagination":{"type":"cursor","inputs":[{"type":"cursor","name":"cursor","in":"parameters"}],"outputs":{"nextCursor":"$.cursor","results":"$.items"}},"x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":false,"name":"teamId","in":"query"},{"schema":{"type":"string","format":"uuid"},"required":false,"name":"providerId","in":"query"},{"schema":{"type":"string","format":"uuid"},"required":false,"name":"payPeriodId","in":"query"},{"schema":{"type":"integer","description":"Optional offset from current pay period. 0 = current, 1 = next, -1 = previous."},"required":false,"description":"Optional offset from current pay period. 0 = current, 1 = next, -1 = previous.","name":"payPeriodOffset","in":"query"},{"schema":{"type":"string","example":"2024-11-20T07:43:34+0000"},"required":false,"name":"startDate","in":"query"},{"schema":{"type":"string","example":"2024-11-20T07:43:34+0000"},"required":false,"name":"endDate","in":"query"},{"schema":{"type":"string","description":"Available expansions: `provider`, `paySegments`, `scheduledPaySegments`, `problems`, `approval`, `signOff`, `historicalCorrections`, `totals`, `historicalCorrectionTotals`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on expansions."},"required":false,"description":"Available expansions: `provider`, `paySegments`, `scheduledPaySegments`, `problems`, `approval`, `signOff`, `historicalCorrections`, `totals`, `historicalCorrectionTotals`\n\nSee [Query Parameters](/using-the-api/query-parameters) for more information on expansions.","name":"expand","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTimesheetsResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"},{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#negative-range"]},"title":{"type":"string","example":"Time range end date must come after start date."}},"required":["type","title"]}],"title":"Negative Range"}]}}}}}}},"/v1/users/{userId}":{"get":{"operationId":"v1_users__userId__getUser","summary":"Get User","description":"","x-speakeasy-name-override":"getUser","x-speakeasy-group":"v1.users","x-stability-level":"stable","parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"userId","in":"path"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}},"404":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#user-not-found"]},"title":{"type":"string","example":"A specified user does not exist in the system."}},"required":["type","title"]}],"title":"User Not Found"}]}}}}}}},"/v1/users":{"get":{"operationId":"v1_users_getUsers","summary":"Get Users","description":"Search for registered users in the Untether app.\n\n<Note>Users are a superset of [Providers](/reference/v1/providers/get-providers),\nbut providers are used for most platform operations. Users and providers share\nthe same IDs, but not all users have an associated provider.</Note>","x-speakeasy-name-override":"getUsers","x-speakeasy-group":"v1.users","x-speakeasy-pagination":{"type":"cursor","inputs":[{"type":"cursor","name":"cursor","in":"parameters"}],"outputs":{"nextCursor":"$.cursor","results":"$.items"}},"x-stability-level":"stable","parameters":[{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserType"},"default":["user"]},"required":false,"name":"type","in":"query"},{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EmploymentStatus"},"default":["onboarding","active"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","maxLength":50,"description":"Case-insensitive partial matching name search string"},"required":false,"description":"Case-insensitive partial matching name search string","name":"name","in":"query"},{"schema":{"type":"number","minimum":1,"maximum":200,"default":20},"required":false,"name":"pageSize","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUsersResponse"}}}},"400":{"description":"We follow the [RFC-9457](https://www.rfc-editor.org/rfc/rfc9457.html) Problem Detail specification for error responses.\n\nErrors should be identified by their `type` field. You can view extensions for each error response below.","content":{"application/problem+json":{"schema":{"oneOf":[{"allOf":[{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"integer","description":"Always the HTTP status code of the response","example":400},"title":{"type":"string","description":"A short, human-readable summary of the problem type"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem","example":"The specified provider does not satisfy the skill requirements for this shift."}},"required":["type","status","title"]},{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"},"type":{"type":"string","enum":["https://developers.untetherlabs.com/errors#validation"]},"title":{"type":"string","example":"Input validation failed."}},"required":["message","type","title"]}],"title":"Validation"}]}}}}}}}},"webhooks":{"v1.appointment.created":{"post":{"operationId":"v1.appointment.created","summary":"Appointment Created","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.appointment.created"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"$ref":"#/components/schemas/Appointment"}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.appointment.updated":{"post":{"operationId":"v1.appointment.updated","summary":"Appointment Updated","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.appointment.updated"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"$ref":"#/components/schemas/Appointment"}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.appointment.deleted":{"post":{"operationId":"v1.appointment.deleted","summary":"Appointment Deleted","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.appointment.deleted"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"$ref":"#/components/schemas/Appointment"}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.provider.created":{"post":{"operationId":"v1.provider.created","summary":"Provider Created","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.provider.created"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"$ref":"#/components/schemas/Provider"}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.provider.updated":{"post":{"operationId":"v1.provider.updated","summary":"Provider Updated","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.provider.updated"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"$ref":"#/components/schemas/Provider"}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.role.updated":{"post":{"operationId":"v1.role.updated","summary":"Role Updated","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.role.updated"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"type":"object","properties":{"userId":{"type":"string","format":"uuid"},"previousRole":{"type":"string"},"newRole":{"type":"string"}},"required":["userId","previousRole","newRole"]}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.schedule.published":{"post":{"operationId":"v1.schedule.published","summary":"Schedule Published","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.schedule.published"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"type":"object","properties":{"draftId":{"type":"string","format":"uuid"},"teamId":{"type":"string","format":"uuid"},"startDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"endDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"affectedProviderIds":{"type":"array","items":{"type":"string","format":"uuid"}},"shouldNotify":{"type":"boolean","default":false}},"required":["draftId","teamId","startDate","endDate","affectedProviderIds"]}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.schedule.unpublished":{"post":{"operationId":"v1.schedule.unpublished","summary":"Schedule Unpublished","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.schedule.unpublished"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"type":"object","properties":{"draftId":{"type":"string","format":"uuid"},"teamId":{"type":"string","format":"uuid"},"startDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"endDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"affectedProviderIds":{"type":"array","items":{"type":"string","format":"uuid"}},"shouldNotify":{"type":"boolean","default":false}},"required":["draftId","teamId","startDate","endDate","affectedProviderIds"]}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.shift.bulk-created":{"post":{"operationId":"v1.shift.bulk-created","summary":"Shift Bulk-created","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.shift.bulk-created"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"type":"object","properties":{"batchId":{"type":"string","format":"uuid"},"shiftIds":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["batchId","shiftIds"]}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.shift.created":{"post":{"operationId":"v1.shift.created","summary":"Shift Created","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.shift.created"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"$ref":"#/components/schemas/Shift"}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.shift.updated":{"post":{"operationId":"v1.shift.updated","summary":"Shift Updated","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.shift.updated"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"$ref":"#/components/schemas/Shift"}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.shift.deleted":{"post":{"operationId":"v1.shift.deleted","summary":"Shift Deleted","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.shift.deleted"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"$ref":"#/components/schemas/Shift"}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.shift.claimed":{"post":{"operationId":"v1.shift.claimed","summary":"Shift Claimed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.shift.claimed"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"type":"object","properties":{"createdAt":{"type":"string","example":"2024-11-20T07:43:34+0000"},"version":{"type":"number","description":"Version number for optimistic locking. Include this when updating to detect conflicts."},"provider":{"type":["string","null"],"format":"uuid","description":"The provider of the shift. If null, the shift is an open shift."},"providerName":{"type":["string","null"],"description":"The display name of the provider. Only populated when the request opts in via includeDisplayNames."},"startDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"endDate":{"type":"string","example":"2024-11-20T07:43:34+0000"},"segments":{"type":"array","items":{"$ref":"#/components/schemas/ShiftSegment"},"description":"The segments that make up a shift, ordered by startDate."},"payCodes":{"type":"array","items":{"$ref":"#/components/schemas/ShiftPayCode"},"maxItems":1},"team":{"type":["string","null"],"format":"uuid","description":"The team that the shift is associated with."},"note":{"type":["string","null"],"description":"A note about the shift. Visible to providers."},"isCallout":{"type":"boolean","description":"Whether the shift is marked as a callout. Callout shifts are hidden from reads unless an endpoint explicitly includes them."},"workRuleOverride":{"type":["string","null"],"format":"uuid"},"claimedBy":{"type":"string","format":"uuid","description":"The provider who claimed the open shift."}},"required":["id","createdAt","provider","startDate","endDate","segments","team","note","isCallout","workRuleOverride","claimedBy"]}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.timeoff.approved":{"post":{"operationId":"v1.timeoff.approved","summary":"Timeoff Approved","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.timeoff.approved"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"$ref":"#/components/schemas/TimeOffRequest"}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.timeoff.rejected":{"post":{"operationId":"v1.timeoff.rejected","summary":"Timeoff Rejected","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.timeoff.rejected"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"$ref":"#/components/schemas/TimeOffRequest"}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.timeoff.cancelled":{"post":{"operationId":"v1.timeoff.cancelled","summary":"Timeoff Cancelled","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.timeoff.cancelled"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"$ref":"#/components/schemas/TimeOffRequest"}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.timeoff.created_by_admin":{"post":{"operationId":"v1.timeoff.created_by_admin","summary":"Timeoff Created_by_admin","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.timeoff.created_by_admin"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"$ref":"#/components/schemas/TimeOffRequest"}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.timeoff.requested":{"post":{"operationId":"v1.timeoff.requested","summary":"Timeoff Requested","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.timeoff.requested"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"$ref":"#/components/schemas/TimeOffRequest"}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.timeoff.updated":{"post":{"operationId":"v1.timeoff.updated","summary":"Timeoff Updated","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.timeoff.updated"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"$ref":"#/components/schemas/TimeOffRequest"}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.user.created":{"post":{"operationId":"v1.user.created","summary":"User Created","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.user.created"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"$ref":"#/components/schemas/User"}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.user.updated":{"post":{"operationId":"v1.user.updated","summary":"User Updated","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.user.updated"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"$ref":"#/components/schemas/User"}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}},"v1.vacation_bid.outbid":{"post":{"operationId":"v1.vacation_bid.outbid","summary":"Vacation_bid Outbid","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["v1.vacation_bid.outbid"]},"timestamp":{"type":"string","example":"2024-11-20T07:43:34+0000"},"traceId":{"type":"string"},"actor":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"}},"required":["id","type","name"]},"data":{"type":"object","properties":{"vacationBidId":{"type":"string","format":"uuid"},"timeOffRequestId":{"type":"string","format":"uuid"},"outbidProviderId":{"type":"string","format":"uuid"},"timeOffPolicyId":{"type":"string","format":"uuid"},"requestedFrom":{"type":"string","example":"2024-11-20T07:43:34+0000"},"requestedTo":{"type":"string","example":"2024-11-20T07:43:34+0000"}},"required":["vacationBidId","timeOffRequestId","outbidProviderId","timeOffPolicyId","requestedFrom","requestedTo"]}},"required":["id","type","timestamp","traceId","actor","data"]}}}},"responses":{"200":{"description":"Webhook received successfully"}}}}}}