316 lines
8.6 KiB
YAML
316 lines
8.6 KiB
YAML
openapi: 3.0.0
|
|
info:
|
|
title: Entities Service
|
|
version: 0.1.0
|
|
description:
|
|
Query and manipulate the Netz39 entities database.
|
|
contact:
|
|
email: tux@netz39.de
|
|
|
|
servers:
|
|
- url: http://localhost:8080/v0
|
|
tags:
|
|
- name: mgmt
|
|
description: Common management functions
|
|
|
|
paths:
|
|
/health:
|
|
get:
|
|
summary: Provides health information about the service
|
|
tags:
|
|
- mgmt
|
|
operationId: health
|
|
responses:
|
|
'200':
|
|
description: endpoint is healthy
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/health'
|
|
'500':
|
|
$ref: '#/components/responses/InternalError'
|
|
/oas3:
|
|
get:
|
|
summary: get this endpoint's Open API 3 specification
|
|
tags:
|
|
- mgmt
|
|
responses:
|
|
'200':
|
|
description: returns the API spec
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
'500':
|
|
$ref: '#/components/responses/InternalError'
|
|
|
|
/entities:
|
|
parameters:
|
|
- in: header
|
|
name: Authentication
|
|
schema:
|
|
type: string
|
|
description: Authentication token
|
|
post:
|
|
summary: Create an entity
|
|
tags:
|
|
- entities
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
description: Entity JSON
|
|
responses:
|
|
'201':
|
|
description: Entity has been created
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
description: Entity ID (5 digit hex)
|
|
example: 1b3d5
|
|
'400':
|
|
$ref: '#/components/responses/InvalidInput'
|
|
'401':
|
|
$ref: '#/components/responses/AuthenticationRequired'
|
|
'403':
|
|
$ref: '#/components/responses/NotAllowed'
|
|
get:
|
|
summary: Retrieve all entities (can be limited to a specific time and active members)
|
|
tags:
|
|
- entities
|
|
parameters:
|
|
- in: query
|
|
name: time
|
|
schema:
|
|
type: string
|
|
format: date-time
|
|
description: Use database projection at given time
|
|
- in: query
|
|
name: fieldset
|
|
schema:
|
|
type: string
|
|
enum: [summary, sepa, all]
|
|
description: Select the set of fields returned for each entity
|
|
- in: query
|
|
name: activeMembersOnly
|
|
schema:
|
|
type: boolean
|
|
description: Return only active members (w/r/t the provided timestamp)
|
|
responses:
|
|
'200':
|
|
description: Request successfully processed
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
time:
|
|
type: string
|
|
format: date-time
|
|
fieldset:
|
|
type: string
|
|
enum: [summary, sepa, all]
|
|
activeMembersOnly:
|
|
type: boolean
|
|
entities:
|
|
type: array
|
|
items:
|
|
type: string
|
|
example: entities JSON
|
|
'400':
|
|
$ref: '#/components/responses/InvalidInput'
|
|
'401':
|
|
$ref: '#/components/responses/AuthenticationRequired'
|
|
'403':
|
|
$ref: '#/components/responses/NotAllowed'
|
|
|
|
/entities/{id}:
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
description: Entity ID
|
|
- in: header
|
|
name: Authentication
|
|
schema:
|
|
type: string
|
|
description: Authentication token
|
|
post:
|
|
summary: Update an existing entity
|
|
tags:
|
|
- entities
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
description: Entity JSON
|
|
responses:
|
|
'200':
|
|
description: Update was successful
|
|
'400':
|
|
$ref: '#/components/responses/InvalidInput'
|
|
'401':
|
|
$ref: '#/components/responses/AuthenticationRequired'
|
|
'403':
|
|
$ref: '#/components/responses/NotAllowed'
|
|
'404':
|
|
$ref: '#/components/responses/NotFound'
|
|
get:
|
|
summary: Retrieve a specific entity (can be limited to a specific time and active members)
|
|
tags:
|
|
- entities
|
|
parameters:
|
|
- in: query
|
|
name: time
|
|
schema:
|
|
type: string
|
|
format: date-time
|
|
description: Use database projection at given time
|
|
- in: query
|
|
name: fieldset
|
|
schema:
|
|
type: string
|
|
enum: [summary, sepa, all]
|
|
description: Select the set of fields returned for each entity
|
|
- in: query
|
|
name: activeMembersOnly
|
|
schema:
|
|
type: boolean
|
|
description: Return only active members (w/r/t the provided timestamp)
|
|
responses:
|
|
'200':
|
|
description: Entity has been found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
description: Entity JSON
|
|
example: entities JSON
|
|
'400':
|
|
$ref: '#/components/responses/InvalidInput'
|
|
'401':
|
|
$ref: '#/components/responses/AuthenticationRequired'
|
|
'403':
|
|
$ref: '#/components/responses/NotAllowed'
|
|
'404':
|
|
$ref: '#/components/responses/NotFound'
|
|
|
|
/document/{id}/{type}:
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
required: true
|
|
schema:
|
|
type: string
|
|
description: Entity ID
|
|
- in: path
|
|
name: type
|
|
required: true
|
|
schema:
|
|
type: string
|
|
enum: [application, sepa]
|
|
description: Type of document to upload
|
|
- in: header
|
|
name: Authentication
|
|
schema:
|
|
type: string
|
|
description: Authentication token
|
|
post:
|
|
summary: Upload a PDF document for a member
|
|
description: Note that the entry must be updated with the URI obtained from this call
|
|
tags:
|
|
- document
|
|
requestBody:
|
|
description: The document
|
|
content:
|
|
'application/pdf':
|
|
schema:
|
|
type: string
|
|
format: binary
|
|
responses:
|
|
'201':
|
|
description: File has been stored ("created") locally, returns the URI for downloading the file
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
format: uri
|
|
'303':
|
|
description: The file is already in storage, returns the URI for downloading the file
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
format: uri
|
|
'401':
|
|
$ref: '#/components/responses/AuthenticationRequired'
|
|
'403':
|
|
$ref: '#/components/responses/NotAllowed'
|
|
'405':
|
|
$ref: '#/components/responses/InvalidInput'
|
|
'500':
|
|
$ref: '#/components/responses/InternalError'
|
|
get:
|
|
summary: Get a PDF document for a member
|
|
tags:
|
|
- document
|
|
responses:
|
|
'200':
|
|
description: Returns PDF data
|
|
content:
|
|
'application/pdf':
|
|
schema:
|
|
type: string
|
|
format: binary
|
|
'404':
|
|
$ref: '#/components/responses/NotFound'
|
|
'401':
|
|
$ref: '#/components/responses/AuthenticationRequired'
|
|
'403':
|
|
$ref: '#/components/responses/NotAllowed'
|
|
'405':
|
|
$ref: '#/components/responses/InvalidInput'
|
|
'500':
|
|
$ref: '#/components/responses/InternalError'
|
|
|
|
components:
|
|
schemas:
|
|
health:
|
|
type: object
|
|
properties:
|
|
git-version:
|
|
type: string
|
|
api-version:
|
|
type: string
|
|
timestamp:
|
|
type: string
|
|
format: date-time
|
|
uptime:
|
|
type: string
|
|
example: ISO8601 conforming timespan
|
|
responses:
|
|
AuthenticationRequired:
|
|
description: Authentication is required (401)
|
|
NotAllowed:
|
|
description: The call is not allowed with the provided authentication (403)
|
|
InvalidInput:
|
|
description: One or more parameters are missing or invalid (400)
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
example: error message
|
|
NotFound:
|
|
description: The specified object could not be found (404)
|
|
InternalError:
|
|
description: Internal error during execution (500)
|
|
content:
|
|
text/plain:
|
|
schema:
|
|
type: string
|
|
example: error message
|