222 lines
5.8 KiB
YAML
222 lines
5.8 KiB
YAML
openapi: 3.0.3
|
|
info:
|
|
title: Arbeitszeitmessung - OpenAPI 3.0
|
|
description: "This demos the API for the Arbeitszeitmessung Project "
|
|
version: 0.1.0
|
|
externalDocs:
|
|
description: Git-Repository
|
|
url: https://git.letsstein.de/tom/arbeitszeitmessung
|
|
servers:
|
|
- url: http://localhost:8000
|
|
description: Docker Server
|
|
- url: http://localhost:8080
|
|
description: Local Development
|
|
tags:
|
|
- name: booking
|
|
description: all Bookings
|
|
paths:
|
|
/time:
|
|
get:
|
|
tags:
|
|
- booking
|
|
summary: Gets all the bookings from one card_uid
|
|
description: Returns all the bookings optionally filtered with cardID
|
|
operationId: getBooking
|
|
parameters:
|
|
- name: card_uid
|
|
in: query
|
|
description: CardID to filter for
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: time_from
|
|
in: query
|
|
description: Timestamp since when all bookings are shown (default=1 month ago)
|
|
required: false
|
|
schema:
|
|
type: string
|
|
example: "2025-02-28"
|
|
- name: time_to
|
|
in: query
|
|
description: Timestamp till when all bookings are shown (default=today)
|
|
required: false
|
|
schema:
|
|
type: string
|
|
example: "2025-02-28"
|
|
responses:
|
|
"200":
|
|
description: Successful operation
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/BookingGrouped"
|
|
"400":
|
|
description: Invalid cardID
|
|
/time/new:
|
|
put:
|
|
tags:
|
|
- booking
|
|
summary: Create new Booking
|
|
description: Creates a new booking with the supplied parameters
|
|
operationId: pcreateBooking
|
|
parameters:
|
|
- in: header
|
|
name: Authorization
|
|
description: Predefined API Key to authorize access
|
|
schema:
|
|
type: string
|
|
- name: card_uid
|
|
in: query
|
|
description: id of the RFID card scanned
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: geraet_id
|
|
in: query
|
|
description: id of the RFID reader scanning the card
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: check_in_out
|
|
in: query
|
|
description: booking Type
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
enum:
|
|
- 1
|
|
- 2
|
|
- 255
|
|
responses:
|
|
"200":
|
|
description: successfully created booking
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Booking"
|
|
"409":
|
|
description: Same booking type as last booking
|
|
get:
|
|
tags:
|
|
- booking
|
|
summary: Create new Booking
|
|
description: Creates a new booking with the supplied parameters
|
|
operationId: gcreateBooking
|
|
parameters:
|
|
- in: header
|
|
name: Authorization
|
|
description: Predefined API Key to authorize access
|
|
schema:
|
|
type: string
|
|
- in: query
|
|
name: api_key
|
|
description: Predefined API Key to authorize access
|
|
required: false
|
|
schema:
|
|
type: string
|
|
- name: card_uid
|
|
in: query
|
|
description: id of the RFID card scanned
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: geraet_id
|
|
in: query
|
|
description: id of the RFID reader scanning the card
|
|
required: true
|
|
schema:
|
|
type: string
|
|
- name: check_in_out
|
|
in: query
|
|
description: booking Type
|
|
required: true
|
|
schema:
|
|
type: integer
|
|
enum:
|
|
- 1
|
|
- 2
|
|
- 255
|
|
responses:
|
|
"200":
|
|
description: successfully created booking
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Booking"
|
|
"401":
|
|
description: none or wrong api key provided!
|
|
"409":
|
|
description: Same booking type as last booking
|
|
/logout:
|
|
get:
|
|
tags:
|
|
- booking
|
|
summary: Logs out all logged in users
|
|
description: With this call all actively logged in users (last booking today has check_in_out=1) will be logged out automaticly (check_in_out=255)
|
|
operationId: autoLogout
|
|
responses:
|
|
"200":
|
|
description: Succesful
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/User"
|
|
components:
|
|
schemas:
|
|
BookingGrouped:
|
|
type: object
|
|
properties:
|
|
day:
|
|
type: string
|
|
format: date
|
|
bookings:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Booking"
|
|
Booking:
|
|
type: object
|
|
properties:
|
|
counter_id:
|
|
type: integer
|
|
format: int64
|
|
example: 100
|
|
card_uid:
|
|
type: string
|
|
example: test_card
|
|
geraet_id:
|
|
type: string
|
|
example: test_reader
|
|
check_in_out:
|
|
type: integer
|
|
example: 1
|
|
enum:
|
|
- 1
|
|
- 2
|
|
- 255
|
|
timestamp:
|
|
type: string
|
|
format: date-time
|
|
example: "2024-09-05T08:51:12.670Z"
|
|
xml:
|
|
name: booking
|
|
User:
|
|
type: object
|
|
properties:
|
|
card_uid:
|
|
type: string
|
|
example: test_card
|
|
name:
|
|
type: string
|
|
example: Mustermann
|
|
vorname:
|
|
type: string
|
|
example: Max
|
|
hauptbeschäftigungsort:
|
|
type: integer
|
|
format: int8
|
|
example: 1
|