Add API.yaml

Added the API as a standalone YAML file copy pasted from Insomnia
This commit is contained in:
sebgab 2023-12-25 17:00:19 +00:00
parent 9f47d9840c
commit aabce98d2e

444
api.yaml Normal file
View File

@ -0,0 +1,444 @@
openapi: 3.0.0
info:
description: "This is a sample/Proof of concept OmegaV v2 server API specification."
version: 0.0.1
title: OmegaV v2 API demo
contact:
email: edb@omegav.no
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
- url: "api.omegav.no"
description: "OmegaV API server"
- url: "http://127.0.0.1:8000"
description: "Local test"
tags:
- name: member
description: "Operations about a member"
paths:
/members:
get:
tags:
- member
summary: "Get a list of all members"
description: "Get a list of all members"
operationId: getMembers
responses:
'200':
description: "Success"
content:
application/json:
schema:
$ref: '#/components/schemas/members'
/member:
post:
tags:
- member
summary: "Add a new member"
description: "Add a new member"
operationId: addMember
requestBody:
description: "Create a new member"
content:
application/json:
schema:
$ref: "#/components/schemas/minimalMemberWithoutId"
required: true
responses:
'200':
description: "Success"
content:
application/json:
schema:
$ref: '#/components/schemas/minimalMember'
/member/{memberId}:
get:
tags:
- member
summary: "Get a member"
description: "Get a single member"
operationId: getMember
parameters:
- name: memberId
in: path
description: "ID of the user's who's balance will be fetched"
required: true
schema:
type: integer
format: uint64
responses:
'200':
description: "Success"
content:
application/json:
schema:
$ref: '#/components/schemas/member'
'404':
description: "Member not found"
put:
tags:
- member
summary: "Update a member's details"
description: "Update a member's details"
operationId: updateMember
parameters:
- name: memberId
in: path
description: "ID of the user's who's info that will be updated"
required: true
schema:
type: integer
format: uint64
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/minimalMemberWithoutId'
responses:
'200':
description: "Success"
content:
application/json:
schema:
$ref: '#/components/schemas/member'
'404':
description: "Member not found"
/member/{memberId}/balance:
get:
tags:
- member
summary: "Get a member's balance"
description: "Get a member's balance"
operationId: getBalance
parameters:
- name: memberId
in: path
description: "ID of the user's who's balance will be fetched"
required: true
schema:
type: integer
format: uint64
responses:
'200':
description: "Success"
content:
application/json:
schema:
$ref: '#/components/schemas/balance'
'404':
description: "Member not found"
put:
tags:
- member
summary: "Change a member's balance"
description: "Add to a member's balance"
operationId: putBalance
parameters:
- name: memberId
in: path
description: "ID of the user's who's balance will be added to"
required: true
schema:
type: integer
format: uint64
requestBody:
description: "The values to be added to the member's balance"
content:
application/json:
schema:
$ref: '#/components/schemas/balance'
responses:
'200':
description: "Success, returnes the new balance"
content:
application/json:
schema:
$ref: '#/components/schemas/balance'
'400':
description: "Malformed request"
'404':
description: "Member not found"
/member/{memberId}/imagePreference:
get:
tags:
- member
summary: "Get a member's image preference"
description: "Get a member's image preference"
operationId: getImagePreference
parameters:
- name: memberId
in: path
description: "ID of the user's who's info will be fetched"
required: true
schema:
type: integer
format: uint64
responses:
'200':
description: "Success"
content:
application/json:
schema:
$ref: '#/components/schemas/imagePreference'
'404':
description: "Member not found"
put:
tags:
- member
summary: "Change a member's image preference"
description: "Add to a member's image preference"
operationId: changeImagePreference
parameters:
- name: memberId
in: path
description: "ID of the user's who's info will be changed"
required: true
schema:
type: integer
format: uint64
requestBody:
description: "The image preference to set for the member"
content:
application/json:
schema:
$ref: '#/components/schemas/imagePreference'
responses:
'200':
description: "Success, returnes the new image preference"
content:
application/json:
schema:
$ref: '#/components/schemas/imagePreference'
'400':
description: "Malformed request"
'404':
description: "Member not found"
/member/{memberId}/rfid:
get:
tags:
- member
summary: "Get a member's RFID cards"
description: "Get all of a member's RFID cards"
operationId: getRfids
parameters:
- name: memberId
in: path
description: "ID of the user's who's info will be fetched"
required: true
schema:
type: integer
format: uint64
responses:
'200':
description: "Success"
content:
application/json:
schema:
$ref: '#/components/schemas/rfidCards'
'404':
description: "Member not found"
post:
tags:
- member
summary: "Add RFID card"
description: "Add an RFID card to a member"
operationId: addRfid
parameters:
- name: memberId
in: path
description: "ID of the user's who's info will be added to"
required: true
schema:
type: integer
format: uint64
requestBody:
description: "Info about the RFID card to add"
content:
application/json:
schema:
$ref: '#/components/schemas/rfidCard'
responses:
'200':
description: "Success, returns the new RFID card info"
content:
application/json:
schema:
$ref: '#/components/schemas/rfidCard'
'400':
description: "Malformed request"
'404':
description: "Member not found"
components:
schemas:
members:
type: object
description: "An array containing multimple `member` objects"
properties:
members:
type: array
items:
$ref: '#/components/schemas/member'
minimalMemberWithoutId:
type: object
description: "The minimal values needed to create a member"
properties:
ntnuUsername:
type: string
description: "The NTNU username of the member"
example: "sebasthg"
firstName:
type: string
description: "First name of the member"
example: "Sebastian"
lastName:
type: string
description: "Last name of the member"
example: "Gabrielli"
email:
type: string
description: "The member's non-ntnu e-mail"
example: "sebastian@fastmail.mx"
minimalMember:
type: object
description: "The minimal values returned when createing a member"
properties:
id:
type: integer
description: "The internal member ID of the user"
format: uint64
example: 1337
ntnuUsername:
type: string
description: "The NTNU username of the member"
example: "sebasthg"
firstName:
type: string
description: "First name of the member"
example: "Sebastian"
lastName:
type: string
description: "Last name of the member"
example: "Gabrielli"
email:
type: string
description: "The member's non-ntnu e-mail"
example: "sebastian@fastmail.mx"
member:
type: object
description: "A collection of all the values associated with a member"
properties:
id:
type: integer
description: "The internal member ID of the user"
format: uint64
example: 1337
ntnuUsername:
type: string
description: "The NTNU username of the member"
example: "sebasthg"
firstName:
type: string
description: "First name of the member"
example: "Sebastian"
lastName:
type: string
description: "Last name of the member"
example: "Gabrielli"
email:
type: string
description: "The member's non-ntnu e-mail"
example: "sebastian@fastmail.mx"
balance:
type: integer
description: "The balance on the member's OBS account"
format: int64
example: 1337
imagePreference:
type: string
description: "The image series shown upon an OBS purchase"
example: "Sexy stallman"
enum:
- "Sexy stallman"
- "Propaganda"
- "Money"
rfidCards:
type: array
items:
$ref: '#/components/schemas/rfidCard'
rfidCards:
type: object
description: "An array of rfidCard objects"
properties:
rfidCards:
type: array
items:
$ref: '#/components/schemas/rfidCard'
rfidCard:
type: object
description: "An RFID card"
properties:
cardId:
type: string
example: "0364249683"
cardComment:
type: string
example: "Studentkort"
imagePreference:
type: object
description: "A member's image preference"
properties:
imagePreference:
type: string
description: "The image series shown upon an OBS purchase"
example: "Sexy stallman"
enum:
- "Sexy stallman"
- "Propaganda"
- "Money"
balance:
type: object
description: "A member's balance"
properties:
balance:
type: integer
format: int64
example: 1337
requestBodies:
minimalMember:
description: "Add a member"
content:
application/json:
schema:
$ref: '#/components/schemas/minimalMember'