datastore/docs/openapi.yaml
Luís Murta 18c93b6c0f
Fix resources naming scheme
The accepted practice is to retain the collection name even for a single
resource operation, like getting a specific transaction.

Also moves the PUT /transactions to /transactions/{id} which makes it
clearer that it can only be applied to an already created transaction.
2024-06-22 22:34:14 +01:00

207 lines
5.0 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.1.0
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
/transactions/{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
put:
summary: Update an existing transaction
operationId: updateTransaction
parameters:
- name: transactionId
in: path
description: ID of transaction to update
required: true
schema:
type: integer
format: int64
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Transaction"
responses:
"204":
description: Transaction updated successfully
content:
application/json:
schema:
$ref: "#/components/schemas/Transaction"
"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
/banks/{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"