From 908e8942ccae5b7966c7084780b3441e2190d9c1 Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Tue, 12 Jun 2018 16:59:22 +0200 Subject: [PATCH] Fix swagger errors (#4220) Fix all the resting errors to have a valid swagger file. They are still some warnings but nothing blocking. Doing so I found that some request still misses son parameters for some POST/PUT/PATCH request. This means the a client generated from the swagger file will not work completely. Fix #4088 by activating validation in drone Should fix #4010. --- .drone.yml | 1 + public/swagger.v1.json | 476 +++++++++++++--------- routers/api/v1/misc/markdown.go | 9 +- routers/api/v1/org/hook.go | 49 +++ routers/api/v1/org/team.go | 6 +- routers/api/v1/repo/file.go | 2 +- routers/api/v1/repo/hook.go | 7 +- routers/api/v1/repo/issue_comment.go | 4 +- routers/api/v1/repo/issue_tracked_time.go | 8 +- routers/api/v1/repo/milestone.go | 43 +- routers/api/v1/repo/repo.go | 12 +- routers/api/v1/swagger/options.go | 52 ++- routers/api/v1/swagger/repo.go | 1 + routers/api/v1/user/app.go | 12 + routers/api/v1/user/follower.go | 4 +- 15 files changed, 432 insertions(+), 254 deletions(-) diff --git a/.drone.yml b/.drone.yml index 011d4fefd..6ab40a39d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -75,6 +75,7 @@ pipeline: - make lint - make fmt-check - make swagger-check + - make swagger-validate - make misspell-check - make test-vendor - make build diff --git a/public/swagger.v1.json b/public/swagger.v1.json index 2c263ef1f..1c381a829 100644 --- a/public/swagger.v1.json +++ b/public/swagger.v1.json @@ -321,9 +321,13 @@ "operationId": "renderMarkdownRaw", "parameters": [ { - "type": "string", + "description": "Request body to render", "name": "body", - "in": "body" + "in": "body", + "required": true, + "schema": { + "type": "string" + } } ], "responses": { @@ -448,6 +452,15 @@ ], "summary": "List an organization's webhooks", "operationId": "orgListHooks", + "parameters": [ + { + "type": "string", + "description": "name of the organization", + "name": "org", + "in": "path", + "required": true + } + ], "responses": { "200": { "$ref": "#/responses/HookList" @@ -468,6 +481,15 @@ ], "summary": "Create a hook", "operationId": "orgCreateHook", + "parameters": [ + { + "type": "string", + "description": "name of the organization", + "name": "org", + "in": "path", + "required": true + } + ], "responses": { "201": { "$ref": "#/responses/Hook" @@ -485,6 +507,22 @@ ], "summary": "Get a hook", "operationId": "orgGetHook", + "parameters": [ + { + "type": "string", + "description": "name of the organization", + "name": "org", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "id of the hook to get", + "name": "id", + "in": "path", + "required": true + } + ], "responses": { "200": { "$ref": "#/responses/Hook" @@ -500,6 +538,22 @@ ], "summary": "Delete a hook", "operationId": "orgDeleteHook", + "parameters": [ + { + "type": "string", + "description": "name of the organization", + "name": "org", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "id of the hook to delete", + "name": "id", + "in": "path", + "required": true + } + ], "responses": { "204": { "$ref": "#/responses/empty" @@ -518,6 +572,22 @@ ], "summary": "Update a hook", "operationId": "orgEditHook", + "parameters": [ + { + "type": "string", + "description": "name of the organization", + "name": "org", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "id of the hook to update", + "name": "id", + "in": "path", + "required": true + } + ], "responses": { "200": { "$ref": "#/responses/Hook" @@ -994,7 +1064,7 @@ } } }, - "/repos/{owner}/{repo}/archive/{filepath}": { + "/repos/{owner}/{repo}/archive/{archive}": { "get": { "produces": [ "application/json" @@ -1530,6 +1600,47 @@ } } }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "repository" + ], + "summary": "Delete a hook in a repository", + "operationId": "repoDeleteHook", + "parameters": [ + { + "type": "string", + "description": "owner of the repo", + "name": "owner", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "name of the repo", + "name": "repo", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "id of the hook to delete", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "204": { + "$ref": "#/responses/empty" + }, + "404": { + "$ref": "#/responses/notFound" + } + } + }, "patch": { "produces": [ "application/json" @@ -1554,6 +1665,13 @@ "in": "path", "required": true }, + { + "type": "integer", + "description": "index of the hook", + "name": "id", + "in": "path", + "required": true + }, { "name": "body", "in": "body", @@ -1825,6 +1943,100 @@ } } }, + "/repos/{owner}/{repo}/issues/{id}/times": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "issue" + ], + "summary": "List an issue's tracked times", + "operationId": "issueTrackedTimes", + "parameters": [ + { + "type": "string", + "description": "owner of the repo", + "name": "owner", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "name of the repo", + "name": "repo", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "index of the issue", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "$ref": "#/responses/TrackedTimeList" + } + } + }, + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "issue" + ], + "summary": "Add a tracked time to a issue", + "operationId": "issueAddTime", + "parameters": [ + { + "type": "string", + "description": "owner of the repo", + "name": "owner", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "name of the repo", + "name": "repo", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "index of the issue to add tracked time to", + "name": "id", + "in": "path", + "required": true + }, + { + "name": "body", + "in": "body", + "schema": { + "$ref": "#/definitions/AddTimeOption" + } + } + ], + "responses": { + "200": { + "$ref": "#/responses/TrackedTime" + }, + "400": { + "$ref": "#/responses/error" + }, + "403": { + "$ref": "#/responses/error" + } + } + } + }, "/repos/{owner}/{repo}/issues/{index}": { "get": { "produces": [ @@ -1941,7 +2153,7 @@ { "type": "integer", "description": "index of the issue", - "name": "id", + "name": "index", "in": "path", "required": true }, @@ -1988,7 +2200,7 @@ { "type": "integer", "description": "index of the issue", - "name": "id", + "name": "index", "in": "path", "required": true }, @@ -2332,100 +2544,6 @@ } } }, - "/repos/{owner}/{repo}/issues/{index}/times": { - "get": { - "produces": [ - "application/json" - ], - "tags": [ - "issue" - ], - "summary": "List an issue's tracked times", - "operationId": "issueTrackedTimes", - "parameters": [ - { - "type": "string", - "description": "owner of the repo", - "name": "owner", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of the repo", - "name": "repo", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "index of the issue", - "name": "repo", - "in": "path", - "required": true - } - ], - "responses": { - "200": { - "$ref": "#/responses/TrackedTimeList" - } - } - }, - "post": { - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "tags": [ - "issue" - ], - "summary": "Add a tracked time to a issue", - "operationId": "issueAddTime", - "parameters": [ - { - "type": "string", - "description": "owner of the repo", - "name": "owner", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of the repo", - "name": "repo", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "index of the issue to add tracked time to", - "name": "id", - "in": "path", - "required": true - }, - { - "name": "body", - "in": "body", - "schema": { - "$ref": "#/definitions/AddTimeOption" - } - } - ], - "responses": { - "200": { - "$ref": "#/responses/TrackedTime" - }, - "400": { - "$ref": "#/responses/error" - }, - "403": { - "$ref": "#/responses/error" - } - } - } - }, "/repos/{owner}/{repo}/keys": { "get": { "produces": [ @@ -2781,7 +2899,7 @@ "issue" ], "summary": "Get all of a repository's milestones", - "operationId": "issueGetMilestones", + "operationId": "issueGetMilestonesList", "parameters": [ { "type": "string", @@ -2796,13 +2914,6 @@ "name": "repo", "in": "path", "required": true - }, - { - "type": "integer", - "description": "id of the milestone to get", - "name": "id", - "in": "path", - "required": true } ], "responses": { @@ -2863,6 +2974,29 @@ ], "summary": "Get a milestone", "operationId": "issueGetMilestone", + "parameters": [ + { + "type": "string", + "description": "owner of the repo", + "name": "owner", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "name of the repo", + "name": "repo", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "id of the milestone", + "name": "id", + "in": "path", + "required": true + } + ], "responses": { "200": { "$ref": "#/responses/Milestone" @@ -2893,7 +3027,7 @@ { "type": "integer", "description": "id of the milestone to delete", - "name": "body", + "name": "id", "in": "path", "required": true } @@ -2931,6 +3065,13 @@ "in": "path", "required": true }, + { + "type": "integer", + "description": "id of the milestone", + "name": "id", + "in": "path", + "required": true + }, { "name": "body", "in": "body", @@ -3979,7 +4120,7 @@ } } }, - "/repos/{owner}/{repo}/times/{tracker}": { + "/repos/{owner}/{repo}/times/{user}": { "get": { "produces": [ "application/json" @@ -4019,49 +4160,6 @@ } } }, - "/repos/{user}/{repo}/hooks/{id}": { - "delete": { - "produces": [ - "application/json" - ], - "tags": [ - "repository" - ], - "summary": "Delete a hook in a repository", - "operationId": "repoDeleteHook", - "parameters": [ - { - "type": "string", - "description": "owner of the repo", - "name": "owner", - "in": "path", - "required": true - }, - { - "type": "string", - "description": "name of the repo", - "name": "repo", - "in": "path", - "required": true - }, - { - "type": "integer", - "description": "id of the hook to delete", - "name": "id", - "in": "path", - "required": true - } - ], - "responses": { - "204": { - "$ref": "#/responses/empty" - }, - "404": { - "$ref": "#/responses/notFound" - } - } - } - }, "/repositories/{id}": { "get": { "produces": [ @@ -4238,7 +4336,7 @@ "organization" ], "summary": "Remove a team member", - "operationId": "orgAddTeamMember", + "operationId": "orgRemoveTeamMember", "parameters": [ { "type": "integer", @@ -4297,7 +4395,7 @@ "organization" ], "summary": "Add a repository to a team", - "operationId": "orgAddTeamMember", + "operationId": "orgAddTeamRepository", "parameters": [ { "type": "integer", @@ -4336,7 +4434,7 @@ "organization" ], "summary": "Remove a repository from a team", - "operationId": "orgAddTeamMember", + "operationId": "orgRemoveTeamRepository", "parameters": [ { "type": "integer", @@ -4379,10 +4477,10 @@ "operationId": "topicSearch", "parameters": [ { - "type": "integer", - "description": "id of the repo to get", - "name": "keyword", - "in": "path", + "type": "string", + "description": "keywords to search", + "name": "q", + "in": "query", "required": true } ], @@ -4509,7 +4607,7 @@ } } }, - "/user/following/{followee}": { + "/user/following/{username}": { "get": { "tags": [ "user" @@ -4520,7 +4618,7 @@ { "type": "string", "description": "username of followed user", - "name": "followee", + "name": "username", "in": "path", "required": true } @@ -4533,9 +4631,7 @@ "$ref": "#/responses/notFound" } } - } - }, - "/user/following/{username}": { + }, "put": { "tags": [ "user" @@ -5301,6 +5397,15 @@ ], "summary": "List the authenticated user's access tokens", "operationId": "userGetTokens", + "parameters": [ + { + "type": "string", + "description": "username of user", + "name": "username", + "in": "path", + "required": true + } + ], "responses": { "200": { "$ref": "#/responses/AccessTokenList" @@ -5323,8 +5428,10 @@ { "type": "string", "x-go-name": "Name", - "name": "name", - "in": "query" + "description": "username of user", + "name": "username", + "in": "path", + "required": true } ], "responses": { @@ -7612,9 +7719,6 @@ "description": "SearchResults", "schema": { "$ref": "#/definitions/SearchResults" - }, - "headers": { - "body": {} } }, "ServerVersion": { @@ -7721,40 +7825,6 @@ "description": "parameterBodies", "schema": { "$ref": "#/definitions/EditAttachmentOptions" - }, - "headers": { - "AddCollaboratorOption": {}, - "AddTimeOption": {}, - "CreateEmailOption": {}, - "CreateForkOption": {}, - "CreateHookOption": {}, - "CreateIssueCommentOption": {}, - "CreateIssueOption": {}, - "CreateKeyOption": {}, - "CreateLabelOption": {}, - "CreateMilestoneOption": {}, - "CreateOrgOption": {}, - "CreatePullRequestOption": {}, - "CreateReleaseOption": {}, - "CreateRepoOption": {}, - "CreateStatusOption": {}, - "CreateTeamOption": {}, - "CreateUserOption": {}, - "DeleteEmailOption": {}, - "EditAttachmentOptions": {}, - "EditHookOption": {}, - "EditIssueCommentOption": {}, - "EditIssueOption": {}, - "EditLabelOption": {}, - "EditMilestoneOption": {}, - "EditOrgOption": {}, - "EditPullRequestOption": {}, - "EditReleaseOption": {}, - "EditTeamOption": {}, - "EditUserOption": {}, - "IssueLabelsOption": {}, - "MarkdownOption": {}, - "MigrateRepoForm": {} } }, "redirect": { diff --git a/routers/api/v1/misc/markdown.go b/routers/api/v1/misc/markdown.go index fd7d1489b..633dff98e 100644 --- a/routers/api/v1/misc/markdown.go +++ b/routers/api/v1/misc/markdown.go @@ -62,9 +62,12 @@ func MarkdownRaw(ctx *context.APIContext) { // --- // summary: Render raw markdown as HTML // parameters: - // - name: body - // in: body - // type: string + // - name: body + // in: body + // description: Request body to render + // required: true + // schema: + // type: string // consumes: // - text/plain // produces: diff --git a/routers/api/v1/org/hook.go b/routers/api/v1/org/hook.go index 0a77d795e..83d2a5e5b 100644 --- a/routers/api/v1/org/hook.go +++ b/routers/api/v1/org/hook.go @@ -20,6 +20,12 @@ func ListHooks(ctx *context.APIContext) { // summary: List an organization's webhooks // produces: // - application/json + // parameters: + // - name: org + // in: path + // description: name of the organization + // type: string + // required: true // responses: // "200": // "$ref": "#/responses/HookList" @@ -43,6 +49,17 @@ func GetHook(ctx *context.APIContext) { // summary: Get a hook // produces: // - application/json + // parameters: + // - name: org + // in: path + // description: name of the organization + // type: string + // required: true + // - name: id + // in: path + // description: id of the hook to get + // type: integer + // required: true // responses: // "200": // "$ref": "#/responses/Hook" @@ -64,9 +81,17 @@ func CreateHook(ctx *context.APIContext, form api.CreateHookOption) { // - application/json // produces: // - application/json + // parameters: + // - name: org + // in: path + // description: name of the organization + // type: string + // required: true // responses: // "201": // "$ref": "#/responses/Hook" + + //TODO in body params if !utils.CheckCreateHookOption(ctx, &form) { return } @@ -82,9 +107,22 @@ func EditHook(ctx *context.APIContext, form api.EditHookOption) { // - application/json // produces: // - application/json + // parameters: + // - name: org + // in: path + // description: name of the organization + // type: string + // required: true + // - name: id + // in: path + // description: id of the hook to update + // type: integer + // required: true // responses: // "200": // "$ref": "#/responses/Hook" + + //TODO in body params hookID := ctx.ParamsInt64(":id") utils.EditOrgHook(ctx, &form, hookID) } @@ -96,6 +134,17 @@ func DeleteHook(ctx *context.APIContext) { // summary: Delete a hook // produces: // - application/json + // parameters: + // - name: org + // in: path + // description: name of the organization + // type: string + // required: true + // - name: id + // in: path + // description: id of the hook to delete + // type: integer + // required: true // responses: // "204": // "$ref": "#/responses/empty" diff --git a/routers/api/v1/org/team.go b/routers/api/v1/org/team.go index 408d8921d..b8dd026bf 100644 --- a/routers/api/v1/org/team.go +++ b/routers/api/v1/org/team.go @@ -227,7 +227,7 @@ func AddTeamMember(ctx *context.APIContext) { // RemoveTeamMember api for remove one member from a team func RemoveTeamMember(ctx *context.APIContext) { - // swagger:operation DELETE /teams/{id}/members/{username} organization orgAddTeamMember + // swagger:operation DELETE /teams/{id}/members/{username} organization orgRemoveTeamMember // --- // summary: Remove a team member // produces: @@ -306,7 +306,7 @@ func getRepositoryByParams(ctx *context.APIContext) *models.Repository { // AddTeamRepository api for adding a repository to a team func AddTeamRepository(ctx *context.APIContext) { - // swagger:operation PUT /teams/{id}/repos/{org}/{repo} organization orgAddTeamMember + // swagger:operation PUT /teams/{id}/repos/{org}/{repo} organization orgAddTeamRepository // --- // summary: Add a repository to a team // produces: @@ -350,7 +350,7 @@ func AddTeamRepository(ctx *context.APIContext) { // RemoveTeamRepository api for removing a repository from a team func RemoveTeamRepository(ctx *context.APIContext) { - // swagger:operation DELETE /teams/{id}/repos/{org}/{repo} organization orgAddTeamMember + // swagger:operation DELETE /teams/{id}/repos/{org}/{repo} organization orgRemoveTeamRepository // --- // summary: Remove a repository from a team // description: This does not delete the repository, it only removes the diff --git a/routers/api/v1/repo/file.go b/routers/api/v1/repo/file.go index a3c8309ac..610247bc2 100644 --- a/routers/api/v1/repo/file.go +++ b/routers/api/v1/repo/file.go @@ -64,7 +64,7 @@ func GetRawFile(ctx *context.APIContext) { // GetArchive get archive of a repository func GetArchive(ctx *context.APIContext) { - // swagger:operation GET /repos/{owner}/{repo}/archive/{filepath} repository repoGetArchive + // swagger:operation GET /repos/{owner}/{repo}/archive/{archive} repository repoGetArchive // --- // summary: Get an archive of a repository // produces: diff --git a/routers/api/v1/repo/hook.go b/routers/api/v1/repo/hook.go index e412a7f1f..1f121dfc3 100644 --- a/routers/api/v1/repo/hook.go +++ b/routers/api/v1/repo/hook.go @@ -189,6 +189,11 @@ func EditHook(ctx *context.APIContext, form api.EditHookOption) { // description: name of the repo // type: string // required: true + // - name: id + // in: path + // description: index of the hook + // type: integer + // required: true // - name: body // in: body // schema: @@ -202,7 +207,7 @@ func EditHook(ctx *context.APIContext, form api.EditHookOption) { // DeleteHook delete a hook of a repository func DeleteHook(ctx *context.APIContext) { - // swagger:operation DELETE /repos/{user}/{repo}/hooks/{id} repository repoDeleteHook + // swagger:operation DELETE /repos/{owner}/{repo}/hooks/{id} repository repoDeleteHook // --- // summary: Delete a hook in a repository // produces: diff --git a/routers/api/v1/repo/issue_comment.go b/routers/api/v1/repo/issue_comment.go index 2865ea916..0cbf6493d 100644 --- a/routers/api/v1/repo/issue_comment.go +++ b/routers/api/v1/repo/issue_comment.go @@ -31,7 +31,7 @@ func ListIssueComments(ctx *context.APIContext) { // description: name of the repo // type: string // required: true - // - name: id + // - name: index // in: path // description: index of the issue // type: integer @@ -139,7 +139,7 @@ func CreateIssueComment(ctx *context.APIContext, form api.CreateIssueCommentOpti // description: name of the repo // type: string // required: true - // - name: id + // - name: index // in: path // description: index of the issue // type: integer diff --git a/routers/api/v1/repo/issue_tracked_time.go b/routers/api/v1/repo/issue_tracked_time.go index 1111d672a..9be9fee91 100644 --- a/routers/api/v1/repo/issue_tracked_time.go +++ b/routers/api/v1/repo/issue_tracked_time.go @@ -21,7 +21,7 @@ func trackedTimesToAPIFormat(trackedTimes []*models.TrackedTime) []*api.TrackedT // ListTrackedTimes list all the tracked times of an issue func ListTrackedTimes(ctx *context.APIContext) { - // swagger:operation GET /repos/{owner}/{repo}/issues/{index}/times issue issueTrackedTimes + // swagger:operation GET /repos/{owner}/{repo}/issues/{id}/times issue issueTrackedTimes // --- // summary: List an issue's tracked times // produces: @@ -37,7 +37,7 @@ func ListTrackedTimes(ctx *context.APIContext) { // description: name of the repo // type: string // required: true - // - name: repo + // - name: id // in: path // description: index of the issue // type: integer @@ -70,7 +70,7 @@ func ListTrackedTimes(ctx *context.APIContext) { // AddTime adds time manual to the given issue func AddTime(ctx *context.APIContext, form api.AddTimeOption) { - // swagger:operation Post /repos/{owner}/{repo}/issues/{index}/times issue issueAddTime + // swagger:operation Post /repos/{owner}/{repo}/issues/{id}/times issue issueAddTime // --- // summary: Add a tracked time to a issue // consumes: @@ -132,7 +132,7 @@ func AddTime(ctx *context.APIContext, form api.AddTimeOption) { // ListTrackedTimesByUser lists all tracked times of the user func ListTrackedTimesByUser(ctx *context.APIContext) { - // swagger:operation GET /repos/{owner}/{repo}/times/{tracker} user userTrackedTimes + // swagger:operation GET /repos/{owner}/{repo}/times/{user} user userTrackedTimes // --- // summary: List a user's tracked times in a repo // produces: diff --git a/routers/api/v1/repo/milestone.go b/routers/api/v1/repo/milestone.go index 3953b0c3c..a138cb7a6 100644 --- a/routers/api/v1/repo/milestone.go +++ b/routers/api/v1/repo/milestone.go @@ -16,14 +16,25 @@ import ( // ListMilestones list all the milestones for a repository func ListMilestones(ctx *context.APIContext) { - // swagger:operation GET /repos/{owner}/{repo}/milestones/{id} issue issueGetMilestone + // swagger:operation GET /repos/{owner}/{repo}/milestones issue issueGetMilestonesList // --- - // summary: Get a milestone + // summary: Get all of a repository's milestones // produces: // - application/json + // parameters: + // - name: owner + // in: path + // description: owner of the repo + // type: string + // required: true + // - name: repo + // in: path + // description: name of the repo + // type: string + // required: true // responses: // "200": - // "$ref": "#/responses/Milestone" + // "$ref": "#/responses/MilestoneList" milestones, err := models.GetMilestonesByRepoID(ctx.Repo.Repository.ID) if err != nil { ctx.Error(500, "GetMilestonesByRepoID", err) @@ -39,9 +50,9 @@ func ListMilestones(ctx *context.APIContext) { // GetMilestone get a milestone for a repository func GetMilestone(ctx *context.APIContext) { - // swagger:operation GET /repos/{owner}/{repo}/milestones issue issueGetMilestones + // swagger:operation GET /repos/{owner}/{repo}/milestones/{id} issue issueGetMilestone // --- - // summary: Get all of a repository's milestones + // summary: Get a milestone // produces: // - application/json // parameters: @@ -55,25 +66,14 @@ func GetMilestone(ctx *context.APIContext) { // description: name of the repo // type: string // required: true - // parameters: - // - name: owner - // in: path - // description: owner of the repo - // type: string - // required: true - // - name: repo - // in: path - // description: name of the repo - // type: string - // required: true // - name: id // in: path - // description: id of the milestone to get + // description: id of the milestone // type: integer // required: true // responses: // "200": - // "$ref": "#/responses/MilestoneList" + // "$ref": "#/responses/Milestone" milestone, err := models.GetMilestoneByRepoID(ctx.Repo.Repository.ID, ctx.ParamsInt64(":id")) if err != nil { if models.IsErrMilestoneNotExist(err) { @@ -152,6 +152,11 @@ func EditMilestone(ctx *context.APIContext, form api.EditMilestoneOption) { // description: name of the repo // type: string // required: true + // - name: id + // in: path + // description: id of the milestone + // type: integer + // required: true // - name: body // in: body // schema: @@ -202,7 +207,7 @@ func DeleteMilestone(ctx *context.APIContext) { // description: name of the repo // type: string // required: true - // - name: body + // - name: id // in: path // description: id of the milestone to delete // type: integer diff --git a/routers/api/v1/repo/repo.go b/routers/api/v1/repo/repo.go index 9f64dda61..ccfe0440c 100644 --- a/routers/api/v1/repo/repo.go +++ b/routers/api/v1/repo/repo.go @@ -508,13 +508,13 @@ func TopicSearch(ctx *context.Context) { // --- // summary: search topics via keyword // produces: - // - application/json + // - application/json // parameters: - // - name: keyword - // in: path - // description: id of the repo to get - // type: integer - // required: true + // - name: q + // in: query + // description: keywords to search + // required: true + // type: string // responses: // "200": // "$ref": "#/responses/Repository" diff --git a/routers/api/v1/swagger/options.go b/routers/api/v1/swagger/options.go index 8d9363fe9..4f2461f46 100644 --- a/routers/api/v1/swagger/options.go +++ b/routers/api/v1/swagger/options.go @@ -15,55 +15,87 @@ import ( // parameterBodies // swagger:response parameterBodies type swaggerParameterBodies struct { + // in:body AddCollaboratorOption api.AddCollaboratorOption + // in:body CreateEmailOption api.CreateEmailOption + // in:body DeleteEmailOption api.DeleteEmailOption + // in:body CreateHookOption api.CreateHookOption - EditHookOption api.EditHookOption + // in:body + EditHookOption api.EditHookOption + // in:body CreateIssueOption api.CreateIssueOption - EditIssueOption api.EditIssueOption + // in:body + EditIssueOption api.EditIssueOption + // in:body CreateIssueCommentOption api.CreateIssueCommentOption - EditIssueCommentOption api.EditIssueCommentOption + // in:body + EditIssueCommentOption api.EditIssueCommentOption + // in:body IssueLabelsOption api.IssueLabelsOption + // in:body CreateKeyOption api.CreateKeyOption + // in:body CreateLabelOption api.CreateLabelOption - EditLabelOption api.EditLabelOption + // in:body + EditLabelOption api.EditLabelOption + // in:body MarkdownOption api.MarkdownOption + // in:body CreateMilestoneOption api.CreateMilestoneOption - EditMilestoneOption api.EditMilestoneOption + // in:body + EditMilestoneOption api.EditMilestoneOption + // in:body CreateOrgOption api.CreateOrgOption - EditOrgOption api.EditOrgOption + // in:body + EditOrgOption api.EditOrgOption + // in:body CreatePullRequestOption api.CreatePullRequestOption - EditPullRequestOption api.EditPullRequestOption + // in:body + EditPullRequestOption api.EditPullRequestOption + // in:body CreateReleaseOption api.CreateReleaseOption - EditReleaseOption api.EditReleaseOption + // in:body + EditReleaseOption api.EditReleaseOption + // in:body CreateRepoOption api.CreateRepoOption + // in:body CreateForkOption api.CreateForkOption + // in:body CreateStatusOption api.CreateStatusOption + // in:body CreateTeamOption api.CreateTeamOption - EditTeamOption api.EditTeamOption + // in:body + EditTeamOption api.EditTeamOption + // in:body AddTimeOption api.AddTimeOption + // in:body CreateUserOption api.CreateUserOption - EditUserOption api.EditUserOption + // in:body + EditUserOption api.EditUserOption + // in:body MigrateRepoForm auth.MigrateRepoForm + // in:body EditAttachmentOptions api.EditAttachmentOptions } diff --git a/routers/api/v1/swagger/repo.go b/routers/api/v1/swagger/repo.go index 97837dfc2..9decc8f58 100644 --- a/routers/api/v1/swagger/repo.go +++ b/routers/api/v1/swagger/repo.go @@ -102,6 +102,7 @@ type swaggerResponseWatchInfo struct { // SearchResults // swagger:response SearchResults type swaggerResponseSearchResults struct { + // in:body Body api.SearchResults `json:"body"` } diff --git a/routers/api/v1/user/app.go b/routers/api/v1/user/app.go index e1f75de68..fc4118649 100644 --- a/routers/api/v1/user/app.go +++ b/routers/api/v1/user/app.go @@ -18,6 +18,12 @@ func ListAccessTokens(ctx *context.APIContext) { // summary: List the authenticated user's access tokens // produces: // - application/json + // parameters: + // - name: username + // in: path + // description: username of user + // type: string + // required: true // responses: // "200": // "$ref": "#/responses/AccessTokenList" @@ -46,6 +52,12 @@ func CreateAccessToken(ctx *context.APIContext, form api.CreateAccessTokenOption // - application/json // produces: // - application/json + // parameters: + // - name: username + // in: path + // description: username of user + // type: string + // required: true // responses: // "200": // "$ref": "#/responses/AccessToken" diff --git a/routers/api/v1/user/follower.go b/routers/api/v1/user/follower.go index 49d13cc38..284b7323c 100644 --- a/routers/api/v1/user/follower.go +++ b/routers/api/v1/user/follower.go @@ -119,11 +119,11 @@ func checkUserFollowing(ctx *context.APIContext, u *models.User, followID int64) // CheckMyFollowing whether the given user is followed by the authenticated user func CheckMyFollowing(ctx *context.APIContext) { - // swagger:operation GET /user/following/{followee} user userCurrentCheckFollowing + // swagger:operation GET /user/following/{username} user userCurrentCheckFollowing // --- // summary: Check whether a user is followed by the authenticated user // parameters: - // - name: followee + // - name: username // in: path // description: username of followed user // type: string