You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
427 lines
12 KiB
427 lines
12 KiB
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/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 |
|
'400': |
|
description: id missing |
|
'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 |
|
/api/event/ical: |
|
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: |
|
text/calendar: |
|
schema: |
|
description: event 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: get an event as ical file |
|
|
|
/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/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: Maximum number of appointments to return |
|
example: 100 |
|
in: query |
|
name: count |
|
required: false |
|
schema: |
|
format: int32 |
|
type: number |
|
- description: skip number of appointments when listing |
|
example: 50 |
|
in: query |
|
name: offset |
|
required: false |
|
schema: |
|
format: int32 |
|
type: number |
|
- 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 |
|
- 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: 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 |
|
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/tags: |
|
get: |
|
description: list tags |
|
parameters: |
|
- description: substring to search in tags |
|
example: rock |
|
in: query |
|
name: infix |
|
required: true |
|
schema: |
|
type: string |
|
responses: |
|
'200': |
|
description: successful operation |
|
content: |
|
application/json: |
|
schema: |
|
description: keywords that describe the event. may be used to filter events |
|
example: |
|
- GlamRock |
|
- HardRock |
|
- Rockabilly |
|
- RockNRoll |
|
items: |
|
type: string |
|
type: array |
|
'400': |
|
description: invalid input |
|
content: |
|
application/json: |
|
schema: |
|
type: string |
|
example: {"message":"No infix set in method call parameters"} |
|
|
|
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 |