a49177b3d0
feat: CAL_ID передаётся через url параметр вместо заголовка
621 lines
18 KiB
YAML
621 lines
18 KiB
YAML
openapi: "3.1.0"
|
|
info:
|
|
title: "CalDav-simple-RESTAPI"
|
|
description: "Примитивный REST API над CalDav потому что он старый и неудобный, а fancy cool modern REST API лучше"
|
|
version: "1.0.0"
|
|
servers:
|
|
- url: "http://localhost:8080"
|
|
description: "Local"
|
|
paths:
|
|
/calendar/{calendarId}/events:
|
|
get:
|
|
description: "Получение всех событий"
|
|
parameters:
|
|
- name: "Authorization"
|
|
in: "header"
|
|
required: false
|
|
schema:
|
|
type: "string"
|
|
- name: "calendarId"
|
|
in: "path"
|
|
required: true
|
|
schema:
|
|
type: "string"
|
|
responses:
|
|
"400":
|
|
description: "Bad Request"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "Заголовок CAL_ID обязателен"
|
|
"200":
|
|
description: "OK"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_List<? extends EventResponse>"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: true
|
|
data: "null"
|
|
message: "null"
|
|
"500":
|
|
description: "Internal Server Error"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
Example#2:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
post:
|
|
description: "Создание нового события"
|
|
parameters:
|
|
- name: "Authorization"
|
|
in: "header"
|
|
required: false
|
|
schema:
|
|
type: "string"
|
|
- name: "calendarId"
|
|
in: "path"
|
|
required: true
|
|
schema:
|
|
type: "string"
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/CreateEventRequest"
|
|
required: true
|
|
responses:
|
|
"400":
|
|
description: "Bad Request"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
Example#2:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "Заголовок CAL_ID обязателен"
|
|
"201":
|
|
description: "Created"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_EventResponse"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: true
|
|
data: "null"
|
|
message: "null"
|
|
"401":
|
|
description: "Unauthorized"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
"403":
|
|
description: "Forbidden"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
"404":
|
|
description: "Not Found"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
"409":
|
|
description: "Conflict"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
"500":
|
|
description: "Internal Server Error"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
/calendar/{calendarId}/events/{uid}:
|
|
delete:
|
|
description: "Удаление события"
|
|
parameters:
|
|
- name: "uid"
|
|
in: "path"
|
|
required: true
|
|
schema:
|
|
type: "string"
|
|
- name: "Authorization"
|
|
in: "header"
|
|
required: false
|
|
schema:
|
|
type: "string"
|
|
- name: "calendarId"
|
|
in: "path"
|
|
required: true
|
|
schema:
|
|
type: "string"
|
|
responses:
|
|
"400":
|
|
description: "Bad Request"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
Example#2:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "Заголовок CAL_ID обязателен"
|
|
Example#3:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "UID события не указан"
|
|
"200":
|
|
description: "OK"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: true
|
|
data: "null"
|
|
message: "Событие успешно удалено"
|
|
"401":
|
|
description: "Unauthorized"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
"403":
|
|
description: "Forbidden"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
"404":
|
|
description: "Not Found"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
"500":
|
|
description: "Internal Server Error"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
get:
|
|
description: "Получение события по UID"
|
|
parameters:
|
|
- name: "uid"
|
|
in: "path"
|
|
required: true
|
|
schema:
|
|
type: "string"
|
|
- name: "Authorization"
|
|
in: "header"
|
|
required: false
|
|
schema:
|
|
type: "string"
|
|
- name: "calendarId"
|
|
in: "path"
|
|
required: true
|
|
schema:
|
|
type: "string"
|
|
responses:
|
|
"400":
|
|
description: "Bad Request"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "Заголовок CAL_ID обязателен"
|
|
Example#2:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "UID события не указан"
|
|
"200":
|
|
description: "OK"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_EventResponse"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: true
|
|
data: "null"
|
|
message: "null"
|
|
"404":
|
|
description: "Not Found"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
Example#2:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "Событие не найдено"
|
|
"401":
|
|
description: "Unauthorized"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
"403":
|
|
description: "Forbidden"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
"500":
|
|
description: "Internal Server Error"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
Example#2:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
put:
|
|
description: "Обновление события"
|
|
parameters:
|
|
- name: "uid"
|
|
in: "path"
|
|
required: true
|
|
schema:
|
|
type: "string"
|
|
- name: "Authorization"
|
|
in: "header"
|
|
required: false
|
|
schema:
|
|
type: "string"
|
|
- name: "calendarId"
|
|
in: "path"
|
|
required: true
|
|
schema:
|
|
type: "string"
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/CreateEventRequest"
|
|
required: true
|
|
responses:
|
|
"400":
|
|
description: "Bad Request"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
Example#2:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "Заголовок CAL_ID обязателен"
|
|
Example#3:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "UID события не указан"
|
|
"200":
|
|
description: "OK"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_EventResponse"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: true
|
|
data: "null"
|
|
message: "null"
|
|
"401":
|
|
description: "Unauthorized"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
"403":
|
|
description: "Forbidden"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
"404":
|
|
description: "Not Found"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
"412":
|
|
description: "Precondition Failed"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
"500":
|
|
description: "Internal Server Error"
|
|
content:
|
|
'*/*':
|
|
schema:
|
|
$ref: "#/components/schemas/ApiResponse_String"
|
|
examples:
|
|
Example#1:
|
|
description: ""
|
|
value:
|
|
success: false
|
|
data: "null"
|
|
message: "null"
|
|
components:
|
|
schemas:
|
|
ApiResponse:
|
|
type: "object"
|
|
properties:
|
|
success:
|
|
type: "boolean"
|
|
message:
|
|
type: "string"
|
|
nullable: true
|
|
required:
|
|
- "success"
|
|
ApiResponse_String:
|
|
type: "object"
|
|
properties:
|
|
success:
|
|
type: "boolean"
|
|
data:
|
|
type: "string"
|
|
message:
|
|
type: "string"
|
|
EventResponse:
|
|
type: "object"
|
|
properties:
|
|
uid:
|
|
type: "string"
|
|
summary:
|
|
type: "string"
|
|
description:
|
|
type: "string"
|
|
nullable: true
|
|
startDateTime:
|
|
type: "string"
|
|
endDateTime:
|
|
type: "string"
|
|
location:
|
|
type: "string"
|
|
nullable: true
|
|
required:
|
|
- "uid"
|
|
- "summary"
|
|
- "startDateTime"
|
|
- "endDateTime"
|
|
ApiResponse_List<? extends EventResponse>:
|
|
type: "object"
|
|
properties:
|
|
success:
|
|
type: "boolean"
|
|
data:
|
|
type: "array"
|
|
items:
|
|
$ref: "#/components/schemas/EventResponse"
|
|
message:
|
|
type: "string"
|
|
CreateEventRequest:
|
|
type: "object"
|
|
properties:
|
|
summary:
|
|
type: "string"
|
|
description:
|
|
type: "string"
|
|
nullable: true
|
|
startDateTime:
|
|
type: "string"
|
|
endDateTime:
|
|
type: "string"
|
|
location:
|
|
type: "string"
|
|
nullable: true
|
|
required:
|
|
- "summary"
|
|
- "startDateTime"
|
|
- "endDateTime"
|
|
ApiResponse_EventResponse:
|
|
type: "object"
|
|
properties:
|
|
success:
|
|
type: "boolean"
|
|
data:
|
|
$ref: "#/components/schemas/EventResponse"
|
|
message:
|
|
type: "string" |