Reformatted the openapi.yml and added new security schemes

This commit is contained in:
Alex Tselegidis 2021-11-03 08:38:40 +01:00
parent ea659ccb9f
commit e775f5e0eb

View file

@ -1,16 +1,12 @@
openapi: 3.0.1 openapi: 3.0.3
info: info:
title: easyappointments-api title: easyappointments-api
version: 1.0.0 version: 1.0.0
externalDocs: externalDocs:
description: Find out more about Easy!Appointments description: Find out more about Easy!Appointments
url: https://easyappointments.org/docs.html url: https://easyappointments.org/docs.html
servers: servers:
- url: https://demo.easyappointments.org/index.php/api/v1/ - url: https://demo.easyappointments.org/index.php/api/v1/
tags: tags:
- name: admins - name: admins
- name: providers - name: providers
@ -22,11 +18,7 @@ tags:
- name: services - name: services
- name: categories - name: categories
- name: settings - name: settings
paths: paths:
# AVAILABILITIES
/availabilities: /availabilities:
get: get:
tags: tags:
@ -46,16 +38,12 @@ paths:
schema: schema:
type: string type: string
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Availabilities' $ref: '#/components/schemas/Availabilities'
# APPOINTMENTS
/appointments: /appointments:
get: get:
tags: tags:
@ -83,10 +71,10 @@ paths:
schema: schema:
type: string type: string
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
type: object type: object
post: post:
@ -95,15 +83,15 @@ paths:
summary: Create single appointment summary: Create single appointment
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Appointment' $ref: '#/components/schemas/Appointment'
required: false required: false
responses: responses:
201: '201':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Appointment' $ref: '#/components/schemas/Appointment'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -119,10 +107,10 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Appointment' $ref: '#/components/schemas/Appointment'
put: put:
@ -137,15 +125,15 @@ paths:
type: integer type: integer
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Appointment' $ref: '#/components/schemas/Appointment'
required: false required: false
responses: responses:
200: '200':
description: successful operation description: successful operation
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Appointment' $ref: '#/components/schemas/Appointment'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -160,18 +148,15 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
204: '204':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Appointment' $ref: '#/components/schemas/Appointment'
404: '404':
description: not found description: not found
content: {} content: {}
# UNAVAILABILITIES
/unavailabilities: /unavailabilities:
get: get:
tags: tags:
@ -195,10 +180,10 @@ paths:
schema: schema:
type: string type: string
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
type: object type: object
post: post:
@ -207,15 +192,15 @@ paths:
summary: Create single unavailability summary: Create single unavailability
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Unavailability' $ref: '#/components/schemas/Unavailability'
required: false required: false
responses: responses:
201: '201':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Unavailability' $ref: '#/components/schemas/Unavailability'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -231,10 +216,10 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Unavailability' $ref: '#/components/schemas/Unavailability'
put: put:
@ -249,15 +234,15 @@ paths:
type: integer type: integer
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Unavailability' $ref: '#/components/schemas/Unavailability'
required: false required: false
responses: responses:
200: '200':
description: successful operation description: successful operation
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Unavailability' $ref: '#/components/schemas/Unavailability'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -272,18 +257,15 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
204: '204':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Unavailability' $ref: '#/components/schemas/Unavailability'
404: '404':
description: not found description: not found
content: {} content: {}
# CUSTOMERS
/customers: /customers:
get: get:
tags: tags:
@ -307,10 +289,10 @@ paths:
schema: schema:
type: string type: string
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
type: object type: object
post: post:
@ -319,15 +301,15 @@ paths:
summary: Create single customer summary: Create single customer
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Customer' $ref: '#/components/schemas/Customer'
required: false required: false
responses: responses:
201: '201':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Customer' $ref: '#/components/schemas/Customer'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -343,10 +325,10 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Customer' $ref: '#/components/schemas/Customer'
put: put:
@ -361,15 +343,15 @@ paths:
type: integer type: integer
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Customer' $ref: '#/components/schemas/Customer'
required: false required: false
responses: responses:
200: '200':
description: successful operation description: successful operation
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Customer' $ref: '#/components/schemas/Customer'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -384,18 +366,15 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
204: '204':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Customer' $ref: '#/components/schemas/Customer'
404: '404':
description: not found description: not found
content: {} content: {}
# SERVICES
/services: /services:
get: get:
tags: tags:
@ -419,10 +398,10 @@ paths:
schema: schema:
type: string type: string
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
type: object type: object
post: post:
@ -431,15 +410,15 @@ paths:
summary: Create single service summary: Create single service
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Service' $ref: '#/components/schemas/Service'
required: false required: false
responses: responses:
201: '201':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Service' $ref: '#/components/schemas/Service'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -455,10 +434,10 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Service' $ref: '#/components/schemas/Service'
put: put:
@ -473,15 +452,15 @@ paths:
type: integer type: integer
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Service' $ref: '#/components/schemas/Service'
required: false required: false
responses: responses:
200: '200':
description: successful operation description: successful operation
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Service' $ref: '#/components/schemas/Service'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -496,18 +475,15 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
204: '204':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Service' $ref: '#/components/schemas/Service'
404: '404':
description: not found description: not found
content: {} content: {}
# CATEGORIES
/categories: /categories:
get: get:
tags: tags:
@ -531,10 +507,10 @@ paths:
schema: schema:
type: string type: string
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
type: object type: object
post: post:
@ -543,15 +519,15 @@ paths:
summary: Create single category summary: Create single category
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Category' $ref: '#/components/schemas/Category'
required: false required: false
responses: responses:
201: '201':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Category' $ref: '#/components/schemas/Category'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -567,10 +543,10 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Category' $ref: '#/components/schemas/Category'
put: put:
@ -585,15 +561,15 @@ paths:
type: integer type: integer
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Category' $ref: '#/components/schemas/Category'
required: false required: false
responses: responses:
200: '200':
description: successful operation description: successful operation
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Category' $ref: '#/components/schemas/Category'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -608,18 +584,15 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
204: '204':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Category' $ref: '#/components/schemas/Category'
404: '404':
description: not found description: not found
content: {} content: {}
# ADMINS
/admins: /admins:
get: get:
tags: tags:
@ -647,27 +620,27 @@ paths:
schema: schema:
type: string type: string
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
type: object type: object
post: post:
tags: tags:
- admins - admins
summary: Create single admin summary: Create an admin
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
type: object $ref: '#/components/schemas/AdminCreate'
required: false required: true
responses: responses:
201: '201':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Admin' $ref: '#/components/schemas/Admin'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -683,10 +656,10 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Admin' $ref: '#/components/schemas/Admin'
put: put:
@ -701,15 +674,15 @@ paths:
type: integer type: integer
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Admin' $ref: '#/components/schemas/Admin'
required: false required: false
responses: responses:
200: '200':
description: successful operation description: successful operation
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Admin' $ref: '#/components/schemas/Admin'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -724,18 +697,15 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
204: '204':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Admin' $ref: '#/components/schemas/Admin'
404: '404':
description: not found description: not found
content: {} content: {}
# PROVIDERS
/providers: /providers:
get: get:
tags: tags:
@ -759,10 +729,10 @@ paths:
schema: schema:
type: string type: string
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
type: object type: object
post: post:
@ -771,15 +741,15 @@ paths:
summary: Create single provider summary: Create single provider
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Provider' $ref: '#/components/schemas/Provider'
required: false required: false
responses: responses:
201: '201':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Provider' $ref: '#/components/schemas/Provider'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -795,10 +765,10 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Provider' $ref: '#/components/schemas/Provider'
put: put:
@ -813,15 +783,15 @@ paths:
type: integer type: integer
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Provider' $ref: '#/components/schemas/Provider'
required: false required: false
responses: responses:
200: '200':
description: successful operation description: successful operation
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Provider' $ref: '#/components/schemas/Provider'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -836,18 +806,15 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
204: '204':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Provider' $ref: '#/components/schemas/Provider'
404: '404':
description: not found description: not found
content: {} content: {}
# SECRETARIES
/secretaries: /secretaries:
get: get:
tags: tags:
@ -871,10 +838,10 @@ paths:
schema: schema:
type: string type: string
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
type: object type: object
post: post:
@ -883,15 +850,15 @@ paths:
summary: Create single secretary summary: Create single secretary
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Secretary' $ref: '#/components/schemas/Secretary'
required: false required: false
responses: responses:
201: '201':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Secretary' $ref: '#/components/schemas/Secretary'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -907,10 +874,10 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Secretary' $ref: '#/components/schemas/Secretary'
put: put:
@ -925,15 +892,15 @@ paths:
type: integer type: integer
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Secretary' $ref: '#/components/schemas/Secretary'
required: false required: false
responses: responses:
200: '200':
description: successful operation description: successful operation
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Secretary' $ref: '#/components/schemas/Secretary'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -948,18 +915,15 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
204: '204':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Secretary' $ref: '#/components/schemas/Secretary'
404: '404':
description: not found description: not found
content: {} content: {}
# SETTINGS
/settings: /settings:
get: get:
tags: tags:
@ -983,10 +947,10 @@ paths:
schema: schema:
type: string type: string
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
type: object type: object
/settings/{settingName}: /settings/{settingName}:
@ -1001,10 +965,10 @@ paths:
schema: schema:
type: string type: string
responses: responses:
200: '200':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Setting' $ref: '#/components/schemas/Setting'
put: put:
@ -1019,15 +983,15 @@ paths:
type: integer type: integer
requestBody: requestBody:
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Setting' $ref: '#/components/schemas/Setting'
required: false required: false
responses: responses:
200: '200':
description: successful operation description: successful operation
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Setting' $ref: '#/components/schemas/Setting'
x-codegen-request-body-name: body x-codegen-request-body-name: body
@ -1042,23 +1006,21 @@ paths:
schema: schema:
type: integer type: integer
responses: responses:
204: '204':
description: success description: success
content: content:
'*/*': application/json:
schema: schema:
$ref: '#/components/schemas/Setting' $ref: '#/components/schemas/Setting'
404: '404':
description: not found description: not found
content: {} content: {}
components: components:
schemas: schemas:
Availabilities: Availabilities:
type: array type: array
items: items:
type: string type: string
Appointment: Appointment:
type: object type: object
properties: properties:
@ -1086,7 +1048,58 @@ components:
type: integer type: integer
googleCalendarId: googleCalendarId:
type: string 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: Unavailability:
type: object type: object
properties: properties:
@ -1102,7 +1115,6 @@ components:
type: string type: string
providerId: providerId:
type: integer type: integer
Customer: Customer:
type: object type: object
properties: properties:
@ -1124,7 +1136,6 @@ components:
type: string type: string
notes: notes:
type: string type: string
Service: Service:
type: object type: object
properties: properties:
@ -1146,7 +1157,6 @@ components:
type: string type: string
categoryId: categoryId:
type: integer type: integer
Category: Category:
type: object type: object
properties: properties:
@ -1156,7 +1166,6 @@ components:
type: string type: string
description: description:
type: string type: string
Admin: Admin:
type: object type: object
properties: properties:
@ -1193,7 +1202,107 @@ components:
type: boolean type: boolean
calendarView: calendarView:
type: string 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: Provider:
type: object type: object
properties: properties:
@ -1246,7 +1355,6 @@ components:
type: string type: string
workingPlan: workingPlan:
type: string type: string
Secretary: Secretary:
type: object type: object
properties: properties:
@ -1287,7 +1395,6 @@ components:
type: boolean type: boolean
calendarView: calendarView:
type: string type: string
Setting: Setting:
type: object type: object
properties: properties:
@ -1295,11 +1402,11 @@ components:
type: string type: string
value: value:
type: string type: string
securitySchemes: securitySchemes:
ApiKeyAuth: BearerToken:
type: apiKey type: http
description: 'A bearer token is required when accessing or editing administrative scheme: bearer
data. The value is required to have the following format "Bearer ##############"' BasicAuth:
name: Authorization type: http
in: header scheme: basic