1 changed files with 337 additions and 0 deletions
@ -0,0 +1,337 @@
@@ -0,0 +1,337 @@
|
||||
openapi: 3.0.3 |
||||
info: |
||||
title: OpenCloucCal API |
||||
description: |- |
||||
The OpenCloucCal API describes the Backend of the OpenCloudCal webservice, |
||||
which is both used for the frontend and may also |
||||
be used for third-party services |
||||
license: |
||||
name: MIT license |
||||
url: https://git.srsoftware/REPO/License.md |
||||
version: 1.0.0 |
||||
servers: |
||||
- url: https://cal.srsoftware.de |
||||
- url: http://localhost:8080 |
||||
paths: |
||||
/api/events/json: |
||||
get: |
||||
description: |- |
||||
Get a list of events from the server in JSON format. |
||||
|
||||
Filters may be applied by using request parameters. |
||||
parameters: |
||||
- description: Filter keywords. Only events having all provided tags are listed |
||||
example: magrathea,heartofgold |
||||
in: query |
||||
name: tags |
||||
required: false |
||||
schema: |
||||
format: comma-separated values |
||||
type: string |
||||
- description: start time. Only events after this date time are returned |
||||
example: 2024-12-30T10:32 |
||||
in: query |
||||
name: start |
||||
required: false |
||||
schema: |
||||
format: date-time |
||||
type: string |
||||
- description: |- |
||||
Return past events, if set. Allowed values: |
||||
* all → return all events |
||||
* [n]m – return events including the last n months |
||||
* [n]y - return events including the last n years |
||||
example: 2m |
||||
in: query |
||||
name: past |
||||
required: false |
||||
schema: |
||||
type: string |
||||
responses: |
||||
'200': |
||||
description: successful operation |
||||
content: |
||||
application/json: |
||||
schema: |
||||
$ref: '#/components/schemas/AppointmentList' |
||||
'400': |
||||
description: invalid input |
||||
'500': |
||||
description: server fault |
||||
summary: Fetch event list |
||||
/api/events/ical: |
||||
get: |
||||
description: |- |
||||
Get a list of events from the server in ICAL format. |
||||
|
||||
Filters may be applied by using request parameters. |
||||
parameters: |
||||
- description: Filter keywords. Only events having all provided tags are listed |
||||
example: magrathea,heartofgold |
||||
in: query |
||||
name: tags |
||||
required: false |
||||
schema: |
||||
format: comma-separated values |
||||
type: string |
||||
- description: start time. Only events after this date time are returned |
||||
example: 2024-12-30T10:32 |
||||
in: query |
||||
name: start |
||||
required: false |
||||
schema: |
||||
format: date-time |
||||
type: string |
||||
- description: |- |
||||
Return past events, if set. Allowed values: |
||||
* all → return all events |
||||
* [n]m – return events including the last n months |
||||
* [n]y - return events including the last n years |
||||
example: 2m |
||||
in: query |
||||
name: past |
||||
required: false |
||||
schema: |
||||
type: string |
||||
responses: |
||||
'200': |
||||
description: successful operation |
||||
content: |
||||
text/calendar: |
||||
schema: |
||||
description: event list in ical format |
||||
example: |- |
||||
BEGIN:VCALENDAR |
||||
VERSION:2.0 |
||||
PRODID:OpenCloudCal |
||||
BEGIN:VEVENT |
||||
UID:42@cal.srsoftware.de |
||||
DTSTART:20241230T100757Z |
||||
DTEND:20241231T100757Z |
||||
SUMMARY:Demolition of the earth |
||||
END:VEVENT |
||||
END:VCALENDAR |
||||
type: string |
||||
'400': |
||||
description: invalid input |
||||
'500': |
||||
description: server fault |
||||
summary: Fetch event list |
||||
/api/event: |
||||
delete: |
||||
description: Deletes the specified element from the list of events. |
||||
parameters: |
||||
- description: the appointment id |
||||
in: query |
||||
name: id |
||||
required: true |
||||
schema: |
||||
example: 42 |
||||
format: int64 |
||||
type: number |
||||
- description: title of the event as kind of confirmation |
||||
in: header |
||||
name: title |
||||
required: true |
||||
schema: |
||||
example: this will not confirm |
||||
format: string |
||||
responses: |
||||
'200': |
||||
description: successfull operation |
||||
'404': |
||||
description: invalid id (no such event) |
||||
'412': |
||||
description: mismatching title (no confirmation) |
||||
'500': |
||||
description: server fault |
||||
summary: remove an event |
||||
get: |
||||
parameters: |
||||
- description: the appointment id |
||||
in: query |
||||
name: id |
||||
required: true |
||||
schema: |
||||
example: 42 |
||||
format: int64 |
||||
type: number |
||||
responses: |
||||
'200': |
||||
description: successful operation |
||||
content: |
||||
application/json: |
||||
schema: |
||||
$ref: '#/components/schemas/AppointmentList' |
||||
'400': |
||||
description: invalid input |
||||
'500': |
||||
description: server fault |
||||
summary: get an event with all details |
||||
patch: |
||||
parameters: |
||||
- description: copy of the title |
||||
in: header |
||||
name: title |
||||
schema: |
||||
example: Demolition of the earth |
||||
type: string |
||||
requestBody: |
||||
description: update an appointment. |
||||
content: |
||||
application/json: |
||||
schema: |
||||
$ref: '#/components/schemas/AppointmentList' |
||||
responses: |
||||
'200': |
||||
description: successful operation |
||||
content: |
||||
application/json: |
||||
schema: |
||||
$ref: '#/components/schemas/AppointmentList' |
||||
'400': |
||||
description: invalid input |
||||
'500': |
||||
description: server fault |
||||
summary: update the specified event |
||||
post: |
||||
parameters: |
||||
- description: copy of the title |
||||
in: header |
||||
name: title |
||||
schema: |
||||
example: Demolition of the earth |
||||
type: string |
||||
requestBody: |
||||
description: Create a new appointment. Id must be set to 0 (number zero). |
||||
content: |
||||
application/json: |
||||
schema: |
||||
$ref: '#/components/schemas/AppointmentList' |
||||
responses: |
||||
'200': |
||||
description: successful operation |
||||
content: |
||||
application/json: |
||||
schema: |
||||
$ref: '#/components/schemas/AppointmentList' |
||||
'400': |
||||
description: invalid input |
||||
'500': |
||||
description: server fault |
||||
summary: store a new event in the database |
||||
components: |
||||
schemas: |
||||
Appointment: |
||||
description: an Event |
||||
type: object |
||||
properties: |
||||
id: |
||||
description: unique identifier of the appointment |
||||
example: 42 |
||||
format: int64 |
||||
type: number |
||||
title: |
||||
description: summary of the item |
||||
example: Demolition of the earth |
||||
type: string |
||||
description: |
||||
description: a text describing the event |
||||
example: Have your towel ready! |
||||
type: string |
||||
start: |
||||
description: date time when the event is scheduled to begin |
||||
format: date-time |
||||
type: string |
||||
end: |
||||
description: date time when the event is scheduled to end |
||||
format: date-time |
||||
type: string |
||||
location: |
||||
description: text describing the location of the event, i.e. address |
||||
example: Cottingto |
||||
type: string |
||||
coords: |
||||
$ref: '#/components/schemas/Coords' |
||||
attachments: |
||||
items: |
||||
$ref: '#/components/schemas/Attachment' |
||||
type: array |
||||
links: |
||||
description: list of links to content related to the event |
||||
items: |
||||
$ref: '#/components/schemas/Link' |
||||
type: array |
||||
tags: |
||||
description: keywords that describe the event. may be used to filter events |
||||
example: |
||||
- DouglasAdams |
||||
- Hitchhiker |
||||
- Guide |
||||
- Galaxy |
||||
items: |
||||
type: string |
||||
type: array |
||||
required: |
||||
- id |
||||
- location |
||||
- start |
||||
- title |
||||
AppointmentList: |
||||
description: list of appointments |
||||
type: array |
||||
items: |
||||
$ref: '#/components/schemas/Appointment' |
||||
Attachment: |
||||
description: |- |
||||
A link to a file additional information related to the event. |
||||
|
||||
May be used for images, pdfs or anything apart from links to other websites. |
||||
type: object |
||||
properties: |
||||
mime: |
||||
description: MIME type of the attachment |
||||
type: string |
||||
example: image/png |
||||
url: |
||||
description: attachment URL |
||||
example: https://example.com/some/image.png |
||||
format: url |
||||
type: string |
||||
Coords: |
||||
description: location of the event site in a global coordinate system (WGS84) |
||||
type: object |
||||
properties: |
||||
latitude: |
||||
example: 11.5928 |
||||
format: float |
||||
type: number |
||||
longitude: |
||||
example: 50.731 |
||||
format: float |
||||
type: number |
||||
Ical: |
||||
description: event list in ical format |
||||
example: |- |
||||
BEGIN:VCALENDAR |
||||
VERSION:2.0 |
||||
PRODID:OpenCloudCal |
||||
BEGIN:VEVENT |
||||
UID:42@cal.srsoftware.de |
||||
DTSTART:20241230T100757Z |
||||
DTEND:20241231T100757Z |
||||
SUMMARY:Demolition of the earth |
||||
END:VEVENT |
||||
END:VCALENDAR |
||||
type: string |
||||
Link: |
||||
description: hyperlink to content related to an event |
||||
properties: |
||||
description: |
||||
description: text describing the link target |
||||
example: Wikipedia article |
||||
type: string |
||||
url: |
||||
description: the target of the link |
||||
example: https://en.wikipedia.org/wiki/The_Hitchhiker's_Guide_to_the_Galaxy |
||||
type: string |
Loading…
Reference in new issue