easyappointments/openapi.yml

2264 lines
54 KiB
YAML
Raw Normal View History

openapi: 3.0.3
info:
2021-11-04 11:34:04 +03:00
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:
2021-11-04 11:34:04 +03:00
description: Find out more about Easy!Appointments
url: https://easyappointments.org/docs.html
servers:
2021-11-04 11:34:04 +03:00
- url: https://demo.easyappointments.org/index.php/api/v1/
tags:
2021-11-04 11:34:04 +03:00
- name: admins
- name: appointments
- name: availabilities
- name: categories
- name: customers
2021-11-04 11:34:04 +03:00
- name: providers
- name: secretaries
- name: services
- name: settings
- name: unavailabilities
paths:
2021-11-04 11:34:04 +03:00
/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: OK
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/Availabilities'
'401':
description: Unauthorized
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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
deprecated: true
2021-11-04 11:34:04 +03:00
responses:
'200':
description: OK
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/AppointmentCollection'
'401':
description: Unauthorized
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
security:
- BearerToken: []
- BasicAuth: []
post:
tags:
- appointments
summary: Create an appointment
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AppointmentPayload'
required: true
2021-11-04 11:34:04 +03:00
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/AppointmentRecord'
'401':
description: Unauthorized
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AppointmentRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: true
2021-11-04 11:34:04 +03:00
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AppointmentRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: No Content
'401':
description: Unauthorized
2021-11-04 11:34:04 +03:00
'404':
description: Not Found
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UnavailabilityCollection'
'401':
description: Unauthorized
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
post:
tags:
- unavailabilities
summary: Create an unavailability
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UnavailabilityPayload'
required: true
2021-11-04 11:34:04 +03:00
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/UnavailabilityRecord'
'401':
description: Unauthorized
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UnavailabilityRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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/UnavailabilityPayload'
required: true
2021-11-04 11:34:04 +03:00
responses:
'200':
description: OK
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/UnavailabilityRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: No Content
'401':
description: Unauthorized
2021-11-04 11:34:04 +03:00
'404':
description: Not Found
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerCollection'
'401':
description: Unauthorized
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
security:
- BearerToken: []
- BasicAuth: []
post:
tags:
- customers
summary: Create a customer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerPayload'
required: true
2021-11-04 11:34:04 +03:00
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerRecord'
'401':
description: Unauthorized
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: OK
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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/CustomerPayload'
required: true
2021-11-04 11:34:04 +03:00
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: No Content
'401':
description: Unauthorized
2021-11-04 11:34:04 +03:00
'404':
description: Not Found
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceCollection'
'401':
description: Unauthorized
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
security:
- BearerToken: []
- BasicAuth: []
post:
tags:
- services
summary: Create a service
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ServicePayload'
required: true
2021-11-04 11:34:04 +03:00
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceRecord'
'401':
description: Unauthorized
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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/ServicePayload'
required: true
2021-11-04 11:34:04 +03:00
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: No Content
'401':
description: Unauthorized
2021-11-04 11:34:04 +03:00
'404':
description: Not Found
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CategoryCollection'
'401':
description: Unauthorized
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
security:
- BearerToken: []
- BasicAuth: []
post:
tags:
- categories
summary: Create a category
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CategoryPayload'
required: true
2021-11-04 11:34:04 +03:00
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/CategoryRecord'
'401':
description: Unauthorized
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CategoryRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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/CategoryPayload'
required: true
2021-11-04 11:34:04 +03:00
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CategoryRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: No Content
'401':
description: Unauthorized
2021-11-04 11:34:04 +03:00
'404':
description: Not Found
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AdminCollection'
'401':
description: Unauthorized
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
security:
- BearerToken: []
- BasicAuth: []
post:
tags:
- admins
summary: Create an admin
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AdminPayload'
2021-11-04 11:34:04 +03:00
required: true
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/AdminRecord'
'401':
description: Unauthorized
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AdminRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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/AdminPayload'
required: true
2021-11-04 11:34:04 +03:00
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AdminRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: No Content
'401':
description: Unauthorized
2021-11-04 11:34:04 +03:00
'404':
description: Not Found
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProviderCollection'
'401':
description: Unauthorized
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
security:
- BearerToken: []
- BasicAuth: []
post:
tags:
- providers
summary: Create a provider
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ProviderPayload'
required: true
2021-11-04 11:34:04 +03:00
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/ProviderRecord'
'401':
description: Unauthorized
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProviderRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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/ProviderPayload'
required: true
2021-11-04 11:34:04 +03:00
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ProviderRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: No Content
'401':
description: Unauthorized
2021-11-04 11:34:04 +03:00
'404':
description: Not Found
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SecretaryCollection'
'401':
description: Unauthorized
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
security:
- BearerToken: []
- BasicAuth: []
post:
tags:
- secretaries
summary: Create a secretary
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SecretaryPayload'
required: true
2021-11-04 11:34:04 +03:00
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/SecretaryRecord'
'401':
description: Unauthorized
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SecretaryRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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/SecretaryPayload'
required: true
2021-11-04 11:34:04 +03:00
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SecretaryRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: No Content
'401':
description: Unauthorized
2021-11-04 11:34:04 +03:00
'404':
description: Not Found
2021-11-04 11:34:04 +03:00
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: OK
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/SettingCollection'
'401':
description: Unauthorized
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
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: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SettingRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
security:
- BearerToken: []
- BasicAuth: []
put:
tags:
- settings
summary: Update a setting
parameters:
- name: settingName
in: path
required: true
schema:
type: string
2021-11-04 11:34:04 +03:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SettingPayload'
required: true
2021-11-04 11:34:04 +03:00
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SettingRecord'
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
2021-11-04 11:34:04 +03:00
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
2021-11-04 11:34:04 +03:00
x-codegen-request-body-name: body
security:
- BearerToken: []
- BasicAuth: []
components:
2021-11-04 11:34:04 +03:00
schemas:
Availabilities:
type: array
items:
type: string
AppointmentRecord:
2021-11-04 11:34:04 +03:00
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, 12345 Some Place
notes: This is a test appointment.
2021-11-04 11:34:04 +03:00
customerId: 5
providerId: 2
serviceId: 6
googleCalendarId: null
AppointmentPayload:
2021-11-04 11:34:04 +03:00
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, 12345 Some Place
notes: This is a test appointment.
2021-11-04 11:34:04 +03:00
customerId: 5
providerId: 2
serviceId: 6
AppointmentCollection:
type: array
items:
$ref: '#/components/schemas/AppointmentRecord'
UnavailabilityRecord:
2021-11-04 11:34:04 +03:00
type: object
properties:
id:
type: integer
book:
type: string
start:
type: string
end:
type: string
hash:
type: string
location:
type: string
2021-11-04 11:34:04 +03:00
notes:
type: string
providerId:
type: integer
googleCalendarId:
type: integer
2021-11-04 11:34:04 +03:00
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: 'z9nhNwtI4QOV'
location: Test Street 1A, 12345 Some Place
notes: This is a test unavailability.
2021-11-04 11:34:04 +03:00
providerId: 2
googleCalendarId: null
UnavailabilityPayload:
2021-11-04 11:34:04 +03:00
type: object
properties:
start:
type: string
end:
type: string
location:
type: string
status:
type: string
2021-11-04 11:34:04 +03:00
notes:
type: string
providerId:
type: integer
example:
start: '2021-01-01 17:00:00'
end: '2021-01-01 18:00:00'
location: Test Street 1A, 12345 Some Place
notes: This is a test appointment.
2021-11-04 11:34:04 +03:00
providerId: 2
UnavailabilityCollection:
type: array
items:
$ref: '#/components/schemas/UnavailabilityRecord'
CustomerRecord:
2021-11-04 11:34:04 +03:00
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
timezone:
type: string
language:
type: string
2021-11-04 11:34:04 +03:00
notes:
type: string
example:
id: 1
firstName: John
lastName: Doe
email: john@example.org
phone: Test Street 1A
city: Some Place
zip: '12345'
timezone: UTC
language: english
notes: This is a test customer.
CustomerPayload:
2021-11-04 11:34:04 +03:00
type: object
properties:
firstName:
type: string
lastName:
type: string
email:
type: string
phone:
type: string
address:
type: string
city:
type: string
zip:
type: string
timezone:
type: string
language:
type: string
2021-11-04 11:34:04 +03:00
notes:
type: string
example:
firstName: John
lastName: Doe
email: john@example.org
phone: Test Street 1A
city: Some Place
zip: '12345'
timezone: UTC
language: english
notes: This is a test customer.
CustomerCollection:
type: array
items:
$ref: '#/components/schemas/CustomerRecord'
ServiceRecord:
2021-11-04 11:34:04 +03:00
type: object
properties:
id:
type: integer
name:
type: string
duration:
type: integer
price:
type: number
format: float
currency:
type: string
location:
type: string
2021-11-04 11:34:04 +03:00
description:
type: string
availabilitiesType:
type: string
attendantsNumber:
type: integer
categoryId:
type: integer
example:
id: 1
name: Test Service
duration: 30
price: 10
currency: USD
location: Test Street 1A, 12345 Some Place
2021-11-04 11:34:04 +03:00
description: This is a test service.
availabilitiesType: flexible
2021-11-04 11:34:04 +03:00
attendantsNumber: 1
categoryId: null
ServicePayload:
2021-11-04 11:34:04 +03:00
type: object
properties:
name:
type: string
duration:
type: integer
price:
type: number
currency:
type: string
location:
type: string
2021-11-04 11:34:04 +03:00
description:
type: string
availabilitiesType:
type: string
attendantsNumber:
type: integer
categoryId:
type: integer
example:
name: Test Service
duration: 30
price: 10
currency: USD
location: Test Street 1A, 12345 Some Place
2021-11-04 11:34:04 +03:00
description: This is a test service.
availabilitiesType: flexible
2021-11-04 11:34:04 +03:00
attendantsNumber: 1
categoryId: null
ServiceCollection:
type: array
items:
$ref: '#/components/schemas/ServiceRecord'
CategoryRecord:
2021-11-04 11:34:04 +03:00
type: object
properties:
id:
type: integer
name:
type: string
description:
type: string
example:
id: 1
name: Test Category
description: This is a test category.
CategoryPayload:
2021-11-04 11:34:04 +03:00
type: object
properties:
name:
type: string
description:
type: string
example:
name: Test Category
description: This is a test category.
CategoryCollection:
type: array
items:
$ref: '#/components/schemas/CategoryRecord'
AdminRecord:
2021-11-04 11:34:04 +03:00
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
AdminPayload:
2021-11-04 11:34:04 +03:00
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
language:
type: string
2021-11-04 11:34:04 +03:00
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
language: english
2021-11-04 11:34:04 +03:00
settings:
username: johndoe
password: johndoe
notifications: true
calendarView: default
AdminCollection:
2021-11-04 11:34:04 +03:00
type: array
items:
$ref: '#/components/schemas/AdminRecord'
ProviderRecord:
2021-11-04 11:34:04 +03:00
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
language:
type: string
2021-11-04 11:34:04 +03:00
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
language: english
services: []
2021-11-04 11:34:04 +03:00
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
ProviderPayload:
2021-11-04 11:34:04 +03:00
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
language:
type: string
2021-11-04 11:34:04 +03:00
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
language: english
services: []
2021-11-04 11:34:04 +03:00
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
ProviderCollection:
type: array
items:
$ref: '#/components/schemas/ProviderRecord'
SecretaryRecord:
2021-11-04 11:34:04 +03:00
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
language:
type: string
2021-11-04 11:34:04 +03:00
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
language: english
providers: []
2021-11-04 11:34:04 +03:00
settings:
username: johndoe
password: johndoe
notifications: true
calendarView: default
SecretaryPayload:
2021-11-04 11:34:04 +03:00
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
language:
type: string
providers:
type: array
items:
type: integer
2021-11-04 11:34:04 +03:00
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
language: english
providers: []
2021-11-04 11:34:04 +03:00
settings:
username: johndoe
password: johndoe
notifications: true
calendarView: default
SecretaryCollection:
type: array
items:
$ref: '#/components/schemas/SecretaryRecord'
SettingRecord:
2021-11-04 11:34:04 +03:00
type: object
properties:
name:
type: string
value:
type: string
example:
name: company_name
value: ACME Inc
SettingPayload:
2021-11-04 11:34:04 +03:00
type: object
properties:
value:
type: string
example:
value: ACME Inc
SettingCollection:
type: array
items:
$ref: '#/components/schemas/SettingRecord'
ErrorResponse:
type: object
properties:
success:
type: boolean
message:
type: string
example:
success: false
message: Test error message with debug info.
2021-11-04 11:34:04 +03:00
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.