From 3edb0c58943c003ed3f209b2197d1f43484a3432 Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Tue, 2 May 2017 15:35:59 +0200 Subject: Generate swagger json (#1402) - Generate swagger.json into public/ - Add swagger-ui auto-installation - Add footer link to local swagger-ui - Add /swagger url for using app url. - Fix Swagger-UI version via git tag --- public/swagger.v1.json | 1290 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1290 insertions(+) create mode 100644 public/swagger.v1.json (limited to 'public/swagger.v1.json') diff --git a/public/swagger.v1.json b/public/swagger.v1.json new file mode 100644 index 0000000000..d3e1882141 --- /dev/null +++ b/public/swagger.v1.json @@ -0,0 +1,1290 @@ +{ + "consumes": [ + "application/json", + "text/plain" + ], + "produces": [ + "application/json", + "text/html" + ], + "schemes": [ + "http", + "https" + ], + "swagger": "2.0", + "info": { + "description": "This provide API interface to communicate with this Gitea instance.", + "title": "Gitea API.", + "termsOfService": "there are no TOS at this moment, use at your own risk we take no responsibility", + "license": { + "name": "MIT", + "url": "http://opensource.org/licenses/MIT" + }, + "version": "1.1.1" + }, + "basePath": "/api/v1", + "paths": { + "/markdown": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "text/html" + ], + "operationId": "renderMarkdown", + "parameters": [ + { + "description": "Text markdown to render", + "name": "Text", + "in": "body", + "schema": { + "type": "string" + } + }, + { + "description": "Mode to render", + "name": "Mode", + "in": "body", + "schema": { + "type": "string" + } + }, + { + "description": "Context to render", + "name": "Context", + "in": "body", + "schema": { + "type": "string" + } + }, + { + "description": "Is it a wiki page ?", + "name": "Wiki", + "in": "body", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "$ref": "#/responses/MarkdownRender" + }, + "422": { + "$ref": "#/responses/validationError" + } + } + } + }, + "/markdown/raw": { + "post": { + "consumes": [ + "text/plain" + ], + "produces": [ + "text/html" + ], + "operationId": "renderMarkdownRaw", + "responses": { + "200": { + "$ref": "#/responses/MarkdownRender" + }, + "422": { + "$ref": "#/responses/validationError" + } + } + } + }, + "/org/{org}/repos": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "operationId": "createOrgRepo", + "parameters": [ + { + "uniqueItems": true, + "x-go-name": "Name", + "description": "Name of the repository to create", + "name": "name", + "in": "body", + "schema": { + "type": "string" + } + }, + { + "x-go-name": "Description", + "description": "Description of the repository to create", + "name": "description", + "in": "body", + "schema": { + "type": "string" + } + }, + { + "x-go-name": "Private", + "description": "Is the repository to create private ?", + "name": "private", + "in": "body", + "schema": { + "type": "boolean" + } + }, + { + "x-go-name": "AutoInit", + "description": "Init the repository to create ?", + "name": "auto_init", + "in": "body", + "schema": { + "type": "boolean" + } + }, + { + "x-go-name": "Gitignores", + "description": "Gitignores to use", + "name": "gitignores", + "in": "body", + "schema": { + "type": "string" + } + }, + { + "x-go-name": "License", + "description": "License to use", + "name": "license", + "in": "body", + "schema": { + "type": "string" + } + }, + { + "x-go-name": "Readme", + "description": "Readme of the repository to create", + "name": "readme", + "in": "body", + "schema": { + "type": "string" + } + } + ], + "responses": { + "201": { + "$ref": "#/responses/Repository" + }, + "403": { + "$ref": "#/responses/forbidden" + }, + "422": { + "$ref": "#/responses/validationError" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/repos/search": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "repoSearch", + "parameters": [ + { + "type": "string", + "x-go-name": "Keyword", + "description": "Keyword to search", + "name": "q", + "in": "query" + }, + { + "type": "integer", + "format": "int64", + "x-go-name": "OwnerID", + "description": "Owner in we search search", + "name": "uid", + "in": "query" + }, + { + "type": "integer", + "format": "int64", + "x-go-name": "PageSize", + "description": "Limit of result\n\nmaximum: setting.ExplorePagingNum", + "name": "limit", + "in": "query" + } + ], + "responses": { + "200": { + "$ref": "#/responses/SearchResults" + }, + "500": { + "$ref": "#/responses/SearchError" + } + } + } + }, + "/repos/{username}/{reponame}/subscription": { + "get": { + "operationId": "userCurrentCheckSubscription", + "responses": { + "200": { + "$ref": "#/responses/WatchInfo" + }, + "404": { + "$ref": "#/responses/notFound" + } + } + }, + "put": { + "operationId": "userCurrentPutSubscription", + "responses": { + "200": { + "$ref": "#/responses/WatchInfo" + }, + "500": { + "$ref": "#/responses/error" + } + } + }, + "delete": { + "operationId": "userCurrentDeleteSubscription", + "responses": { + "204": { + "$ref": "#/responses/empty" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/user": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userGetCurrent", + "responses": { + "200": { + "$ref": "#/responses/User" + } + } + } + }, + "/user/followers": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userCurrentListFollowers", + "responses": { + "200": { + "$ref": "#/responses/UserList" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/user/following": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userCurrentListFollowing", + "responses": { + "200": { + "$ref": "#/responses/UserList" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/user/following/{username}": { + "get": { + "operationId": "userCurrentCheckFollowing", + "responses": { + "204": { + "$ref": "#/responses/empty" + }, + "404": { + "$ref": "#/responses/notFound" + } + } + }, + "put": { + "operationId": "userCurrentPutFollow", + "responses": { + "204": { + "$ref": "#/responses/empty" + }, + "500": { + "$ref": "#/responses/error" + } + } + }, + "delete": { + "operationId": "userCurrentDeleteFollow", + "responses": { + "204": { + "$ref": "#/responses/empty" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/user/gpg_keys": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userCurrentListGPGKeys", + "responses": { + "200": { + "$ref": "#/responses/GPGKeyList" + }, + "500": { + "$ref": "#/responses/error" + } + } + }, + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "operationId": "userCurrentPostGPGKey", + "parameters": [ + { + "uniqueItems": true, + "x-go-name": "ArmoredKey", + "description": "An armored GPG key to add", + "name": "armored_public_key", + "in": "body", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "201": { + "$ref": "#/responses/GPGKey" + }, + "422": { + "$ref": "#/responses/validationError" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/user/gpg_keys/{id}": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userCurrentGetGPGKey", + "responses": { + "200": { + "$ref": "#/responses/GPGKey" + }, + "404": { + "$ref": "#/responses/notFound" + }, + "500": { + "$ref": "#/responses/error" + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "operationId": "userCurrentDeleteGPGKey", + "responses": { + "204": { + "$ref": "#/responses/empty" + }, + "403": { + "$ref": "#/responses/forbidden" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/user/keys": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userCurrentListKeys", + "responses": { + "200": { + "$ref": "#/responses/PublicKeyList" + }, + "500": { + "$ref": "#/responses/error" + } + } + }, + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "operationId": "userCurrentPostKey", + "parameters": [ + { + "uniqueItems": true, + "x-go-name": "Title", + "description": "Title of the key to add", + "name": "title", + "in": "body", + "required": true, + "schema": { + "type": "string" + } + }, + { + "uniqueItems": true, + "x-go-name": "Key", + "description": "An armored SSH key to add", + "name": "key", + "in": "body", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "201": { + "$ref": "#/responses/PublicKey" + }, + "422": { + "$ref": "#/responses/validationError" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/user/keys/{id}": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userCurrentGetKey", + "responses": { + "200": { + "$ref": "#/responses/PublicKey" + }, + "404": { + "$ref": "#/responses/notFound" + }, + "500": { + "$ref": "#/responses/error" + } + } + }, + "delete": { + "produces": [ + "application/json" + ], + "operationId": "userCurrentDeleteKey", + "responses": { + "204": { + "$ref": "#/responses/empty" + }, + "403": { + "$ref": "#/responses/forbidden" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/user/repos": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userCurrentListRepos", + "responses": { + "200": { + "$ref": "#/responses/RepositoryList" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/user/starred": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userCurrentListStarred", + "responses": { + "200": { + "$ref": "#/responses/RepositoryList" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/user/starred/{username}/{reponame}": { + "get": { + "operationId": "userCurrentCheckStarring", + "responses": { + "204": { + "$ref": "#/responses/empty" + }, + "404": { + "$ref": "#/responses/notFound" + } + } + }, + "put": { + "operationId": "userCurrentPutStar", + "responses": { + "204": { + "$ref": "#/responses/empty" + }, + "500": { + "$ref": "#/responses/error" + } + } + }, + "delete": { + "operationId": "userCurrentDeleteStar", + "responses": { + "204": { + "$ref": "#/responses/empty" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/user/subscriptions": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userCurrentListSubscriptions", + "responses": { + "200": { + "$ref": "#/responses/RepositoryList" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/users/:username/followers": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userListFollowers", + "responses": { + "200": { + "$ref": "#/responses/UserList" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/users/search": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userSearch", + "responses": { + "200": { + "$ref": "#/responses/UserList" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/users/{username}": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userGet", + "responses": { + "200": { + "$ref": "#/responses/User" + }, + "404": { + "$ref": "#/responses/notFound" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/users/{username}/following": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userListFollowing", + "responses": { + "200": { + "$ref": "#/responses/UserList" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/users/{username}/following/:target": { + "get": { + "operationId": "userCheckFollowing", + "responses": { + "204": { + "$ref": "#/responses/empty" + }, + "404": { + "$ref": "#/responses/notFound" + } + } + } + }, + "/users/{username}/gpg_keys": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userListGPGKeys", + "responses": { + "200": { + "$ref": "#/responses/GPGKeyList" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/users/{username}/keys": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userListKeys", + "responses": { + "200": { + "$ref": "#/responses/PublicKeyList" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/users/{username}/repos": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userListRepos", + "responses": { + "200": { + "$ref": "#/responses/RepositoryList" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/users/{username}/starred": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userListStarred", + "responses": { + "200": { + "$ref": "#/responses/RepositoryList" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/users/{username}/subscriptions": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userListSubscriptions", + "responses": { + "200": { + "$ref": "#/responses/RepositoryList" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/users/{username}/tokens": { + "get": { + "produces": [ + "application/json" + ], + "operationId": "userGetTokens", + "responses": { + "200": { + "$ref": "#/responses/AccessTokenList" + }, + "500": { + "$ref": "#/responses/error" + } + } + } + }, + "/version": { + "get": { + "description": "This show current running Gitea application version.", + "produces": [ + "application/json" + ], + "summary": "Return Gitea running version.", + "operationId": "getVersion", + "responses": { + "200": { + "$ref": "#/responses/ServerVersion" + } + } + } + } + }, + "definitions": { + "GPGKey": { + "description": "GPGKey a user GPG key to sign commit and tag in repository", + "type": "object", + "properties": { + "can_certify": { + "type": "boolean", + "x-go-name": "CanCertify" + }, + "can_encrypt_comms": { + "type": "boolean", + "x-go-name": "CanEncryptComms" + }, + "can_encrypt_storage": { + "type": "boolean", + "x-go-name": "CanEncryptStorage" + }, + "can_sign": { + "type": "boolean", + "x-go-name": "CanSign" + }, + "created_at": { + "x-go-name": "Created" + }, + "emails": { + "type": "array", + "items": { + "$ref": "#/definitions/GPGKeyEmail" + }, + "x-go-name": "Emails" + }, + "expires_at": { + "x-go-name": "Expires" + }, + "id": { + "type": "integer", + "format": "int64", + "x-go-name": "ID" + }, + "key_id": { + "type": "string", + "x-go-name": "KeyID" + }, + "primary_key_id": { + "type": "string", + "x-go-name": "PrimaryKeyID" + }, + "public_key": { + "type": "string", + "x-go-name": "PublicKey" + }, + "subkeys": { + "type": "array", + "items": { + "type": "object" + }, + "x-go-name": "SubsKey" + } + }, + "x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea" + }, + "GPGKeyEmail": { + "description": "GPGKeyEmail a email attache to a GPGKey", + "type": "object", + "properties": { + "email": { + "type": "string", + "x-go-name": "Email" + }, + "verified": { + "type": "boolean", + "x-go-name": "Verified" + } + }, + "x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea" + }, + "Permission": { + "type": "object", + "title": "Permission represents a API permission.", + "properties": { + "admin": { + "type": "boolean", + "x-go-name": "Admin" + }, + "pull": { + "type": "boolean", + "x-go-name": "Pull" + }, + "push": { + "type": "boolean", + "x-go-name": "Push" + } + }, + "x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea" + }, + "Repository": { + "type": "object", + "title": "Repository represents a API repository.", + "properties": { + "clone_url": { + "type": "string", + "x-go-name": "CloneURL" + }, + "created_at": { + "x-go-name": "Created" + }, + "default_branch": { + "type": "string", + "x-go-name": "DefaultBranch" + }, + "description": { + "type": "string", + "x-go-name": "Description" + }, + "fork": { + "type": "boolean", + "x-go-name": "Fork" + }, + "forks_count": { + "type": "integer", + "format": "int64", + "x-go-name": "Forks" + }, + "full_name": { + "type": "string", + "x-go-name": "FullName" + }, + "html_url": { + "type": "string", + "x-go-name": "HTMLURL" + }, + "id": { + "type": "integer", + "format": "int64", + "x-go-name": "ID" + }, + "mirror": { + "type": "boolean", + "x-go-name": "Mirror" + }, + "name": { + "type": "string", + "x-go-name": "Name" + }, + "open_issues_count": { + "type": "integer", + "format": "int64", + "x-go-name": "OpenIssues" + }, + "owner": { + "x-go-name": "Owner", + "$ref": "#/definitions/User" + }, + "permissions": { + "x-go-name": "Permissions", + "$ref": "#/definitions/Permission" + }, + "private": { + "type": "boolean", + "x-go-name": "Private" + }, + "ssh_url": { + "type": "string", + "x-go-name": "SSHURL" + }, + "stars_count": { + "type": "integer", + "format": "int64", + "x-go-name": "Stars" + }, + "updated_at": { + "x-go-name": "Updated" + }, + "watchers_count": { + "type": "integer", + "format": "int64", + "x-go-name": "Watchers" + }, + "website": { + "type": "string", + "x-go-name": "Website" + } + }, + "x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea" + }, + "User": { + "type": "object", + "title": "User represents a API user.", + "properties": { + "avatar_url": { + "type": "string", + "x-go-name": "AvatarURL" + }, + "email": { + "type": "string", + "x-go-name": "Email" + }, + "full_name": { + "type": "string", + "x-go-name": "FullName" + }, + "id": { + "type": "integer", + "format": "int64", + "x-go-name": "ID" + }, + "login": { + "type": "string", + "x-go-name": "UserName" + } + }, + "x-go-package": "code.gitea.io/gitea/vendor/code.gitea.io/sdk/gitea" + } + }, + "responses": { + "AccessToken": { + "description": "AccessToken represents a API access token.", + "headers": { + "name": { + "type": "string" + }, + "sha1": { + "type": "string" + } + } + }, + "AccessTokenList": { + "description": "AccessTokenList represents a list of API access token." + }, + "GPGKey": { + "description": "GPGKey a user GPG key to sign commit and tag in repository", + "headers": { + "can_certify": { + "type": "boolean" + }, + "can_encrypt_comms": { + "type": "boolean" + }, + "can_encrypt_storage": { + "type": "boolean" + }, + "can_sign": { + "type": "boolean" + }, + "created_at": {}, + "emails": { + "type": "array", + "items": { + "$ref": "#/definitions/GPGKeyEmail" + } + }, + "expires_at": {}, + "id": { + "type": "integer", + "format": "int64" + }, + "key_id": { + "type": "string" + }, + "primary_key_id": { + "type": "string" + }, + "public_key": { + "type": "string" + }, + "subkeys": { + "type": "array", + "items": { + "type": "object" + } + } + } + }, + "GPGKeyList": { + "description": "GPGKeyList represents a list of GPGKey" + }, + "MarkdownRender": { + "description": "MarkdownRender is a rendered markdown document" + }, + "PublicKey": { + "description": "PublicKey publickey is a user key to push code to repository", + "headers": { + "created_at": {}, + "id": { + "type": "integer", + "format": "int64" + }, + "key": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "PublicKeyList": { + "description": "PublicKeyList represents a list of PublicKey" + }, + "Repository": { + "description": "Repository represents a API repository.", + "schema": { + "$ref": "#/definitions/Permission" + }, + "headers": { + "clone_url": { + "type": "string" + }, + "created_at": {}, + "default_branch": { + "type": "string" + }, + "description": { + "type": "string" + }, + "fork": { + "type": "boolean" + }, + "forks_count": { + "type": "integer", + "format": "int64" + }, + "full_name": { + "type": "string" + }, + "html_url": { + "type": "string" + }, + "id": { + "type": "integer", + "format": "int64" + }, + "mirror": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "open_issues_count": { + "type": "integer", + "format": "int64" + }, + "owner": {}, + "permissions": {}, + "private": { + "type": "boolean" + }, + "ssh_url": { + "type": "string" + }, + "stars_count": { + "type": "integer", + "format": "int64" + }, + "updated_at": {}, + "watchers_count": { + "type": "integer", + "format": "int64" + }, + "website": { + "type": "string" + } + } + }, + "RepositoryList": { + "description": "RepositoryList represents a list of API repository." + }, + "SearchError": { + "description": "SearchError error of failing search", + "headers": { + "error": { + "type": "string" + }, + "ok": { + "type": "boolean" + } + } + }, + "SearchResults": { + "description": "SearchResults results of search", + "headers": { + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/Repository" + } + }, + "ok": { + "type": "boolean" + } + } + }, + "ServerVersion": { + "description": "ServerVersion wraps the version of the server", + "headers": { + "Version": { + "type": "string" + } + } + }, + "User": { + "description": "User represents a API user.", + "headers": { + "avatar_url": { + "type": "string" + }, + "email": { + "type": "string" + }, + "full_name": { + "type": "string" + }, + "id": { + "type": "integer", + "format": "int64" + }, + "login": { + "type": "string" + } + } + }, + "UserList": { + "description": "UserList represents a list of API user." + }, + "WatchInfo": { + "description": "WatchInfo represents a API watch status of one repository", + "schema": { + "type": "object" + }, + "headers": { + "created_at": {}, + "ignored": { + "type": "boolean" + }, + "reason": {}, + "repository_url": { + "type": "string" + }, + "subscribed": { + "type": "boolean" + }, + "url": { + "type": "string" + } + } + }, + "empty": { + "description": "APIEmpty is a empty response" + }, + "error": { + "description": "APIError is error format response", + "headers": { + "message": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "forbidden": { + "description": "APIForbiddenError is a forbidden error response", + "headers": { + "message": { + "type": "string" + }, + "url": { + "type": "string" + } + } + }, + "notFound": { + "description": "APINotFound is a not found empty response" + }, + "validationError": { + "description": "APIValidationError is error format response related to input validation", + "headers": { + "message": { + "type": "string" + }, + "url": { + "type": "string" + } + } + } + } +} \ No newline at end of file -- cgit v1.2.3