Add OpenAPI spec
This commit is contained in:
parent
d25ff6057b
commit
539c6412a7
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.idea
|
425
common/api.yaml
Normal file
425
common/api.yaml
Normal file
@ -0,0 +1,425 @@
|
||||
openapi: 3.1.0
|
||||
info:
|
||||
title: Allowance Planner
|
||||
version: 1.0.0
|
||||
servers:
|
||||
- url: 'https://allowance_planner.seeseepuff.be/v1'
|
||||
description: 'API server'
|
||||
- url: 'http://localhost/v1'
|
||||
description: 'Local server'
|
||||
paths:
|
||||
|
||||
/users:
|
||||
get:
|
||||
summary: Gets all users
|
||||
responses:
|
||||
200:
|
||||
description: Information about every user
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
description: The user ID
|
||||
name:
|
||||
type: string
|
||||
description: The user name
|
||||
|
||||
/user/{userId}:
|
||||
get:
|
||||
summary: Gets information about a user
|
||||
parameters:
|
||||
- in: path
|
||||
name: userId
|
||||
description: The user ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
responses:
|
||||
200:
|
||||
description: Information about the user
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
description: The user ID
|
||||
name:
|
||||
type: string
|
||||
description: The user name
|
||||
404:
|
||||
description: The users could not be found.
|
||||
|
||||
/user/{userId}/allowance:
|
||||
get:
|
||||
summary: Gets the allowance breakdown of a user
|
||||
parameters:
|
||||
- in: path
|
||||
name: userId
|
||||
description: The user ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
responses:
|
||||
200:
|
||||
description: Information about the allowance of the user
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
allowance:
|
||||
type: integer
|
||||
description: The total allowance value of the user, in cents.
|
||||
goals:
|
||||
type: array
|
||||
$ref: "#/components/schemas/goal"
|
||||
post:
|
||||
summary: Updates the allowance of a user
|
||||
parameters:
|
||||
- in: path
|
||||
name: userId
|
||||
description: The user ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
amount:
|
||||
type: integer
|
||||
description: The amount to update the allowance by, in cents.
|
||||
description:
|
||||
type: string
|
||||
description: The description of the allowance or expense.
|
||||
|
||||
/user/{userId}/history:
|
||||
get:
|
||||
summary: Gets the allowance history of a user
|
||||
parameters:
|
||||
- in: path
|
||||
name: userId
|
||||
description: The user ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
responses:
|
||||
200:
|
||||
description: Information about the allowance history of the user
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
date:
|
||||
type: string
|
||||
format: date-time
|
||||
description: The date of the allowance or expense.
|
||||
amount:
|
||||
type: integer
|
||||
description: The amount of the allowance to be added, in cents. A negative value
|
||||
|
||||
/user/{userId}/goals:
|
||||
get:
|
||||
summary: Gets all goals
|
||||
parameters:
|
||||
- in: path
|
||||
name: userId
|
||||
description: The user ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
responses:
|
||||
200:
|
||||
description: Information about the goals of the user
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/goal"
|
||||
post:
|
||||
summary: Creates a new goal
|
||||
parameters:
|
||||
- in: path
|
||||
name: userId
|
||||
description: The user ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
description: The goal name. The goal with the name "null" is a special goal that represents the basic allowance functionality.
|
||||
target:
|
||||
type: integer
|
||||
description: The target value of the goal, in cents
|
||||
weight:
|
||||
type: integer
|
||||
description: How much money goes to this goal, relative to all other goals.
|
||||
put:
|
||||
summary: Bulk updating of goals
|
||||
parameters:
|
||||
- in: path
|
||||
name: userId
|
||||
description: The user ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
description: The goal ID
|
||||
weight:
|
||||
type: integer
|
||||
description: How much money goes to this goal, relative to all other goals.
|
||||
|
||||
/user/{userId/goal/{goalId}:
|
||||
get:
|
||||
summary: Gets information about a goal
|
||||
parameters:
|
||||
- in: path
|
||||
name: userId
|
||||
description: The user ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
- in: path
|
||||
name: goalId
|
||||
description: The goal ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
responses:
|
||||
200:
|
||||
description: Information about the goal
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/goal"
|
||||
404:
|
||||
description: The goal could not be found.
|
||||
put:
|
||||
summary: Updates a goal
|
||||
parameters:
|
||||
- in: path
|
||||
name: userId
|
||||
description: The user ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
- in: path
|
||||
name: goalId
|
||||
description: The goal ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
description: The new name of the goal, if set.
|
||||
target:
|
||||
type: integer
|
||||
description: The target value of the goal, in cents, if set.
|
||||
weight:
|
||||
type: integer
|
||||
description: How much money goes to this goal, relative to all other goals, if set.
|
||||
responses:
|
||||
200:
|
||||
description: The goal was updated successfully.
|
||||
404:
|
||||
description: The goal could not be found.
|
||||
|
||||
delete:
|
||||
summary: Deletes a goal
|
||||
parameters:
|
||||
- in: path
|
||||
name: userId
|
||||
description: The user ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
- in: path
|
||||
name: goalId
|
||||
description: The goal ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
responses:
|
||||
200:
|
||||
description: The goal was deleted successfully.
|
||||
404:
|
||||
description: The goal could not be found.
|
||||
|
||||
/user/{userId}/goal/{goalId}/complete:
|
||||
post:
|
||||
summary: Completes a goal.
|
||||
description: Completes a goal. This will subtract this goal's value from the user's allowance and then remove the goal.
|
||||
parameters:
|
||||
- in: path
|
||||
name: userId
|
||||
description: The user ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
- in: path
|
||||
name: goalId
|
||||
description: The goal ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
|
||||
/tasks:
|
||||
get:
|
||||
summary: Gets all tasks
|
||||
responses:
|
||||
200:
|
||||
description: Information about every task
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: "#/components/schemas/task"
|
||||
post:
|
||||
summary: Create a new task
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
description: The task name
|
||||
reward:
|
||||
type: integer
|
||||
description: The task reward, in cents
|
||||
assigned:
|
||||
type: integer
|
||||
description: The user ID of the user assigned to the task
|
||||
|
||||
/task/{id}:
|
||||
get:
|
||||
summary: Gets information about a task
|
||||
parameters:
|
||||
- in: path
|
||||
name: id
|
||||
description: The task ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
- in: query
|
||||
name: sort
|
||||
description: The sort order of the tasks
|
||||
required: false
|
||||
schema:
|
||||
type: enum
|
||||
enum:
|
||||
- reward
|
||||
- recent
|
||||
- old
|
||||
responses:
|
||||
200:
|
||||
description: Information about the task
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/task"
|
||||
404:
|
||||
description: The tasks could not be found.
|
||||
put:
|
||||
summary: Updates a task
|
||||
parameters:
|
||||
- in: path
|
||||
name: id
|
||||
description: The task ID
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
description: The task name
|
||||
reward:
|
||||
type: integer
|
||||
description: The task reward, in cents
|
||||
assigned:
|
||||
type: integer
|
||||
description: The user ID of the user assigned to the task
|
||||
|
||||
components:
|
||||
schemas:
|
||||
task:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
description: The task ID
|
||||
name:
|
||||
type: string
|
||||
description: The task name
|
||||
reward:
|
||||
type: integer
|
||||
description: The task reward, in cents
|
||||
assigned:
|
||||
type: integer
|
||||
description: The user ID of the user assigned to the task
|
||||
|
||||
goal:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
description: The goal ID
|
||||
name:
|
||||
type: string
|
||||
description: The goal name. The goal with the name "null" is a special goal that represents the basic allowance functionality.
|
||||
target:
|
||||
type: integer
|
||||
description: The target value of the goal, in cents
|
||||
progress:
|
||||
type: integer
|
||||
description: The progress of the goal, in cents
|
||||
weight:
|
||||
type: integer
|
||||
description: How much money goes to this goal, relative to all other goals.
|
Loading…
x
Reference in New Issue
Block a user