diff --git a/openapi.yml b/openapi.yml index 214ec0cc..943f5cc9 100644 --- a/openapi.yml +++ b/openapi.yml @@ -1,1412 +1,2102 @@ openapi: 3.0.3 info: - title: easyappointments-api - version: 1.0.0 + title: Easy!Appointments API + version: 1.0.0 + description: These are the OpenAPI specs that describe the REST API of Easy!Appointments. + termsOfService: https://easyappointments.org/terms-and-conditions + contact: + name: Easy!Appointments + url: https://easyappointments.org + email: info@easyappointments.org + license: + name: GPL-3.0 + url: https://www.gnu.org/licenses/gpl-3.0.en.html externalDocs: - description: Find out more about Easy!Appointments - url: https://easyappointments.org/docs.html + description: Find out more about Easy!Appointments + url: https://easyappointments.org/docs.html servers: - - url: https://demo.easyappointments.org/index.php/api/v1/ + - url: https://demo.easyappointments.org/index.php/api/v1/ tags: - - name: admins - - name: providers - - name: secretaries - - name: customers - - name: availabilities - - name: unavailabilities - - name: appointments - - name: services - - name: categories - - name: settings + - name: admins + - name: providers + - name: secretaries + - name: customers + - name: availabilities + - name: unavailabilities + - name: appointments + - name: services + - name: categories + - name: settings paths: - /availabilities: - get: - tags: - - availabilities - summary: Gets availability - parameters: - - name: providerId - in: query - schema: - type: integer - - name: serviceId - in: query - schema: - type: integer - - name: date - in: query - schema: - type: string - responses: - '200': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Availabilities' - /appointments: - get: - tags: - - appointments - summary: Get all appointments - parameters: - - name: page - in: query - schema: - type: integer - - name: length - in: query - schema: - type: integer - - name: sort - in: query - schema: - type: string - - name: q - in: query - schema: - type: string - - name: aggregates - in: query - schema: - type: string - responses: - '200': - description: success - content: - application/json: - schema: - type: object - post: - tags: - - appointments - summary: Create single appointment - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Appointment' - required: false - responses: - '201': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Appointment' - x-codegen-request-body-name: body - /appointments/{appointmentId}: - get: - tags: - - appointments - summary: Get single appointment - parameters: - - name: appointmentId - in: path - required: true - schema: - type: integer - responses: - '200': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Appointment' - put: - tags: - - appointments - summary: Update single appointment - parameters: - - name: appointmentId - in: path - required: true - schema: - type: integer - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Appointment' - required: false - responses: - '200': - description: successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/Appointment' - x-codegen-request-body-name: body - delete: - tags: - - appointments - summary: Delete single appointment - parameters: - - name: appointmentId - in: path - required: true - schema: - type: integer - responses: - '204': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Appointment' - '404': - description: not found - content: {} - /unavailabilities: - get: - tags: - - unavailabilities - summary: Get all unavailabilities - parameters: - - name: page - in: query - schema: - type: integer - - name: length - in: query - schema: - type: integer - - name: sort - in: query - schema: - type: string - - name: q - in: query - schema: - type: string - responses: - '200': - description: success - content: - application/json: - schema: - type: object - post: - tags: - - unavailabilities - summary: Create single unavailability - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Unavailability' - required: false - responses: - '201': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Unavailability' - x-codegen-request-body-name: body - /unavailabilities/{unavailabilityId}: - get: - tags: - - unavailabilities - summary: Get single unavailability - parameters: - - name: unavailabilityId - in: path - required: true - schema: - type: integer - responses: - '200': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Unavailability' - put: - tags: - - unavailabilities - summary: Update single unavailability - parameters: - - name: unavailabilityId - in: path - required: true - schema: - type: integer - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Unavailability' - required: false - responses: - '200': - description: successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/Unavailability' - x-codegen-request-body-name: body - delete: - tags: - - unavailabilities - summary: Delete single unavailability - parameters: - - name: unavailabilityId - in: path - required: true - schema: - type: integer - responses: - '204': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Unavailability' - '404': - description: not found - content: {} - /customers: - get: - tags: - - customers - summary: Get all customers - parameters: - - name: page - in: query - schema: - type: integer - - name: length - in: query - schema: - type: integer - - name: sort - in: query - schema: - type: string - - name: q - in: query - schema: - type: string - responses: - '200': - description: success - content: - application/json: - schema: - type: object - post: - tags: - - customers - summary: Create single customer - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Customer' - required: false - responses: - '201': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Customer' - x-codegen-request-body-name: body - /customers/{customerId}: - get: - tags: - - customers - summary: Get single customer - parameters: - - name: customerId - in: path - required: true - schema: - type: integer - responses: - '200': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Customer' - put: - tags: - - customers - summary: Update single customer - parameters: - - name: customerId - in: path - required: true - schema: - type: integer - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Customer' - required: false - responses: - '200': - description: successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/Customer' - x-codegen-request-body-name: body - delete: - tags: - - customers - summary: Delete single customer - parameters: - - name: customerId - in: path - required: true - schema: - type: integer - responses: - '204': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Customer' - '404': - description: not found - content: {} - /services: - get: - tags: - - services - summary: Get all services - parameters: - - name: page - in: query - schema: - type: integer - - name: length - in: query - schema: - type: integer - - name: sort - in: query - schema: - type: string - - name: q - in: query - schema: - type: string - responses: - '200': - description: success - content: - application/json: - schema: - type: object - post: - tags: - - services - summary: Create single service - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Service' - required: false - responses: - '201': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Service' - x-codegen-request-body-name: body - /services/{serviceId}: - get: - tags: - - services - summary: Get single service - parameters: - - name: serviceId - in: path - required: true - schema: - type: integer - responses: - '200': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Service' - put: - tags: - - services - summary: Update single service - parameters: - - name: serviceId - in: path - required: true - schema: - type: integer - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Service' - required: false - responses: - '200': - description: successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/Service' - x-codegen-request-body-name: body - delete: - tags: - - services - summary: Delete single service - parameters: - - name: serviceId - in: path - required: true - schema: - type: integer - responses: - '204': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Service' - '404': - description: not found - content: {} - /categories: - get: - tags: - - categories - summary: Get all categories - parameters: - - name: page - in: query - schema: - type: integer - - name: length - in: query - schema: - type: integer - - name: sort - in: query - schema: - type: string - - name: q - in: query - schema: - type: string - responses: - '200': - description: success - content: - application/json: - schema: - type: object - post: - tags: - - categories - summary: Create single category - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Category' - required: false - responses: - '201': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Category' - x-codegen-request-body-name: body - /categories/{categoryId}: - get: - tags: - - categories - summary: Get single category - parameters: - - name: categoryId - in: path - required: true - schema: - type: integer - responses: - '200': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Category' - put: - tags: - - categories - summary: Update single category - parameters: - - name: categoryId - in: path - required: true - schema: - type: integer - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Category' - required: false - responses: - '200': - description: successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/Category' - x-codegen-request-body-name: body - delete: - tags: - - categories - summary: Delete single category - parameters: - - name: categoryId - in: path - required: true - schema: - type: integer - responses: - '204': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Category' - '404': - description: not found - content: {} - /admins: - get: - tags: - - admins - summary: Get all admins - parameters: - - name: page - in: query - schema: - type: integer - - name: length - in: query - schema: - type: integer - - name: sort - in: query - schema: - type: string - - name: q - in: query - schema: - type: string - - name: fields - in: query - schema: - type: string - responses: - '200': - description: success - content: - application/json: - schema: - type: object - post: - tags: - - admins - summary: Create an admin - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/AdminCreate' - required: true - responses: - '201': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Admin' - x-codegen-request-body-name: body - /admins/{adminId}: - get: - tags: - - admins - summary: Get single admin - parameters: - - name: adminId - in: path - required: true - schema: - type: integer - responses: - '200': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Admin' - put: - tags: - - admins - summary: Update single admin - parameters: - - name: adminId - in: path - required: true - schema: - type: integer - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Admin' - required: false - responses: - '200': - description: successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/Admin' - x-codegen-request-body-name: body - delete: - tags: - - admins - summary: Delete single admin - parameters: - - name: adminId - in: path - required: true - schema: - type: integer - responses: - '204': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Admin' - '404': - description: not found - content: {} - /providers: - get: - tags: - - providers - summary: Get all providers - parameters: - - name: page - in: query - schema: - type: integer - - name: length - in: query - schema: - type: integer - - name: sort - in: query - schema: - type: string - - name: q - in: query - schema: - type: string - responses: - '200': - description: success - content: - application/json: - schema: - type: object - post: - tags: - - providers - summary: Create single provider - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Provider' - required: false - responses: - '201': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Provider' - x-codegen-request-body-name: body - /providers/{providerId}: - get: - tags: - - providers - summary: Get single provider - parameters: - - name: providerId - in: path - required: true - schema: - type: integer - responses: - '200': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Provider' - put: - tags: - - providers - summary: Update single provider - parameters: - - name: providerId - in: path - required: true - schema: - type: integer - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Provider' - required: false - responses: - '200': - description: successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/Provider' - x-codegen-request-body-name: body - delete: - tags: - - providers - summary: Delete single provider - parameters: - - name: providerId - in: path - required: true - schema: - type: integer - responses: - '204': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Provider' - '404': - description: not found - content: {} - /secretaries: - get: - tags: - - secretaries - summary: Get all secretaries - parameters: - - name: page - in: query - schema: - type: integer - - name: length - in: query - schema: - type: integer - - name: sort - in: query - schema: - type: string - - name: q - in: query - schema: - type: string - responses: - '200': - description: success - content: - application/json: - schema: - type: object - post: - tags: - - secretaries - summary: Create single secretary - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Secretary' - required: false - responses: - '201': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Secretary' - x-codegen-request-body-name: body - /secretaries/{secretaryId}: - get: - tags: - - secretaries - summary: Get single secretary - parameters: - - name: secretaryId - in: path - required: true - schema: - type: integer - responses: - '200': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Secretary' - put: - tags: - - secretaries - summary: Update single secretary - parameters: - - name: secretaryId - in: path - required: true - schema: - type: integer - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Secretary' - required: false - responses: - '200': - description: successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/Secretary' - x-codegen-request-body-name: body - delete: - tags: - - secretaries - summary: Delete single secretary - parameters: - - name: secretaryId - in: path - required: true - schema: - type: integer - responses: - '204': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Secretary' - '404': - description: not found - content: {} - /settings: - get: - tags: - - settings - summary: Get all settings - parameters: - - name: page - in: query - schema: - type: integer - - name: length - in: query - schema: - type: integer - - name: sort - in: query - schema: - type: string - - name: q - in: query - schema: - type: string - responses: - '200': - description: success - content: - application/json: - schema: - type: object - /settings/{settingName}: - get: - tags: - - settings - summary: Get single setting - parameters: - - name: settingName - in: path - required: true - schema: - type: string - responses: - '200': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Setting' - put: - tags: - - settings - summary: Update single setting - parameters: - - name: settingName - in: path - required: true - schema: - type: integer - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/Setting' - required: false - responses: - '200': - description: successful operation - content: - application/json: - schema: - $ref: '#/components/schemas/Setting' - x-codegen-request-body-name: body - delete: - tags: - - settings - summary: Delete single setting - parameters: - - name: settingName - in: path - required: true - schema: - type: integer - responses: - '204': - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/Setting' - '404': - description: not found - content: {} + /availabilities: + get: + tags: + - availabilities + summary: Gets availability + parameters: + - name: providerId + in: query + schema: + type: integer + - name: serviceId + in: query + schema: + type: integer + - name: date + in: query + schema: + type: string + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Availabilities' + security: + - BearerToken: [] + - BasicAuth: [] + /appointments: + get: + tags: + - appointments + summary: Get all appointments + parameters: + - name: page + in: query + schema: + type: integer + - name: length + in: query + schema: + type: integer + - name: sort + in: query + schema: + type: string + - name: q + in: query + schema: + type: string + - name: aggregates + in: query + schema: + type: string + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/AppointmentCollection' + security: + - BearerToken: [] + - BasicAuth: [] + post: + tags: + - appointments + summary: Create an appointment + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AppointmentPayload' + required: false + responses: + '201': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/AppointmentEntry' + x-codegen-request-body-name: body + security: + - BearerToken: [] + - BasicAuth: [] + /appointments/{appointmentId}: + get: + tags: + - appointments + summary: Get an appointment + parameters: + - name: appointmentId + in: path + required: true + schema: + type: integer + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/AppointmentEntry' + security: + - BearerToken: [] + - BasicAuth: [] + put: + tags: + - appointments + summary: Update an appointment + parameters: + - name: appointmentId + in: path + required: true + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AppointmentPayload' + required: false + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/AppointmentEntry' + x-codegen-request-body-name: body + security: + - BearerToken: [] + - BasicAuth: [] + delete: + tags: + - appointments + summary: Delete an appointment + parameters: + - name: appointmentId + in: path + required: true + schema: + type: integer + responses: + '204': + description: success + '404': + description: not found + security: + - BearerToken: [] + - BasicAuth: [] + /unavailabilities: + get: + tags: + - unavailabilities + summary: Get all unavailabilities + parameters: + - name: page + in: query + schema: + type: integer + - name: length + in: query + schema: + type: integer + - name: sort + in: query + schema: + type: string + - name: q + in: query + schema: + type: string + responses: + '200': + description: success + content: + application/json: + schema: + type: object + post: + tags: + - unavailabilities + summary: Create an unavailability + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UnavailabilityCreate' + required: false + responses: + '201': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Unavailability' + x-codegen-request-body-name: body + security: + - BearerToken: [] + - BasicAuth: [] + /unavailabilities/{unavailabilityId}: + get: + tags: + - unavailabilities + summary: Get an unavailability + parameters: + - name: unavailabilityId + in: path + required: true + schema: + type: integer + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Unavailability' + security: + - BearerToken: [] + - BasicAuth: [] + put: + tags: + - unavailabilities + summary: Update an unavailability + parameters: + - name: unavailabilityId + in: path + required: true + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UnavailabilityUpdate' + required: false + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Unavailability' + x-codegen-request-body-name: body + security: + - BearerToken: [] + - BasicAuth: [] + delete: + tags: + - unavailabilities + summary: Delete an unavailability + parameters: + - name: unavailabilityId + in: path + required: true + schema: + type: integer + responses: + '204': + description: success + '404': + description: not found + content: {} + security: + - BearerToken: [] + - BasicAuth: [] + /customers: + get: + tags: + - customers + summary: Get all customers + parameters: + - name: page + in: query + schema: + type: integer + - name: length + in: query + schema: + type: integer + - name: sort + in: query + schema: + type: string + - name: q + in: query + schema: + type: string + responses: + '200': + description: success + content: + application/json: + schema: + type: object + security: + - BearerToken: [] + - BasicAuth: [] + post: + tags: + - customers + summary: Create a customer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CustomerCreate' + required: false + responses: + '201': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Customer' + security: + - BearerToken: [] + - BasicAuth: [] + x-codegen-request-body-name: body + /customers/{customerId}: + get: + tags: + - customers + summary: Get a customer + parameters: + - name: customerId + in: path + required: true + schema: + type: integer + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Customer' + security: + - BearerToken: [] + - BasicAuth: [] + put: + tags: + - customers + summary: Update a customer + parameters: + - name: customerId + in: path + required: true + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CustomerUpdate' + required: false + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Customer' + x-codegen-request-body-name: body + security: + - BearerToken: [] + - BasicAuth: [] + delete: + tags: + - customers + summary: Delete a customer + parameters: + - name: customerId + in: path + required: true + schema: + type: integer + responses: + '204': + description: success + '404': + description: not found + content: {} + security: + - BearerToken: [] + - BasicAuth: [] + /services: + get: + tags: + - services + summary: Get all services + parameters: + - name: page + in: query + schema: + type: integer + - name: length + in: query + schema: + type: integer + - name: sort + in: query + schema: + type: string + - name: q + in: query + schema: + type: string + responses: + '200': + description: success + content: + application/json: + schema: + type: object + security: + - BearerToken: [] + - BasicAuth: [] + post: + tags: + - services + summary: Create a service + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceCreate' + required: false + responses: + '201': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Service' + x-codegen-request-body-name: body + security: + - BearerToken: [] + - BasicAuth: [] + /services/{serviceId}: + get: + tags: + - services + summary: Get a service + parameters: + - name: serviceId + in: path + required: true + schema: + type: integer + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Service' + security: + - BearerToken: [] + - BasicAuth: [] + put: + tags: + - services + summary: Update a service + parameters: + - name: serviceId + in: path + required: true + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceUpdate' + required: false + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Service' + x-codegen-request-body-name: body + security: + - BearerToken: [] + - BasicAuth: [] + delete: + tags: + - services + summary: Delete a service + parameters: + - name: serviceId + in: path + required: true + schema: + type: integer + responses: + '204': + description: success + '404': + description: not found + content: {} + security: + - BearerToken: [] + - BasicAuth: [] + /categories: + get: + tags: + - categories + summary: Get all categories + parameters: + - name: page + in: query + schema: + type: integer + - name: length + in: query + schema: + type: integer + - name: sort + in: query + schema: + type: string + - name: q + in: query + schema: + type: string + responses: + '200': + description: success + content: + application/json: + schema: + type: object + security: + - BearerToken: [] + - BasicAuth: [] + post: + tags: + - categories + summary: Create a category + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CategoryCreate' + required: false + responses: + '201': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Category' + x-codegen-request-body-name: body + security: + - BearerToken: [] + - BasicAuth: [] + /categories/{categoryId}: + get: + tags: + - categories + summary: Get a category + parameters: + - name: categoryId + in: path + required: true + schema: + type: integer + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Category' + security: + - BearerToken: [] + - BasicAuth: [] + put: + tags: + - categories + summary: Update a category + parameters: + - name: categoryId + in: path + required: true + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CategoryUpdate' + required: false + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Category' + x-codegen-request-body-name: body + security: + - BearerToken: [] + - BasicAuth: [] + delete: + tags: + - categories + summary: Delete a category + parameters: + - name: categoryId + in: path + required: true + schema: + type: integer + responses: + '204': + description: success + '404': + description: not found + content: {} + security: + - BearerToken: [] + - BasicAuth: [] + /admins: + get: + tags: + - admins + summary: Get all admins + parameters: + - name: page + in: query + schema: + type: integer + - name: length + in: query + schema: + type: integer + - name: sort + in: query + schema: + type: string + - name: q + in: query + schema: + type: string + - name: fields + in: query + schema: + type: string + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/AdminAll' + security: + - BearerToken: [] + - BasicAuth: [] + post: + tags: + - admins + summary: Create an admin + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminCreate' + required: true + responses: + '201': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Admin' + x-codegen-request-body-name: body + security: + - BearerToken: [] + - BasicAuth: [] + /admins/{adminId}: + get: + tags: + - admins + summary: Get an admin + parameters: + - name: adminId + in: path + required: true + schema: + type: integer + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Admin' + security: + - BearerToken: [] + - BasicAuth: [] + put: + tags: + - admins + summary: Update an admin + parameters: + - name: adminId + in: path + required: true + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AdminUpdate' + required: false + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Admin' + x-codegen-request-body-name: body + security: + - BearerToken: [] + - BasicAuth: [] + delete: + tags: + - admins + summary: Delete an admin + parameters: + - name: adminId + in: path + required: true + schema: + type: integer + responses: + '204': + description: success + '404': + description: Not Found + security: + - BearerToken: [] + - BasicAuth: [] + /providers: + get: + tags: + - providers + summary: Get all providers + parameters: + - name: page + in: query + schema: + type: integer + - name: length + in: query + schema: + type: integer + - name: sort + in: query + schema: + type: string + - name: q + in: query + schema: + type: string + responses: + '200': + description: success + content: + application/json: + schema: + type: object + security: + - BearerToken: [] + - BasicAuth: [] + post: + tags: + - providers + summary: Create a provider + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProviderCreate' + required: false + responses: + '201': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Provider' + x-codegen-request-body-name: body + security: + - BearerToken: [] + - BasicAuth: [] + /providers/{providerId}: + get: + tags: + - providers + summary: Get a provider + parameters: + - name: providerId + in: path + required: true + schema: + type: integer + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Provider' + security: + - BearerToken: [] + - BasicAuth: [] + put: + tags: + - providers + summary: Update a provider + parameters: + - name: providerId + in: path + required: true + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProviderUpdate' + required: false + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Provider' + x-codegen-request-body-name: body + security: + - BearerToken: [] + - BasicAuth: [] + delete: + tags: + - providers + summary: Delete a provider + parameters: + - name: providerId + in: path + required: true + schema: + type: integer + responses: + '204': + description: success + '404': + description: not found + content: {} + security: + - BearerToken: [] + - BasicAuth: [] + /secretaries: + get: + tags: + - secretaries + summary: Get all secretaries + parameters: + - name: page + in: query + schema: + type: integer + - name: length + in: query + schema: + type: integer + - name: sort + in: query + schema: + type: string + - name: q + in: query + schema: + type: string + responses: + '200': + description: success + content: + application/json: + schema: + type: object + security: + - BearerToken: [] + - BasicAuth: [] + post: + tags: + - secretaries + summary: Create a secretary + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SecretaryCreate' + required: false + responses: + '201': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Secretary' + x-codegen-request-body-name: body + security: + - BearerToken: [] + - BasicAuth: [] + /secretaries/{secretaryId}: + get: + tags: + - secretaries + summary: Get a secretary + parameters: + - name: secretaryId + in: path + required: true + schema: + type: integer + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Secretary' + security: + - BearerToken: [] + - BasicAuth: [] + put: + tags: + - secretaries + summary: Update a secretary + parameters: + - name: secretaryId + in: path + required: true + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SecretaryUpdate' + required: false + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Secretary' + x-codegen-request-body-name: body + security: + - BearerToken: [] + - BasicAuth: [] + delete: + tags: + - secretaries + summary: Delete a secretary + parameters: + - name: secretaryId + in: path + required: true + schema: + type: integer + responses: + '204': + description: success + '404': + description: not found + content: {} + security: + - BearerToken: [] + - BasicAuth: [] + /settings: + get: + tags: + - settings + summary: Get all settings + parameters: + - name: page + in: query + schema: + type: integer + - name: length + in: query + schema: + type: integer + - name: sort + in: query + schema: + type: string + - name: q + in: query + schema: + type: string + responses: + '200': + description: success + content: + application/json: + schema: + type: object + security: + - BearerToken: [] + - BasicAuth: [] + /settings/{settingName}: + get: + tags: + - settings + summary: Get a setting + parameters: + - name: settingName + in: path + required: true + schema: + type: string + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Setting' + security: + - BearerToken: [] + - BasicAuth: [] + put: + tags: + - settings + summary: Update a setting + parameters: + - name: settingName + in: path + required: true + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SettingUpdate' + required: false + responses: + '200': + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/Setting' + x-codegen-request-body-name: body + security: + - BearerToken: [] + - BasicAuth: [] components: - schemas: - Availabilities: - type: array - items: - type: string - Appointment: - type: object - properties: - id: - type: integer - book: - type: string - start: - type: string - end: - type: string - hash: - type: string - location: - type: string - status: - type: string - notes: - type: string - customerId: - type: integer - providerId: - type: integer - serviceId: - type: integer - googleCalendarId: - type: string - AppointmentCreate: - type: object - properties: - book: - type: string - start: - type: string - end: - type: string - hash: - type: string - location: - type: string - status: - type: string - notes: - type: string - customerId: - type: integer - providerId: - type: integer - serviceId: - type: integer - googleCalendarId: - type: string - AppointmentUpdate: - type: object - properties: - id: - type: integer - book: - type: string - start: - type: string - end: - type: string - hash: - type: string - location: - type: string - status: - type: string - notes: - type: string - customerId: - type: integer - providerId: - type: integer - serviceId: - type: integer - googleCalendarId: - type: string - Unavailability: - type: object - properties: - id: - type: integer - book: - type: string - start: - type: string - end: - type: string - notes: - type: string - providerId: - type: integer - Customer: - type: object - properties: - id: - type: integer - firstName: - type: string - lastName: - type: string - email: - type: string - phone: - type: string - address: - type: string - city: - type: string - zip: - type: string - notes: - type: string - Service: - type: object - properties: - id: - type: integer - name: - type: string - duration: - type: integer - price: - type: string - currency: - type: string - description: - type: string - availabilitiesType: - type: string - attendantsNumber: - type: string - categoryId: - type: integer - Category: - type: object - properties: - id: - type: integer - name: - type: string - description: - type: string - Admin: - type: object - properties: - id: - type: integer - firstName: - type: string - lastName: - type: string - email: - type: string - mobile: - type: string - phone: - type: string - address: - type: string - city: - type: string - zip: - type: string - notes: - type: string - timezone: - type: string - settings: - type: object - properties: - username: - type: string - password: - type: string - notifications: - type: boolean - calendarView: - type: string - example: - id: 1 - firstName: John - lastName: Doe - email: john@example.org - mobile: '+10000000000' - phone: '+10000000000' - address: Str. 123 - city: City - zip: '12345' - notes: This is an admin. - timezone: UTC - settings: - username: johndoe - password: johndoe - notifications: true - calendarView: default - AdminCreate: - type: object - properties: - firstName: - type: string - lastName: - type: string - email: - type: string - mobile: - type: string - phone: - type: string - address: - type: string - city: - type: string - zip: - type: string - notes: - type: string - timezone: - type: string - settings: - type: object - properties: - username: - type: string - password: - type: string - notifications: - type: boolean - calendarView: - type: string - example: - firstName: John - lastName: Doe - email: john@example.org - mobile: '+10000000000' - phone: '+10000000000' - address: Str. 123 - city: City - zip: '12345' - notes: This is an admin. - timezone: UTC - settings: - username: johndoe - password: johndoe - notifications: true - calendarView: default - AdminUpdate: - type: object - properties: - firstName: - type: string - lastName: - type: string - email: - type: string - mobile: - type: string - phone: - type: string - address: - type: string - city: - type: string - zip: - type: string - notes: - type: string - timezone: - type: string - settings: - type: object - properties: - username: - type: string - password: - type: string - notifications: - type: boolean - calendarView: - type: string - Provider: - type: object - properties: - id: - type: integer - firstName: - type: string - lastName: - type: string - email: - type: string - mobile: - type: string - phone: - type: string - address: - type: string - city: - type: string - zip: - type: string - notes: - type: string - timezone: - type: string - services: - type: array - items: - type: integer - settings: - type: object - properties: - username: - type: string - password: - type: string - notifications: - type: boolean - calendarView: - type: string - googleSync: - type: boolean - googleCalendar: - type: string - googleToken: - type: string - syncFutureDays: - type: string - syncPastDays: - type: string - workingPlan: - type: string - Secretary: - type: object - properties: - id: - type: integer - firstName: - type: string - lastName: - type: string - email: - type: string - mobile: - type: string - phone: - type: string - address: - type: string - city: - type: string - zip: - type: string - notes: - type: string - timezone: - type: string - providers: - type: array - items: - type: integer - settings: - type: object - properties: - username: - type: string - password: - type: string - notifications: - type: boolean - calendarView: - type: string - Setting: - type: object - properties: - name: - type: string - value: - type: string - securitySchemes: - BearerToken: - type: http - scheme: bearer - BasicAuth: - type: http - scheme: basic - + schemas: + Availabilities: + type: array + items: + type: string + Appointment: + type: object + properties: + id: + type: integer + book: + type: string + start: + type: string + end: + type: string + hash: + type: string + location: + type: string + notes: + type: string + customerId: + type: integer + providerId: + type: integer + serviceId: + type: integer + googleCalendarId: + type: string + example: + id: 1 + book: '2021-01-01 12:00:00' + start: '2021-01-01 17:00:00' + end: '2021-01-01 18:00:00' + hash: apTWVbSvBJXR + location: Test Street 1A + notes: This is an appointment. + customerId: 5 + providerId: 2 + serviceId: 6 + googleCalendarId: null + AppointmentCreate: + type: object + properties: + start: + type: string + end: + type: string + location: + type: string + status: + type: string + notes: + type: string + customerId: + type: integer + providerId: + type: integer + serviceId: + type: integer + example: + start: '2021-01-01 17:00:00' + end: '2021-01-01 18:00:00' + location: Test Street 1A + notes: This is an appointment. + customerId: 5 + providerId: 2 + serviceId: 6 + AppointmentUpdate: + type: object + properties: + id: + type: integer + book: + type: string + start: + type: string + end: + type: string + hash: + type: string + location: + type: string + status: + type: string + notes: + type: string + customerId: + type: integer + providerId: + type: integer + serviceId: + type: integer + googleCalendarId: + type: string + example: + start: '2021-01-01 17:00:00' + end: '2021-01-01 18:00:00' + location: Test Street 1A + notes: This is an appointment. + customerId: 5 + providerId: 2 + serviceId: 6 + Unavailability: + type: object + properties: + id: + type: integer + book: + type: string + start: + type: string + end: + type: string + notes: + type: string + providerId: + type: integer + example: + id: 1 + book: '2021-01-01 12:00:00' + start: '2021-01-01 17:00:00' + end: '2021-01-01 17:00:00' + notes: This is an unavailability. + providerId: 2 + UnavailabilityCreate: + type: object + properties: + start: + type: string + end: + type: string + notes: + type: string + providerId: + type: integer + example: + start: '2021-01-01 17:00:00' + end: '2021-01-01 17:00:00' + notes: This is an unavailability. + providerId: 2 + UnavailabilityUpdate: + type: object + properties: + start: + type: string + end: + type: string + notes: + type: string + providerId: + type: integer + example: + start: '2021-01-01 17:00:00' + end: '2021-01-01 17:00:00' + notes: This is an unavailability. + providerId: 2 + Customer: + type: object + properties: + id: + type: integer + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + address: + type: string + city: + type: string + zip: + type: string + notes: + type: string + example: + id: 1 + firstName: John + lastName: Doe + email: john@example.org + phone: Test Street 1A + city: Some Place + zip: '12345' + notes: This is a customer + CustomerCreate: + type: object + properties: + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + address: + type: string + city: + type: string + zip: + type: string + notes: + type: string + example: + firstName: John + lastName: Doe + email: john@example.org + phone: Test Street 1A + city: Some Place + zip: '12345' + notes: This is a customer + CustomerUpdate: + type: object + properties: + firstName: + type: string + lastName: + type: string + email: + type: string + phone: + type: string + address: + type: string + city: + type: string + zip: + type: string + notes: + type: string + example: + firstName: John + lastName: Doe + email: john@example.org + phone: Test Street 1A + city: Some Place + zip: '12345' + notes: This is a customer + Service: + type: object + properties: + id: + type: integer + name: + type: string + duration: + type: integer + price: + type: number + format: float + currency: + type: string + description: + type: string + availabilitiesType: + type: string + attendantsNumber: + type: integer + categoryId: + type: integer + example: + id: 1 + name: Test Service + duration: 30 + price: 10 + currency: USD + description: This is a test service. + availabilitiesType: Flexible + attendantsNumber: 1 + categoryId: null + ServiceCreate: + type: object + properties: + name: + type: string + duration: + type: integer + price: + type: number + currency: + type: string + description: + type: string + availabilitiesType: + type: string + attendantsNumber: + type: integer + categoryId: + type: integer + example: + name: Test Service + duration: 30 + price: 10 + currency: USD + description: This is a test service. + availabilitiesType: Flexible + attendantsNumber: 1 + categoryId: null + ServiceUpdate: + type: object + properties: + name: + type: string + duration: + type: integer + price: + type: number + currency: + type: string + description: + type: string + availabilitiesType: + type: string + attendantsNumber: + type: integer + categoryId: + type: integer + example: + name: Test Service + duration: 30 + price: 10 + currency: USD + description: This is a test service. + availabilitiesType: Flexible + attendantsNumber: 1 + categoryId: null + Category: + type: object + properties: + id: + type: integer + name: + type: string + description: + type: string + example: + id: 1 + name: Test Category + description: This is a test category. + CategoryCreate: + type: object + properties: + name: + type: string + description: + type: string + example: + name: Test Category + description: This is a test category. + CategoryUpdate: + type: object + properties: + name: + type: string + description: + type: string + example: + name: Test Category + description: This is a test category. + Admin: + type: object + properties: + id: + type: integer + firstName: + type: string + lastName: + type: string + email: + type: string + mobile: + type: string + phone: + type: string + address: + type: string + city: + type: string + zip: + type: string + notes: + type: string + timezone: + type: string + settings: + type: object + properties: + username: + type: string + password: + type: string + format: password + notifications: + type: boolean + calendarView: + type: string + example: + id: 1 + firstName: John + lastName: Doe + email: john@example.org + mobile: '+10000000000' + phone: '+10000000000' + address: Test Street 1A + city: Some Place + zip: '12345' + notes: This is a test admin. + timezone: UTC + settings: + username: johndoe + password: johndoe + notifications: true + calendarView: default + AdminCreate: + type: object + properties: + firstName: + type: string + lastName: + type: string + email: + type: string + mobile: + type: string + phone: + type: string + address: + type: string + city: + type: string + zip: + type: string + notes: + type: string + timezone: + type: string + settings: + type: object + properties: + username: + type: string + password: + type: string + format: password + notifications: + type: boolean + calendarView: + type: string + example: + firstName: John + lastName: Doe + email: john@example.org + mobile: '+10000000000' + phone: '+10000000000' + address: Test Street 1A + city: Some Place + zip: '12345' + notes: This is a test admin. + timezone: UTC + settings: + username: johndoe + password: johndoe + notifications: true + calendarView: default + AdminUpdate: + type: object + properties: + firstName: + type: string + lastName: + type: string + email: + type: string + mobile: + type: string + phone: + type: string + address: + type: string + city: + type: string + zip: + type: string + notes: + type: string + timezone: + type: string + settings: + type: object + properties: + username: + type: string + password: + type: string + format: password + notifications: + type: boolean + calendarView: + type: string + example: + firstName: John + lastName: Doe + email: john@example.org + mobile: '+10000000000' + phone: '+10000000000' + address: Test Street 1A + city: Some Place + zip: '12345' + notes: This is a test admin. + timezone: UTC + settings: + username: johndoe + password: johndoe + notifications: true + calendarView: default + AdminAll: + type: array + items: + $ref: '#/components/schemas/Admin' + Provider: + type: object + properties: + id: + type: integer + firstName: + type: string + lastName: + type: string + email: + type: string + mobile: + type: string + phone: + type: string + address: + type: string + city: + type: string + zip: + type: string + notes: + type: string + timezone: + type: string + services: + type: array + items: + type: integer + settings: + type: object + properties: + username: + type: string + password: + type: string + notifications: + type: boolean + calendarView: + type: string + googleSync: + type: boolean + googleCalendar: + type: string + googleToken: + type: string + syncFutureDays: + type: string + syncPastDays: + type: string + workingPlan: + type: string + example: + id: 1 + firstName: John + lastName: Doe + email: john@example.org + mobile: '+10000000000' + phone: '+10000000000' + address: Test Street 1A + city: Some Place + zip: '12345' + notes: This is a test provider. + timezone: UTC + settings: + username: johndoe + password: johndoe + notifications: true + calendarView: default + googleSync: false + googleCalendar: null + googleToken: null + syncFutureDays: 90 + syncPastDays: 30 + workingPlan: + sunday: null + monday: + start: '09:00' + end: '17:00' + breaks: [] + tuesday: + start: '09:00' + end: '17:00' + breaks: [] + wednesday: + start: '09:00' + end: '17:00' + breaks: [] + thursday: + start: '09:00' + end: '17:00' + breaks: [] + friday: + start: '09:00' + end: '17:00' + breaks: [] + saturday: null + ProviderCreate: + type: object + properties: + firstName: + type: string + lastName: + type: string + email: + type: string + mobile: + type: string + phone: + type: string + address: + type: string + city: + type: string + zip: + type: string + notes: + type: string + timezone: + type: string + services: + type: array + items: + type: integer + settings: + type: object + properties: + username: + type: string + password: + type: string + format: password + notifications: + type: boolean + calendarView: + type: string + googleSync: + type: boolean + googleCalendar: + type: string + googleToken: + type: string + syncFutureDays: + type: string + syncPastDays: + type: string + workingPlan: + type: string + example: + firstName: John + lastName: Doe + email: john@example.org + mobile: '+10000000000' + phone: '+10000000000' + address: Test Street 1A + city: Some Place + zip: '12345' + notes: This is a test provider. + timezone: UTC + settings: + username: johndoe + password: johndoe + notifications: true + calendarView: default + googleSync: false + googleCalendar: null + googleToken: null + syncFutureDays: 90 + syncPastDays: 30 + workingPlan: + sunday: null + monday: + start: '09:00' + end: '17:00' + breaks: [] + tuesday: + start: '09:00' + end: '17:00' + breaks: [] + wednesday: + start: '09:00' + end: '17:00' + breaks: [] + thursday: + start: '09:00' + end: '17:00' + breaks: [] + friday: + start: '09:00' + end: '17:00' + breaks: [] + saturday: null + ProviderUpdate: + type: object + properties: + firstName: + type: string + lastName: + type: string + email: + type: string + mobile: + type: string + phone: + type: string + address: + type: string + city: + type: string + zip: + type: string + notes: + type: string + timezone: + type: string + services: + type: array + items: + type: integer + settings: + type: object + properties: + username: + type: string + password: + type: string + format: password + notifications: + type: boolean + calendarView: + type: string + googleSync: + type: boolean + googleCalendar: + type: string + googleToken: + type: string + syncFutureDays: + type: string + syncPastDays: + type: string + workingPlan: + type: string + example: + firstName: John + lastName: Doe + email: john@example.org + mobile: '+10000000000' + phone: '+10000000000' + address: Test Street 1A + city: Some Place + zip: '12345' + notes: This is a test provider. + timezone: UTC + settings: + username: johndoe + password: johndoe + notifications: true + calendarView: default + googleSync: false + googleCalendar: null + googleToken: null + syncFutureDays: 90 + syncPastDays: 30 + workingPlan: + sunday: null + monday: + start: '09:00' + end: '17:00' + breaks: [] + tuesday: + start: '09:00' + end: '17:00' + breaks: [] + wednesday: + start: '09:00' + end: '17:00' + breaks: [] + thursday: + start: '09:00' + end: '17:00' + breaks: [] + friday: + start: '09:00' + end: '17:00' + breaks: [] + saturday: null + Secretary: + type: object + properties: + id: + type: integer + firstName: + type: string + lastName: + type: string + email: + type: string + mobile: + type: string + phone: + type: string + address: + type: string + city: + type: string + zip: + type: string + notes: + type: string + timezone: + type: string + providers: + type: array + items: + type: integer + settings: + type: object + properties: + username: + type: string + password: + type: string + format: password + notifications: + type: boolean + calendarView: + type: string + example: + id: 1 + firstName: John + lastName: Doe + email: john@example.org + mobile: '+10000000000' + phone: '+10000000000' + address: Test Street 1A + city: Some Place + zip: '12345' + notes: This is a test service. + timezone: UTC + settings: + username: johndoe + password: johndoe + notifications: true + calendarView: default + SecretaryCreate: + type: object + properties: + firstName: + type: string + lastName: + type: string + email: + type: string + mobile: + type: string + phone: + type: string + address: + type: string + city: + type: string + zip: + type: string + notes: + type: string + timezone: + type: string + settings: + type: object + properties: + username: + type: string + password: + type: string + format: password + notifications: + type: boolean + calendarView: + type: string + example: + firstName: John + lastName: Doe + email: john@example.org + mobile: '+10000000000' + phone: '+10000000000' + address: Test Street 1A + city: Some Place + zip: '12345' + notes: This is a test service. + timezone: UTC + settings: + username: johndoe + password: johndoe + notifications: true + calendarView: default + SecretaryUpdate: + type: object + properties: + firstName: + type: string + lastName: + type: string + email: + type: string + mobile: + type: string + phone: + type: string + address: + type: string + city: + type: string + zip: + type: string + notes: + type: string + timezone: + type: string + settings: + type: object + properties: + username: + type: string + password: + type: string + format: password + notifications: + type: boolean + calendarView: + type: string + example: + firstName: John + lastName: Doe + email: john@example.org + mobile: '+10000000000' + phone: '+10000000000' + address: Test Street 1A + city: Some Place + zip: '12345' + notes: This is a test service. + timezone: UTC + settings: + username: johndoe + password: johndoe + notifications: true + calendarView: default + Setting: + type: object + properties: + name: + type: string + value: + type: string + example: + name: company_name + value: ACME Inc + SettingUpdate: + type: object + properties: + value: + type: string + example: + value: ACME Inc + securitySchemes: + BearerToken: + type: http + scheme: bearer + description: >- + You can generate the API key from the settings page to authorize with + Bearer Token. + BasicAuth: + type: http + scheme: basic + description: >- + You can use the credentials of an admin user to authorize with Basic + Auth.