openapi: 3.0.0 servers: - url: https://api.personio.de/v1 info: contact: x-twitter: PersonioHR description: API for reading and writing personnel data incl. data about attendances and absences title: Personnel Data version: "1.0" x-apisguru-categories: - enterprise x-logo: url: https://twitter.com/PersonioHR/profile_image?size=original x-origin: - format: openapi url: https://raw.githubusercontent.com/personio/api-docs/master/personio-personnel-data-api.yaml version: "3.0" x-providerName: personio.de x-serviceName: personnel paths: /company/attendances: get: description: This endpoint is responsible for fetching attendance data for the company employees. It is possible to paginate results, filter by period, the date and/or time it was updated, and/or specific employees. The result will contain a list of attendance periods, structured as defined here. parameters: - description: First day of the period to be queried. It is inclusive, so the day specified as start_date will also be considered on the results in: query name: start_date required: true schema: format: date type: string - description: Last day of the period to be queried. It is inclusive, so the day specified as end_date will also be considered on the results. in: query name: end_date required: true schema: format: date type: string - description: Datetime from when the queried periods have been updated. Same format as updated_at. It is inclusive, so the day specified as updated_from will also be considered on the results. Can be just the date, or the date and the time, with or without the timezone. in: query name: updated_from required: false schema: format: datetime type: string - description: Datetime until when the queried periods have been updated. Same format as updated_at. It is inclusive, so the day specified as updated_to will also be considered on the results. Can be just the date, or the date and the time, with or without the timezone. in: query name: updated_to required: false schema: format: datetime type: string - description: A list of Personio employee identifiers to filter the results. Only those employees specified here will be returned. explode: true in: query name: employees required: false schema: items: type: integer type: array - description: Pagination attribute to limit how many attendances will be returned per page in: query name: limit required: false schema: default: 200 minimum: 1 type: integer - description: Pagination attribute to identify which page you are requesting, by the form of telling an offset from the first record that would be returned. in: query name: offset required: false schema: default: 0 minimum: 0 type: integer responses: "200": content: application/json: examples: response: value: data: - attributes: break: 50 comment: I was productive as hell date: 2017-01-17 employee: 325659 end_time: 18:00 is_holiday: false is_on_time_off: false start_time: 9:00 updated_at: 2017-01-17T16:41:08+00:00 id: 1234 type: AttendancePeriod - attributes: break: 60 comment: $ref: "#/components/schemas/UpdateAttendancePeriodRequest/example/comment" date: 2017-01-18 employee: 325660 end_time: 18:30 is_holiday: false is_on_time_off: true start_time: 9:30 updated_at: 2017-01-18T16:41:08+01:00 id: 1235 type: AttendancePeriod limit: 200 offset: 0 success: true schema: $ref: "#/components/schemas/AttendancePeriodsResponse" description: "" post: description: This endpoint is responsible for adding attendance data for the company employees. It is possible to add attendances for one or many employees at the same time. The payload sent on the request should be a list of attendance periods, in the form of an array containing attendance period objects. requestBody: content: application/json: schema: $ref: "#/components/schemas/NewAttendancePeriodRequest" description: List of attendance periods to create required: true responses: "200": content: application/json: examples: response: value: data: id: - 1 - 2 message: success success: true schema: $ref: "#/components/schemas/NewAttendancePeriodResponse" description: The attendance periods were created successfully "400": content: application/json: examples: response: value: error: code: 400 detailed_message: - break: 60 comment: "" date: 2017-01-01 employee: 1234 end_time: 18:00 error_msg: $ref: "#/components/schemas/UpdateAttendancePeriodRequest/example/comment" id: 1 start_time: 09:00 success: true - break: 60 comment: "" date: 2017-01-01 employee: 1234 end_time: 18:00 error_msg: Existing overlapping attendances periods id: $ref: "#/components/schemas/UpdateAttendancePeriodRequest/example/comment" start_time: 09:00 success: false message: Error when trying to insert Attendances periods rows success: false schema: $ref: "#/components/schemas/DetailedErrorResponse" description: Invalid request "/company/attendances/{id}": delete: description: This endpoint is responsible for deleting attendance data for the company employees. parameters: - description: ID of the attendance period to delete in: path name: id required: true schema: format: int32 type: integer responses: "200": content: application/json: examples: response: value: data: message: The attendance period was deleted. success: true schema: $ref: "#/components/schemas/Response" description: Success response "404": content: application/json: examples: response: value: error: code: 404 message: The attendance period was not found. success: false schema: $ref: "#/components/schemas/ErrorResponse" description: Not found response patch: description: This endpoint is responsible for updating attendance data for the company employees. Attributes are not required and if not specified, the current value will be used. It is not possible to change the employee id. parameters: - description: ID of the attendance period to update in: path name: id required: true schema: format: int32 type: integer requestBody: content: application/json: schema: $ref: "#/components/schemas/UpdateAttendancePeriodRequest" description: attendance period data to update required: true responses: "200": content: application/json: examples: response: value: data: message: The attendance period was updated. success: true schema: $ref: "#/components/schemas/Response" description: Success response "404": content: application/json: examples: response: value: error: code: 404 message: The attendance period was not found. success: false schema: $ref: "#/components/schemas/ErrorResponse" description: Not found response /company/employees: get: description: List Employees responses: "200": content: application/json: examples: response: value: data: - attributes: absence_entitlement: label: Absence entitlement value: - attributes: entitlement: 30 id: 12345 name: Paid Vacation type: TimeOffType - attributes: entitlement: 0 id: 12346 name: Parental leave type: TimeOffType - attributes: entitlement: 0 id: 12347 name: Sick days type: TimeOffType contract_end_date: label: Contract ends value: $ref: "#/components/schemas/UpdateAttendancePeriodRequest/example/comment" cost_centers: label: Cost center value: - attributes: id: 320 name: Cost Center One percentage: 50 type: CostCenter - attributes: id: 321 name: Cost Center Two percentage: 50 type: CostCenter created_at: label: created_at value: 2016-10-20T16:15:55+0200 department: label: Department value: attributes: name: Marketing type: Department dynamic_21827: label: IBAN value: DE98 8989 9898 0000 8989 00 dynamic_24407: label: Titel value: Dr email: label: Email value: andreas.anderson@demo.com employment_type: label: Employment type value: internal first_name: label: First name value: Andreas fix_salary: label: Fix salary value: 4000 gender: label: Gender value: male hire_date: label: Hire date value: 2012-02-01T00:00:00+0100 holiday_calendar: label: Holiday Calendar value: attributes: country: DE id: 931 name: DE (Hamburg) Feiertage state: Hamburg type: HolidayCalendar hourly_salary: label: Hourly salary value: 0 id: label: id value: 83752 last_modified_at: label: Last modified value: 2016-10-22T16:15:55+0200 last_name: label: Last name value: Anderson last_working_day: label: Last working day value: 2017-02-28T00:00:00+0200 office: label: Office value: attributes: name: Munich type: Office position: label: Position value: Online Marketing Specialist probation_period_end: label: Probation period end value: 2012-07-31T00:00:00+0200 profile_picture: label: Profile Picture value: http://api.dev.personio.de/v1/company/employees/2/profile-picture status: label: Status value: active supervisor: label: Supervisor value: attributes: email: label: Email value: max.mustermann@example.org first_name: label: First name value: Max id: label: id value: 423506 last_name: label: Last name value: Mustermann type: Employee termination_date: label: Termination date value: $ref: "#/components/schemas/UpdateAttendancePeriodRequest/example/comment" termination_reason: label: Termination reason value: "" termination_type: label: Termination type value: "" vacation_day_balance: label: Vacation day balance value: 28.5 weekly_working_hours: label: Weekly hours value: "40" work_schedule: label: Work Schedule value: attributes: friday: 06:00 id: 123 monday: 08:30 name: Standard Hours saturday: 00:00 sunday: 00:00 thursday: 08:30 tuesday: 08:30 wednesday: 08:30 type: WorkSchedule type: Employee success: true schema: $ref: "#/components/schemas/EmployeesResponse" description: "" post: description: | Creates new employee. Status of the employee will be set to `active` if `hire_date` provided is in past. Otherwise status will be set to `onboarding`. This endpoint will respond with `id` of created employee in case of success. requestBody: content: application/x-www-form-urlencoded: schema: properties: "employee[department]": description: Employee department type: string "employee[email]": description: Employee email type: string "employee[first_name]": description: Employee first name type: string "employee[gender]": description: Employee gender enum: - male - female - diverse type: string "employee[hire_date]": description: Employee hire date format: date type: string "employee[last_name]": description: Employee last name type: string "employee[position]": description: Employee position type: string "employee[weekly_hours]": description: Employee weekly working hours type: number required: - employee[email] - employee[first_name] - employee[last_name] type: object required: true responses: "200": content: application/json: examples: response: value: data: id: 81723 message: success success: true schema: allOf: - $ref: "#/components/schemas/Response" description: Successful creation of a employee summary: Create an employee "/company/employees/{employee_id}": get: description: Show employee by ID parameters: - description: Numeric `id` of the employee in: path name: employee_id required: true schema: format: int32 type: integer responses: "200": content: application/json: examples: response: value: data: attributes: absence_entitlement: label: Absence entitlement value: - attributes: entitlement: 30 id: 12345 name: Paid Vacation type: TimeOffType - attributes: entitlement: 0 id: 12346 name: Parental leave type: TimeOffType - attributes: entitlement: 0 id: 12347 name: Sick days type: TimeOffType contract_end_date: label: Contract ends value: $ref: "#/components/schemas/UpdateAttendancePeriodRequest/example/comment" cost_centers: label: Cost center value: - attributes: id: 320 name: Cost Center One percentage: 50 type: CostCenter - attributes: id: 321 name: Cost Center Two percentage: 50 type: CostCenter created_at: label: created_at value: 2016-10-20T16:15:55+0200 department: label: Department value: attributes: name: Marketing type: Department dynamic_21827: label: IBAN value: DE98 8989 9898 0000 8989 00 dynamic_24407: label: Titel value: Dr email: label: Email value: andreas.anderson@demo.com employment_type: label: Employment type value: internal first_name: label: First name value: Andreas fix_salary: label: Fix salary value: 4000 gender: label: Gender value: male hire_date: label: Hire date value: 2012-02-01T00:00:00+0100 holiday_calendar: label: Holiday Calendar value: attributes: country: DE id: 931 name: DE (Hamburg) Feiertage state: Hamburg type: HolidayCalendar hourly_salary: label: Hourly salary value: 0 id: label: id value: 83752 last_modified_at: label: Last modified value: 2016-10-22T16:15:55+0200 last_name: label: Last name value: Anderson last_working_day: label: Last working day value: 2017-02-28T00:00:00+0200 office: label: Office value: attributes: name: Munich type: Office position: label: Position value: Online Marketing Specialist probation_period_end: label: Probation period end value: 2012-07-31T00:00:00+0200 status: label: Status value: active supervisor: label: Supervisor value: attributes: email: label: Email value: max.mustermann@example.org first_name: label: First name value: Max id: label: id value: 423506 last_name: label: Last name value: Mustermann type: Employee termination_date: label: Termination date value: $ref: "#/components/schemas/UpdateAttendancePeriodRequest/example/comment" termination_reason: label: Termination reason value: "" termination_type: label: Termination type value: "" vacation_day_balance: label: Vacation day balance value: 28.5 weekly_working_hours: label: Weekly hours value: "40" work_schedule: label: Work Schedule value: attributes: friday: 06:00 id: 123 monday: 08:30 name: Standard Hours saturday: 00:00 sunday: 00:00 thursday: 08:30 tuesday: 08:30 wednesday: 08:30 type: WorkSchedule type: Employee success: true schema: $ref: "#/components/schemas/EmployeeResponse" description: "" "/company/employees/{employee_id}/profile-picture/{width}": get: description: Show employee profile picture parameters: - description: Numeric `id` of the employee in: path name: employee_id required: true schema: format: int32 type: integer - description: Width of the image. Default 75x75 in: path name: width required: true schema: format: int32 type: integer responses: "200": content: image/png: schema: format: binary type: string description: OK /company/time-off-types: get: description: Provides a list of available time-off types, for example 'Paid vacation', 'Parental leave' or 'Home office' parameters: - description: Pagination attribute to limit how many records will be returned per page in: query name: limit required: false schema: default: 200 minimum: 1 type: integer - description: Pagination attribute to identify which page you are requesting, by the form of telling an offset from the first record that would be returned. in: query name: offset required: false schema: default: 0 minimum: 0 type: integer responses: "200": content: application/json: examples: response: value: data: - attributes: name: Paid vacation id: 1234 type: TimeOffType - attributes: name: Home office id: 1235 type: TimeOffType success: true schema: properties: data: items: $ref: "#/components/schemas/TimeOffTypeResource" type: array success: type: boolean type: object description: "" /company/time-offs: get: description: This endpoint is responsible for fetching absence data for the company employees. It is possible to paginate results, filter by period and/or specific employees. The result will contain a list of absence periods, structured as defined here. parameters: - description: First day of the period to be queried. It is inclusive, so the day specified as start_date will also be considered on the results in: query name: start_date required: false schema: format: date type: string - description: Last day of the period to be queried. It is inclusive, so the day specified as end_date will also be considered on the results. in: query name: end_date required: false schema: format: date type: string - description: Datetime from when the queried periods have been updated. It is inclusive, so the day specified as updated_from will also be considered on the results. in: query name: updated_from required: false schema: format: datetime type: string - description: Datetime until when the queried periods have been updated. It is inclusive, so the day specified as updated_to will also be considered on the results. in: query name: updated_to required: false schema: format: datetime type: string - description: A list of Personio employee identifiers to filter the results. Only those employees specified here will be returned. explode: true in: query name: employees required: false schema: items: type: integer type: array - description: Pagination attribute to limit how many attendances will be returned per page in: query name: limit required: false schema: default: 200 minimum: 1 type: integer - description: Pagination attribute to identify which page you are requesting, by the form of telling an offset from the first record that would be returned. in: query name: offset required: false schema: default: 0 minimum: 0 type: integer responses: "200": content: application/json: examples: response: value: data: - attributes: certificate: status: not-required created_at: 2017-01-17T10:32:18+0100 days_count: 3 employee: attributes: email: label: Email value: michael.miller@demo.com first_name: label: First name value: Michael id: label: id value: 4567 last_name: label: Last name value: Miller type: Employee end_date: 2017-12-29T00:00:00+0100 half_day_end: 0 half_day_start: 0 id: 12345 start_date: 2017-12-27T00:00:00+0100 status: approved time_off_type: attributes: id: 54321 name: Vacation type: TimeOffType type: TimeOffPeriod success: true schema: $ref: "#/components/schemas/AbsencePeriodsResponse" description: "" post: description: This endpoint is responsible for adding absence data for the company employees. requestBody: content: application/json: schema: $ref: "#/components/schemas/CreateTimeOffPeriodRequest" description: Absence period to create required: true responses: "201": content: application/json: examples: response: value: data: attributes: certificate: status: not-required created_at: 2017-01-17T10:32:18+0100 days_count: 3 employee: attributes: email: label: Email value: michael.miller@demo.com first_name: label: First name value: Michael id: label: id value: 4567 last_name: label: Last name value: Miller type: Employee end_date: 2017-12-29T00:00:00+0100 half_day_end: 0 half_day_start: 0 id: 12345 start_date: 2017-12-27T00:00:00+0100 status: approved time_off_type: attributes: id: 54321 name: Vacation type: TimeOffType type: TimeOffPeriod success: true schema: properties: data: $ref: "#/components/schemas/CreateTimeOffPeriodResponse" type: object description: The absence period was created successfully "400": content: application/json: examples: response: value: error: code: 400 message: Error when trying to insert absence period success: false schema: $ref: "#/components/schemas/ErrorResponse" description: Invalid request "404": content: application/json: examples: response: value: error: code: 0 message: Something went wrong success: false schema: $ref: "#/components/schemas/ErrorResponse" description: Employee or Absence type not found "422": content: application/json: examples: response: value: error: code: 0 error_data: "{...}" message: The given data failed to pass validation. success: false schema: $ref: "#/components/schemas/ErrorResponse" description: Validation error "/company/time-offs/{id}": delete: description: This endpoint is responsible for deleting absence period data for the company employees. parameters: - description: ID of the absence period to delete in: path name: id required: true schema: format: int32 type: integer responses: "200": content: application/json: examples: response: value: data: message: The absence period was deleted. success: true schema: $ref: "#/components/schemas/Response" description: Success response "404": content: application/json: examples: response: value: error: code: 404 message: The absence period was not found. success: false schema: $ref: "#/components/schemas/ErrorResponse" description: Not found response get: description: Absence Period parameters: - description: Numeric `id` of the absence period in: path name: id required: true schema: format: int32 type: integer responses: "200": content: application/json: examples: response: value: data: attributes: certificate: status: not-required created_at: 2017-01-17T10:32:18+0100 days_count: 3 employee: attributes: email: label: Email value: michael.miller@demo.com first_name: label: First name value: Michael id: label: id value: 2367 last_name: label: Last name value: Miller type: Employee end_date: 2017-12-29T00:00:00+0100 half_day_end: 0 half_day_start: 0 id: 12345 start_date: 2017-12-27T00:00:00+0100 status: approved time_off_type: attributes: id: 45678 name: Vacation type: TimeOffType type: TimeOffPeriod success: true schema: $ref: "#/components/schemas/AbsencePeriodResponse" description: "" components: schemas: AbsenceEntitlement: properties: label: type: string value: items: properties: attributes: properties: entitlement: type: number id: type: integer name: type: string type: object type: enum: - TimeOffType type: string type: object type: array required: - label - value type: object AbsencePeriodResponse: type: object AbsencePeriodsResponse: allOf: - $ref: "#/components/schemas/Response" - properties: data: properties: attributes: items: properties: certificate: properties: status: type: string type: object created_at: type: string days_count: type: number employee: properties: attributes: items: properties: email: type: string first_name: type: string id: type: integer last_name: type: string type: object type: array type: type: string type: object end_date: type: string half_day_end: type: number half_day_start: type: number id: type: integer start_date: type: string status: type: string time_off_type: properties: attributes: items: properties: id: type: integer name: type: string type: object type: array type: type: string type: object type: object type: array type: type: string required: - type - attributes type: object type: object title: List All Absence Periods response type: object AttendancePeriodsResponse: allOf: - $ref: "#/components/schemas/Response" - properties: data: items: properties: attributes: items: properties: break: type: integer comment: type: string date: format: date type: string employee: type: integer end_time: pattern: ^\d\d:\d\d$ type: string is_holiday: type: boolean is_on_time_off: type: boolean start_time: pattern: ^\d\d:\d\d$ type: string required: - employee - date - start_time - end_time - break - comment - is_holiday - is_on_time_off type: object type: array id: type: integer type: type: string required: - id - type - attributes type: object type: array limit: type: integer offset: type: integer type: object title: List All Attenance Periods response type: object Attribute: properties: label: type: string value: type: object required: - label - value type: object CostCenters: allOf: - $ref: "#/components/schemas/Attribute" properties: value: items: properties: attributes: items: properties: id: type: number name: type: string percentage: type: number type: object type: array type: type: string type: object type: array type: object CreateTimeOffPeriodRequest: properties: comment: description: Optional comment type: string employee_id: description: Employee identifier type: integer end_date: description: Absence end date as YYYY-MM-DD format: date type: string half_day_end: description: Weather the end date is a half-day off type: boolean half_day_start: description: Weather the start date is a half-day off type: boolean start_date: description: Absence start date as YYYY-MM-DD format: date type: string time_off_type_id: description: Time-off type identifier type: integer required: - employee_id - time_off_type_id - start_date - end_date - half_day_start - half_day_end title: Create time-off periods type: object CreateTimeOffPeriodResponse: allOf: - $ref: "#/components/schemas/Response" - properties: data: properties: attributes: properties: certificate: properties: status: type: string type: object created_at: type: string days_count: type: number employee: properties: attributes: items: properties: email: type: string first_name: type: string id: type: integer last_name: type: string type: object type: array type: type: string type: object end_date: type: string half_day_end: type: number half_day_start: type: number id: type: integer start_date: type: string status: type: string time_off_type: properties: attributes: items: properties: id: type: integer name: type: string type: object type: array type: type: string type: object type: description: Time-off period resource name enum: - TimeOffPeriod type: string type: object type: object title: Time period when an employee is not available. Department: allOf: - $ref: "#/components/schemas/Attribute" properties: value: properties: attributes: properties: name: type: string type: object type: type: string type: object type: object DetailedErrorResponse: properties: error: properties: code: type: integer detailed_message: items: properties: break: type: integer comment: type: string date: type: string employee: type: integer end_time: type: string error_msg: type: string id: type: integer start_time: type: string success: type: boolean type: object type: array message: type: string type: object success: type: boolean required: - success - error title: Default error response type: object Employee: properties: attributes: items: properties: absence_entitlement: $ref: "#/components/schemas/AbsenceEntitlement" contract_end_date: $ref: "#/components/schemas/Attribute" cost_centers: $ref: "#/components/schemas/CostCenters" created_at: $ref: "#/components/schemas/Attribute" department: $ref: "#/components/schemas/Department" email: $ref: "#/components/schemas/Attribute" employment_type: $ref: "#/components/schemas/Attribute" first_name: $ref: "#/components/schemas/Attribute" fix_salary: $ref: "#/components/schemas/Attribute" gender: $ref: "#/components/schemas/Attribute" hire_date: $ref: "#/components/schemas/Attribute" holiday_calendar: $ref: "#/components/schemas/HolidayCalendar" hourly_salary: $ref: "#/components/schemas/Attribute" id: $ref: "#/components/schemas/Attribute" last_name: $ref: "#/components/schemas/Attribute" office: $ref: "#/components/schemas/Office" position: $ref: "#/components/schemas/Attribute" probation_period_end: $ref: "#/components/schemas/Attribute" status: $ref: "#/components/schemas/Attribute" supervisor: $ref: "#/components/schemas/Supervisor" termination_date: $ref: "#/components/schemas/Attribute" termination_reason: $ref: "#/components/schemas/Attribute" termination_type: $ref: "#/components/schemas/Attribute" vacation_day_balance: $ref: "#/components/schemas/Attribute" weekly_working_hours: $ref: "#/components/schemas/Attribute" work_schedule: $ref: "#/components/schemas/WorkSchedule" type: object type: array type: type: string required: - type - attributes type: object EmployeeResponse: allOf: - $ref: "#/components/schemas/Response" - properties: data: allOf: - $ref: "#/components/schemas/Employee" type: object type: object title: Employee EmployeesResponse: allOf: - $ref: "#/components/schemas/Response" - properties: data: items: allOf: - $ref: "#/components/schemas/Employee" type: object type: array type: object title: List of Employees ErrorResponse: properties: error: properties: code: type: integer message: type: string type: object success: type: boolean required: - success - error title: Default error response type: object HolidayCalendar: allOf: - $ref: "#/components/schemas/Attribute" properties: value: properties: attributes: properties: country: type: string id: type: number name: type: string state: type: string type: object type: type: string type: object type: object NewAttendancePeriodRequest: example: attendances: - break: 120 comment: $ref: "#/components/schemas/UpdateAttendancePeriodRequest/example/comment" date: 2017-01-18 employee: 1234 end_time: 18:00 start_time: 08:00 - break: 35 comment: I was productive as hell date: 2017-01-17 employee: 1235 end_time: 12:00 start_time: 09:00 properties: attendances: items: properties: break: description: Break in minutes format: int32 type: integer comment: description: Optional comment type: string date: description: Attendance date as YYYY-MM-DD format: date type: string employee: description: Employee identifier type: integer end_time: description: End time as HH:MM pattern: ^\d\d:\d\d$ type: string start_time: description: Start time as HH:MM pattern: ^\d\d:\d\d$ type: string required: - employee - date - start_time - end_time - break - comment type: object type: array title: Create a New Attendance Period request type: object NewAttendancePeriodResponse: allOf: - $ref: "#/components/schemas/Response" - properties: data: properties: id: items: type: integer type: array message: type: string type: object type: object type: object Office: allOf: - $ref: "#/components/schemas/Attribute" properties: value: properties: attributes: properties: name: type: string type: object type: type: string type: object type: object Response: properties: data: type: object success: type: boolean required: - success - data title: Default response object type: object Supervisor: allOf: - $ref: "#/components/schemas/Attribute" properties: value: $ref: "#/components/schemas/Employee" type: object TimeOffTypeResource: properties: attributes: properties: name: type: string type: object id: description: identifier type: integer type: description: Time-off type resource name enum: - TimeOffType type: string title: Type of time-off resource type: object UpdateAttendancePeriodRequest: example: break: 35 comment: null date: 2019-03-17 end_time: 12:00 start_time: 9:00 properties: break: description: Break in minutes format: int32 type: integer comment: description: Optional comment type: string date: description: Attendance date as YYYY-MM-DD format: date type: string end_time: description: End time as HH:MM pattern: ^\d\d:\d\d$ type: string start_time: description: Start time as HH:MM pattern: ^\d\d:\d\d$ type: string title: Update an existing attendance period type: object WorkSchedule: allOf: - $ref: "#/components/schemas/Attribute" properties: value: properties: attributes: properties: friday: pattern: ^\d\d:\d\d$ type: string id: type: number monday: pattern: ^\d\d:\d\d$ type: string name: type: string saturday: pattern: ^\d\d:\d\d$ type: string sunday: pattern: ^\d\d:\d\d$ type: string thursday: pattern: ^\d\d:\d\d$ type: string tuesday: pattern: ^\d\d:\d\d$ type: string wednesday: pattern: ^\d\d:\d\d$ type: string type: object type: type: string type: object type: object securitySchemes: auth: in: header name: Authorization type: apiKey