From b0c9a7b1c578a39f8fdd76063b0f500e4e96adc3 Mon Sep 17 00:00:00 2001 From: realaravinth Date: Wed, 31 Mar 2021 13:32:40 +0530 Subject: [PATCH] OAS: levels --- docs/swagger.json | 411 +--------------------------------------------- openapi.yaml | 206 ++++++++++++++++++++++- 2 files changed, 199 insertions(+), 418 deletions(-) diff --git a/docs/swagger.json b/docs/swagger.json index 474d0972..3929b448 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -1,410 +1 @@ -{ - "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" - } - } - } - }, - "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" - } - } - } - }, - "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 user account", - "operationId": "deleteUserAccount", - "tags": ["user"], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteUser" - } - } - } - }, - "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" - } - } - } - }, - "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" - } - } - } - }, - "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" - } - } - } - } - } - } - } - }, - "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" - } - } - } - }, - "securitySchemes": { - "cookieAuth": { - "type": "apiKey", - "in": "cookie", - "name": "Authorization" - } - } - } -} +{"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"}}}},"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"}}}},"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"}}}},"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"}}}},"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"}}}},"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/add":{"post":{"security":[{"cookieAuth":[]}],"summary":"Add new domain to mCaptcha","operationId":"addDomain","tags":["mcaptcha","domain"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/addDomain"}}}},"responses":{"200":{"description":"OK"},"400":{"description":"Bad request: Submited domain name isn't a URI","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"authentication failed, 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/domain/verify/challenge/get":{"post":{"security":[{"cookieAuth":[]}],"summary":"Get verification challenge for adding a domain","operationId":"challengeDomain","tags":["mcaptcha","domain"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/addDomain"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainVerificationChallenge"}}}},"400":{"description":"Bad request: Submited domain name isn't a URI","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"authentication failed, 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/domain/verify/challenge/prove":{"post":{"security":[{"cookieAuth":[]}],"summary":"Verifiy domain","operationId":"proveDomain","tags":["mcaptcha","domain"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/addDomain"}}}},"responses":{"200":{"description":"OK"},"400":{"description":"Bad request: challenge is courrupt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"authentication failed or challenge verification failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Client server unavailable, please check if your server is online","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/mcaptcha/domain/delete":{"post":{"security":[{"cookieAuth":[]}],"summary":"Delete domain from mcaptcha","operationId":"deleteDomain","tags":["mcaptcha","domain"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/addDomain"}}}},"responses":{"200":{"description":"OK"},"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"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/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"}}}}}}}},"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"}}}}},"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"Authorization"}}}} \ No newline at end of file diff --git a/openapi.yaml b/openapi.yaml index a04e3552..3edca59e 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -83,6 +83,10 @@ paths: description: OK /api/v1/account/delete: post: + security: + - cookieAuth: [] + summary: Delete account + operationId: deleteAccount tags: - user requestBody: @@ -290,7 +294,7 @@ paths: '200': description: OK '400': - description: "Bad request: challenge is courrupt" + description: 'Bad request: challenge is courrupt' content: application/json: schema: @@ -334,7 +338,7 @@ paths: '200': description: OK '400': - description: "Bad request: Submited URI is not a URI" + description: 'Bad request: Submited URI is not a URI' content: application/json: schema: @@ -378,7 +382,7 @@ paths: $ref: '#/components/schemas/MCaptchaDetails' '400': - description: "Bad request: Submited URI is not a URI or duplicate token name" + description: 'Bad request: Submited URI is not a URI or duplicate token name' content: application/json: schema: @@ -422,7 +426,7 @@ paths: $ref: '#/components/schemas/MCaptchaDetails' '400': - description: "Bad request: Submited URI is not a URI or duplicate token name" + description: 'Bad request: Submited URI is not a URI or duplicate token name' content: application/json: schema: @@ -440,7 +444,6 @@ paths: schema: $ref: '#/components/schemas/Error' - /api/v1/mcaptcha/domain/token/get: post: security: @@ -467,7 +470,7 @@ paths: $ref: '#/components/schemas/MCaptchaDetails' '400': - description: "Bad request: Submited URI is not a URI" + description: 'Bad request: Submited URI is not a URI' content: application/json: schema: @@ -496,11 +499,12 @@ paths: post: security: - cookieAuth: [] - summary: Delete domain from mcaptcha - operationId: deleteDomain + summary: Delete token from mcaptcha + operationId: deleteToken tags: - mcaptcha - domain + - token requestBody: required: true content: @@ -524,7 +528,156 @@ paths: 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' components: schemas: @@ -644,6 +797,43 @@ components: 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' securitySchemes: cookieAuth: