mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2026-02-11 10:05:41 +00:00
setup openapi spec build chain
This commit is contained in:
4
docs/openapi/.gitignore
vendored
Normal file
4
docs/openapi/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
./.idea
|
||||
./node_modules/
|
||||
./dist/
|
||||
_build/
|
||||
795
docs/openapi/openapi.yaml
Normal file
795
docs/openapi/openapi.yaml
Normal file
@@ -0,0 +1,795 @@
|
||||
openapi: 3.0.0
|
||||
info:
|
||||
version: 0.1.0
|
||||
title: mCaptcha/guard
|
||||
servers:
|
||||
- url: /
|
||||
paths:
|
||||
/api/v1/signup:
|
||||
post:
|
||||
summary: Registration endpoint
|
||||
operationId: registerUser
|
||||
tags:
|
||||
- user
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/RegisterUser'
|
||||
example:
|
||||
username: 'testuser'
|
||||
password: 'mysuperlongandsecurepassword'
|
||||
email: 'testuser@example.com'
|
||||
responses:
|
||||
'200':
|
||||
description: Successful registration
|
||||
'400':
|
||||
description: >-
|
||||
Bad request: username contains profainity/blacklisted words or email
|
||||
not acceptable or password too long/short or duplicate
|
||||
username/password
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'500':
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/api/v1/signin:
|
||||
post:
|
||||
summary: Login endpoint
|
||||
operationId: loginUser
|
||||
tags:
|
||||
- user
|
||||
- authentication
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/LoginUser'
|
||||
example:
|
||||
username: 'testuser'
|
||||
password: 'mysuperlongandsecurepassword'
|
||||
responses:
|
||||
'200':
|
||||
description: Successful authentication
|
||||
'401':
|
||||
description: 'authentication failed, wrong password'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'404':
|
||||
description: username not found
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'500':
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/api/v1/signout:
|
||||
post:
|
||||
security:
|
||||
- cookieAuth: []
|
||||
summary: Signout endpoint
|
||||
operationId: signoutUser
|
||||
tags:
|
||||
- user
|
||||
- authentication
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
/api/v1/account/delete:
|
||||
post:
|
||||
security:
|
||||
- cookieAuth: []
|
||||
summary: Delete account
|
||||
operationId: deleteAccount
|
||||
tags:
|
||||
- user
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/DeleteUser'
|
||||
example:
|
||||
password: 'mysuperlongandsecurepassword'
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
'401':
|
||||
description: (cookie)authentication required or wrong password
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'404':
|
||||
description: username not found
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'500':
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/api/v1/account/username/exists:
|
||||
post:
|
||||
summary: Check if username exists
|
||||
operationId: usernameExists
|
||||
tags:
|
||||
- user
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/UserDetailCheck'
|
||||
example:
|
||||
val: 'testuser'
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/UserDetailCheckRes'
|
||||
'500':
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/api/v1/account/email/exists:
|
||||
post:
|
||||
summary: Check if email exists
|
||||
operationId: emailExists
|
||||
tags:
|
||||
- user
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/UserDetailCheck'
|
||||
example:
|
||||
val: 'testuser@example.com'
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/UserDetailCheckRes'
|
||||
'500':
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/api/v1/meta/health:
|
||||
get:
|
||||
summary: Health check
|
||||
operationId: healthCheck
|
||||
tags:
|
||||
- meta
|
||||
- health
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Health'
|
||||
/api/v1/meta/build:
|
||||
get:
|
||||
summary: Get server binary build details
|
||||
operationId: buildDetails
|
||||
tags:
|
||||
- meta
|
||||
- build
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/BuildDetails'
|
||||
/api/v1/mcaptcha/domain/token/add:
|
||||
post:
|
||||
security:
|
||||
- cookieAuth: []
|
||||
summary: Add token for registered domain
|
||||
operationId: addToken
|
||||
tags:
|
||||
- mcaptcha
|
||||
- domain
|
||||
- token
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/MCaptchaID'
|
||||
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/MCaptchaDetails'
|
||||
|
||||
'400':
|
||||
description: 'Bad request: Submited URI is not a URI or duplicate token name'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'401':
|
||||
description: 'authentication failed'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'500':
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
|
||||
/api/v1/mcaptcha/domain/token/update:
|
||||
post:
|
||||
security:
|
||||
- cookieAuth: []
|
||||
summary: Update token key
|
||||
operationId: updateTokenKey
|
||||
tags:
|
||||
- mcaptcha
|
||||
- domain
|
||||
- token
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/MCaptchaID'
|
||||
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/MCaptchaDetails'
|
||||
|
||||
'400':
|
||||
description: 'Bad request: Submited URI is not a URI or duplicate token name'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'401':
|
||||
description: 'authentication failed'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'500':
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
|
||||
/api/v1/mcaptcha/domain/token/get:
|
||||
post:
|
||||
security:
|
||||
- cookieAuth: []
|
||||
summary: Get token key
|
||||
operationId: getTokenKey
|
||||
tags:
|
||||
- mcaptcha
|
||||
- domain
|
||||
- token
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/MCaptchaID'
|
||||
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/MCaptchaDetails'
|
||||
|
||||
'400':
|
||||
description: 'Bad request: Submited URI is not a URI'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'401':
|
||||
description: 'authentication failed'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'404':
|
||||
description: token name not found
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
|
||||
'500':
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
|
||||
/api/v1/mcaptcha/domain/token/delete:
|
||||
post:
|
||||
security:
|
||||
- cookieAuth: []
|
||||
summary: Delete token from mcaptcha
|
||||
operationId: deleteToken
|
||||
tags:
|
||||
- mcaptcha
|
||||
- domain
|
||||
- token
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/MCaptchaID'
|
||||
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
'401':
|
||||
description: 'authentication failed'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'500':
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
|
||||
/api/v1/mcaptcha/domain/token/levels/add:
|
||||
post:
|
||||
security:
|
||||
- cookieAuth: []
|
||||
summary: Add levels to a token
|
||||
operationId: addTokenLevels
|
||||
tags:
|
||||
- mcaptcha
|
||||
- domain
|
||||
- token
|
||||
- levels
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/AddLevels'
|
||||
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
'400':
|
||||
description: 'duplicate visitor count or difficulty_factor is zero or difficulty_factor decreases with increase in visitor count'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
|
||||
'401':
|
||||
description: 'authentication failed'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'500':
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
|
||||
/api/v1/mcaptcha/domain/token/levels/update:
|
||||
post:
|
||||
security:
|
||||
- cookieAuth: []
|
||||
summary: Update levels of a token
|
||||
operationId: updateTokenLevels
|
||||
tags:
|
||||
- mcaptcha
|
||||
- domain
|
||||
- token
|
||||
- levels
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/AddLevels'
|
||||
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
'400':
|
||||
description: 'duplicate visitor count or difficulty_factor is zero or difficulty_factor decreases with increase in visitor count'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
|
||||
'401':
|
||||
description: 'authentication failed'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'500':
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
|
||||
/api/v1/mcaptcha/domain/token/levels/delete:
|
||||
post:
|
||||
security:
|
||||
- cookieAuth: []
|
||||
tags:
|
||||
- mcaptcha
|
||||
- domain
|
||||
- token
|
||||
- levels
|
||||
summary: Delete levels of a token
|
||||
operationId: deleteTokenLevels
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/AddLevels'
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
'401':
|
||||
description: (cookie)authentication required or wrong password
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'500':
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/api/v1/mcaptcha/domain/token/levels/get:
|
||||
post:
|
||||
security:
|
||||
- cookieAuth: []
|
||||
tags:
|
||||
- mcaptcha
|
||||
- domain
|
||||
- token
|
||||
- levels
|
||||
summary: Get levels of a token
|
||||
operationId: getTokenLevels
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/AddLevels'
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Levels'
|
||||
'401':
|
||||
description: (cookie)authentication required or wrong password
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'500':
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
/api/v1/mcaptcha/domain/token/token/get:
|
||||
post:
|
||||
security:
|
||||
- cookieAuth: []
|
||||
tags:
|
||||
- mcaptcha
|
||||
- domain
|
||||
- token
|
||||
- levels
|
||||
- duration
|
||||
summary: Get duration of a token
|
||||
operationId: getTokenDuration
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/GetDuration'
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Duration'
|
||||
'401':
|
||||
description: (cookie)authentication required or wrong password
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'500':
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
|
||||
/api/v1/mcaptcha/domain/token/token/update:
|
||||
post:
|
||||
security:
|
||||
- cookieAuth: []
|
||||
tags:
|
||||
- mcaptcha
|
||||
- domain
|
||||
- token
|
||||
- levels
|
||||
- duration
|
||||
summary: update duration of a token
|
||||
operationId: updateTokenDuration
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/UpdateDuration'
|
||||
responses:
|
||||
'200':
|
||||
description: OK
|
||||
'400':
|
||||
description: 'Bad request: Duration must be greater than 0'
|
||||
'401':
|
||||
description: (cookie)authentication required or wrong password
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
'500':
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
|
||||
components:
|
||||
schemas:
|
||||
RegisterUser:
|
||||
type: object
|
||||
required:
|
||||
- username
|
||||
- password
|
||||
- email
|
||||
properties:
|
||||
username:
|
||||
type: string
|
||||
email:
|
||||
type: string
|
||||
password:
|
||||
type: string
|
||||
format: password
|
||||
LoginUser:
|
||||
type: object
|
||||
required:
|
||||
- username
|
||||
- password
|
||||
properties:
|
||||
username:
|
||||
type: string
|
||||
password:
|
||||
type: string
|
||||
format: password
|
||||
DeleteUser:
|
||||
type: object
|
||||
required:
|
||||
- password
|
||||
properties:
|
||||
password:
|
||||
type: string
|
||||
format: password
|
||||
Error:
|
||||
type: object
|
||||
required:
|
||||
- error
|
||||
properties:
|
||||
error:
|
||||
type: string
|
||||
User:
|
||||
type: object
|
||||
required:
|
||||
- id
|
||||
- name
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
format: int64
|
||||
name:
|
||||
type: string
|
||||
UserDetailCheck:
|
||||
type: object
|
||||
required:
|
||||
- val
|
||||
properties:
|
||||
val:
|
||||
type: string
|
||||
Health:
|
||||
type: object
|
||||
required:
|
||||
- db
|
||||
properties:
|
||||
db:
|
||||
type: boolean
|
||||
UserDetailCheckRes:
|
||||
type: object
|
||||
required:
|
||||
- exists
|
||||
properties:
|
||||
val:
|
||||
type: boolean
|
||||
BuildDetails:
|
||||
type: object
|
||||
required:
|
||||
- version
|
||||
- git_commit_hash
|
||||
properties:
|
||||
version:
|
||||
type: string
|
||||
git_commit_hash:
|
||||
type: string
|
||||
AddDomain:
|
||||
type: object
|
||||
required:
|
||||
- name
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
DomainVerificationChallenge:
|
||||
type: object
|
||||
required:
|
||||
- verification_challenge
|
||||
properties:
|
||||
verification_challenge:
|
||||
type: string
|
||||
MCaptchaID:
|
||||
type: object
|
||||
required:
|
||||
- name
|
||||
- domain
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
domain:
|
||||
type: string
|
||||
MCaptchaDetails:
|
||||
type: object
|
||||
required:
|
||||
- name
|
||||
- key
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
key:
|
||||
type: string
|
||||
Level:
|
||||
type: object
|
||||
required:
|
||||
- visitor_threshold
|
||||
- difficulty_factor
|
||||
properties:
|
||||
visitor_threshold:
|
||||
type: number
|
||||
minimum: 1
|
||||
maximum: 2147483647
|
||||
difficulty_factor:
|
||||
type: number
|
||||
minimum: 1
|
||||
GetLevels:
|
||||
type: object
|
||||
required:
|
||||
- token
|
||||
properties:
|
||||
token:
|
||||
type: string
|
||||
Levels:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/Level'
|
||||
|
||||
AddLevels:
|
||||
type: object
|
||||
required:
|
||||
- name
|
||||
- levels
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
levels:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/Level'
|
||||
GetDuration:
|
||||
type: object
|
||||
required:
|
||||
- token
|
||||
properties:
|
||||
token:
|
||||
type: string
|
||||
Duration:
|
||||
type: object
|
||||
required:
|
||||
- duration
|
||||
properties:
|
||||
duration:
|
||||
type: number
|
||||
minimum: 1
|
||||
maximum: 2147483647
|
||||
|
||||
UpdateDuration:
|
||||
type: object
|
||||
required:
|
||||
- duration
|
||||
- token_name
|
||||
properties:
|
||||
token_name:
|
||||
type: string
|
||||
duration:
|
||||
type: number
|
||||
minimum: 1
|
||||
maximum: 2147483647
|
||||
|
||||
securitySchemes:
|
||||
cookieAuth:
|
||||
type: apiKey
|
||||
in: cookie
|
||||
name: Authorization
|
||||
3406
docs/openapi/package-lock.json
generated
Normal file
3406
docs/openapi/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
27
docs/openapi/package.json
Normal file
27
docs/openapi/package.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "mcaptcha-api",
|
||||
"version": "0.1.0",
|
||||
"description": "This service is used to discover bridge interfaces that operate on forges.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "swagger-cli bundle openapi.yaml --outfile dist/openapi.yaml --type yaml",
|
||||
"test": "npm run build && spectral lint dist/openapi.yaml",
|
||||
"serve": "npm run build && redoc-cli serve dist/openapi.yaml --port 7000 --options.onlyRequiredInSamples",
|
||||
"html": "npm run build && redoc-cli bundle dist/openapi.yaml --output dist/index.html --options.onlyRequiredInSamples",
|
||||
"clean": "rm -r dist"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/dat-adi/northstar.git"
|
||||
},
|
||||
"license": "AGPL3",
|
||||
"bugs": {
|
||||
"url": "https://github.com/dat-adi/northstar/issues"
|
||||
},
|
||||
"homepage": "https://github.com/dat-adi/northstar#readme",
|
||||
"dependencies": {
|
||||
"@apidevtools/swagger-cli": "^4.0.4",
|
||||
"@stoplight/spectral": "^5.8.1",
|
||||
"redoc-cli": "^0.10.3"
|
||||
}
|
||||
}
|
||||
2634
docs/openapi/yarn.lock
Normal file
2634
docs/openapi/yarn.lock
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user