window.onload = function() { // Build a system let url = window.location.search.match(/url=([^&]+)/); if (url && url.length > 1) { url = decodeURIComponent(url[1]); } else { url = window.location.origin; } let options = { "swaggerDoc": { "openapi": "3.0.0", "paths": { "/api/snippets": { "get": { "operationId": "SnippetsController_findAll", "parameters": [], "responses": { "200": { "description": "Successfully returned all snippets" } }, "tags": [ "snippets" ] }, "post": { "operationId": "SnippetsController_create", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSnippetDto" } } } }, "responses": { "201": { "description": "Snippet successfully created!" }, "400": { "description": "Validation failed!" }, "401": { "description": "Unauthorized" } }, "tags": [ "snippets" ], "security": [ { "access_token": [] } ] } }, "/api/snippets/name": { "get": { "operationId": "SnippetsController_generateName", "parameters": [], "responses": { "200": { "description": "Successfully generated name for snippet" } }, "tags": [ "snippets" ] } }, "/api/snippets/{username}/{slug}": { "get": { "operationId": "SnippetsController_findOneByUsernameSlug", "parameters": [ { "name": "username", "required": true, "in": "path", "description": "Username", "schema": { "type": "string" } }, { "name": "slug", "required": true, "in": "path", "description": "Snippet slug", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successfully returned snippet" } }, "tags": [ "snippets" ] } }, "/api/snippets/{id}": { "get": { "operationId": "SnippetsController_findOne", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "Successfully returned snippet by id" } }, "tags": [ "snippets" ] }, "put": { "operationId": "SnippetsController_update", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateSnippetDto" } } } }, "responses": { "200": { "description": "Snippet successfully updated!" }, "400": { "description": "Validation failed!" }, "401": { "description": "Unauthorized" } }, "tags": [ "snippets" ], "security": [ { "access_token": [] } ] }, "delete": { "operationId": "SnippetsController_delete", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "Snippet successfully deleted!" }, "401": { "description": "Unauthorized" } }, "tags": [ "snippets" ], "security": [ { "access_token": [] } ] } }, "/api/users": { "get": { "operationId": "UsersController_findAll", "parameters": [], "responses": { "200": { "description": "Successfully returned all users" }, "401": { "description": "Unauthorized" } }, "tags": [ "users" ], "security": [ { "access_token": [] } ] }, "post": { "operationId": "UsersController_create", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateUserDto" } } } }, "responses": { "201": { "description": "Successfully created user and logged in! Token lasts 60 minutes!" }, "400": { "description": "Validation failed!" } }, "tags": [ "users" ] } }, "/api/users/profile": { "get": { "operationId": "UsersController_getProfile", "parameters": [], "responses": { "200": { "description": "Successfully returned user profile" }, "401": { "description": "Unauthorized" } }, "tags": [ "users" ], "security": [ { "access_token": [] } ] } }, "/api/users/{id}": { "get": { "operationId": "UsersController_findOne", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "Successfully returned user" }, "401": { "description": "Unauthorized" } }, "tags": [ "users" ], "security": [ { "access_token": [] } ] }, "put": { "operationId": "UsersController_update", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateUserDto" } } } }, "responses": { "200": { "description": "Successfully updated user" }, "400": { "description": "Validation failed!" } }, "tags": [ "users" ], "security": [ { "access_token": [] } ] }, "delete": { "operationId": "UsersController_delete", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "Successfully deleted user" } }, "tags": [ "users" ], "security": [ { "access_token": [] } ] } }, "/api/users/{username}": { "get": { "operationId": "UsersController_findByUsername", "parameters": [ { "name": "username", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successfully returned user by username" }, "401": { "description": "Unauthorized" } }, "tags": [ "users" ], "security": [ { "access_token": [] } ] } }, "/api/users/recover": { "post": { "operationId": "UsersController_recover", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecoverUserDto" } } } }, "responses": { "201": { "description": "Successfully returned recovery hash key" }, "400": { "description": "Validation failed!" } }, "tags": [ "users" ] } }, "/api/users/recover/{hash}": { "get": { "operationId": "UsersController_checkHash", "parameters": [ { "name": "hash", "required": true, "in": "path", "description": "Hash key for user recovery!", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successfully checked recovery hash key" } }, "tags": [ "users" ] }, "post": { "operationId": "UsersController_resetPassword", "parameters": [ { "name": "hash", "required": true, "in": "path", "description": "Hash key for user password reset!", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateUserDto" } } } }, "responses": { "200": { "description": "Successfully updated user password" } }, "tags": [ "users" ] } }, "/api/users/settings/{id}": { "put": { "operationId": "UsersController_updateSettings", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateUserSettingsDto" } } } }, "responses": { "200": { "description": "" } }, "tags": [ "users" ], "security": [ { "access_token": [] } ] } }, "/api/signin": { "post": { "operationId": "AuthController_signin", "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SignUpUserDto" } } } }, "responses": { "201": { "description": "Successfully logged in! Token lasts 60 minutes!" }, "401": { "description": "Invalid signin data!" } }, "tags": [ "auth" ] } }, "/api/signout": { "post": { "operationId": "AuthController_signout", "parameters": [], "responses": { "201": { "description": "Successfully logged out!" } }, "tags": [ "auth" ], "security": [ { "access_token": [] } ] } }, "/api/oauth": { "get": { "operationId": "AuthController_oAuth", "parameters": [ { "name": "code", "required": true, "in": "query", "description": "Auth github code", "schema": {} } ], "responses": { "200": { "description": "Successfully logged with github! Token lasts 60 minutes!" } }, "tags": [ "auth" ] } }, "/api/runner/run": { "get": { "operationId": "RunnerController_getLogs", "parameters": [ { "name": "code", "required": false, "in": "query", "description": "Code to execute(only supports JS by now)", "example": "console.log(\"Hello world!\");", "schema": {} } ], "responses": { "200": { "description": "Code successfully executed" } }, "tags": [ "runCode" ] } }, "/admin/users": { "get": { "operationId": "UsersController_findAllUsers", "parameters": [], "responses": { "200": { "description": "" } } } }, "/admin/users/{id}": { "put": { "operationId": "UsersController_updateUser", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "" } } }, "get": { "operationId": "UsersController_editUser", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "" } } }, "delete": { "operationId": "UsersController_deleteUser", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "" } } } }, "/admin/users/{id}/snippets": { "get": { "operationId": "UsersController_findAllSnippetsUser", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "" } } } }, "/admin/users/{userId}/snippets/{snippetId}": { "delete": { "operationId": "UsersController_deleteUserSnippet", "parameters": [ { "name": "userId", "required": true, "in": "path", "schema": { "type": "number" } }, { "name": "snippetId", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "" } } } }, "/admin/snippets": { "get": { "operationId": "SnippetsController_findAllSnippets", "parameters": [], "responses": { "200": { "description": "" } } } }, "/admin/snippets/{id}": { "delete": { "operationId": "SnippetsController_deleteSnippet", "parameters": [ { "name": "id", "required": true, "in": "path", "schema": { "type": "number" } } ], "responses": { "200": { "description": "" } } } } }, "info": { "title": "Run IT API", "description": "", "version": "1.0", "contact": {} }, "tags": [ { "name": "users", "description": "" }, { "name": "snippets", "description": "" }, { "name": "auth", "description": "" }, { "name": "common", "description": "" } ], "servers": [], "components": { "schemas": { "CreateSnippetDto": { "type": "object", "properties": { "code": { "type": "string", "example": "console.log(\"Hello world!\");" }, "name": { "type": "string", "minLength": 1, "maxLength": 30, "example": "My snippet" }, "language": { "type": "string", "enum": [ "ruby", "java", "php", "python", "javascript", "html" ], "example": "javascript" } }, "required": [ "code", "name", "language" ] }, "UpdateSnippetDto": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 30, "example": "My updated snippet" }, "code": { "type": "string", "example": "console.log(\"Hello world!\");" } }, "required": [ "code" ] }, "CreateUserDto": { "type": "object", "properties": { "username": { "type": "string", "minLength": 3, "maxLength": 20, "description": "Must be unique!", "example": "JohnDoe", "pattern": "/[A-Za-z]/" }, "email": { "type": "string", "description": "Must be unique!", "example": "jane-doe@mail.ru" }, "password": { "type": "string", "example": "haew6wae56a45ewgd", "minLength": 8, "maxLength": 30 } }, "required": [ "username", "email", "password" ] }, "RecoverUserDto": { "type": "object", "properties": { "email": { "type": "string", "example": "jane-doe@mail.ru" }, "frontendUrl": { "type": "string", "example": "localhost:5001" } }, "required": [ "email", "frontendUrl" ] }, "UpdateUserDto": { "type": "object", "properties": { "username": { "type": "string", "minLength": 3, "maxLength": 20, "description": "Must be unique!", "example": "UpdatedJohnDoe", "pattern": "/[A-Za-z]/" }, "email": { "type": "string", "description": "Must be unique!", "example": "updated-jane-doe@mail.ru" }, "currPassword": { "type": "string", "description": "Current account password", "example": "haew6wae56a45ewgd" }, "password": { "type": "string", "minLength": 8, "maxLength": 30, "description": "New password", "example": "ha6ew6ewa5gea" } } }, "UpdateUserSettingsDto": { "type": "object", "properties": { "theme": { "type": "string" }, "language": { "type": "string" }, "avatar_base64": { "type": "string" } }, "required": [ "theme", "language", "avatar_base64" ] }, "SignUpUserDto": { "type": "object", "properties": { "email": { "type": "string", "example": "jane-doe@mail.ru" }, "password": { "type": "string", "example": "haew6wae56a45ewgd" } }, "required": [ "email", "password" ] } } } }, "customOptions": {} }; url = options.swaggerUrl || url let urls = options.swaggerUrls let customOptions = options.customOptions let spec1 = options.swaggerDoc let swaggerOptions = { spec: spec1, url: url, urls: urls, dom_id: '#swagger-ui', deepLinking: true, presets: [ SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset ], plugins: [ SwaggerUIBundle.plugins.DownloadUrl ], layout: "StandaloneLayout" } for (let attrname in customOptions) { swaggerOptions[attrname] = customOptions[attrname]; } let ui = SwaggerUIBundle(swaggerOptions) if (customOptions.initOAuth) { ui.initOAuth(customOptions.initOAuth) } if (customOptions.authAction) { ui.authActions.authorize(customOptions.authAction) } window.ui = ui }