481 lines
12 KiB
YAML
481 lines
12 KiB
YAML
basePath: /
|
|
definitions:
|
|
db.Account:
|
|
properties:
|
|
created:
|
|
type: string
|
|
fields:
|
|
additionalProperties:
|
|
items:
|
|
type: string
|
|
type: array
|
|
type: object
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type: object
|
|
db.AccountCreateInputFields:
|
|
properties:
|
|
name:
|
|
type: string
|
|
values:
|
|
items:
|
|
type: string
|
|
type: array
|
|
type: object
|
|
db.CreatedAccount:
|
|
properties:
|
|
apiKey:
|
|
type: string
|
|
id:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type: object
|
|
handlers.AccountInput:
|
|
properties:
|
|
fields:
|
|
items:
|
|
$ref: '#/definitions/db.AccountCreateInputFields'
|
|
type: array
|
|
name:
|
|
type: string
|
|
password:
|
|
type: string
|
|
type: object
|
|
handlers.AuthInput:
|
|
properties:
|
|
name:
|
|
type: string
|
|
password:
|
|
type: string
|
|
type: object
|
|
handlers.ResJSONError:
|
|
properties:
|
|
error:
|
|
type: string
|
|
field:
|
|
type: string
|
|
type: object
|
|
handlers.ResToken:
|
|
properties:
|
|
jwt:
|
|
type: string
|
|
renewalToken:
|
|
type: string
|
|
type: object
|
|
info:
|
|
contact:
|
|
email: lilleman@larvit.se
|
|
name: Power Plan
|
|
url: https://pwrpln.com/
|
|
description: This is a tiny http API for auth. Register accounts, auth with api-key
|
|
or name/password, renew JWT tokens...
|
|
license:
|
|
name: MIT
|
|
title: JWT Auth API
|
|
version: "0.1"
|
|
paths:
|
|
/accounts:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: |-
|
|
Requires Authorization-header with role "admin".
|
|
Example: Authorization: bearer xxx
|
|
Where "xxx" is a valid JWT token
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/db.Account'
|
|
type: array
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"415":
|
|
description: Unsupported Media Type
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
summary: Get accounts
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: |-
|
|
Requires Authorization-header with role "admin".
|
|
Example: Authorization: bearer xxx
|
|
Where "xxx" is a valid JWT token
|
|
operationId: account-create
|
|
parameters:
|
|
- description: Account object to be written to database
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/handlers.AccountInput'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"201":
|
|
description: Created
|
|
schema:
|
|
$ref: '#/definitions/db.CreatedAccount'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"409":
|
|
description: Conflict
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"415":
|
|
description: Unsupported Media Type
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
summary: Create an account
|
|
/accounts/:id:
|
|
delete:
|
|
consumes:
|
|
- application/json
|
|
description: |-
|
|
Requires Authorization-header with role "admin" or a matching account id
|
|
Example: Authorization: bearer xxx
|
|
Where "xxx" is a valid JWT token
|
|
operationId: account-del
|
|
parameters:
|
|
- description: Account ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"204":
|
|
description: No Content
|
|
schema:
|
|
type: string
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"404":
|
|
description: Not Found
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"415":
|
|
description: Unsupported Media Type
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
summary: Delete an account
|
|
/accounts/{id}:
|
|
get:
|
|
consumes:
|
|
- application/json
|
|
description: |-
|
|
Requires Authorization-header with either role "admin" or with a matching account id.
|
|
Example: Authorization: bearer xxx
|
|
Where "xxx" is a valid JWT token
|
|
operationId: get-account-by-id
|
|
parameters:
|
|
- description: Account ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/db.Account'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"415":
|
|
description: Unsupported Media Type
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
summary: Get account by id
|
|
/accounts/{id}/fields:
|
|
put:
|
|
consumes:
|
|
- application/json
|
|
description: |-
|
|
Requires Authorization-header with role "admin".
|
|
Example: Authorization: bearer xxx
|
|
Where "xxx" is a valid JWT token
|
|
operationId: account-update-fields
|
|
parameters:
|
|
- description: Fields array with objects to be written to database
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/db.AccountCreateInputFields'
|
|
type: array
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/db.Account'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"415":
|
|
description: Unsupported Media Type
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
summary: Update account fields
|
|
/auth/api-key:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Authenticate account by API Key
|
|
operationId: auth-account-by-api-key
|
|
parameters:
|
|
- description: API Key as a string in JSON format (just encapsulate the string
|
|
with \
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/handlers.ResToken'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"415":
|
|
description: Unsupported Media Type
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
summary: Authenticate account by API Key
|
|
/auth/password:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Authenticate account by Password
|
|
operationId: auth-account-by-password
|
|
parameters:
|
|
- description: Name and password to auth by
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/handlers.AuthInput'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/handlers.ResToken'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"415":
|
|
description: Unsupported Media Type
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
summary: Authenticate account by Password
|
|
/renew-token:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: Renew token
|
|
operationId: renew-token
|
|
parameters:
|
|
- description: Renewal token as a string in JSON format (just encapsulate the
|
|
string with \
|
|
in: body
|
|
name: body
|
|
required: true
|
|
schema:
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/handlers.ResToken'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"415":
|
|
description: Unsupported Media Type
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/handlers.ResJSONError'
|
|
type: array
|
|
summary: Renew token
|
|
swagger: "2.0"
|