datastore/docs/openapi.yaml
Luís Murta a6a350c901
Implements /transactions POST method
It adds the method to the OpenAPI spec and generates a new server
config. The requirement for the ID on the Transaction component is
removed, so that it can be reused for insertions.
It also adds two new middlewares, a logging and a spec validator. If a
request does not follow the spec, a 400 is returned immediately.

Issue: #18
2024-05-28 21:59:23 +01:00

182 lines
4.3 KiB
YAML

openapi: 3.0.3
info:
title: Personal Finance - OpenAPI 3.0
description: |
Personal Finance Server
contact:
email: finance@murta.dev
license:
name: GNU General Public License v3.0 or later
url: https://www.gnu.org/licenses/gpl-3.0-standalone.html
version: 0.0.1
paths:
/transactions:
get:
summary: Retrieve existing transactions
operationId: getTransactions
parameters:
- name: category
in: query
description: filter by transaction category
schema:
type: string
nullable: true
- name: limit
in: query
description: number of transactions to return
schema:
type: integer
format: int32
default: 100
minimum: 0
- name: offset
in: query
description: offset from where to retrieve transactions
schema:
type: integer
format: int32
default: -1
- name: bank
in: query
description: ID of the bank
schema:
type: string
- name: sort
in: query
description: field name by which to sort
schema:
type: string
responses:
"200":
description: Successful operation
content:
application/json:
schema:
$ref: "#/components/schemas/Transactions"
"204":
description: No transactions
post:
summary: Create a new transaction
operationId: createTransaction
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Transaction"
responses:
"201":
description: Transaction created
content:
application/json:
schema:
$ref: "#/components/schemas/Transaction"
"400":
description: Transaction not created
/transaction/{transactionId}:
get:
summary: Find transaction by ID
operationId: getTransactionById
parameters:
- name: transactionId
in: path
description: ID of transaction to return
required: true
schema:
type: integer
format: int64
responses:
"200":
description: Successful operation
content:
application/json:
schema:
$ref: "#/components/schemas/Transaction"
"400":
description: Invalid ID supplied
"404":
description: Transaction not found
/banks:
get:
summary: Retrieve existing banks
operationId: getBanks
responses:
"200":
description: Successful operation
content:
application/json:
schema:
$ref: "#/components/schemas/Banks"
"204":
description: No banks
/bank/{bankId}:
get:
summary: Find bank by ID
operationId: getBankById
parameters:
- name: bankId
in: path
description: ID of bank to return
required: true
schema:
type: string
responses:
"200":
description: Successful operation
content:
application/json:
schema:
$ref: "#/components/schemas/Bank"
"400":
description: Invalid ID supplied
"404":
description: Bank not found
components:
schemas:
Transaction:
type: object
properties:
id:
type: integer
format: int64
minimum: 0
date:
type: string
format: date
description:
type: string
value:
type: number
format: float
category:
type: string
required:
- date
- description
- value
Transactions:
type: array
items:
$ref: "#/components/schemas/Transaction"
Bank:
type: object
properties:
id:
type: string
name:
type: string
nordigenId:
type: string
format: uuid
required:
- id
- name
Banks:
type: array
items:
$ref: "#/components/schemas/Bank"