Update swagger documentation (#2899)
* Update swagger documentation Add docs for missing endpoints Add documentation for request parameters Make parameter naming consistent Fix response documentation * Restore delete comments
This commit is contained in:
parent
4287d100b3
commit
f26f4a7e01
2
Makefile
2
Makefile
|
@ -89,8 +89,6 @@ generate-swagger:
|
||||||
$(GO) get -u github.com/go-swagger/go-swagger/cmd/swagger; \
|
$(GO) get -u github.com/go-swagger/go-swagger/cmd/swagger; \
|
||||||
fi
|
fi
|
||||||
swagger generate spec -o ./public/swagger.v1.json
|
swagger generate spec -o ./public/swagger.v1.json
|
||||||
$(SED_INPLACE) "s;\".ref\": \"#/definitions/GPGKey\";\"type\": \"object\";g" ./public/swagger.v1.json
|
|
||||||
$(SED_INPLACE) "s;^ \".ref\": \"#/definitions/Repository\"; \"type\": \"object\";g" ./public/swagger.v1.json
|
|
||||||
|
|
||||||
.PHONY: errcheck
|
.PHONY: errcheck
|
||||||
errcheck:
|
errcheck:
|
||||||
|
|
|
@ -41,14 +41,17 @@ func (f *CreateRepoForm) Validate(ctx *macaron.Context, errs binding.Errors) bin
|
||||||
|
|
||||||
// MigrateRepoForm form for migrating repository
|
// MigrateRepoForm form for migrating repository
|
||||||
type MigrateRepoForm struct {
|
type MigrateRepoForm struct {
|
||||||
|
// required: true
|
||||||
CloneAddr string `json:"clone_addr" binding:"Required"`
|
CloneAddr string `json:"clone_addr" binding:"Required"`
|
||||||
AuthUsername string `json:"auth_username"`
|
AuthUsername string `json:"auth_username"`
|
||||||
AuthPassword string `json:"auth_password"`
|
AuthPassword string `json:"auth_password"`
|
||||||
UID int64 `json:"uid" binding:"Required"`
|
// required: true
|
||||||
RepoName string `json:"repo_name" binding:"Required;AlphaDashDot;MaxSize(100)"`
|
UID int64 `json:"uid" binding:"Required"`
|
||||||
Mirror bool `json:"mirror"`
|
// required: true
|
||||||
Private bool `json:"private"`
|
RepoName string `json:"repo_name" binding:"Required;AlphaDashDot;MaxSize(100)"`
|
||||||
Description string `json:"description" binding:"MaxSize(255)"`
|
Mirror bool `json:"mirror"`
|
||||||
|
Private bool `json:"private"`
|
||||||
|
Description string `json:"description" binding:"MaxSize(255)"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate validates the fields
|
// Validate validates the fields
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -15,20 +15,26 @@ import (
|
||||||
|
|
||||||
// CreateOrg api for create organization
|
// CreateOrg api for create organization
|
||||||
func CreateOrg(ctx *context.APIContext, form api.CreateOrgOption) {
|
func CreateOrg(ctx *context.APIContext, form api.CreateOrgOption) {
|
||||||
// swagger:route POST /admin/users/{username}/orgs admin adminCreateOrg
|
// swagger:operation POST /admin/users/{username}/orgs admin adminCreateOrg
|
||||||
//
|
// ---
|
||||||
// Consumes:
|
// summary: Create an organization
|
||||||
// - application/json
|
// consumes:
|
||||||
//
|
// - application/json
|
||||||
// Produces:
|
// produces:
|
||||||
// - application/json
|
// - application/json
|
||||||
//
|
// parameters:
|
||||||
// Responses:
|
// - name: username
|
||||||
// 201: Organization
|
// in: path
|
||||||
// 403: forbidden
|
// description: username of the user that will own the created organization
|
||||||
// 422: validationError
|
// type: string
|
||||||
// 500: error
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/Organization"
|
||||||
|
// "403":
|
||||||
|
// "$ref": "#/responses/forbidden"
|
||||||
|
// "422":
|
||||||
|
// "$ref": "#/responses/validationError"
|
||||||
u := user.GetUserByParams(ctx)
|
u := user.GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
|
|
@ -14,20 +14,26 @@ import (
|
||||||
|
|
||||||
// CreateRepo api for creating a repository
|
// CreateRepo api for creating a repository
|
||||||
func CreateRepo(ctx *context.APIContext, form api.CreateRepoOption) {
|
func CreateRepo(ctx *context.APIContext, form api.CreateRepoOption) {
|
||||||
// swagger:route POST /admin/users/{username}/repos admin adminCreateRepo
|
// swagger:operation POST /admin/users/{username}/repos admin adminCreateRepo
|
||||||
//
|
// ---
|
||||||
// Consumes:
|
// summary: Create a repository on behalf a user
|
||||||
// - application/json
|
// consumes:
|
||||||
//
|
// - application/json
|
||||||
// Produces:
|
// produces:
|
||||||
// - application/json
|
// - application/json
|
||||||
//
|
// parameters:
|
||||||
// Responses:
|
// - name: username
|
||||||
// 201: Repository
|
// in: path
|
||||||
// 403: forbidden
|
// description: username of the user. This user will own the created repository
|
||||||
// 422: validationError
|
// type: string
|
||||||
// 500: error
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/Repository"
|
||||||
|
// "403":
|
||||||
|
// "$ref": "#/responses/forbidden"
|
||||||
|
// "422":
|
||||||
|
// "$ref": "#/responses/validationError"
|
||||||
owner := user.GetUserByParams(ctx)
|
owner := user.GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
|
|
@ -5,13 +5,12 @@
|
||||||
package admin
|
package admin
|
||||||
|
|
||||||
import (
|
import (
|
||||||
api "code.gitea.io/sdk/gitea"
|
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
"code.gitea.io/gitea/modules/context"
|
"code.gitea.io/gitea/modules/context"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/routers/api/v1/user"
|
"code.gitea.io/gitea/routers/api/v1/user"
|
||||||
|
api "code.gitea.io/sdk/gitea"
|
||||||
)
|
)
|
||||||
|
|
||||||
func parseLoginSource(ctx *context.APIContext, u *models.User, sourceID int64, loginName string) {
|
func parseLoginSource(ctx *context.APIContext, u *models.User, sourceID int64, loginName string) {
|
||||||
|
@ -34,22 +33,27 @@ func parseLoginSource(ctx *context.APIContext, u *models.User, sourceID int64, l
|
||||||
u.LoginName = loginName
|
u.LoginName = loginName
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateUser api for creating a user
|
// CreateUser create a user
|
||||||
func CreateUser(ctx *context.APIContext, form api.CreateUserOption) {
|
func CreateUser(ctx *context.APIContext, form api.CreateUserOption) {
|
||||||
// swagger:route POST /admin/users admin adminCreateUser
|
// swagger:operation POST /admin/users admin adminCreateUser
|
||||||
//
|
// ---
|
||||||
// Consumes:
|
// summary: Create a user
|
||||||
// - application/json
|
// consumes:
|
||||||
//
|
// - application/json
|
||||||
// Produces:
|
// produces:
|
||||||
// - application/json
|
// - application/json
|
||||||
//
|
// parameters:
|
||||||
// Responses:
|
// - name: body
|
||||||
// 201: User
|
// in: body
|
||||||
// 403: forbidden
|
// schema:
|
||||||
// 422: validationError
|
// "$ref": "#/definitions/CreateUserOption"
|
||||||
// 500: error
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/User"
|
||||||
|
// "403":
|
||||||
|
// "$ref": "#/responses/forbidden"
|
||||||
|
// "422":
|
||||||
|
// "$ref": "#/responses/validationError"
|
||||||
u := &models.User{
|
u := &models.User{
|
||||||
Name: form.Username,
|
Name: form.Username,
|
||||||
FullName: form.FullName,
|
FullName: form.FullName,
|
||||||
|
@ -87,20 +91,30 @@ func CreateUser(ctx *context.APIContext, form api.CreateUserOption) {
|
||||||
|
|
||||||
// EditUser api for modifying a user's information
|
// EditUser api for modifying a user's information
|
||||||
func EditUser(ctx *context.APIContext, form api.EditUserOption) {
|
func EditUser(ctx *context.APIContext, form api.EditUserOption) {
|
||||||
// swagger:route PATCH /admin/users/{username} admin adminEditUser
|
// swagger:operation PATCH /admin/users/{username} admin adminEditUser
|
||||||
//
|
// ---
|
||||||
// Consumes:
|
// summary: Edit an existing user
|
||||||
// - application/json
|
// consumes:
|
||||||
//
|
// - application/json
|
||||||
// Produces:
|
// produces:
|
||||||
// - application/json
|
// - application/json
|
||||||
//
|
// parameters:
|
||||||
// Responses:
|
// - name: username
|
||||||
// 200: User
|
// in: path
|
||||||
// 403: forbidden
|
// description: username of user to edit
|
||||||
// 422: validationError
|
// type: string
|
||||||
// 500: error
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/EditUserOption"
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/User"
|
||||||
|
// "403":
|
||||||
|
// "$ref": "#/responses/forbidden"
|
||||||
|
// "422":
|
||||||
|
// "$ref": "#/responses/validationError"
|
||||||
u := user.GetUserByParams(ctx)
|
u := user.GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -157,17 +171,24 @@ func EditUser(ctx *context.APIContext, form api.EditUserOption) {
|
||||||
|
|
||||||
// DeleteUser api for deleting a user
|
// DeleteUser api for deleting a user
|
||||||
func DeleteUser(ctx *context.APIContext) {
|
func DeleteUser(ctx *context.APIContext) {
|
||||||
// swagger:route DELETE /admin/users/{username} admin adminDeleteUser
|
// swagger:operation DELETE /admin/users/{username} admin adminDeleteUser
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Delete a user
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 204: empty
|
// - name: username
|
||||||
// 403: forbidden
|
// in: path
|
||||||
// 422: validationError
|
// description: username of user to delete
|
||||||
// 500: error
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
|
// "403":
|
||||||
|
// "$ref": "#/responses/forbidden"
|
||||||
|
// "422":
|
||||||
|
// "$ref": "#/responses/validationError"
|
||||||
u := user.GetUserByParams(ctx)
|
u := user.GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -189,20 +210,26 @@ func DeleteUser(ctx *context.APIContext) {
|
||||||
|
|
||||||
// CreatePublicKey api for creating a public key to a user
|
// CreatePublicKey api for creating a public key to a user
|
||||||
func CreatePublicKey(ctx *context.APIContext, form api.CreateKeyOption) {
|
func CreatePublicKey(ctx *context.APIContext, form api.CreateKeyOption) {
|
||||||
// swagger:route POST /admin/users/{username}/keys admin adminCreatePublicKey
|
// swagger:operation POST /admin/users/{username}/keys admin adminCreatePublicKey
|
||||||
//
|
// ---
|
||||||
// Consumes:
|
// summary: Add a public key on behalf of a user
|
||||||
// - application/json
|
// consumes:
|
||||||
//
|
// - application/json
|
||||||
// Produces:
|
// produces:
|
||||||
// - application/json
|
// - application/json
|
||||||
//
|
// parameters:
|
||||||
// Responses:
|
// - name: username
|
||||||
// 201: PublicKey
|
// in: path
|
||||||
// 403: forbidden
|
// description: username of the user
|
||||||
// 422: validationError
|
// type: string
|
||||||
// 500: error
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/PublicKey"
|
||||||
|
// "403":
|
||||||
|
// "$ref": "#/responses/forbidden"
|
||||||
|
// "422":
|
||||||
|
// "$ref": "#/responses/validationError"
|
||||||
u := user.GetUserByParams(ctx)
|
u := user.GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
|
|
@ -4,11 +4,7 @@
|
||||||
|
|
||||||
// Package v1 Gitea API.
|
// Package v1 Gitea API.
|
||||||
//
|
//
|
||||||
// This provide API interface to communicate with this Gitea instance.
|
// This documentation describes the Gitea API.
|
||||||
//
|
|
||||||
// Terms Of Service:
|
|
||||||
//
|
|
||||||
// there are no TOS at this moment, use at your own risk we take no responsibility
|
|
||||||
//
|
//
|
||||||
// Schemes: http, https
|
// Schemes: http, https
|
||||||
// BasePath: /api/v1
|
// BasePath: /api/v1
|
||||||
|
@ -51,11 +47,6 @@ package v1
|
||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/go-macaron/binding"
|
|
||||||
"gopkg.in/macaron.v1"
|
|
||||||
|
|
||||||
api "code.gitea.io/sdk/gitea"
|
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
"code.gitea.io/gitea/modules/auth"
|
"code.gitea.io/gitea/modules/auth"
|
||||||
"code.gitea.io/gitea/modules/context"
|
"code.gitea.io/gitea/modules/context"
|
||||||
|
@ -63,8 +54,13 @@ import (
|
||||||
"code.gitea.io/gitea/routers/api/v1/misc"
|
"code.gitea.io/gitea/routers/api/v1/misc"
|
||||||
"code.gitea.io/gitea/routers/api/v1/org"
|
"code.gitea.io/gitea/routers/api/v1/org"
|
||||||
"code.gitea.io/gitea/routers/api/v1/repo"
|
"code.gitea.io/gitea/routers/api/v1/repo"
|
||||||
|
_ "code.gitea.io/gitea/routers/api/v1/swagger" // for swagger generation
|
||||||
"code.gitea.io/gitea/routers/api/v1/user"
|
"code.gitea.io/gitea/routers/api/v1/user"
|
||||||
"code.gitea.io/gitea/routers/api/v1/utils"
|
"code.gitea.io/gitea/routers/api/v1/utils"
|
||||||
|
api "code.gitea.io/sdk/gitea"
|
||||||
|
|
||||||
|
"github.com/go-macaron/binding"
|
||||||
|
"gopkg.in/macaron.v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
func repoAssignment() macaron.Handler {
|
func repoAssignment() macaron.Handler {
|
||||||
|
@ -320,7 +316,7 @@ func RegisterRoutes(m *macaron.Macaron) {
|
||||||
m.Get("", user.GetAuthenticatedUser)
|
m.Get("", user.GetAuthenticatedUser)
|
||||||
m.Combo("/emails").Get(user.ListEmails).
|
m.Combo("/emails").Get(user.ListEmails).
|
||||||
Post(bind(api.CreateEmailOption{}), user.AddEmail).
|
Post(bind(api.CreateEmailOption{}), user.AddEmail).
|
||||||
Delete(bind(api.CreateEmailOption{}), user.DeleteEmail)
|
Delete(bind(api.DeleteEmailOption{}), user.DeleteEmail)
|
||||||
|
|
||||||
m.Get("/followers", user.ListMyFollowers)
|
m.Get("/followers", user.ListMyFollowers)
|
||||||
m.Group("/following", func() {
|
m.Group("/following", func() {
|
||||||
|
@ -435,7 +431,6 @@ func RegisterRoutes(m *macaron.Macaron) {
|
||||||
m.Combo("").Get(repo.ListTrackedTimes).
|
m.Combo("").Get(repo.ListTrackedTimes).
|
||||||
Post(reqToken(), bind(api.AddTimeOption{}), repo.AddTime)
|
Post(reqToken(), bind(api.AddTimeOption{}), repo.AddTime)
|
||||||
})
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
}, mustEnableIssues)
|
}, mustEnableIssues)
|
||||||
m.Group("/labels", func() {
|
m.Group("/labels", func() {
|
||||||
|
@ -484,8 +479,8 @@ func RegisterRoutes(m *macaron.Macaron) {
|
||||||
Post(reqToken(), reqRepoWriter(), bind(api.CreateStatusOption{}), repo.NewCommitStatus)
|
Post(reqToken(), reqRepoWriter(), bind(api.CreateStatusOption{}), repo.NewCommitStatus)
|
||||||
})
|
})
|
||||||
m.Group("/commits/:ref", func() {
|
m.Group("/commits/:ref", func() {
|
||||||
m.Get("/status", repo.GetCombinedCommitStatus)
|
m.Get("/status", repo.GetCombinedCommitStatusByRef)
|
||||||
m.Get("/statuses", repo.GetCommitStatuses)
|
m.Get("/statuses", repo.GetCommitStatusesByRef)
|
||||||
})
|
})
|
||||||
}, repoAssignment())
|
}, repoAssignment())
|
||||||
})
|
})
|
||||||
|
|
|
@ -15,18 +15,23 @@ import (
|
||||||
|
|
||||||
// Markdown render markdown document to HTML
|
// Markdown render markdown document to HTML
|
||||||
func Markdown(ctx *context.APIContext, form api.MarkdownOption) {
|
func Markdown(ctx *context.APIContext, form api.MarkdownOption) {
|
||||||
// swagger:route POST /markdown miscellaneous renderMarkdown
|
// swagger:operation POST /markdown miscellaneous renderMarkdown
|
||||||
//
|
// ---
|
||||||
// Consumes:
|
// summary: Render a markdown document as HTML
|
||||||
// - application/json
|
// parameters:
|
||||||
//
|
// - name: body
|
||||||
// Produces:
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/MarkdownOption"
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// produces:
|
||||||
// - text/html
|
// - text/html
|
||||||
//
|
// responses:
|
||||||
// Responses:
|
// "200":
|
||||||
// 200: MarkdownRender
|
// "$ref": "#/responses/MarkdownRender"
|
||||||
// 422: validationError
|
// "422":
|
||||||
|
// "$ref": "#/responses/validationError"
|
||||||
if ctx.HasAPIError() {
|
if ctx.HasAPIError() {
|
||||||
ctx.Error(422, "", ctx.GetErrMsg())
|
ctx.Error(422, "", ctx.GetErrMsg())
|
||||||
return
|
return
|
||||||
|
@ -53,17 +58,22 @@ func Markdown(ctx *context.APIContext, form api.MarkdownOption) {
|
||||||
|
|
||||||
// MarkdownRaw render raw markdown HTML
|
// MarkdownRaw render raw markdown HTML
|
||||||
func MarkdownRaw(ctx *context.APIContext) {
|
func MarkdownRaw(ctx *context.APIContext) {
|
||||||
// swagger:route POST /markdown/raw miscellaneous renderMarkdownRaw
|
// swagger:operation POST /markdown/raw miscellaneous renderMarkdownRaw
|
||||||
//
|
// ---
|
||||||
// Consumes:
|
// summary: Render raw markdown as HTML
|
||||||
|
// parameters:
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// type: string
|
||||||
|
// consumes:
|
||||||
// - text/plain
|
// - text/plain
|
||||||
//
|
// produces:
|
||||||
// Produces:
|
|
||||||
// - text/html
|
// - text/html
|
||||||
//
|
// responses:
|
||||||
// Responses:
|
// "200":
|
||||||
// 200: MarkdownRender
|
// "$ref": "#/responses/MarkdownRender"
|
||||||
// 422: validationError
|
// "422":
|
||||||
|
// "$ref": "#/responses/validationError"
|
||||||
body, err := ctx.Req.Body().Bytes()
|
body, err := ctx.Req.Body().Bytes()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(422, "", err)
|
ctx.Error(422, "", err)
|
||||||
|
|
|
@ -12,17 +12,13 @@ import (
|
||||||
|
|
||||||
// Version shows the version of the Gitea server
|
// Version shows the version of the Gitea server
|
||||||
func Version(ctx *context.APIContext) {
|
func Version(ctx *context.APIContext) {
|
||||||
// swagger:route GET /version miscellaneous getVersion
|
// swagger:operation GET /version miscellaneous getVersion
|
||||||
//
|
// ---
|
||||||
// Return Gitea running version.
|
// summary: Returns the version of the Gitea application
|
||||||
//
|
// produces:
|
||||||
// This show current running Gitea application version.
|
// - application/json
|
||||||
//
|
// responses:
|
||||||
// Produces:
|
// "200":
|
||||||
// - application/json
|
// "$ref": "#/responses/ServerVersion"
|
||||||
//
|
|
||||||
// Responses:
|
|
||||||
// 200: ServerVersion
|
|
||||||
|
|
||||||
ctx.JSON(200, &gitea.ServerVersion{Version: setting.AppVer})
|
ctx.JSON(200, &gitea.ServerVersion{Version: setting.AppVer})
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,15 +15,14 @@ import (
|
||||||
|
|
||||||
// ListHooks list an organziation's webhooks
|
// ListHooks list an organziation's webhooks
|
||||||
func ListHooks(ctx *context.APIContext) {
|
func ListHooks(ctx *context.APIContext) {
|
||||||
// swagger:route GET /orgs/{orgname}/hooks organization orgListHooks
|
// swagger:operation GET /orgs/{org}/hooks organization orgListHooks
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List an organization's webhooks
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// responses:
|
||||||
// 200: HookList
|
// "200":
|
||||||
// 500: error
|
// "$ref": "#/responses/HookList"
|
||||||
|
|
||||||
org := ctx.Org.Organization
|
org := ctx.Org.Organization
|
||||||
orgHooks, err := models.GetWebhooksByOrgID(org.ID)
|
orgHooks, err := models.GetWebhooksByOrgID(org.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -39,16 +38,14 @@ func ListHooks(ctx *context.APIContext) {
|
||||||
|
|
||||||
// GetHook get an organization's hook by id
|
// GetHook get an organization's hook by id
|
||||||
func GetHook(ctx *context.APIContext) {
|
func GetHook(ctx *context.APIContext) {
|
||||||
// swagger:route GET /orgs/{orgname}/hooks/{id} organization orgGetHook
|
// swagger:operation GET /orgs/{org}/hooks/{id} organization orgGetHook
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Get a hook
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// responses:
|
||||||
// 200: Hook
|
// "200":
|
||||||
// 404: notFound
|
// "$ref": "#/responses/Hook"
|
||||||
// 500: error
|
|
||||||
|
|
||||||
org := ctx.Org.Organization
|
org := ctx.Org.Organization
|
||||||
hookID := ctx.ParamsInt64(":id")
|
hookID := ctx.ParamsInt64(":id")
|
||||||
hook, err := utils.GetOrgHook(ctx, org.ID, hookID)
|
hook, err := utils.GetOrgHook(ctx, org.ID, hookID)
|
||||||
|
@ -60,19 +57,16 @@ func GetHook(ctx *context.APIContext) {
|
||||||
|
|
||||||
// CreateHook create a hook for an organization
|
// CreateHook create a hook for an organization
|
||||||
func CreateHook(ctx *context.APIContext, form api.CreateHookOption) {
|
func CreateHook(ctx *context.APIContext, form api.CreateHookOption) {
|
||||||
// swagger:route POST /orgs/{orgname}/hooks/ organization orgCreateHook
|
// swagger:operation POST /orgs/{org}/hooks/ organization orgCreateHook
|
||||||
//
|
// ---
|
||||||
// Consumes:
|
// summary: Create a hook
|
||||||
// - application/json
|
// consumes:
|
||||||
//
|
// - application/json
|
||||||
// Produces:
|
// produces:
|
||||||
// - application/json
|
// - application/json
|
||||||
//
|
// responses:
|
||||||
// Responses:
|
// "201":
|
||||||
// 201: Hook
|
// "$ref": "#/responses/Hook"
|
||||||
// 422: validationError
|
|
||||||
// 500: error
|
|
||||||
|
|
||||||
if !utils.CheckCreateHookOption(ctx, &form) {
|
if !utils.CheckCreateHookOption(ctx, &form) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -81,36 +75,30 @@ func CreateHook(ctx *context.APIContext, form api.CreateHookOption) {
|
||||||
|
|
||||||
// EditHook modify a hook of a repository
|
// EditHook modify a hook of a repository
|
||||||
func EditHook(ctx *context.APIContext, form api.EditHookOption) {
|
func EditHook(ctx *context.APIContext, form api.EditHookOption) {
|
||||||
// swagger:route PATCH /orgs/{orgname}/hooks/{id} organization orgEditHook
|
// swagger:operation PATCH /orgs/{org}/hooks/{id} organization orgEditHook
|
||||||
//
|
// ---
|
||||||
// Consumes:
|
// summary: Update a hook
|
||||||
// - application/json
|
// consumes:
|
||||||
//
|
// - application/json
|
||||||
// Produces:
|
// produces:
|
||||||
// - application/json
|
// - application/json
|
||||||
//
|
// responses:
|
||||||
// Responses:
|
// "200":
|
||||||
// 200: Hook
|
// "$ref": "#/responses/Hook"
|
||||||
// 422: validationError
|
|
||||||
// 404: notFound
|
|
||||||
// 500: error
|
|
||||||
|
|
||||||
hookID := ctx.ParamsInt64(":id")
|
hookID := ctx.ParamsInt64(":id")
|
||||||
utils.EditOrgHook(ctx, &form, hookID)
|
utils.EditOrgHook(ctx, &form, hookID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteHook delete a hook of an organization
|
// DeleteHook delete a hook of an organization
|
||||||
func DeleteHook(ctx *context.APIContext) {
|
func DeleteHook(ctx *context.APIContext) {
|
||||||
// swagger:route DELETE /orgs/{orgname}/hooks/{id} organization orgDeleteHook
|
// swagger:operation DELETE /orgs/{org}/hooks/{id} organization orgDeleteHook
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Delete a hook
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// responses:
|
||||||
// 204: empty
|
// "204":
|
||||||
// 404: notFound
|
// "$ref": "#/responses/empty"
|
||||||
// 500: error
|
|
||||||
|
|
||||||
org := ctx.Org.Organization
|
org := ctx.Org.Organization
|
||||||
hookID := ctx.ParamsInt64(":id")
|
hookID := ctx.ParamsInt64(":id")
|
||||||
if err := models.DeleteWebhookByOrgID(org.ID, hookID); err != nil {
|
if err := models.DeleteWebhookByOrgID(org.ID, hookID); err != nil {
|
||||||
|
|
|
@ -53,45 +53,68 @@ func listMembers(ctx *context.APIContext, publicOnly bool) {
|
||||||
|
|
||||||
// ListMembers list an organization's members
|
// ListMembers list an organization's members
|
||||||
func ListMembers(ctx *context.APIContext) {
|
func ListMembers(ctx *context.APIContext) {
|
||||||
// swagger:route GET /orgs/{orgname}/members organization orgListMembers
|
// swagger:operation GET /orgs/{org}/members organization orgListMembers
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List an organization's members
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: UserList
|
// - name: org
|
||||||
// 500: error
|
// in: path
|
||||||
|
// description: name of the organization
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/UserList"
|
||||||
publicOnly := ctx.User == nil || !ctx.Org.Organization.IsOrgMember(ctx.User.ID)
|
publicOnly := ctx.User == nil || !ctx.Org.Organization.IsOrgMember(ctx.User.ID)
|
||||||
listMembers(ctx, publicOnly)
|
listMembers(ctx, publicOnly)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListPublicMembers list an organization's public members
|
// ListPublicMembers list an organization's public members
|
||||||
func ListPublicMembers(ctx *context.APIContext) {
|
func ListPublicMembers(ctx *context.APIContext) {
|
||||||
// swagger:route GET /orgs/{orgname}/public_members organization orgListPublicMembers
|
// swagger:operation GET /orgs/{org}/public_members organization orgListPublicMembers
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List an organization's public members
|
||||||
// - application/json
|
// parameters:
|
||||||
//
|
// - name: org
|
||||||
// Responses:
|
// in: path
|
||||||
// 200: UserList
|
// description: name of the organization
|
||||||
// 500: error
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/UserList"
|
||||||
listMembers(ctx, true)
|
listMembers(ctx, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsMember check if a user is a member of an organization
|
// IsMember check if a user is a member of an organization
|
||||||
func IsMember(ctx *context.APIContext) {
|
func IsMember(ctx *context.APIContext) {
|
||||||
// swagger:route GET /orgs/{orgname}/members/{username} organization orgIsMember
|
// swagger:operation GET /orgs/{org}/members/{username} organization orgIsMember
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Check if a user is a member of an organization
|
||||||
// - application/json
|
// parameters:
|
||||||
//
|
// - name: org
|
||||||
// Responses:
|
// in: path
|
||||||
// 204: empty
|
// description: name of the organization
|
||||||
// 302: redirect
|
// type: string
|
||||||
// 404: notFound
|
// required: true
|
||||||
|
// - name: username
|
||||||
|
// in: path
|
||||||
|
// description: username of the user
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// description: user is a member
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
|
// "404":
|
||||||
|
// description: user is not a member
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
userToCheck := user.GetUserByParams(ctx)
|
userToCheck := user.GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -113,15 +136,29 @@ func IsMember(ctx *context.APIContext) {
|
||||||
|
|
||||||
// IsPublicMember check if a user is a public member of an organization
|
// IsPublicMember check if a user is a public member of an organization
|
||||||
func IsPublicMember(ctx *context.APIContext) {
|
func IsPublicMember(ctx *context.APIContext) {
|
||||||
// swagger:route GET /orgs/{orgname}/public_members/{username} organization orgIsPublicMember
|
// swagger:operation GET /orgs/{org}/public_members/{username} organization orgIsPublicMember
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Check if a user is a public member of an organization
|
||||||
// - application/json
|
// parameters:
|
||||||
//
|
// - name: org
|
||||||
// Responses:
|
// in: path
|
||||||
// 204: empty
|
// description: name of the organization
|
||||||
// 404: notFound
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: username
|
||||||
|
// in: path
|
||||||
|
// description: username of the user
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// description: user is a public member
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
|
// "404":
|
||||||
|
// description: user is not a public member
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
userToCheck := user.GetUserByParams(ctx)
|
userToCheck := user.GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -135,16 +172,27 @@ func IsPublicMember(ctx *context.APIContext) {
|
||||||
|
|
||||||
// PublicizeMember make a member's membership public
|
// PublicizeMember make a member's membership public
|
||||||
func PublicizeMember(ctx *context.APIContext) {
|
func PublicizeMember(ctx *context.APIContext) {
|
||||||
// swagger:route PUT /orgs/{orgname}/public_members/{username} organization orgPublicizeMember
|
// swagger:operation PUT /orgs/{org}/public_members/{username} organization orgPublicizeMember
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Publicize a user's membership
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 204: empty
|
// - name: org
|
||||||
// 403: forbidden
|
// in: path
|
||||||
// 500: error
|
// description: name of the organization
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: username
|
||||||
|
// in: path
|
||||||
|
// description: username of the user
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// description: membership publicized
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
userToPublicize := user.GetUserByParams(ctx)
|
userToPublicize := user.GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -163,16 +211,25 @@ func PublicizeMember(ctx *context.APIContext) {
|
||||||
|
|
||||||
// ConcealMember make a member's membership not public
|
// ConcealMember make a member's membership not public
|
||||||
func ConcealMember(ctx *context.APIContext) {
|
func ConcealMember(ctx *context.APIContext) {
|
||||||
// swagger:route DELETE /orgs/{orgname}/public_members/{username} organization orgConcealMember
|
// swagger:operation DELETE /orgs/{org}/public_members/{username} organization orgConcealMember
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Conceal a user's membership
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 204: empty
|
// - name: org
|
||||||
// 403: forbidden
|
// in: path
|
||||||
// 500: error
|
// description: name of the organization
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: username
|
||||||
|
// in: path
|
||||||
|
// description: username of the user
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
userToConceal := user.GetUserByParams(ctx)
|
userToConceal := user.GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -191,15 +248,27 @@ func ConcealMember(ctx *context.APIContext) {
|
||||||
|
|
||||||
// DeleteMember remove a member from an organization
|
// DeleteMember remove a member from an organization
|
||||||
func DeleteMember(ctx *context.APIContext) {
|
func DeleteMember(ctx *context.APIContext) {
|
||||||
// swagger:route DELETE /orgs/{orgname}/members/{username} organization orgDeleteMember
|
// swagger:operation DELETE /orgs/{org}/members/{username} organization orgDeleteMember
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Remove a member from an organization
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 204: empty
|
// - name: org
|
||||||
// 500: error
|
// in: path
|
||||||
|
// description: name of the organization
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: username
|
||||||
|
// in: path
|
||||||
|
// description: username of the user
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// description: member removed
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
member := user.GetUserByParams(ctx)
|
member := user.GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
|
|
@ -27,14 +27,33 @@ func listUserOrgs(ctx *context.APIContext, u *models.User, all bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListMyOrgs list all my orgs
|
// ListMyOrgs list all my orgs
|
||||||
// see https://github.com/gogits/go-gogs-client/wiki/Organizations#list-your-organizations
|
|
||||||
func ListMyOrgs(ctx *context.APIContext) {
|
func ListMyOrgs(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /user/orgs organization orgListCurrentUserOrgs
|
||||||
|
// ---
|
||||||
|
// summary: List the current user's organizations
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/OrganizationList"
|
||||||
listUserOrgs(ctx, ctx.User, true)
|
listUserOrgs(ctx, ctx.User, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListUserOrgs list user's orgs
|
// ListUserOrgs list user's orgs
|
||||||
// see https://github.com/gogits/go-gogs-client/wiki/Organizations#list-user-organizations
|
|
||||||
func ListUserOrgs(ctx *context.APIContext) {
|
func ListUserOrgs(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /user/{username}/orgs organization orgListUserOrgs
|
||||||
|
// ---
|
||||||
|
// summary: List a user's organizations
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: username
|
||||||
|
// in: path
|
||||||
|
// description: username of user
|
||||||
|
// type: string
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/OrganizationList"
|
||||||
u := user.GetUserByParams(ctx)
|
u := user.GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -43,14 +62,46 @@ func ListUserOrgs(ctx *context.APIContext) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get get an organization
|
// Get get an organization
|
||||||
// see https://github.com/gogits/go-gogs-client/wiki/Organizations#get-an-organization
|
|
||||||
func Get(ctx *context.APIContext) {
|
func Get(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /orgs/{org} organization orgGet
|
||||||
|
// ---
|
||||||
|
// summary: Get an organization
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: org
|
||||||
|
// in: path
|
||||||
|
// description: name of the organization to get
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Organization"
|
||||||
ctx.JSON(200, convert.ToOrganization(ctx.Org.Organization))
|
ctx.JSON(200, convert.ToOrganization(ctx.Org.Organization))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Edit change an organization's information
|
// Edit change an organization's information
|
||||||
// see https://github.com/gogits/go-gogs-client/wiki/Organizations#edit-an-organization
|
|
||||||
func Edit(ctx *context.APIContext, form api.EditOrgOption) {
|
func Edit(ctx *context.APIContext, form api.EditOrgOption) {
|
||||||
|
// swagger:operation PATCH /orgs/{org} organization orgEdit
|
||||||
|
// ---
|
||||||
|
// summary: Edit an organization
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: org
|
||||||
|
// in: path
|
||||||
|
// description: name of the organization to edit
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/EditOrgOption"
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Organization"
|
||||||
org := ctx.Org.Organization
|
org := ctx.Org.Organization
|
||||||
org.FullName = form.FullName
|
org.FullName = form.FullName
|
||||||
org.Description = form.Description
|
org.Description = form.Description
|
||||||
|
|
|
@ -15,6 +15,20 @@ import (
|
||||||
|
|
||||||
// ListTeams list all the teams of an organization
|
// ListTeams list all the teams of an organization
|
||||||
func ListTeams(ctx *context.APIContext) {
|
func ListTeams(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /orgs/{org}/teams organization orgListTeams
|
||||||
|
// ---
|
||||||
|
// summary: List an organization's teams
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: org
|
||||||
|
// in: path
|
||||||
|
// description: name of the organization
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/TeamList"
|
||||||
org := ctx.Org.Organization
|
org := ctx.Org.Organization
|
||||||
if err := org.GetTeams(); err != nil {
|
if err := org.GetTeams(); err != nil {
|
||||||
ctx.Error(500, "GetTeams", err)
|
ctx.Error(500, "GetTeams", err)
|
||||||
|
@ -30,11 +44,45 @@ func ListTeams(ctx *context.APIContext) {
|
||||||
|
|
||||||
// GetTeam api for get a team
|
// GetTeam api for get a team
|
||||||
func GetTeam(ctx *context.APIContext) {
|
func GetTeam(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /teams/{id} organization orgGetTeam
|
||||||
|
// ---
|
||||||
|
// summary: Get a team
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the team to get
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Team"
|
||||||
ctx.JSON(200, convert.ToTeam(ctx.Org.Team))
|
ctx.JSON(200, convert.ToTeam(ctx.Org.Team))
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateTeam api for create a team
|
// CreateTeam api for create a team
|
||||||
func CreateTeam(ctx *context.APIContext, form api.CreateTeamOption) {
|
func CreateTeam(ctx *context.APIContext, form api.CreateTeamOption) {
|
||||||
|
// swagger:operation POST /orgs/{org}/teams organization orgCreateTeam
|
||||||
|
// ---
|
||||||
|
// summary: Create a team
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: org
|
||||||
|
// in: path
|
||||||
|
// description: name of the organization
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/CreateTeamOption"
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/Team"
|
||||||
team := &models.Team{
|
team := &models.Team{
|
||||||
OrgID: ctx.Org.Organization.ID,
|
OrgID: ctx.Org.Organization.ID,
|
||||||
Name: form.Name,
|
Name: form.Name,
|
||||||
|
@ -55,6 +103,26 @@ func CreateTeam(ctx *context.APIContext, form api.CreateTeamOption) {
|
||||||
|
|
||||||
// EditTeam api for edit a team
|
// EditTeam api for edit a team
|
||||||
func EditTeam(ctx *context.APIContext, form api.EditTeamOption) {
|
func EditTeam(ctx *context.APIContext, form api.EditTeamOption) {
|
||||||
|
// swagger:operation PATCH /teams/{id} organization orgEditTeam
|
||||||
|
// ---
|
||||||
|
// summary: Edit a team
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the team to edit
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/EditTeamOption"
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Team"
|
||||||
team := &models.Team{
|
team := &models.Team{
|
||||||
ID: ctx.Org.Team.ID,
|
ID: ctx.Org.Team.ID,
|
||||||
OrgID: ctx.Org.Team.OrgID,
|
OrgID: ctx.Org.Team.OrgID,
|
||||||
|
@ -71,6 +139,20 @@ func EditTeam(ctx *context.APIContext, form api.EditTeamOption) {
|
||||||
|
|
||||||
// DeleteTeam api for delete a team
|
// DeleteTeam api for delete a team
|
||||||
func DeleteTeam(ctx *context.APIContext) {
|
func DeleteTeam(ctx *context.APIContext) {
|
||||||
|
// swagger:operation DELETE /teams/{id} organization orgDeleteTeam
|
||||||
|
// ---
|
||||||
|
// summary: Delete a team
|
||||||
|
// parameters:
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the team to delete
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// description: team deleted
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
if err := models.DeleteTeam(ctx.Org.Team); err != nil {
|
if err := models.DeleteTeam(ctx.Org.Team); err != nil {
|
||||||
ctx.Error(500, "DeleteTeam", err)
|
ctx.Error(500, "DeleteTeam", err)
|
||||||
return
|
return
|
||||||
|
@ -80,6 +162,20 @@ func DeleteTeam(ctx *context.APIContext) {
|
||||||
|
|
||||||
// GetTeamMembers api for get a team's members
|
// GetTeamMembers api for get a team's members
|
||||||
func GetTeamMembers(ctx *context.APIContext) {
|
func GetTeamMembers(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /teams/{id}/members organization orgListTeamMembers
|
||||||
|
// ---
|
||||||
|
// summary: List a team's members
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the team
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/UserList"
|
||||||
if !models.IsOrganizationMember(ctx.Org.Team.OrgID, ctx.User.ID) {
|
if !models.IsOrganizationMember(ctx.Org.Team.OrgID, ctx.User.ID) {
|
||||||
ctx.Status(404)
|
ctx.Status(404)
|
||||||
return
|
return
|
||||||
|
@ -98,6 +194,25 @@ func GetTeamMembers(ctx *context.APIContext) {
|
||||||
|
|
||||||
// AddTeamMember api for add a member to a team
|
// AddTeamMember api for add a member to a team
|
||||||
func AddTeamMember(ctx *context.APIContext) {
|
func AddTeamMember(ctx *context.APIContext) {
|
||||||
|
// swagger:operation PUT /teams/{id}/members/{username} organization orgAddTeamMember
|
||||||
|
// ---
|
||||||
|
// summary: Add a team member
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the team
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// - name: username
|
||||||
|
// in: path
|
||||||
|
// description: username of the user to add
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
u := user.GetUserByParams(ctx)
|
u := user.GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -111,6 +226,25 @@ func AddTeamMember(ctx *context.APIContext) {
|
||||||
|
|
||||||
// RemoveTeamMember api for remove one member from a team
|
// RemoveTeamMember api for remove one member from a team
|
||||||
func RemoveTeamMember(ctx *context.APIContext) {
|
func RemoveTeamMember(ctx *context.APIContext) {
|
||||||
|
// swagger:operation DELETE /teams/{id}/members/{username} organization orgAddTeamMember
|
||||||
|
// ---
|
||||||
|
// summary: Remove a team member
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the team
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// - name: username
|
||||||
|
// in: path
|
||||||
|
// description: username of the user to remove
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
u := user.GetUserByParams(ctx)
|
u := user.GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -125,6 +259,20 @@ func RemoveTeamMember(ctx *context.APIContext) {
|
||||||
|
|
||||||
// GetTeamRepos api for get a team's repos
|
// GetTeamRepos api for get a team's repos
|
||||||
func GetTeamRepos(ctx *context.APIContext) {
|
func GetTeamRepos(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /teams/{id}/repos organization orgListTeamRepos
|
||||||
|
// ---
|
||||||
|
// summary: List a team's repos
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the team
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/RepositoryList"
|
||||||
team := ctx.Org.Team
|
team := ctx.Org.Team
|
||||||
if err := team.GetRepositories(); err != nil {
|
if err := team.GetRepositories(); err != nil {
|
||||||
ctx.Error(500, "GetTeamRepos", err)
|
ctx.Error(500, "GetTeamRepos", err)
|
||||||
|
@ -157,6 +305,30 @@ func getRepositoryByParams(ctx *context.APIContext) *models.Repository {
|
||||||
|
|
||||||
// AddTeamRepository api for adding a repository to a team
|
// AddTeamRepository api for adding a repository to a team
|
||||||
func AddTeamRepository(ctx *context.APIContext) {
|
func AddTeamRepository(ctx *context.APIContext) {
|
||||||
|
// swagger:operation PUT /teams/{id}/repos/{org}/{repo} organization orgAddTeamMember
|
||||||
|
// ---
|
||||||
|
// summary: Add a repository to a team
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the team
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// - name: org
|
||||||
|
// in: path
|
||||||
|
// description: organization that owns the repo to add
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: repo
|
||||||
|
// in: path
|
||||||
|
// description: name of the repo to add
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
repo := getRepositoryByParams(ctx)
|
repo := getRepositoryByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -177,6 +349,32 @@ func AddTeamRepository(ctx *context.APIContext) {
|
||||||
|
|
||||||
// RemoveTeamRepository api for removing a repository from a team
|
// RemoveTeamRepository api for removing a repository from a team
|
||||||
func RemoveTeamRepository(ctx *context.APIContext) {
|
func RemoveTeamRepository(ctx *context.APIContext) {
|
||||||
|
// swagger:operation DELETE /teams/{id}/repos/{org}/{repo} organization orgAddTeamMember
|
||||||
|
// ---
|
||||||
|
// summary: Remove a repository from a team
|
||||||
|
// description: This does not delete the repository, it only removes the
|
||||||
|
// repository from the team.
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the team
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// - name: org
|
||||||
|
// in: path
|
||||||
|
// description: organization that owns the repo to remove
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: repo
|
||||||
|
// in: path
|
||||||
|
// description: name of the repo to remove
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
repo := getRepositoryByParams(ctx)
|
repo := getRepositoryByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
|
|
@ -13,8 +13,31 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetBranch get a branch of a repository
|
// GetBranch get a branch of a repository
|
||||||
// see https://github.com/gogits/go-gogs-client/wiki/Repositories#get-branch
|
|
||||||
func GetBranch(ctx *context.APIContext) {
|
func GetBranch(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/branches/{branch} repository repoGetBranch
|
||||||
|
// ---
|
||||||
|
// summary: List a repository's branches
|
||||||
|
// 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
|
||||||
|
// - name: branch
|
||||||
|
// in: path
|
||||||
|
// description: branch to get
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Branch"
|
||||||
if ctx.Repo.TreePath != "" {
|
if ctx.Repo.TreePath != "" {
|
||||||
// if TreePath != "", then URL contained extra slashes
|
// if TreePath != "", then URL contained extra slashes
|
||||||
// (i.e. "master/subbranch" instead of "master"), so branch does
|
// (i.e. "master/subbranch" instead of "master"), so branch does
|
||||||
|
@ -42,8 +65,26 @@ func GetBranch(ctx *context.APIContext) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListBranches list all the branches of a repository
|
// ListBranches list all the branches of a repository
|
||||||
// see https://github.com/gogits/go-gogs-client/wiki/Repositories#list-branches
|
|
||||||
func ListBranches(ctx *context.APIContext) {
|
func ListBranches(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/branches repository repoListBranches
|
||||||
|
// ---
|
||||||
|
// summary: List a repository's branches
|
||||||
|
// 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/BranchList"
|
||||||
branches, err := ctx.Repo.Repository.GetBranches()
|
branches, err := ctx.Repo.Repository.GetBranches()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "GetBranches", err)
|
ctx.Error(500, "GetBranches", err)
|
||||||
|
|
|
@ -13,6 +13,25 @@ import (
|
||||||
|
|
||||||
// ListCollaborators list a repository's collaborators
|
// ListCollaborators list a repository's collaborators
|
||||||
func ListCollaborators(ctx *context.APIContext) {
|
func ListCollaborators(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/collaborators repository repoListCollaborators
|
||||||
|
// ---
|
||||||
|
// summary: List a repository's collaborators
|
||||||
|
// 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/UserList"
|
||||||
if !ctx.Repo.IsWriter() {
|
if !ctx.Repo.IsWriter() {
|
||||||
ctx.Error(403, "", "User does not have push access")
|
ctx.Error(403, "", "User does not have push access")
|
||||||
return
|
return
|
||||||
|
@ -31,6 +50,32 @@ func ListCollaborators(ctx *context.APIContext) {
|
||||||
|
|
||||||
// IsCollaborator check if a user is a collaborator of a repository
|
// IsCollaborator check if a user is a collaborator of a repository
|
||||||
func IsCollaborator(ctx *context.APIContext) {
|
func IsCollaborator(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/collaborators/{collaborator} repository repoCheckCollaborator
|
||||||
|
// ---
|
||||||
|
// summary: Check if a user is a collaborator of a repository
|
||||||
|
// 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
|
||||||
|
// - name: collaborator
|
||||||
|
// in: path
|
||||||
|
// description: username of the collaborator
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
|
// "404":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
if !ctx.Repo.IsWriter() {
|
if !ctx.Repo.IsWriter() {
|
||||||
ctx.Error(403, "", "User does not have push access")
|
ctx.Error(403, "", "User does not have push access")
|
||||||
return
|
return
|
||||||
|
@ -56,8 +101,36 @@ func IsCollaborator(ctx *context.APIContext) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddCollaborator add a collaborator of a repository
|
// AddCollaborator add a collaborator to a repository
|
||||||
func AddCollaborator(ctx *context.APIContext, form api.AddCollaboratorOption) {
|
func AddCollaborator(ctx *context.APIContext, form api.AddCollaboratorOption) {
|
||||||
|
// swagger:operation PUT /repos/{owner}/{repo}/collaborators/{collaborator} repository repoAddCollaborator
|
||||||
|
// ---
|
||||||
|
// summary: Add a collaborator to a repository
|
||||||
|
// 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
|
||||||
|
// - name: collaborator
|
||||||
|
// in: path
|
||||||
|
// description: username of the collaborator to add
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/AddCollaboratorOption"
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
if !ctx.Repo.IsWriter() {
|
if !ctx.Repo.IsWriter() {
|
||||||
ctx.Error(403, "", "User does not have push access")
|
ctx.Error(403, "", "User does not have push access")
|
||||||
return
|
return
|
||||||
|
@ -89,6 +162,30 @@ func AddCollaborator(ctx *context.APIContext, form api.AddCollaboratorOption) {
|
||||||
|
|
||||||
// DeleteCollaborator delete a collaborator from a repository
|
// DeleteCollaborator delete a collaborator from a repository
|
||||||
func DeleteCollaborator(ctx *context.APIContext) {
|
func DeleteCollaborator(ctx *context.APIContext) {
|
||||||
|
// swagger:operation DELETE /repos/{owner}/{repo}/collaborators/{collaborator} repository repoDeleteCollaborator
|
||||||
|
// ---
|
||||||
|
// summary: Delete a collaborator from a repository
|
||||||
|
// 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
|
||||||
|
// - name: collaborator
|
||||||
|
// in: path
|
||||||
|
// description: username of the collaborator to delete
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
if !ctx.Repo.IsWriter() {
|
if !ctx.Repo.IsWriter() {
|
||||||
ctx.Error(403, "", "User does not have push access")
|
ctx.Error(403, "", "User does not have push access")
|
||||||
return
|
return
|
||||||
|
|
|
@ -13,8 +13,30 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetRawFile get a file by path on a repository
|
// GetRawFile get a file by path on a repository
|
||||||
// see https://github.com/gogits/go-gogs-client/wiki/Repositories-Contents#download-raw-content
|
|
||||||
func GetRawFile(ctx *context.APIContext) {
|
func GetRawFile(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/raw/{filepath} repository repoGetRawFile
|
||||||
|
// ---
|
||||||
|
// summary: Get a file from a repository
|
||||||
|
// 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
|
||||||
|
// - name: filepath
|
||||||
|
// in: path
|
||||||
|
// description: filepath of the file to get
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// 200:
|
||||||
if !ctx.Repo.HasAccess() {
|
if !ctx.Repo.HasAccess() {
|
||||||
ctx.Status(404)
|
ctx.Status(404)
|
||||||
return
|
return
|
||||||
|
@ -40,8 +62,30 @@ func GetRawFile(ctx *context.APIContext) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetArchive get archive of a repository
|
// GetArchive get archive of a repository
|
||||||
// see https://github.com/gogits/go-gogs-client/wiki/Repositories-Contents#download-archive
|
|
||||||
func GetArchive(ctx *context.APIContext) {
|
func GetArchive(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/archive/{filepath} repository repoGetArchive
|
||||||
|
// ---
|
||||||
|
// summary: Get an archive of a repository
|
||||||
|
// 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
|
||||||
|
// - name: archive
|
||||||
|
// in: path
|
||||||
|
// description: archive to download, consisting of a git reference and archive
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// 200:
|
||||||
repoPath := models.RepoPath(ctx.Params(":username"), ctx.Params(":reponame"))
|
repoPath := models.RepoPath(ctx.Params(":username"), ctx.Params(":reponame"))
|
||||||
gitRepo, err := git.OpenRepository(repoPath)
|
gitRepo, err := git.OpenRepository(repoPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -55,6 +99,29 @@ func GetArchive(ctx *context.APIContext) {
|
||||||
|
|
||||||
// GetEditorconfig get editor config of a repository
|
// GetEditorconfig get editor config of a repository
|
||||||
func GetEditorconfig(ctx *context.APIContext) {
|
func GetEditorconfig(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/editorconfig/{filepath} repository repoGetEditorConfig
|
||||||
|
// ---
|
||||||
|
// summary: Get the EditorConfig definitions of a file in a repository
|
||||||
|
// 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
|
||||||
|
// - name: filepath
|
||||||
|
// in: path
|
||||||
|
// description: filepath of file to get
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// 200:
|
||||||
ec, err := ctx.Repo.GetEditorconfig()
|
ec, err := ctx.Repo.GetEditorconfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if git.IsErrNotExist(err) {
|
if git.IsErrNotExist(err) {
|
||||||
|
|
|
@ -14,15 +14,25 @@ import (
|
||||||
|
|
||||||
// ListForks list a repository's forks
|
// ListForks list a repository's forks
|
||||||
func ListForks(ctx *context.APIContext) {
|
func ListForks(ctx *context.APIContext) {
|
||||||
// swagger:route GET /repos/{owner}/{repo}/forks repository listForks
|
// swagger:operation GET /repos/{owner}/{repo}/forks repository listForks
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List a repository's forks
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: RepositoryList
|
// - name: owner
|
||||||
// 500: error
|
// 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/RepositoryList"
|
||||||
forks, err := ctx.Repo.Repository.GetForks()
|
forks, err := ctx.Repo.Repository.GetForks()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "GetForks", err)
|
ctx.Error(500, "GetForks", err)
|
||||||
|
@ -42,17 +52,29 @@ func ListForks(ctx *context.APIContext) {
|
||||||
|
|
||||||
// CreateFork create a fork of a repo
|
// CreateFork create a fork of a repo
|
||||||
func CreateFork(ctx *context.APIContext, form api.CreateForkOption) {
|
func CreateFork(ctx *context.APIContext, form api.CreateForkOption) {
|
||||||
// swagger:route POST /repos/{owner}/{repo}/forks repository createFork
|
// swagger:operation POST /repos/{owner}/{repo}/forks repository createFork
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Fork a repository
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 202: Repository
|
// - name: owner
|
||||||
// 403: forbidden
|
// in: path
|
||||||
// 422: validationError
|
// description: owner of the repo to fork
|
||||||
// 500: error
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: repo
|
||||||
|
// in: path
|
||||||
|
// description: name of the repo to fork
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/CreateForkOption"
|
||||||
|
// responses:
|
||||||
|
// "202":
|
||||||
|
// "$ref": "#/responses/Repository"
|
||||||
repo := ctx.Repo.Repository
|
repo := ctx.Repo.Repository
|
||||||
var forker *models.User // user/org that will own the fork
|
var forker *models.User // user/org that will own the fork
|
||||||
if form.Organization == nil {
|
if form.Organization == nil {
|
||||||
|
|
|
@ -15,15 +15,25 @@ import (
|
||||||
|
|
||||||
// ListHooks list all hooks of a repository
|
// ListHooks list all hooks of a repository
|
||||||
func ListHooks(ctx *context.APIContext) {
|
func ListHooks(ctx *context.APIContext) {
|
||||||
// swagger:route GET /repos/{username}/{reponame}/hooks repository repoListHooks
|
// swagger:operation GET /repos/{owner}/{repo}/hooks repository repoListHooks
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List the hooks in a repository
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: HookList
|
// - name: owner
|
||||||
// 500: error
|
// 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/HookList"
|
||||||
hooks, err := models.GetWebhooksByRepoID(ctx.Repo.Repository.ID)
|
hooks, err := models.GetWebhooksByRepoID(ctx.Repo.Repository.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "GetWebhooksByRepoID", err)
|
ctx.Error(500, "GetWebhooksByRepoID", err)
|
||||||
|
@ -39,6 +49,30 @@ func ListHooks(ctx *context.APIContext) {
|
||||||
|
|
||||||
// GetHook get a repo's hook by id
|
// GetHook get a repo's hook by id
|
||||||
func GetHook(ctx *context.APIContext) {
|
func GetHook(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/hooks/{id} repository repoGetHook
|
||||||
|
// ---
|
||||||
|
// summary: Get a hook
|
||||||
|
// 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
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the hook to get
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Hook"
|
||||||
repo := ctx.Repo
|
repo := ctx.Repo
|
||||||
hookID := ctx.ParamsInt64(":id")
|
hookID := ctx.ParamsInt64(":id")
|
||||||
hook, err := utils.GetRepoHook(ctx, repo.Repository.ID, hookID)
|
hook, err := utils.GetRepoHook(ctx, repo.Repository.ID, hookID)
|
||||||
|
@ -50,19 +84,31 @@ func GetHook(ctx *context.APIContext) {
|
||||||
|
|
||||||
// CreateHook create a hook for a repository
|
// CreateHook create a hook for a repository
|
||||||
func CreateHook(ctx *context.APIContext, form api.CreateHookOption) {
|
func CreateHook(ctx *context.APIContext, form api.CreateHookOption) {
|
||||||
// swagger:route POST /repos/{username}/{reponame}/hooks repository repoCreateHook
|
// swagger:operation POST /repos/{owner}/{repo}/hooks repository repoCreateHook
|
||||||
//
|
// ---
|
||||||
// Consumes:
|
// summary: Create a hook
|
||||||
// - application/json
|
// consumes:
|
||||||
//
|
// - application/json
|
||||||
// Produces:
|
// produces:
|
||||||
// - application/json
|
// - application/json
|
||||||
//
|
// parameters:
|
||||||
// Responses:
|
// - name: owner
|
||||||
// 200: Hook
|
// in: path
|
||||||
// 422: validationError
|
// description: owner of the repo
|
||||||
// 500: error
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: repo
|
||||||
|
// in: path
|
||||||
|
// description: name of the repo
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/CreateHookOption"
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Hook"
|
||||||
if !utils.CheckCreateHookOption(ctx, &form) {
|
if !utils.CheckCreateHookOption(ctx, &form) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -71,32 +117,61 @@ func CreateHook(ctx *context.APIContext, form api.CreateHookOption) {
|
||||||
|
|
||||||
// EditHook modify a hook of a repository
|
// EditHook modify a hook of a repository
|
||||||
func EditHook(ctx *context.APIContext, form api.EditHookOption) {
|
func EditHook(ctx *context.APIContext, form api.EditHookOption) {
|
||||||
// swagger:route PATCH /repos/{username}/{reponame}/hooks/{id} repository repoEditHook
|
// swagger:operation PATCH /repos/{owner}/{repo}/hooks/{id} repository repoEditHook
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Edit a hook in a repository
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: Hook
|
// - name: owner
|
||||||
// 422: validationError
|
// in: path
|
||||||
// 500: error
|
// description: owner of the repo
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: repo
|
||||||
|
// in: path
|
||||||
|
// description: name of the repo
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/EditHookOption"
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Hook"
|
||||||
hookID := ctx.ParamsInt64(":id")
|
hookID := ctx.ParamsInt64(":id")
|
||||||
utils.EditRepoHook(ctx, &form, hookID)
|
utils.EditRepoHook(ctx, &form, hookID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteHook delete a hook of a repository
|
// DeleteHook delete a hook of a repository
|
||||||
func DeleteHook(ctx *context.APIContext) {
|
func DeleteHook(ctx *context.APIContext) {
|
||||||
// swagger:route DELETE /repos/{username}/{reponame}/hooks/{id} repository repoDeleteHook
|
// swagger:operation DELETE /repos/{user}/{repo}/hooks/{id} repository repoDeleteHook
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Delete a hook in a repository
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 204: empty
|
// - name: owner
|
||||||
// 404: notFound
|
// in: path
|
||||||
// 500: error
|
// 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 hook to delete
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
|
// "404":
|
||||||
|
// "$ref": "#/responses/notFound"
|
||||||
if err := models.DeleteWebhookByRepoID(ctx.Repo.Repository.ID, ctx.ParamsInt64(":id")); err != nil {
|
if err := models.DeleteWebhookByRepoID(ctx.Repo.Repository.ID, ctx.ParamsInt64(":id")); err != nil {
|
||||||
if models.IsErrWebhookNotExist(err) {
|
if models.IsErrWebhookNotExist(err) {
|
||||||
ctx.Status(404)
|
ctx.Status(404)
|
||||||
|
|
|
@ -18,6 +18,33 @@ import (
|
||||||
|
|
||||||
// ListIssues list the issues of a repository
|
// ListIssues list the issues of a repository
|
||||||
func ListIssues(ctx *context.APIContext) {
|
func ListIssues(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/issues issue issueListIssues
|
||||||
|
// ---
|
||||||
|
// summary: List a repository's issues
|
||||||
|
// 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
|
||||||
|
// - name: state
|
||||||
|
// in: query
|
||||||
|
// description: whether issue is open or closed
|
||||||
|
// type: string
|
||||||
|
// - name: page
|
||||||
|
// in: query
|
||||||
|
// description: page number of requested issues
|
||||||
|
// type: integer
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/IssueList"
|
||||||
var isClosed util.OptionalBool
|
var isClosed util.OptionalBool
|
||||||
switch ctx.Query("state") {
|
switch ctx.Query("state") {
|
||||||
case "closed":
|
case "closed":
|
||||||
|
@ -50,6 +77,30 @@ func ListIssues(ctx *context.APIContext) {
|
||||||
|
|
||||||
// GetIssue get an issue of a repository
|
// GetIssue get an issue of a repository
|
||||||
func GetIssue(ctx *context.APIContext) {
|
func GetIssue(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/issues/{id} issue issueGetIssue
|
||||||
|
// ---
|
||||||
|
// summary: Get an issue by id
|
||||||
|
// 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
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the issue to get
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Issue"
|
||||||
issue, err := models.GetIssueByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
issue, err := models.GetIssueByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrIssueNotExist(err) {
|
if models.IsErrIssueNotExist(err) {
|
||||||
|
@ -64,6 +115,31 @@ func GetIssue(ctx *context.APIContext) {
|
||||||
|
|
||||||
// CreateIssue create an issue of a repository
|
// CreateIssue create an issue of a repository
|
||||||
func CreateIssue(ctx *context.APIContext, form api.CreateIssueOption) {
|
func CreateIssue(ctx *context.APIContext, form api.CreateIssueOption) {
|
||||||
|
// swagger:operation POST /repos/{owner}/{repo}/issues issue issueCreateIssue
|
||||||
|
// ---
|
||||||
|
// summary: Create an issue
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// 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
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/CreateIssueOption"
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/Issue"
|
||||||
issue := &models.Issue{
|
issue := &models.Issue{
|
||||||
RepoID: ctx.Repo.Repository.ID,
|
RepoID: ctx.Repo.Repository.ID,
|
||||||
Title: form.Title,
|
Title: form.Title,
|
||||||
|
@ -114,6 +190,36 @@ func CreateIssue(ctx *context.APIContext, form api.CreateIssueOption) {
|
||||||
|
|
||||||
// EditIssue modify an issue of a repository
|
// EditIssue modify an issue of a repository
|
||||||
func EditIssue(ctx *context.APIContext, form api.EditIssueOption) {
|
func EditIssue(ctx *context.APIContext, form api.EditIssueOption) {
|
||||||
|
// swagger:operation PATCH /repos/{owner}/{repo}/issues/{id} issue issueEditIssue
|
||||||
|
// ---
|
||||||
|
// summary: Edit an issue
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// 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
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the issue to edit
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/EditIssueOption"
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/Issue"
|
||||||
issue, err := models.GetIssueByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
issue, err := models.GetIssueByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrIssueNotExist(err) {
|
if models.IsErrIssueNotExist(err) {
|
||||||
|
|
|
@ -15,6 +15,34 @@ import (
|
||||||
|
|
||||||
// ListIssueComments list all the comments of an issue
|
// ListIssueComments list all the comments of an issue
|
||||||
func ListIssueComments(ctx *context.APIContext) {
|
func ListIssueComments(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/issue/{index}/comments issue issueGetComments
|
||||||
|
// ---
|
||||||
|
// summary: List all comments on an issue
|
||||||
|
// 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
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: index of the issue
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// - name: string
|
||||||
|
// in: query
|
||||||
|
// description: if provided, only comments updated since the specified time are returned.
|
||||||
|
// type: string
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/CommentList"
|
||||||
var since time.Time
|
var since time.Time
|
||||||
if len(ctx.Query("since")) > 0 {
|
if len(ctx.Query("since")) > 0 {
|
||||||
since, _ = time.Parse(time.RFC3339, ctx.Query("since"))
|
since, _ = time.Parse(time.RFC3339, ctx.Query("since"))
|
||||||
|
@ -44,8 +72,31 @@ func ListIssueComments(ctx *context.APIContext) {
|
||||||
ctx.JSON(200, &apiComments)
|
ctx.JSON(200, &apiComments)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListRepoIssueComments returns all issue-comments for an issue
|
// ListRepoIssueComments returns all issue-comments for a repo
|
||||||
func ListRepoIssueComments(ctx *context.APIContext) {
|
func ListRepoIssueComments(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/issues/comments issue issueGetRepoComments
|
||||||
|
// ---
|
||||||
|
// summary: List all comments in a repository
|
||||||
|
// 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
|
||||||
|
// - name: string
|
||||||
|
// in: query
|
||||||
|
// description: if provided, only comments updated since the provided time are returned.
|
||||||
|
// type: string
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/CommentList"
|
||||||
var since time.Time
|
var since time.Time
|
||||||
if len(ctx.Query("since")) > 0 {
|
if len(ctx.Query("since")) > 0 {
|
||||||
since, _ = time.Parse(time.RFC3339, ctx.Query("since"))
|
since, _ = time.Parse(time.RFC3339, ctx.Query("since"))
|
||||||
|
@ -70,6 +121,36 @@ func ListRepoIssueComments(ctx *context.APIContext) {
|
||||||
|
|
||||||
// CreateIssueComment create a comment for an issue
|
// CreateIssueComment create a comment for an issue
|
||||||
func CreateIssueComment(ctx *context.APIContext, form api.CreateIssueCommentOption) {
|
func CreateIssueComment(ctx *context.APIContext, form api.CreateIssueCommentOption) {
|
||||||
|
// swagger:operation POST /repos/{owner}/{repo}/issues/{index}/comments issue issueCreateComment
|
||||||
|
// ---
|
||||||
|
// summary: Add a comment to an issue
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// 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
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: index of the issue
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/CreateIssueOption"
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/Comment"
|
||||||
issue, err := models.GetIssueByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
issue, err := models.GetIssueByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "GetIssueByIndex", err)
|
ctx.Error(500, "GetIssueByIndex", err)
|
||||||
|
@ -87,6 +168,36 @@ func CreateIssueComment(ctx *context.APIContext, form api.CreateIssueCommentOpti
|
||||||
|
|
||||||
// EditIssueComment modify a comment of an issue
|
// EditIssueComment modify a comment of an issue
|
||||||
func EditIssueComment(ctx *context.APIContext, form api.EditIssueCommentOption) {
|
func EditIssueComment(ctx *context.APIContext, form api.EditIssueCommentOption) {
|
||||||
|
// swagger:operation PATCH /repos/{owner}/{repo}/comments/{id} issue issueEditComment
|
||||||
|
// ---
|
||||||
|
// summary: Edit a comment
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// 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
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the comment to edit
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/EditIssueCommentOption"
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Comment"
|
||||||
comment, err := models.GetCommentByID(ctx.ParamsInt64(":id"))
|
comment, err := models.GetCommentByID(ctx.ParamsInt64(":id"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrCommentNotExist(err) {
|
if models.IsErrCommentNotExist(err) {
|
||||||
|
@ -115,6 +226,28 @@ func EditIssueComment(ctx *context.APIContext, form api.EditIssueCommentOption)
|
||||||
|
|
||||||
// DeleteIssueComment delete a comment from an issue
|
// DeleteIssueComment delete a comment from an issue
|
||||||
func DeleteIssueComment(ctx *context.APIContext) {
|
func DeleteIssueComment(ctx *context.APIContext) {
|
||||||
|
// swagger:operation DELETE /repos/{owner}/{repo}/comments/{id} issue issueDeleteComment
|
||||||
|
// ---
|
||||||
|
// summary: Delete a comment
|
||||||
|
// 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 comment to delete
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
comment, err := models.GetCommentByID(ctx.ParamsInt64(":id"))
|
comment, err := models.GetCommentByID(ctx.ParamsInt64(":id"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrCommentNotExist(err) {
|
if models.IsErrCommentNotExist(err) {
|
||||||
|
|
|
@ -13,6 +13,32 @@ import (
|
||||||
|
|
||||||
// ListIssueLabels list all the labels of an issue
|
// ListIssueLabels list all the labels of an issue
|
||||||
func ListIssueLabels(ctx *context.APIContext) {
|
func ListIssueLabels(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/issues/{index}/labels issue issueGetLabels
|
||||||
|
// ---
|
||||||
|
// summary: Get an issue's labels
|
||||||
|
// 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
|
||||||
|
// - name: index
|
||||||
|
// in: path
|
||||||
|
// description: index of the issue
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/LabelList"
|
||||||
|
// "404":
|
||||||
|
// "$ref": "#/responses/notFound"
|
||||||
issue, err := models.GetIssueByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
issue, err := models.GetIssueByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrIssueNotExist(err) {
|
if models.IsErrIssueNotExist(err) {
|
||||||
|
@ -32,6 +58,36 @@ func ListIssueLabels(ctx *context.APIContext) {
|
||||||
|
|
||||||
// AddIssueLabels add labels for an issue
|
// AddIssueLabels add labels for an issue
|
||||||
func AddIssueLabels(ctx *context.APIContext, form api.IssueLabelsOption) {
|
func AddIssueLabels(ctx *context.APIContext, form api.IssueLabelsOption) {
|
||||||
|
// swagger:operation POST /repos/{owner}/{repo}/issue/{index}/labels issue issueAddLabel
|
||||||
|
// ---
|
||||||
|
// summary: Add a label to an issue
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// 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
|
||||||
|
// - name: index
|
||||||
|
// in: path
|
||||||
|
// description: index of the issue
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/IssueLabelsOption"
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/LabelList"
|
||||||
if !ctx.Repo.IsWriter() {
|
if !ctx.Repo.IsWriter() {
|
||||||
ctx.Status(403)
|
ctx.Status(403)
|
||||||
return
|
return
|
||||||
|
@ -73,6 +129,35 @@ func AddIssueLabels(ctx *context.APIContext, form api.IssueLabelsOption) {
|
||||||
|
|
||||||
// DeleteIssueLabel delete a label for an issue
|
// DeleteIssueLabel delete a label for an issue
|
||||||
func DeleteIssueLabel(ctx *context.APIContext) {
|
func DeleteIssueLabel(ctx *context.APIContext) {
|
||||||
|
// swagger:operation DELETE /repos/{owner}/{repo}/issue/{index}/labels/{id} issue issueRemoveLabel
|
||||||
|
// ---
|
||||||
|
// summary: Remove a label from an issue
|
||||||
|
// 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
|
||||||
|
// - name: index
|
||||||
|
// in: path
|
||||||
|
// description: index of the issue
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the label to remove
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
if !ctx.Repo.IsWriter() {
|
if !ctx.Repo.IsWriter() {
|
||||||
ctx.Status(403)
|
ctx.Status(403)
|
||||||
return
|
return
|
||||||
|
@ -108,6 +193,36 @@ func DeleteIssueLabel(ctx *context.APIContext) {
|
||||||
|
|
||||||
// ReplaceIssueLabels replace labels for an issue
|
// ReplaceIssueLabels replace labels for an issue
|
||||||
func ReplaceIssueLabels(ctx *context.APIContext, form api.IssueLabelsOption) {
|
func ReplaceIssueLabels(ctx *context.APIContext, form api.IssueLabelsOption) {
|
||||||
|
// swagger:operation PUT /repos/{owner}/{repo}/issue/{index}/labels issue issueReplaceLabels
|
||||||
|
// ---
|
||||||
|
// summary: Replace an issue's labels
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// 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
|
||||||
|
// - name: index
|
||||||
|
// in: path
|
||||||
|
// description: index of the issue
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/IssueLabelsOption"
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/LabelList"
|
||||||
if !ctx.Repo.IsWriter() {
|
if !ctx.Repo.IsWriter() {
|
||||||
ctx.Status(403)
|
ctx.Status(403)
|
||||||
return
|
return
|
||||||
|
@ -149,6 +264,30 @@ func ReplaceIssueLabels(ctx *context.APIContext, form api.IssueLabelsOption) {
|
||||||
|
|
||||||
// ClearIssueLabels delete all the labels for an issue
|
// ClearIssueLabels delete all the labels for an issue
|
||||||
func ClearIssueLabels(ctx *context.APIContext) {
|
func ClearIssueLabels(ctx *context.APIContext) {
|
||||||
|
// swagger:operation DELETE /repos/{owner}/{repo}/issue/{index}/labels issue issueClearLabels
|
||||||
|
// ---
|
||||||
|
// summary: Remove all labels from an issue
|
||||||
|
// 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
|
||||||
|
// - name: index
|
||||||
|
// in: path
|
||||||
|
// description: index of the issue
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
if !ctx.Repo.IsWriter() {
|
if !ctx.Repo.IsWriter() {
|
||||||
ctx.Status(403)
|
ctx.Status(403)
|
||||||
return
|
return
|
||||||
|
|
|
@ -20,15 +20,30 @@ func trackedTimesToAPIFormat(trackedTimes []*models.TrackedTime) []*api.TrackedT
|
||||||
|
|
||||||
// ListTrackedTimes list all the tracked times of an issue
|
// ListTrackedTimes list all the tracked times of an issue
|
||||||
func ListTrackedTimes(ctx *context.APIContext) {
|
func ListTrackedTimes(ctx *context.APIContext) {
|
||||||
// swagger:route GET /repos/{username}/{reponame}/issues/{issue}/times repository issueTrackedTimes
|
// swagger:operation GET /repos/{owner}/{repo}/issues/{index}/times issue issueTrackedTimes
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List an issue's tracked times
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: TrackedTimes
|
// - name: owner
|
||||||
// 404: error
|
// in: path
|
||||||
// 500: error
|
// description: owner of the repo
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: repo
|
||||||
|
// in: path
|
||||||
|
// description: name of the repo
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: repo
|
||||||
|
// in: path
|
||||||
|
// description: index of the issue
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/TrackedTimeList"
|
||||||
if !ctx.Repo.Repository.IsTimetrackerEnabled() {
|
if !ctx.Repo.Repository.IsTimetrackerEnabled() {
|
||||||
ctx.Error(404, "IsTimetrackerEnabled", "Timetracker is diabled")
|
ctx.Error(404, "IsTimetrackerEnabled", "Timetracker is diabled")
|
||||||
return
|
return
|
||||||
|
@ -54,17 +69,40 @@ func ListTrackedTimes(ctx *context.APIContext) {
|
||||||
|
|
||||||
// AddTime adds time manual to the given issue
|
// AddTime adds time manual to the given issue
|
||||||
func AddTime(ctx *context.APIContext, form api.AddTimeOption) {
|
func AddTime(ctx *context.APIContext, form api.AddTimeOption) {
|
||||||
// swagger:route Post /repos/{username}/{reponame}/issues/{issue}/times repository addTime
|
// swagger:operation Post /repos/{owner}/{repo}/issues/{index}/times issue issueAddTime
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Add a tracked time to a issue
|
||||||
// - application/json
|
// consumes:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// produces:
|
||||||
// 200: TrackedTime
|
// - application/json
|
||||||
// 400: error
|
// parameters:
|
||||||
// 403: error
|
// - name: owner
|
||||||
// 404: error
|
// in: path
|
||||||
// 500: error
|
// 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: index of the issue to add tracked time to
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/AddTimeOption"
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/TrackedTime"
|
||||||
|
// "400":
|
||||||
|
// "$ref": "#/responses/error"
|
||||||
|
// "403":
|
||||||
|
// "$ref": "#/responses/error"
|
||||||
issue, err := models.GetIssueByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
issue, err := models.GetIssueByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrIssueNotExist(err) {
|
if models.IsErrIssueNotExist(err) {
|
||||||
|
@ -93,16 +131,30 @@ func AddTime(ctx *context.APIContext, form api.AddTimeOption) {
|
||||||
|
|
||||||
// ListTrackedTimesByUser lists all tracked times of the user
|
// ListTrackedTimesByUser lists all tracked times of the user
|
||||||
func ListTrackedTimesByUser(ctx *context.APIContext) {
|
func ListTrackedTimesByUser(ctx *context.APIContext) {
|
||||||
// swagger:route GET /repos/{username}/{reponame}/times/{timetrackingusername} user userTrackedTimes
|
// swagger:operation GET /repos/{owner}/{repo}/times/{tracker} user userTrackedTimes
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List a user's tracked times in a repo
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: TrackedTimes
|
// - name: owner
|
||||||
// 400: error
|
// in: path
|
||||||
// 404: error
|
// description: owner of the repo
|
||||||
// 500: error
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: repo
|
||||||
|
// in: path
|
||||||
|
// description: name of the repo
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: user
|
||||||
|
// in: path
|
||||||
|
// description: username of user
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/TrackedTimeList"
|
||||||
if !ctx.Repo.Repository.IsTimetrackerEnabled() {
|
if !ctx.Repo.Repository.IsTimetrackerEnabled() {
|
||||||
ctx.JSON(400, struct{ Message string }{Message: "time tracking disabled"})
|
ctx.JSON(400, struct{ Message string }{Message: "time tracking disabled"})
|
||||||
return
|
return
|
||||||
|
@ -131,17 +183,27 @@ func ListTrackedTimesByUser(ctx *context.APIContext) {
|
||||||
ctx.JSON(200, &apiTrackedTimes)
|
ctx.JSON(200, &apiTrackedTimes)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListTrackedTimesByRepository lists all tracked times of the user
|
// ListTrackedTimesByRepository lists all tracked times of the repository
|
||||||
func ListTrackedTimesByRepository(ctx *context.APIContext) {
|
func ListTrackedTimesByRepository(ctx *context.APIContext) {
|
||||||
// swagger:route GET /repos/{username}/{reponame}/times repository repoTrackedTimes
|
// swagger:operation GET /repos/{owner}/{repo}/times repository repoTrackedTimes
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List a repo's tracked times
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: TrackedTimes
|
// - name: owner
|
||||||
// 400: error
|
// in: path
|
||||||
// 500: error
|
// 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/TrackedTimeList"
|
||||||
if !ctx.Repo.Repository.IsTimetrackerEnabled() {
|
if !ctx.Repo.Repository.IsTimetrackerEnabled() {
|
||||||
ctx.JSON(400, struct{ Message string }{Message: "time tracking disabled"})
|
ctx.JSON(400, struct{ Message string }{Message: "time tracking disabled"})
|
||||||
return
|
return
|
||||||
|
@ -158,14 +220,14 @@ func ListTrackedTimesByRepository(ctx *context.APIContext) {
|
||||||
|
|
||||||
// ListMyTrackedTimes lists all tracked times of the current user
|
// ListMyTrackedTimes lists all tracked times of the current user
|
||||||
func ListMyTrackedTimes(ctx *context.APIContext) {
|
func ListMyTrackedTimes(ctx *context.APIContext) {
|
||||||
// swagger:route GET /user/times user userTrackedTimes
|
// swagger:operation GET /user/times user userCurrentTrackedTimes
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List the current user's tracked times
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// responses:
|
||||||
// 200: TrackedTimes
|
// "200":
|
||||||
// 500: error
|
// "$ref": "#/responses/TrackedTimeList"
|
||||||
trackedTimes, err := models.GetTrackedTimes(models.FindTrackedTimesOptions{UserID: ctx.User.ID})
|
trackedTimes, err := models.GetTrackedTimes(models.FindTrackedTimesOptions{UserID: ctx.User.ID})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "GetTrackedTimesByUser", err)
|
ctx.Error(500, "GetTrackedTimesByUser", err)
|
||||||
|
|
|
@ -20,8 +20,26 @@ func composeDeployKeysAPILink(repoPath string) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListDeployKeys list all the deploy keys of a repository
|
// ListDeployKeys list all the deploy keys of a repository
|
||||||
// see https://github.com/gogits/go-gogs-client/wiki/Repositories-Deploy-Keys#list-deploy-keys
|
|
||||||
func ListDeployKeys(ctx *context.APIContext) {
|
func ListDeployKeys(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/keys repository repoListKeys
|
||||||
|
// ---
|
||||||
|
// summary: List a repository's keys
|
||||||
|
// 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/DeployKeyList"
|
||||||
keys, err := models.ListDeployKeys(ctx.Repo.Repository.ID)
|
keys, err := models.ListDeployKeys(ctx.Repo.Repository.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "ListDeployKeys", err)
|
ctx.Error(500, "ListDeployKeys", err)
|
||||||
|
@ -42,8 +60,31 @@ func ListDeployKeys(ctx *context.APIContext) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetDeployKey get a deploy key by id
|
// GetDeployKey get a deploy key by id
|
||||||
// see https://github.com/gogits/go-gogs-client/wiki/Repositories-Deploy-Keys#get-a-deploy-key
|
|
||||||
func GetDeployKey(ctx *context.APIContext) {
|
func GetDeployKey(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/keys/{id} repository repoGetKey
|
||||||
|
// ---
|
||||||
|
// summary: Get a repository's key by id
|
||||||
|
// 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
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the key to get
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/DeployKey"
|
||||||
key, err := models.GetDeployKeyByID(ctx.ParamsInt64(":id"))
|
key, err := models.GetDeployKeyByID(ctx.ParamsInt64(":id"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrDeployKeyNotExist(err) {
|
if models.IsErrDeployKeyNotExist(err) {
|
||||||
|
@ -85,8 +126,32 @@ func HandleAddKeyError(ctx *context.APIContext, err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateDeployKey create deploy key for a repository
|
// CreateDeployKey create deploy key for a repository
|
||||||
// see https://github.com/gogits/go-gogs-client/wiki/Repositories-Deploy-Keys#add-a-new-deploy-key
|
|
||||||
func CreateDeployKey(ctx *context.APIContext, form api.CreateKeyOption) {
|
func CreateDeployKey(ctx *context.APIContext, form api.CreateKeyOption) {
|
||||||
|
// swagger:operation POST /repos/{owner}/{repo}/keys repository repoCreateKey
|
||||||
|
// ---
|
||||||
|
// summary: Add a key to a repository
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// 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
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/CreateKeyOption"
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/DeployKey"
|
||||||
content, err := models.CheckPublicKeyString(form.Key)
|
content, err := models.CheckPublicKeyString(form.Key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
HandleCheckKeyStringError(ctx, err)
|
HandleCheckKeyStringError(ctx, err)
|
||||||
|
@ -105,8 +170,29 @@ func CreateDeployKey(ctx *context.APIContext, form api.CreateKeyOption) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteDeploykey delete deploy key for a repository
|
// DeleteDeploykey delete deploy key for a repository
|
||||||
// see https://github.com/gogits/go-gogs-client/wiki/Repositories-Deploy-Keys#remove-a-deploy-key
|
|
||||||
func DeleteDeploykey(ctx *context.APIContext) {
|
func DeleteDeploykey(ctx *context.APIContext) {
|
||||||
|
// swagger:operation DELETE /repos/{owner}/{repo}/keys/{id} repository repoDeleteKey
|
||||||
|
// ---
|
||||||
|
// summary: Delete a key from a repository
|
||||||
|
// 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 key to delete
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
if err := models.DeleteDeployKey(ctx.User, ctx.ParamsInt64(":id")); err != nil {
|
if err := models.DeleteDeployKey(ctx.User, ctx.ParamsInt64(":id")); err != nil {
|
||||||
if models.IsErrKeyAccessDenied(err) {
|
if models.IsErrKeyAccessDenied(err) {
|
||||||
ctx.Error(403, "", "You do not have access to this key")
|
ctx.Error(403, "", "You do not have access to this key")
|
||||||
|
|
|
@ -15,6 +15,25 @@ import (
|
||||||
|
|
||||||
// ListLabels list all the labels of a repository
|
// ListLabels list all the labels of a repository
|
||||||
func ListLabels(ctx *context.APIContext) {
|
func ListLabels(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/labels issue issueListLabels
|
||||||
|
// ---
|
||||||
|
// summary: Get all of a repository's labels
|
||||||
|
// 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/LabelList"
|
||||||
labels, err := models.GetLabelsByRepoID(ctx.Repo.Repository.ID, ctx.Query("sort"))
|
labels, err := models.GetLabelsByRepoID(ctx.Repo.Repository.ID, ctx.Query("sort"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "GetLabelsByRepoID", err)
|
ctx.Error(500, "GetLabelsByRepoID", err)
|
||||||
|
@ -30,6 +49,30 @@ func ListLabels(ctx *context.APIContext) {
|
||||||
|
|
||||||
// GetLabel get label by repository and label id
|
// GetLabel get label by repository and label id
|
||||||
func GetLabel(ctx *context.APIContext) {
|
func GetLabel(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/labels/{id} issue issueGetLabel
|
||||||
|
// ---
|
||||||
|
// summary: Get a single label
|
||||||
|
// 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
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the label to get
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Label"
|
||||||
var (
|
var (
|
||||||
label *models.Label
|
label *models.Label
|
||||||
err error
|
err error
|
||||||
|
@ -54,6 +97,31 @@ func GetLabel(ctx *context.APIContext) {
|
||||||
|
|
||||||
// CreateLabel create a label for a repository
|
// CreateLabel create a label for a repository
|
||||||
func CreateLabel(ctx *context.APIContext, form api.CreateLabelOption) {
|
func CreateLabel(ctx *context.APIContext, form api.CreateLabelOption) {
|
||||||
|
// swagger:operation POST /repos/{owner}/{repo}/labels issue issueCreateLabel
|
||||||
|
// ---
|
||||||
|
// summary: Create a label
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// 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
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/CreateLabelOption"
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/Label"
|
||||||
if !ctx.Repo.IsWriter() {
|
if !ctx.Repo.IsWriter() {
|
||||||
ctx.Status(403)
|
ctx.Status(403)
|
||||||
return
|
return
|
||||||
|
@ -73,6 +141,36 @@ func CreateLabel(ctx *context.APIContext, form api.CreateLabelOption) {
|
||||||
|
|
||||||
// EditLabel modify a label for a repository
|
// EditLabel modify a label for a repository
|
||||||
func EditLabel(ctx *context.APIContext, form api.EditLabelOption) {
|
func EditLabel(ctx *context.APIContext, form api.EditLabelOption) {
|
||||||
|
// swagger:operation PATCH /repos/{owner}/{repo}/labels/{id} issue issueEditLabel
|
||||||
|
// ---
|
||||||
|
// summary: Update a label
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// 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
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the label to edit
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/EditLabelOption"
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Label"
|
||||||
if !ctx.Repo.IsWriter() {
|
if !ctx.Repo.IsWriter() {
|
||||||
ctx.Status(403)
|
ctx.Status(403)
|
||||||
return
|
return
|
||||||
|
@ -103,6 +201,28 @@ func EditLabel(ctx *context.APIContext, form api.EditLabelOption) {
|
||||||
|
|
||||||
// DeleteLabel delete a label for a repository
|
// DeleteLabel delete a label for a repository
|
||||||
func DeleteLabel(ctx *context.APIContext) {
|
func DeleteLabel(ctx *context.APIContext) {
|
||||||
|
// swagger:operation DELETE /repos/{owner}/{repo}/labels/{id} issue issueDeleteLabel
|
||||||
|
// ---
|
||||||
|
// summary: Delete a label
|
||||||
|
// 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 label to delete
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
if !ctx.Repo.IsWriter() {
|
if !ctx.Repo.IsWriter() {
|
||||||
ctx.Status(403)
|
ctx.Status(403)
|
||||||
return
|
return
|
||||||
|
|
|
@ -15,6 +15,14 @@ import (
|
||||||
|
|
||||||
// ListMilestones list all the milestones for a repository
|
// ListMilestones list all the milestones for a repository
|
||||||
func ListMilestones(ctx *context.APIContext) {
|
func ListMilestones(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/milestones/{id} issue issueGetMilestone
|
||||||
|
// ---
|
||||||
|
// summary: Get a milestone
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Milestone"
|
||||||
milestones, err := models.GetMilestonesByRepoID(ctx.Repo.Repository.ID)
|
milestones, err := models.GetMilestonesByRepoID(ctx.Repo.Repository.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "GetMilestonesByRepoID", err)
|
ctx.Error(500, "GetMilestonesByRepoID", err)
|
||||||
|
@ -30,6 +38,41 @@ func ListMilestones(ctx *context.APIContext) {
|
||||||
|
|
||||||
// GetMilestone get a milestone for a repository
|
// GetMilestone get a milestone for a repository
|
||||||
func GetMilestone(ctx *context.APIContext) {
|
func GetMilestone(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/milestones issue issueGetMilestones
|
||||||
|
// ---
|
||||||
|
// 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
|
||||||
|
// 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
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/MilestoneList"
|
||||||
milestone, err := models.GetMilestoneByRepoID(ctx.Repo.Repository.ID, ctx.ParamsInt64(":id"))
|
milestone, err := models.GetMilestoneByRepoID(ctx.Repo.Repository.ID, ctx.ParamsInt64(":id"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrMilestoneNotExist(err) {
|
if models.IsErrMilestoneNotExist(err) {
|
||||||
|
@ -44,6 +87,31 @@ func GetMilestone(ctx *context.APIContext) {
|
||||||
|
|
||||||
// CreateMilestone create a milestone for a repository
|
// CreateMilestone create a milestone for a repository
|
||||||
func CreateMilestone(ctx *context.APIContext, form api.CreateMilestoneOption) {
|
func CreateMilestone(ctx *context.APIContext, form api.CreateMilestoneOption) {
|
||||||
|
// swagger:operation POST /repos/{owner}/{repo}/milestones issue issueCreateMilestone
|
||||||
|
// ---
|
||||||
|
// summary: Create a milestone
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// 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
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/CreateMilestoneOption"
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/Milestone"
|
||||||
if form.Deadline == nil {
|
if form.Deadline == nil {
|
||||||
defaultDeadline, _ := time.ParseInLocation("2006-01-02", "9999-12-31", time.Local)
|
defaultDeadline, _ := time.ParseInLocation("2006-01-02", "9999-12-31", time.Local)
|
||||||
form.Deadline = &defaultDeadline
|
form.Deadline = &defaultDeadline
|
||||||
|
@ -65,6 +133,31 @@ func CreateMilestone(ctx *context.APIContext, form api.CreateMilestoneOption) {
|
||||||
|
|
||||||
// EditMilestone modify a milestone for a repository
|
// EditMilestone modify a milestone for a repository
|
||||||
func EditMilestone(ctx *context.APIContext, form api.EditMilestoneOption) {
|
func EditMilestone(ctx *context.APIContext, form api.EditMilestoneOption) {
|
||||||
|
// swagger:operation PATCH /repos/{owner}/{repo}/milestones/{id} issue issueEditMilestone
|
||||||
|
// ---
|
||||||
|
// summary: Update a milestone
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// 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
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/EditMilestoneOption"
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Milestone"
|
||||||
milestone, err := models.GetMilestoneByRepoID(ctx.Repo.Repository.ID, ctx.ParamsInt64(":id"))
|
milestone, err := models.GetMilestoneByRepoID(ctx.Repo.Repository.ID, ctx.ParamsInt64(":id"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrMilestoneNotExist(err) {
|
if models.IsErrMilestoneNotExist(err) {
|
||||||
|
@ -94,6 +187,28 @@ func EditMilestone(ctx *context.APIContext, form api.EditMilestoneOption) {
|
||||||
|
|
||||||
// DeleteMilestone delete a milestone for a repository
|
// DeleteMilestone delete a milestone for a repository
|
||||||
func DeleteMilestone(ctx *context.APIContext) {
|
func DeleteMilestone(ctx *context.APIContext) {
|
||||||
|
// swagger:operation DELETE /repos/{owner}/{repo}/milestones/{id} issue issueDeleteMilestone
|
||||||
|
// ---
|
||||||
|
// summary: Delete a milestone
|
||||||
|
// 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: body
|
||||||
|
// in: path
|
||||||
|
// description: id of the milestone to delete
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
if err := models.DeleteMilestoneByRepoID(ctx.Repo.Repository.ID, ctx.ParamsInt64(":id")); err != nil {
|
if err := models.DeleteMilestoneByRepoID(ctx.Repo.Repository.ID, ctx.ParamsInt64(":id")); err != nil {
|
||||||
ctx.Error(500, "DeleteMilestoneByRepoID", err)
|
ctx.Error(500, "DeleteMilestoneByRepoID", err)
|
||||||
return
|
return
|
||||||
|
|
|
@ -18,6 +18,25 @@ import (
|
||||||
|
|
||||||
// ListPullRequests returns a list of all PRs
|
// ListPullRequests returns a list of all PRs
|
||||||
func ListPullRequests(ctx *context.APIContext, form api.ListPullRequestsOptions) {
|
func ListPullRequests(ctx *context.APIContext, form api.ListPullRequestsOptions) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/pulls repository repoListPullRequests
|
||||||
|
// ---
|
||||||
|
// summary: List a repo's pull requests
|
||||||
|
// 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/PullRequestList"
|
||||||
prs, maxResults, err := models.PullRequests(ctx.Repo.Repository.ID, &models.PullRequestsOptions{
|
prs, maxResults, err := models.PullRequests(ctx.Repo.Repository.ID, &models.PullRequestsOptions{
|
||||||
Page: ctx.QueryInt("page"),
|
Page: ctx.QueryInt("page"),
|
||||||
State: ctx.QueryTrim("state"),
|
State: ctx.QueryTrim("state"),
|
||||||
|
@ -58,6 +77,30 @@ func ListPullRequests(ctx *context.APIContext, form api.ListPullRequestsOptions)
|
||||||
|
|
||||||
// GetPullRequest returns a single PR based on index
|
// GetPullRequest returns a single PR based on index
|
||||||
func GetPullRequest(ctx *context.APIContext) {
|
func GetPullRequest(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/pulls/{index} repository repoGetPullRequest
|
||||||
|
// ---
|
||||||
|
// summary: Get a pull request
|
||||||
|
// 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
|
||||||
|
// - name: index
|
||||||
|
// in: path
|
||||||
|
// description: index of the pull request to get
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/PullRequest"
|
||||||
pr, err := models.GetPullRequestByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
pr, err := models.GetPullRequestByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrPullRequestNotExist(err) {
|
if models.IsErrPullRequestNotExist(err) {
|
||||||
|
@ -81,6 +124,31 @@ func GetPullRequest(ctx *context.APIContext) {
|
||||||
|
|
||||||
// CreatePullRequest does what it says
|
// CreatePullRequest does what it says
|
||||||
func CreatePullRequest(ctx *context.APIContext, form api.CreatePullRequestOption) {
|
func CreatePullRequest(ctx *context.APIContext, form api.CreatePullRequestOption) {
|
||||||
|
// swagger:operation POST /repos/{owner}/{repo}/pulls repository repoCreatePullRequest
|
||||||
|
// ---
|
||||||
|
// summary: Create a pull request
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// 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
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/CreatePullRequestOption"
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/PullRequest"
|
||||||
var (
|
var (
|
||||||
repo = ctx.Repo.Repository
|
repo = ctx.Repo.Repository
|
||||||
labelIDs []int64
|
labelIDs []int64
|
||||||
|
@ -204,6 +272,36 @@ func CreatePullRequest(ctx *context.APIContext, form api.CreatePullRequestOption
|
||||||
|
|
||||||
// EditPullRequest does what it says
|
// EditPullRequest does what it says
|
||||||
func EditPullRequest(ctx *context.APIContext, form api.EditPullRequestOption) {
|
func EditPullRequest(ctx *context.APIContext, form api.EditPullRequestOption) {
|
||||||
|
// swagger:operation PATCH /repos/{owner}/{repo}/pulls/{index} repository repoEditPullRequest
|
||||||
|
// ---
|
||||||
|
// summary: Update a pull request
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// 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
|
||||||
|
// - name: index
|
||||||
|
// in: path
|
||||||
|
// description: index of the pull request to edit
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/EditPullRequestOption"
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/PullRequest"
|
||||||
pr, err := models.GetPullRequestByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
pr, err := models.GetPullRequestByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrPullRequestNotExist(err) {
|
if models.IsErrPullRequestNotExist(err) {
|
||||||
|
@ -283,13 +381,42 @@ func EditPullRequest(ctx *context.APIContext, form api.EditPullRequestOption) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO this should be 200, not 201
|
||||||
ctx.JSON(201, pr.APIFormat())
|
ctx.JSON(201, pr.APIFormat())
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsPullRequestMerged checks if a PR exists given an index
|
// IsPullRequestMerged checks if a PR exists given an index
|
||||||
// - Returns 204 if it exists
|
|
||||||
// Otherwise 404
|
|
||||||
func IsPullRequestMerged(ctx *context.APIContext) {
|
func IsPullRequestMerged(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/pulls/{index}/merge repository repoPullRequestIsMerged
|
||||||
|
// ---
|
||||||
|
// summary: Check if a pull request has been merged
|
||||||
|
// 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
|
||||||
|
// - name: index
|
||||||
|
// in: path
|
||||||
|
// description: index of the pull request
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// description: pull request has been merged
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
|
// "404":
|
||||||
|
// description: pull request has not been merged
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
pr, err := models.GetPullRequestByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
pr, err := models.GetPullRequestByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrPullRequestNotExist(err) {
|
if models.IsErrPullRequestNotExist(err) {
|
||||||
|
@ -308,6 +435,32 @@ func IsPullRequestMerged(ctx *context.APIContext) {
|
||||||
|
|
||||||
// MergePullRequest merges a PR given an index
|
// MergePullRequest merges a PR given an index
|
||||||
func MergePullRequest(ctx *context.APIContext) {
|
func MergePullRequest(ctx *context.APIContext) {
|
||||||
|
// swagger:operation POST /repos/{owner}/{repo}/pulls/{index}/merge repository repoMergePullRequest
|
||||||
|
// ---
|
||||||
|
// summary: Merge a pull request
|
||||||
|
// 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
|
||||||
|
// - name: index
|
||||||
|
// in: path
|
||||||
|
// description: index of the pull request to merge
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
|
// "405":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
pr, err := models.GetPullRequestByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
pr, err := models.GetPullRequestByIndex(ctx.Repo.Repository.ID, ctx.ParamsInt64(":index"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrPullRequestNotExist(err) {
|
if models.IsErrPullRequestNotExist(err) {
|
||||||
|
|
|
@ -13,6 +13,30 @@ import (
|
||||||
|
|
||||||
// GetRelease get a single release of a repository
|
// GetRelease get a single release of a repository
|
||||||
func GetRelease(ctx *context.APIContext) {
|
func GetRelease(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/releases repository repoGetRelease
|
||||||
|
// ---
|
||||||
|
// summary: Get a release
|
||||||
|
// 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
|
||||||
|
// - name: repo
|
||||||
|
// in: path
|
||||||
|
// description: id of the release to get
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Release"
|
||||||
id := ctx.ParamsInt64(":id")
|
id := ctx.ParamsInt64(":id")
|
||||||
release, err := models.GetReleaseByID(id)
|
release, err := models.GetReleaseByID(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -32,6 +56,25 @@ func GetRelease(ctx *context.APIContext) {
|
||||||
|
|
||||||
// ListReleases list a repository's releases
|
// ListReleases list a repository's releases
|
||||||
func ListReleases(ctx *context.APIContext) {
|
func ListReleases(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/releases repository repoListReleases
|
||||||
|
// ---
|
||||||
|
// summary: List a repo's releases
|
||||||
|
// 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/ReleaseList"
|
||||||
releases, err := models.GetReleasesByRepoID(ctx.Repo.Repository.ID, models.FindReleasesOptions{
|
releases, err := models.GetReleasesByRepoID(ctx.Repo.Repository.ID, models.FindReleasesOptions{
|
||||||
IncludeDrafts: ctx.Repo.AccessMode >= models.AccessModeWrite,
|
IncludeDrafts: ctx.Repo.AccessMode >= models.AccessModeWrite,
|
||||||
IncludeTags: false,
|
IncludeTags: false,
|
||||||
|
@ -53,6 +96,31 @@ func ListReleases(ctx *context.APIContext) {
|
||||||
|
|
||||||
// CreateRelease create a release
|
// CreateRelease create a release
|
||||||
func CreateRelease(ctx *context.APIContext, form api.CreateReleaseOption) {
|
func CreateRelease(ctx *context.APIContext, form api.CreateReleaseOption) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/releases repository repoCreateRelease
|
||||||
|
// ---
|
||||||
|
// summary: Create a release
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// 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
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/CreateReleaseOption"
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/Release"
|
||||||
if ctx.Repo.AccessMode < models.AccessModeWrite {
|
if ctx.Repo.AccessMode < models.AccessModeWrite {
|
||||||
ctx.Status(403)
|
ctx.Status(403)
|
||||||
return
|
return
|
||||||
|
@ -110,6 +178,36 @@ func CreateRelease(ctx *context.APIContext, form api.CreateReleaseOption) {
|
||||||
|
|
||||||
// EditRelease edit a release
|
// EditRelease edit a release
|
||||||
func EditRelease(ctx *context.APIContext, form api.EditReleaseOption) {
|
func EditRelease(ctx *context.APIContext, form api.EditReleaseOption) {
|
||||||
|
// swagger:operation PATCH /repos/{owner}/{repo}/releases/{id} repository repoEditRelease
|
||||||
|
// ---
|
||||||
|
// summary: Update a release
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// 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
|
||||||
|
// - name: id
|
||||||
|
// in: path
|
||||||
|
// description: id of the release to edit
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/EditReleaseOption"
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Release"
|
||||||
if ctx.Repo.AccessMode < models.AccessModeWrite {
|
if ctx.Repo.AccessMode < models.AccessModeWrite {
|
||||||
ctx.Status(403)
|
ctx.Status(403)
|
||||||
return
|
return
|
||||||
|
@ -163,6 +261,28 @@ func EditRelease(ctx *context.APIContext, form api.EditReleaseOption) {
|
||||||
|
|
||||||
// DeleteRelease delete a release from a repository
|
// DeleteRelease delete a release from a repository
|
||||||
func DeleteRelease(ctx *context.APIContext) {
|
func DeleteRelease(ctx *context.APIContext) {
|
||||||
|
// swagger:operation DELETE /repos/{owner}/{repo}/releases/{id} repository repoDeleteRelease
|
||||||
|
// ---
|
||||||
|
// summary: Delete a release
|
||||||
|
// 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 release to delete
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
if ctx.Repo.AccessMode < models.AccessModeWrite {
|
if ctx.Repo.AccessMode < models.AccessModeWrite {
|
||||||
ctx.Status(403)
|
ctx.Status(403)
|
||||||
return
|
return
|
||||||
|
|
|
@ -20,45 +20,40 @@ import (
|
||||||
"code.gitea.io/gitea/routers/api/v1/convert"
|
"code.gitea.io/gitea/routers/api/v1/convert"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SearchRepoOption options when searching repositories
|
|
||||||
// swagger:parameters repoSearch
|
|
||||||
type SearchRepoOption struct { // TODO: Move SearchRepoOption to Gitea SDK
|
|
||||||
// Keyword to search
|
|
||||||
//
|
|
||||||
// in: query
|
|
||||||
Keyword string `json:"q"`
|
|
||||||
// Repository owner to search
|
|
||||||
//
|
|
||||||
// in: query
|
|
||||||
OwnerID int64 `json:"uid"`
|
|
||||||
// Limit of result
|
|
||||||
//
|
|
||||||
// maximum: setting.ExplorePagingNum
|
|
||||||
// in: query
|
|
||||||
PageSize int `json:"limit"`
|
|
||||||
// Type of repository to search, related to owner
|
|
||||||
//
|
|
||||||
// in: query
|
|
||||||
SearchMode string `json:"mode"`
|
|
||||||
// Search only owners repositories
|
|
||||||
// Has effect only if owner is provided and mode is not "collaborative"
|
|
||||||
//
|
|
||||||
// in: query
|
|
||||||
OwnerExclusive bool `json:"exclusive"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Search repositories via options
|
// Search repositories via options
|
||||||
func Search(ctx *context.APIContext) {
|
func Search(ctx *context.APIContext) {
|
||||||
// swagger:route GET /repos/search repository repoSearch
|
// swagger:operation GET /repos/search repository repoSearch
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Search for repositories
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: SearchResults
|
// - name: q
|
||||||
// 422: validationError
|
// in: query
|
||||||
// 500: SearchError
|
// description: keyword
|
||||||
|
// type: string
|
||||||
|
// - name: uid
|
||||||
|
// in: query
|
||||||
|
// description: if provided, will return only repos owned by the user with the given id
|
||||||
|
// type: integer
|
||||||
|
// - name: limit
|
||||||
|
// in: query
|
||||||
|
// description: maximum number of repos to return
|
||||||
|
// type: integer
|
||||||
|
// - name: mode
|
||||||
|
// in: query
|
||||||
|
// description: type of repository to search for. Supported values are
|
||||||
|
// "fork", "source", "mirror" and "collaborative"
|
||||||
|
// type: string
|
||||||
|
// - name: exclusive
|
||||||
|
// in: query
|
||||||
|
// description: only search for repositories owned by the authenticated user
|
||||||
|
// type: boolean
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/SearchResults"
|
||||||
|
// "422":
|
||||||
|
// "$ref": "#/responses/validationError"
|
||||||
opts := &models.SearchRepoOptions{
|
opts := &models.SearchRepoOptions{
|
||||||
Keyword: strings.Trim(ctx.Query("q"), " "),
|
Keyword: strings.Trim(ctx.Query("q"), " "),
|
||||||
OwnerID: ctx.QueryInt64("uid"),
|
OwnerID: ctx.QueryInt64("uid"),
|
||||||
|
@ -187,22 +182,23 @@ func CreateUserRepo(ctx *context.APIContext, owner *models.User, opt api.CreateR
|
||||||
|
|
||||||
// Create one repository of mine
|
// Create one repository of mine
|
||||||
func Create(ctx *context.APIContext, opt api.CreateRepoOption) {
|
func Create(ctx *context.APIContext, opt api.CreateRepoOption) {
|
||||||
// swagger:route POST /user/repos repository user createCurrentUserRepo
|
// swagger:operation POST /user/repos repository user createCurrentUserRepo
|
||||||
//
|
// ---
|
||||||
// Consumes:
|
// summary: Create a repository
|
||||||
// - application/json
|
// consumes:
|
||||||
//
|
// - application/json
|
||||||
// Produces:
|
// produces:
|
||||||
// - application/json
|
// - application/json
|
||||||
//
|
// parameters:
|
||||||
// Responses:
|
// - name: body
|
||||||
// 201: Repository
|
// in: body
|
||||||
// 403: forbidden
|
// schema:
|
||||||
// 422: validationError
|
// "$ref": "#/definitions/CreateRepoOption"
|
||||||
// 500: error
|
// responses:
|
||||||
|
// "201":
|
||||||
// Shouldn't reach this condition, but just in case.
|
// "$ref": "#/responses/Repository"
|
||||||
if ctx.User.IsOrganization() {
|
if ctx.User.IsOrganization() {
|
||||||
|
// Shouldn't reach this condition, but just in case.
|
||||||
ctx.Error(422, "", "not allowed creating repository for organization")
|
ctx.Error(422, "", "not allowed creating repository for organization")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -211,20 +207,30 @@ func Create(ctx *context.APIContext, opt api.CreateRepoOption) {
|
||||||
|
|
||||||
// CreateOrgRepo create one repository of the organization
|
// CreateOrgRepo create one repository of the organization
|
||||||
func CreateOrgRepo(ctx *context.APIContext, opt api.CreateRepoOption) {
|
func CreateOrgRepo(ctx *context.APIContext, opt api.CreateRepoOption) {
|
||||||
// swagger:route POST /org/{org}/repos organization createOrgRepo
|
// swagger:operation POST /org/{org}/repos organization createOrgRepo
|
||||||
//
|
// ---
|
||||||
// Consumes:
|
// summary: Create a repository in an organization
|
||||||
// - application/json
|
// consumes:
|
||||||
//
|
// - application/json
|
||||||
// Produces:
|
// produces:
|
||||||
// - application/json
|
// - application/json
|
||||||
//
|
// parameters:
|
||||||
// Responses:
|
// - name: org
|
||||||
// 201: Repository
|
// in: path
|
||||||
// 422: validationError
|
// description: name of organization
|
||||||
// 403: forbidden
|
// type: string
|
||||||
// 500: error
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/CreateRepoOption"
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/Repository"
|
||||||
|
// "422":
|
||||||
|
// "$ref": "#/responses/validationError"
|
||||||
|
// "403":
|
||||||
|
// "$ref": "#/responses/forbidden"
|
||||||
org, err := models.GetOrgByName(ctx.Params(":org"))
|
org, err := models.GetOrgByName(ctx.Params(":org"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrOrgNotExist(err) {
|
if models.IsErrOrgNotExist(err) {
|
||||||
|
@ -244,19 +250,21 @@ func CreateOrgRepo(ctx *context.APIContext, opt api.CreateRepoOption) {
|
||||||
|
|
||||||
// Migrate migrate remote git repository to gitea
|
// Migrate migrate remote git repository to gitea
|
||||||
func Migrate(ctx *context.APIContext, form auth.MigrateRepoForm) {
|
func Migrate(ctx *context.APIContext, form auth.MigrateRepoForm) {
|
||||||
// swagger:route POST /repos/migrate repository repoMigrate
|
// swagger:operation POST /repos/migrate repository repoMigrate
|
||||||
//
|
// ---
|
||||||
// Consumes:
|
// summary: Migrate a remote git repository
|
||||||
// - application/json
|
// consumes:
|
||||||
//
|
// - application/json
|
||||||
// Produces:
|
// produces:
|
||||||
// - application/json
|
// - application/json
|
||||||
//
|
// parameters:
|
||||||
// Responses:
|
// - name: body
|
||||||
// 201: Repository
|
// in: body
|
||||||
// 422: validationError
|
// schema:
|
||||||
// 500: error
|
// "$ref": "#/definitions/MigrateRepoForm"
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/Repository"
|
||||||
ctxUser := ctx.User
|
ctxUser := ctx.User
|
||||||
// Not equal means context user is an organization,
|
// Not equal means context user is an organization,
|
||||||
// or is another user/organization if current user is admin.
|
// or is another user/organization if current user is admin.
|
||||||
|
@ -329,29 +337,44 @@ func Migrate(ctx *context.APIContext, form auth.MigrateRepoForm) {
|
||||||
|
|
||||||
// Get one repository
|
// Get one repository
|
||||||
func Get(ctx *context.APIContext) {
|
func Get(ctx *context.APIContext) {
|
||||||
// swagger:route GET /repos/{username}/{reponame} repository repoGet
|
// swagger:operation GET /repos/{owner}/{repo} repository repoGet
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Get a repository
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: Repository
|
// - name: owner
|
||||||
// 500: error
|
// 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/Repository"
|
||||||
ctx.JSON(200, ctx.Repo.Repository.APIFormat(ctx.Repo.AccessMode))
|
ctx.JSON(200, ctx.Repo.Repository.APIFormat(ctx.Repo.AccessMode))
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetByID returns a single Repository
|
// GetByID returns a single Repository
|
||||||
func GetByID(ctx *context.APIContext) {
|
func GetByID(ctx *context.APIContext) {
|
||||||
// swagger:route GET /repositories/{id} repository repoGetByID
|
// swagger:operation GET /repositories/{id} repository repoGetByID
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Get a repository by id
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: Repository
|
// - name: id
|
||||||
// 500: error
|
// in: path
|
||||||
|
// description: id of the repo to get
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Repository"
|
||||||
repo, err := models.GetRepositoryByID(ctx.ParamsInt64(":id"))
|
repo, err := models.GetRepositoryByID(ctx.ParamsInt64(":id"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrRepoNotExist(err) {
|
if models.IsErrRepoNotExist(err) {
|
||||||
|
@ -375,16 +398,27 @@ func GetByID(ctx *context.APIContext) {
|
||||||
|
|
||||||
// Delete one repository
|
// Delete one repository
|
||||||
func Delete(ctx *context.APIContext) {
|
func Delete(ctx *context.APIContext) {
|
||||||
// swagger:route DELETE /repos/{username}/{reponame} repository repoDelete
|
// swagger:operation DELETE /repos/{owner}/{repo} repository repoDelete
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Delete a repository
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 204: empty
|
// - name: owner
|
||||||
// 403: forbidden
|
// in: path
|
||||||
// 500: error
|
// description: owner of the repo to delete
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: repo
|
||||||
|
// in: path
|
||||||
|
// description: name of the repo to delete
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
|
// "403":
|
||||||
|
// "$ref": "#/responses/forbidden"
|
||||||
if !ctx.Repo.IsAdmin() {
|
if !ctx.Repo.IsAdmin() {
|
||||||
ctx.Error(403, "", "Must have admin rights")
|
ctx.Error(403, "", "Must have admin rights")
|
||||||
return
|
return
|
||||||
|
@ -408,15 +442,25 @@ func Delete(ctx *context.APIContext) {
|
||||||
|
|
||||||
// MirrorSync adds a mirrored repository to the sync queue
|
// MirrorSync adds a mirrored repository to the sync queue
|
||||||
func MirrorSync(ctx *context.APIContext) {
|
func MirrorSync(ctx *context.APIContext) {
|
||||||
// swagger:route POST /repos/{username}/{reponame}/mirror-sync repository repoMirrorSync
|
// swagger:operation POST /repos/{owner}/{repo}/mirror-sync repository repoMirrorSync
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Sync a mirrored repository
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: empty
|
// - name: owner
|
||||||
// 403: forbidden
|
// in: path
|
||||||
|
// description: owner of the repo to sync
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: repo
|
||||||
|
// in: path
|
||||||
|
// description: name of the repo to sync
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
repo := ctx.Repo.Repository
|
repo := ctx.Repo.Repository
|
||||||
|
|
||||||
if !ctx.Repo.IsWriter() {
|
if !ctx.Repo.IsWriter() {
|
||||||
|
|
|
@ -12,6 +12,25 @@ import (
|
||||||
|
|
||||||
// ListStargazers list a repository's stargazers
|
// ListStargazers list a repository's stargazers
|
||||||
func ListStargazers(ctx *context.APIContext) {
|
func ListStargazers(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/stargazers repository repoListStargazers
|
||||||
|
// ---
|
||||||
|
// summary: List a repo's stargazers
|
||||||
|
// 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/UserList"
|
||||||
stargazers, err := ctx.Repo.Repository.GetStargazers(-1)
|
stargazers, err := ctx.Repo.Repository.GetStargazers(-1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "GetStargazers", err)
|
ctx.Error(500, "GetStargazers", err)
|
||||||
|
|
|
@ -14,6 +14,34 @@ import (
|
||||||
|
|
||||||
// NewCommitStatus creates a new CommitStatus
|
// NewCommitStatus creates a new CommitStatus
|
||||||
func NewCommitStatus(ctx *context.APIContext, form api.CreateStatusOption) {
|
func NewCommitStatus(ctx *context.APIContext, form api.CreateStatusOption) {
|
||||||
|
// swagger:operation POST /repos/{owner}/{repo}/statuses/{sha} repository repoCreateStatus
|
||||||
|
// ---
|
||||||
|
// summary: Create a commit status
|
||||||
|
// 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
|
||||||
|
// - name: sha
|
||||||
|
// in: path
|
||||||
|
// description: sha of the commit
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/CreateStatusOption"
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/StatusList"
|
||||||
sha := ctx.Params("sha")
|
sha := ctx.Params("sha")
|
||||||
if len(sha) == 0 {
|
if len(sha) == 0 {
|
||||||
sha = ctx.Params("ref")
|
sha = ctx.Params("ref")
|
||||||
|
@ -43,10 +71,63 @@ func NewCommitStatus(ctx *context.APIContext, form api.CreateStatusOption) {
|
||||||
|
|
||||||
// GetCommitStatuses returns all statuses for any given commit hash
|
// GetCommitStatuses returns all statuses for any given commit hash
|
||||||
func GetCommitStatuses(ctx *context.APIContext) {
|
func GetCommitStatuses(ctx *context.APIContext) {
|
||||||
sha := ctx.Params("sha")
|
// swagger:operation GET /repos/{owner}/{repo}/statuses/{sha} repository repoListStatuses
|
||||||
if len(sha) == 0 {
|
// ---
|
||||||
sha = ctx.Params("ref")
|
// summary: Get a commit's statuses
|
||||||
}
|
// 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
|
||||||
|
// - name: sha
|
||||||
|
// in: path
|
||||||
|
// description: sha of the commit
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/StatusList"
|
||||||
|
getCommitStatuses(ctx, ctx.Params("sha"))
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCommitStatusesByRef returns all statuses for any given commit ref
|
||||||
|
func GetCommitStatusesByRef(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/commits/{ref}/statuses repository repoListStatusesByRef
|
||||||
|
// ---
|
||||||
|
// summary: Get a commit's statuses, by branch/tag/commit reference
|
||||||
|
// 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
|
||||||
|
// - name: ref
|
||||||
|
// in: path
|
||||||
|
// description: name of branch/tag/commit
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/StatusList"
|
||||||
|
getCommitStatuses(ctx, ctx.Params("ref"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func getCommitStatuses(ctx *context.APIContext, sha string) {
|
||||||
if len(sha) == 0 {
|
if len(sha) == 0 {
|
||||||
ctx.Error(400, "ref/sha not given", nil)
|
ctx.Error(400, "ref/sha not given", nil)
|
||||||
return
|
return
|
||||||
|
@ -78,12 +159,33 @@ type combinedCommitStatus struct {
|
||||||
URL string `json:"url"`
|
URL string `json:"url"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetCombinedCommitStatus returns the combined status for any given commit hash
|
// GetCombinedCommitStatusByRef returns the combined status for any given commit hash
|
||||||
func GetCombinedCommitStatus(ctx *context.APIContext) {
|
func GetCombinedCommitStatusByRef(ctx *context.APIContext) {
|
||||||
sha := ctx.Params("sha")
|
// swagger:operation GET /repos/{owner}/{repo}/commits/{ref}/statuses repository repoGetCombinedStatusByRef
|
||||||
if len(sha) == 0 {
|
// ---
|
||||||
sha = ctx.Params("ref")
|
// summary: Get a commit's combined status, by branch/tag/commit reference
|
||||||
}
|
// 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
|
||||||
|
// - name: ref
|
||||||
|
// in: path
|
||||||
|
// description: name of branch/tag/commit
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/Status"
|
||||||
|
sha := ctx.Params("ref")
|
||||||
if len(sha) == 0 {
|
if len(sha) == 0 {
|
||||||
ctx.Error(400, "ref/sha not given", nil)
|
ctx.Error(400, "ref/sha not given", nil)
|
||||||
return
|
return
|
||||||
|
|
|
@ -12,6 +12,25 @@ import (
|
||||||
|
|
||||||
// ListSubscribers list a repo's subscribers (i.e. watchers)
|
// ListSubscribers list a repo's subscribers (i.e. watchers)
|
||||||
func ListSubscribers(ctx *context.APIContext) {
|
func ListSubscribers(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /repos/{owner}/{repo}/subscribers repository repoListSubscribers
|
||||||
|
// ---
|
||||||
|
// summary: List a repo's watchers
|
||||||
|
// 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/UserList"
|
||||||
subscribers, err := ctx.Repo.Repository.GetWatchers(0)
|
subscribers, err := ctx.Repo.Repository.GetWatchers(0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "GetWatchers", err)
|
ctx.Error(500, "GetWatchers", err)
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
// Copyright 2017 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package swagger
|
||||||
|
|
||||||
|
import (
|
||||||
|
api "code.gitea.io/sdk/gitea"
|
||||||
|
)
|
||||||
|
|
||||||
|
// swagger:response Issue
|
||||||
|
type swaggerResponseIssue struct {
|
||||||
|
// in:body
|
||||||
|
Body api.Issue `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response IssueList
|
||||||
|
type swaggerResponseIssueList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.Issue `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response Comment
|
||||||
|
type swaggerResponseComment struct {
|
||||||
|
// in:body
|
||||||
|
Body api.Comment `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response CommentList
|
||||||
|
type swaggerResponseCommentList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.Comment `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response Label
|
||||||
|
type swaggerResponseLabel struct {
|
||||||
|
// in:body
|
||||||
|
Body api.Label `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response LabelList
|
||||||
|
type swaggerResponseLabelList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.Label `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response Milestone
|
||||||
|
type swaggerResponseMilestone struct {
|
||||||
|
// in:body
|
||||||
|
Body api.Milestone `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response MilestoneList
|
||||||
|
type swaggerResponseMilestoneList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.Milestone `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response TrackedTime
|
||||||
|
type swaggerResponseTrackedTime struct {
|
||||||
|
// in:body
|
||||||
|
Body api.TrackedTime `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response TrackedTimeList
|
||||||
|
type swaggerResponseTrackedTimeList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.TrackedTime `json:"body"`
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
// Copyright 2017 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package swagger
|
||||||
|
|
||||||
|
import (
|
||||||
|
api "code.gitea.io/sdk/gitea"
|
||||||
|
)
|
||||||
|
|
||||||
|
// swagger:response PublicKey
|
||||||
|
type swaggerResponsePublicKey struct {
|
||||||
|
// in:body
|
||||||
|
Body api.PublicKey `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response PublicKeyList
|
||||||
|
type swaggerResponsePublicKeyList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.PublicKey `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response GPGKey
|
||||||
|
type swaggerResponseGPGKey struct {
|
||||||
|
// in:body
|
||||||
|
Body api.GPGKey `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response GPGKeyList
|
||||||
|
type swaggerResponseGPGKeyList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.GPGKey `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response DeployKey
|
||||||
|
type swaggerResponseDeployKey struct {
|
||||||
|
// in:body
|
||||||
|
Body api.DeployKey `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response DeployKeyList
|
||||||
|
type swaggerResponseDeployKeyList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.DeployKey `json:"body"`
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
// Copyright 2017 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package swagger
|
||||||
|
|
||||||
|
import (
|
||||||
|
api "code.gitea.io/sdk/gitea"
|
||||||
|
)
|
||||||
|
|
||||||
|
// swagger:response ServerVersion
|
||||||
|
type swaggerResponseServerVersion struct {
|
||||||
|
// in:body
|
||||||
|
Body api.ServerVersion `json:"body"`
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
// Copyright 2017 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package swagger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"code.gitea.io/gitea/modules/auth"
|
||||||
|
api "code.gitea.io/sdk/gitea"
|
||||||
|
)
|
||||||
|
|
||||||
|
// not actually a response, just a hack to get go-swagger to include definitions
|
||||||
|
// of the various XYZOption structs
|
||||||
|
|
||||||
|
// swagger:response parameterBodies
|
||||||
|
type swaggerParameterBodies struct {
|
||||||
|
AddCollaboratorOption api.AddCollaboratorOption
|
||||||
|
|
||||||
|
CreateEmailOption api.CreateEmailOption
|
||||||
|
DeleteEmailOption api.DeleteEmailOption
|
||||||
|
|
||||||
|
CreateHookOption api.CreateHookOption
|
||||||
|
EditHookOption api.EditHookOption
|
||||||
|
|
||||||
|
CreateIssueOption api.CreateIssueOption
|
||||||
|
EditIssueOption api.EditIssueOption
|
||||||
|
|
||||||
|
CreateIssueCommentOption api.CreateIssueCommentOption
|
||||||
|
EditIssueCommentOption api.EditIssueCommentOption
|
||||||
|
|
||||||
|
IssueLabelsOption api.IssueLabelsOption
|
||||||
|
|
||||||
|
CreateKeyOption api.CreateKeyOption
|
||||||
|
|
||||||
|
CreateLabelOption api.CreateLabelOption
|
||||||
|
EditLabelOption api.EditLabelOption
|
||||||
|
|
||||||
|
MarkdownOption api.MarkdownOption
|
||||||
|
|
||||||
|
CreateMilestoneOption api.CreateMilestoneOption
|
||||||
|
EditMilestoneOption api.EditMilestoneOption
|
||||||
|
|
||||||
|
CreateOrgOption api.CreateOrgOption
|
||||||
|
EditOrgOption api.EditOrgOption
|
||||||
|
|
||||||
|
CreatePullRequestOption api.CreatePullRequestOption
|
||||||
|
EditPullRequestOption api.EditPullRequestOption
|
||||||
|
|
||||||
|
CreateReleaseOption api.CreateReleaseOption
|
||||||
|
EditReleaseOption api.EditReleaseOption
|
||||||
|
|
||||||
|
CreateRepoOption api.CreateRepoOption
|
||||||
|
CreateForkOption api.CreateForkOption
|
||||||
|
|
||||||
|
CreateStatusOption api.CreateStatusOption
|
||||||
|
|
||||||
|
CreateTeamOption api.CreateTeamOption
|
||||||
|
EditTeamOption api.EditTeamOption
|
||||||
|
|
||||||
|
AddTimeOption api.AddTimeOption
|
||||||
|
|
||||||
|
CreateUserOption api.CreateUserOption
|
||||||
|
EditUserOption api.EditUserOption
|
||||||
|
|
||||||
|
MigrateRepoForm auth.MigrateRepoForm
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
// Copyright 2017 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package swagger
|
||||||
|
|
||||||
|
import (
|
||||||
|
api "code.gitea.io/sdk/gitea"
|
||||||
|
)
|
||||||
|
|
||||||
|
// swagger:response Organization
|
||||||
|
type swaggerResponseOrganization struct {
|
||||||
|
// in:body
|
||||||
|
Body api.Organization `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response OrganizationList
|
||||||
|
type swaggerResponseOrganizationList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.Organization `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response Team
|
||||||
|
type swaggerResponseTeam struct {
|
||||||
|
// in:body
|
||||||
|
Body api.Team `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response TeamList
|
||||||
|
type swaggerResponseTeamList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.Team `json:"body"`
|
||||||
|
}
|
|
@ -0,0 +1,92 @@
|
||||||
|
// Copyright 2017 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package swagger
|
||||||
|
|
||||||
|
import (
|
||||||
|
api "code.gitea.io/sdk/gitea"
|
||||||
|
)
|
||||||
|
|
||||||
|
// swagger:response Repository
|
||||||
|
type swaggerResponseRepository struct {
|
||||||
|
// in:body
|
||||||
|
Body api.Repository `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response RepositoryList
|
||||||
|
type swaggerResponseRepositoryList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.Repository `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response Branch
|
||||||
|
type swaggerResponseBranch struct {
|
||||||
|
// in:body
|
||||||
|
Body api.Branch `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response BranchList
|
||||||
|
type swaggerResponseBranchList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.Branch `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response Hook
|
||||||
|
type swaggerResponseHook struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.Branch `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response HookList
|
||||||
|
type swaggerResponseHookList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.Branch `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response Release
|
||||||
|
type swaggerResponseRelease struct {
|
||||||
|
// in:body
|
||||||
|
Body api.Release `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response ReleaseList
|
||||||
|
type swaggerResponseReleaseList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.Release `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response PullRequest
|
||||||
|
type swaggerResponsePullRequest struct {
|
||||||
|
// in:body
|
||||||
|
Body api.PullRequest `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response PullRequestList
|
||||||
|
type swaggerResponsePullRequestList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.PullRequest `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response Status
|
||||||
|
type swaggerResponseStatus struct {
|
||||||
|
// in:body
|
||||||
|
Body api.Status `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response StatusList
|
||||||
|
type swaggerResponseStatusList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.Status `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response WatchInfo
|
||||||
|
type swaggerResponseWatchInfo struct {
|
||||||
|
// in:body
|
||||||
|
Body api.WatchInfo `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response SearchResults
|
||||||
|
type swaggerResponseSearchResults struct {
|
||||||
|
Body api.SearchResults `json:"body"`
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
// Copyright 2017 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package swagger
|
||||||
|
|
||||||
|
import (
|
||||||
|
api "code.gitea.io/sdk/gitea"
|
||||||
|
)
|
||||||
|
|
||||||
|
// swagger:response User
|
||||||
|
type swaggerResponseUser struct {
|
||||||
|
// in:body
|
||||||
|
Body api.User `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response UserList
|
||||||
|
type swaggerResponseUserList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.User `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:response EmailList
|
||||||
|
type swaggerResponseEmailList struct {
|
||||||
|
// in:body
|
||||||
|
Body []api.Email `json:"body"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// swagger:model EditUserOption
|
||||||
|
type swaggerModelEditUserOption struct {
|
||||||
|
// in:body
|
||||||
|
Options api.EditUserOption
|
||||||
|
}
|
|
@ -13,15 +13,14 @@ import (
|
||||||
|
|
||||||
// ListAccessTokens list all the access tokens
|
// ListAccessTokens list all the access tokens
|
||||||
func ListAccessTokens(ctx *context.APIContext) {
|
func ListAccessTokens(ctx *context.APIContext) {
|
||||||
// swagger:route GET /users/{username}/tokens user userGetTokens
|
// swagger:operation GET /users/{username}/tokens user userGetTokens
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List the authenticated user's access tokens
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// responses:
|
||||||
// 200: AccessTokenList
|
// "200":
|
||||||
// 500: error
|
// "$ref": "#/responses/AccessTokenList"
|
||||||
|
|
||||||
tokens, err := models.ListAccessTokens(ctx.User.ID)
|
tokens, err := models.ListAccessTokens(ctx.User.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "ListAccessTokens", err)
|
ctx.Error(500, "ListAccessTokens", err)
|
||||||
|
@ -40,18 +39,16 @@ func ListAccessTokens(ctx *context.APIContext) {
|
||||||
|
|
||||||
// CreateAccessToken create access tokens
|
// CreateAccessToken create access tokens
|
||||||
func CreateAccessToken(ctx *context.APIContext, form api.CreateAccessTokenOption) {
|
func CreateAccessToken(ctx *context.APIContext, form api.CreateAccessTokenOption) {
|
||||||
// swagger:route POST /users/{username} /tokens user userCreateToken
|
// swagger:operation POST /users/{username}/tokens user userCreateToken
|
||||||
//
|
// ---
|
||||||
// Consumes:
|
// summary: Create an access token
|
||||||
// - application/json
|
// consumes:
|
||||||
//
|
// - application/json
|
||||||
// Produces:
|
// produces:
|
||||||
// - application/json
|
// - application/json
|
||||||
//
|
// responses:
|
||||||
// Responses:
|
// "200":
|
||||||
// 200: AccessToken
|
// "$ref": "#/responses/AccessToken"
|
||||||
// 500: error
|
|
||||||
|
|
||||||
t := &models.AccessToken{
|
t := &models.AccessToken{
|
||||||
UID: ctx.User.ID,
|
UID: ctx.User.ID,
|
||||||
Name: form.Name,
|
Name: form.Name,
|
||||||
|
|
|
@ -13,9 +13,17 @@ import (
|
||||||
"code.gitea.io/gitea/routers/api/v1/convert"
|
"code.gitea.io/gitea/routers/api/v1/convert"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ListEmails list all the emails of mine
|
// ListEmails list all of the authenticated user's email addresses
|
||||||
// see https://github.com/gogits/go-gogs-client/wiki/Users-Emails#list-email-addresses-for-a-user
|
// see https://github.com/gogits/go-gogs-client/wiki/Users-Emails#list-email-addresses-for-a-user
|
||||||
func ListEmails(ctx *context.APIContext) {
|
func ListEmails(ctx *context.APIContext) {
|
||||||
|
// swagger:operation GET /user/emails user userListEmails
|
||||||
|
// ---
|
||||||
|
// summary: List the authenticated user's email addresses
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/EmailList"
|
||||||
emails, err := models.GetEmailAddresses(ctx.User.ID)
|
emails, err := models.GetEmailAddresses(ctx.User.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "GetEmailAddresses", err)
|
ctx.Error(500, "GetEmailAddresses", err)
|
||||||
|
@ -28,9 +36,26 @@ func ListEmails(ctx *context.APIContext) {
|
||||||
ctx.JSON(200, &apiEmails)
|
ctx.JSON(200, &apiEmails)
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddEmail add email for me
|
// AddEmail add an email address
|
||||||
// see https://github.com/gogits/go-gogs-client/wiki/Users-Emails#add-email-addresses
|
|
||||||
func AddEmail(ctx *context.APIContext, form api.CreateEmailOption) {
|
func AddEmail(ctx *context.APIContext, form api.CreateEmailOption) {
|
||||||
|
// swagger:operation POST /user/emails user userAddEmail
|
||||||
|
// ---
|
||||||
|
// summary: Add email addresses
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: options
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/CreateEmailOption"
|
||||||
|
// parameters:
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/CreateEmailOption"
|
||||||
|
// responses:
|
||||||
|
// '201':
|
||||||
|
// "$ref": "#/responses/EmailList"
|
||||||
if len(form.Emails) == 0 {
|
if len(form.Emails) == 0 {
|
||||||
ctx.Status(422)
|
ctx.Status(422)
|
||||||
return
|
return
|
||||||
|
@ -62,8 +87,20 @@ func AddEmail(ctx *context.APIContext, form api.CreateEmailOption) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteEmail delete email
|
// DeleteEmail delete email
|
||||||
// see https://github.com/gogits/go-gogs-client/wiki/Users-Emails#delete-email-addresses
|
func DeleteEmail(ctx *context.APIContext, form api.DeleteEmailOption) {
|
||||||
func DeleteEmail(ctx *context.APIContext, form api.CreateEmailOption) {
|
// swagger:operation DELETE /user/emails user userDeleteEmail
|
||||||
|
// ---
|
||||||
|
// summary: Delete email addresses
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// parameters:
|
||||||
|
// - name: body
|
||||||
|
// in: body
|
||||||
|
// schema:
|
||||||
|
// "$ref": "#/definitions/DeleteEmailOption"
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
if len(form.Emails) == 0 {
|
if len(form.Emails) == 0 {
|
||||||
ctx.Status(204)
|
ctx.Status(204)
|
||||||
return
|
return
|
||||||
|
|
|
@ -28,31 +28,35 @@ func listUserFollowers(ctx *context.APIContext, u *models.User) {
|
||||||
responseAPIUsers(ctx, users)
|
responseAPIUsers(ctx, users)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListMyFollowers list all my followers
|
// ListMyFollowers list the authenticated user's followers
|
||||||
func ListMyFollowers(ctx *context.APIContext) {
|
func ListMyFollowers(ctx *context.APIContext) {
|
||||||
// swagger:route GET /user/followers user userCurrentListFollowers
|
// swagger:operation GET /user/followers user userCurrentListFollowers
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List the authenticated user's followers
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// responses:
|
||||||
// 200: UserList
|
// "200":
|
||||||
// 500: error
|
// "$ref": "#/responses/UserList"
|
||||||
|
|
||||||
listUserFollowers(ctx, ctx.User)
|
listUserFollowers(ctx, ctx.User)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListFollowers list user's followers
|
// ListFollowers list the given user's followers
|
||||||
func ListFollowers(ctx *context.APIContext) {
|
func ListFollowers(ctx *context.APIContext) {
|
||||||
// swagger:route GET /users/:username/followers user userListFollowers
|
// swagger:operation GET /users/{username}/followers user userListFollowers
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List the given user's followers
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: UserList
|
// - name: username
|
||||||
// 500: error
|
// in: path
|
||||||
|
// description: username of user
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/UserList"
|
||||||
u := GetUserByParams(ctx)
|
u := GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -69,31 +73,35 @@ func listUserFollowing(ctx *context.APIContext, u *models.User) {
|
||||||
responseAPIUsers(ctx, users)
|
responseAPIUsers(ctx, users)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListMyFollowing list all my followings
|
// ListMyFollowing list the users that the authenticated user is following
|
||||||
func ListMyFollowing(ctx *context.APIContext) {
|
func ListMyFollowing(ctx *context.APIContext) {
|
||||||
// swagger:route GET /user/following user userCurrentListFollowing
|
// swagger:operation GET /user/following user userCurrentListFollowing
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List the users that the authenticated user is following
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// responses:
|
||||||
// 200: UserList
|
// "200":
|
||||||
// 500: error
|
// "$ref": "#/responses/UserList"
|
||||||
|
|
||||||
listUserFollowing(ctx, ctx.User)
|
listUserFollowing(ctx, ctx.User)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListFollowing list user's followings
|
// ListFollowing list the users that the given user is following
|
||||||
func ListFollowing(ctx *context.APIContext) {
|
func ListFollowing(ctx *context.APIContext) {
|
||||||
// swagger:route GET /users/{username}/following user userListFollowing
|
// swagger:operation GET /users/{username}/following user userListFollowing
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List the users that the given user is following
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: UserList
|
// - name: username
|
||||||
// 500: error
|
// in: path
|
||||||
|
// description: username of user
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/UserList"
|
||||||
u := GetUserByParams(ctx)
|
u := GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -109,14 +117,22 @@ func checkUserFollowing(ctx *context.APIContext, u *models.User, followID int64)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// CheckMyFollowing check if the repo is followed by me
|
// CheckMyFollowing whether the given user is followed by the authenticated user
|
||||||
func CheckMyFollowing(ctx *context.APIContext) {
|
func CheckMyFollowing(ctx *context.APIContext) {
|
||||||
// swagger:route GET /user/following/{username} user userCurrentCheckFollowing
|
// swagger:operation GET /user/following/{followee} user userCurrentCheckFollowing
|
||||||
//
|
// ---
|
||||||
// Responses:
|
// summary: Check whether a user is followed by the authenticated user
|
||||||
// 204: empty
|
// parameters:
|
||||||
// 404: notFound
|
// - name: followee
|
||||||
|
// in: path
|
||||||
|
// description: username of followed user
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
|
// "404":
|
||||||
|
// "$ref": "#/responses/notFound"
|
||||||
target := GetUserByParams(ctx)
|
target := GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -124,14 +140,27 @@ func CheckMyFollowing(ctx *context.APIContext) {
|
||||||
checkUserFollowing(ctx, ctx.User, target.ID)
|
checkUserFollowing(ctx, ctx.User, target.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CheckFollowing check if the repo is followed by user
|
// CheckFollowing check if one user is following another user
|
||||||
func CheckFollowing(ctx *context.APIContext) {
|
func CheckFollowing(ctx *context.APIContext) {
|
||||||
// swagger:route GET /users/{username}/following/:target user userCheckFollowing
|
// swagger:operation GET /users/{follower}/following/{followee} user userCheckFollowing
|
||||||
//
|
// ---
|
||||||
// Responses:
|
// summary: Check if one user is following another user
|
||||||
// 204: empty
|
// parameters:
|
||||||
// 404: notFound
|
// - name: follower
|
||||||
|
// in: path
|
||||||
|
// description: username of following user
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: followee
|
||||||
|
// in: path
|
||||||
|
// description: username of followed user
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
|
// "404":
|
||||||
|
// "$ref": "#/responses/notFound"
|
||||||
u := GetUserByParams(ctx)
|
u := GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -143,14 +172,20 @@ func CheckFollowing(ctx *context.APIContext) {
|
||||||
checkUserFollowing(ctx, u, target.ID)
|
checkUserFollowing(ctx, u, target.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Follow follow one repository
|
// Follow follow a user
|
||||||
func Follow(ctx *context.APIContext) {
|
func Follow(ctx *context.APIContext) {
|
||||||
// swagger:route PUT /user/following/{username} user userCurrentPutFollow
|
// swagger:operation PUT /user/following/{username} user userCurrentPutFollow
|
||||||
//
|
// ---
|
||||||
// Responses:
|
// summary: Follow a user
|
||||||
// 204: empty
|
// parameters:
|
||||||
// 500: error
|
// - name: username
|
||||||
|
// in: path
|
||||||
|
// description: username of user to follow
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
target := GetUserByParams(ctx)
|
target := GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -162,14 +197,20 @@ func Follow(ctx *context.APIContext) {
|
||||||
ctx.Status(204)
|
ctx.Status(204)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unfollow unfollow one repository
|
// Unfollow unfollow a user
|
||||||
func Unfollow(ctx *context.APIContext) {
|
func Unfollow(ctx *context.APIContext) {
|
||||||
// swagger:route DELETE /user/following/{username} user userCurrentDeleteFollow
|
// swagger:operation DELETE /user/following/{username} user userCurrentDeleteFollow
|
||||||
//
|
// ---
|
||||||
// Responses:
|
// summary: Unfollow a user
|
||||||
// 204: empty
|
// parameters:
|
||||||
// 500: error
|
// - name: username
|
||||||
|
// in: path
|
||||||
|
// description: username of user to unfollow
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
target := GetUserByParams(ctx)
|
target := GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
|
|
@ -34,15 +34,20 @@ func listGPGKeys(ctx *context.APIContext, uid int64) {
|
||||||
|
|
||||||
//ListGPGKeys get the GPG key list of a user
|
//ListGPGKeys get the GPG key list of a user
|
||||||
func ListGPGKeys(ctx *context.APIContext) {
|
func ListGPGKeys(ctx *context.APIContext) {
|
||||||
// swagger:route GET /users/{username}/gpg_keys user userListGPGKeys
|
// swagger:operation GET /users/{username}/gpg_keys user userListGPGKeys
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List the given user's GPG keys
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: GPGKeyList
|
// - name: username
|
||||||
// 500: error
|
// in: path
|
||||||
|
// description: username of user
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/GPGKeyList"
|
||||||
user := GetUserByParams(ctx)
|
user := GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -50,32 +55,37 @@ func ListGPGKeys(ctx *context.APIContext) {
|
||||||
listGPGKeys(ctx, user.ID)
|
listGPGKeys(ctx, user.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
//ListMyGPGKeys get the GPG key list of the logged user
|
//ListMyGPGKeys get the GPG key list of the authenticated user
|
||||||
func ListMyGPGKeys(ctx *context.APIContext) {
|
func ListMyGPGKeys(ctx *context.APIContext) {
|
||||||
// swagger:route GET /user/gpg_keys user userCurrentListGPGKeys
|
// swagger:operation GET /user/gpg_keys user userCurrentListGPGKeys
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List the authenticated user's GPG keys
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// responses:
|
||||||
// 200: GPGKeyList
|
// "200":
|
||||||
// 500: error
|
// "$ref": "#/responses/GPGKeyList"
|
||||||
|
|
||||||
listGPGKeys(ctx, ctx.User.ID)
|
listGPGKeys(ctx, ctx.User.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
//GetGPGKey get the GPG key based on a id
|
//GetGPGKey get the GPG key based on a id
|
||||||
func GetGPGKey(ctx *context.APIContext) {
|
func GetGPGKey(ctx *context.APIContext) {
|
||||||
// swagger:route GET /user/gpg_keys/{id} user userCurrentGetGPGKey
|
// swagger:operation GET /user/gpg_keys/{id} user userCurrentGetGPGKey
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Get a GPG key
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: GPGKey
|
// - name: id
|
||||||
// 404: notFound
|
// in: path
|
||||||
// 500: error
|
// description: id of key to get
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/GPGKey"
|
||||||
|
// "404":
|
||||||
|
// "$ref": "#/responses/notFound"
|
||||||
key, err := models.GetGPGKeyByID(ctx.ParamsInt64(":id"))
|
key, err := models.GetGPGKeyByID(ctx.ParamsInt64(":id"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrGPGKeyNotExist(err) {
|
if models.IsErrGPGKeyNotExist(err) {
|
||||||
|
@ -98,36 +108,47 @@ func CreateUserGPGKey(ctx *context.APIContext, form api.CreateGPGKeyOption, uid
|
||||||
ctx.JSON(201, convert.ToGPGKey(key))
|
ctx.JSON(201, convert.ToGPGKey(key))
|
||||||
}
|
}
|
||||||
|
|
||||||
//CreateGPGKey associate a GPG key to the current user
|
// swagger:parameters userCurrentPostGPGKey
|
||||||
func CreateGPGKey(ctx *context.APIContext, form api.CreateGPGKeyOption) {
|
type swaggerUserCurrentPostGPGKey struct {
|
||||||
// swagger:route POST /user/gpg_keys user userCurrentPostGPGKey
|
// in:body
|
||||||
//
|
Form api.CreateGPGKeyOption
|
||||||
// Consumes:
|
}
|
||||||
// - application/json
|
|
||||||
//
|
|
||||||
// Produces:
|
|
||||||
// - application/json
|
|
||||||
//
|
|
||||||
// Responses:
|
|
||||||
// 201: GPGKey
|
|
||||||
// 422: validationError
|
|
||||||
// 500: error
|
|
||||||
|
|
||||||
|
//CreateGPGKey create a GPG key belonging to the authenticated user
|
||||||
|
func CreateGPGKey(ctx *context.APIContext, form api.CreateGPGKeyOption) {
|
||||||
|
// swagger:operation POST /user/gpg_keys user userCurrentPostGPGKey
|
||||||
|
// ---
|
||||||
|
// summary: Create a GPG key
|
||||||
|
// consumes:
|
||||||
|
// - application/json
|
||||||
|
// produces:
|
||||||
|
// - application/json
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/GPGKey"
|
||||||
|
// "422":
|
||||||
|
// "$ref": "#/responses/validationError"
|
||||||
CreateUserGPGKey(ctx, form, ctx.User.ID)
|
CreateUserGPGKey(ctx, form, ctx.User.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
//DeleteGPGKey remove a GPG key associated to the current user
|
//DeleteGPGKey remove a GPG key belonging to the authenticated user
|
||||||
func DeleteGPGKey(ctx *context.APIContext) {
|
func DeleteGPGKey(ctx *context.APIContext) {
|
||||||
// swagger:route DELETE /user/gpg_keys/{id} user userCurrentDeleteGPGKey
|
// swagger:operation DELETE /user/gpg_keys/{id} user userCurrentDeleteGPGKey
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Remove a GPG key
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 204: empty
|
// - name: id
|
||||||
// 403: forbidden
|
// in: path
|
||||||
// 500: error
|
// description: id of key to delete
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
|
// "403":
|
||||||
|
// "$ref": "#/responses/forbidden"
|
||||||
if err := models.DeleteGPGKey(ctx.User, ctx.ParamsInt64(":id")); err != nil {
|
if err := models.DeleteGPGKey(ctx.User, ctx.ParamsInt64(":id")); err != nil {
|
||||||
if models.IsErrGPGKeyAccessDenied(err) {
|
if models.IsErrGPGKeyAccessDenied(err) {
|
||||||
ctx.Error(403, "", "You do not have access to this key")
|
ctx.Error(403, "", "You do not have access to this key")
|
||||||
|
@ -144,9 +165,9 @@ func DeleteGPGKey(ctx *context.APIContext) {
|
||||||
func HandleAddGPGKeyError(ctx *context.APIContext, err error) {
|
func HandleAddGPGKeyError(ctx *context.APIContext, err error) {
|
||||||
switch {
|
switch {
|
||||||
case models.IsErrGPGKeyAccessDenied(err):
|
case models.IsErrGPGKeyAccessDenied(err):
|
||||||
ctx.Error(422, "", "You do not have access to this gpg key")
|
ctx.Error(422, "", "You do not have access to this GPG key")
|
||||||
case models.IsErrGPGKeyIDAlreadyUsed(err):
|
case models.IsErrGPGKeyIDAlreadyUsed(err):
|
||||||
ctx.Error(422, "", "A key with the same keyid is already in database")
|
ctx.Error(422, "", "A key with the same id already exists")
|
||||||
default:
|
default:
|
||||||
ctx.Error(500, "AddGPGKey", err)
|
ctx.Error(500, "AddGPGKey", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,31 +53,35 @@ func listPublicKeys(ctx *context.APIContext, uid int64) {
|
||||||
ctx.JSON(200, &apiKeys)
|
ctx.JSON(200, &apiKeys)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListMyPublicKeys list all my public keys
|
// ListMyPublicKeys list all of the authenticated user's public keys
|
||||||
func ListMyPublicKeys(ctx *context.APIContext) {
|
func ListMyPublicKeys(ctx *context.APIContext) {
|
||||||
// swagger:route GET /user/keys user userCurrentListKeys
|
// swagger:operation GET /user/keys user userCurrentListKeys
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List the authenticated user's public keys
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// responses:
|
||||||
// 200: PublicKeyList
|
// "200":
|
||||||
// 500: error
|
// "$ref": "#/responses/PublicKeyList"
|
||||||
|
|
||||||
listPublicKeys(ctx, ctx.User.ID)
|
listPublicKeys(ctx, ctx.User.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListPublicKeys list all user's public keys
|
// ListPublicKeys list the given user's public keys
|
||||||
func ListPublicKeys(ctx *context.APIContext) {
|
func ListPublicKeys(ctx *context.APIContext) {
|
||||||
// swagger:route GET /users/{username}/keys user userListKeys
|
// swagger:operation GET /users/{username}/keys user userListKeys
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List the given user's public keys
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: PublicKeyList
|
// - name: username
|
||||||
// 500: error
|
// in: path
|
||||||
|
// description: username of user
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/PublicKeyList"
|
||||||
user := GetUserByParams(ctx)
|
user := GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -85,18 +89,24 @@ func ListPublicKeys(ctx *context.APIContext) {
|
||||||
listPublicKeys(ctx, user.ID)
|
listPublicKeys(ctx, user.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPublicKey get one public key
|
// GetPublicKey get a public key
|
||||||
func GetPublicKey(ctx *context.APIContext) {
|
func GetPublicKey(ctx *context.APIContext) {
|
||||||
// swagger:route GET /user/keys/{id} user userCurrentGetKey
|
// swagger:operation GET /user/keys/{id} user userCurrentGetKey
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Get a public key
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: PublicKey
|
// - name: id
|
||||||
// 404: notFound
|
// in: path
|
||||||
// 500: error
|
// description: id of key to get
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/PublicKey"
|
||||||
|
// "404":
|
||||||
|
// "$ref": "#/responses/notFound"
|
||||||
key, err := models.GetPublicKeyByID(ctx.ParamsInt64(":id"))
|
key, err := models.GetPublicKeyByID(ctx.ParamsInt64(":id"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrKeyNotExist(err) {
|
if models.IsErrKeyNotExist(err) {
|
||||||
|
@ -130,34 +140,44 @@ func CreateUserPublicKey(ctx *context.APIContext, form api.CreateKeyOption, uid
|
||||||
|
|
||||||
// CreatePublicKey create one public key for me
|
// CreatePublicKey create one public key for me
|
||||||
func CreatePublicKey(ctx *context.APIContext, form api.CreateKeyOption) {
|
func CreatePublicKey(ctx *context.APIContext, form api.CreateKeyOption) {
|
||||||
// swagger:route POST /user/keys user userCurrentPostKey
|
// swagger:operation POST /user/keys user userCurrentPostKey
|
||||||
//
|
// ---
|
||||||
// Consumes:
|
// summary: Create a public key
|
||||||
// - application/json
|
// consumes:
|
||||||
//
|
// - application/json
|
||||||
// Produces:
|
// produces:
|
||||||
// - application/json
|
// - application/json
|
||||||
//
|
// parameters:
|
||||||
// Responses:
|
// - name: body
|
||||||
// 201: PublicKey
|
// in: body
|
||||||
// 422: validationError
|
// schema:
|
||||||
// 500: error
|
// "$ref": "#/definitions/CreateKeyOption"
|
||||||
|
// responses:
|
||||||
|
// "201":
|
||||||
|
// "$ref": "#/responses/PublicKey"
|
||||||
|
// "422":
|
||||||
|
// "$ref": "#/responses/validationError"
|
||||||
CreateUserPublicKey(ctx, form, ctx.User.ID)
|
CreateUserPublicKey(ctx, form, ctx.User.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeletePublicKey delete one public key of mine
|
// DeletePublicKey delete one public key
|
||||||
func DeletePublicKey(ctx *context.APIContext) {
|
func DeletePublicKey(ctx *context.APIContext) {
|
||||||
// swagger:route DELETE /user/keys/{id} user userCurrentDeleteKey
|
// swagger:operation DELETE /user/keys/{id} user userCurrentDeleteKey
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Delete a public key
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 204: empty
|
// - name: id
|
||||||
// 403: forbidden
|
// in: path
|
||||||
// 500: error
|
// description: id of key to delete
|
||||||
|
// type: integer
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
|
// "403":
|
||||||
|
// "$ref": "#/responses/forbidden"
|
||||||
if err := models.DeletePublicKey(ctx.User, ctx.ParamsInt64(":id")); err != nil {
|
if err := models.DeletePublicKey(ctx.User, ctx.ParamsInt64(":id")); err != nil {
|
||||||
if models.IsErrKeyAccessDenied(err) {
|
if models.IsErrKeyAccessDenied(err) {
|
||||||
ctx.Error(403, "", "You do not have access to this key")
|
ctx.Error(403, "", "You do not have access to this key")
|
||||||
|
|
|
@ -36,15 +36,20 @@ func listUserRepos(ctx *context.APIContext, u *models.User) {
|
||||||
|
|
||||||
// ListUserRepos - list the repos owned by the given user.
|
// ListUserRepos - list the repos owned by the given user.
|
||||||
func ListUserRepos(ctx *context.APIContext) {
|
func ListUserRepos(ctx *context.APIContext) {
|
||||||
// swagger:route GET /users/{username}/repos user userListRepos
|
// swagger:operation GET /users/{username}/repos user userListRepos
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List the repos owned by the given user
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: RepositoryList
|
// - name: username
|
||||||
// 500: error
|
// in: path
|
||||||
|
// description: username of user
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/RepositoryList"
|
||||||
user := GetUserByParams(ctx)
|
user := GetUserByParams(ctx)
|
||||||
if ctx.Written() {
|
if ctx.Written() {
|
||||||
return
|
return
|
||||||
|
@ -54,14 +59,14 @@ func ListUserRepos(ctx *context.APIContext) {
|
||||||
|
|
||||||
// ListMyRepos - list the repositories you own or have access to.
|
// ListMyRepos - list the repositories you own or have access to.
|
||||||
func ListMyRepos(ctx *context.APIContext) {
|
func ListMyRepos(ctx *context.APIContext) {
|
||||||
// swagger:route GET /user/repos user userCurrentListRepos
|
// swagger:operation GET /user/repos user userCurrentListRepos
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List the repos that the authenticated user owns or has access to
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// responses:
|
||||||
// 200: RepositoryList
|
// "200":
|
||||||
// 500: error
|
// "$ref": "#/responses/RepositoryList"
|
||||||
ownRepos, err := models.GetUserRepositories(ctx.User.ID, true, 1, ctx.User.NumRepos, "")
|
ownRepos, err := models.GetUserRepositories(ctx.User.ID, true, 1, ctx.User.NumRepos, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "GetUserRepositories", err)
|
ctx.Error(500, "GetUserRepositories", err)
|
||||||
|
@ -87,14 +92,19 @@ func ListMyRepos(ctx *context.APIContext) {
|
||||||
|
|
||||||
// ListOrgRepos - list the repositories of an organization.
|
// ListOrgRepos - list the repositories of an organization.
|
||||||
func ListOrgRepos(ctx *context.APIContext) {
|
func ListOrgRepos(ctx *context.APIContext) {
|
||||||
// swagger:route GET /orgs/{orgname}/repos organization orgListRepos
|
// swagger:operation GET /orgs/{org}/repos organization orgListRepos
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List an organization's repos
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: RepositoryList
|
// - name: org
|
||||||
// 500: error
|
// in: path
|
||||||
|
// description: name of the organization
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/RepositoryList"
|
||||||
listUserRepos(ctx, ctx.Org.Organization)
|
listUserRepos(ctx, ctx.Org.Organization)
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,18 +30,22 @@ func getStarredRepos(userID int64, private bool) ([]*api.Repository, error) {
|
||||||
return repos, nil
|
return repos, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetStarredRepos returns the repos that the user specified by the APIContext
|
// GetStarredRepos returns the repos that the given user has starred
|
||||||
// has starred
|
|
||||||
func GetStarredRepos(ctx *context.APIContext) {
|
func GetStarredRepos(ctx *context.APIContext) {
|
||||||
// swagger:route GET /users/{username}/starred user userListStarred
|
// swagger:operation GET /users/{username}/starred user userListStarred
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: The repos that the given user has starred
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: RepositoryList
|
// - name: username
|
||||||
// 500: error
|
// in: path
|
||||||
|
// description: username of user
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/RepositoryList"
|
||||||
user := GetUserByParams(ctx)
|
user := GetUserByParams(ctx)
|
||||||
private := user.ID == ctx.User.ID
|
private := user.ID == ctx.User.ID
|
||||||
repos, err := getStarredRepos(user.ID, private)
|
repos, err := getStarredRepos(user.ID, private)
|
||||||
|
@ -53,15 +57,14 @@ func GetStarredRepos(ctx *context.APIContext) {
|
||||||
|
|
||||||
// GetMyStarredRepos returns the repos that the authenticated user has starred
|
// GetMyStarredRepos returns the repos that the authenticated user has starred
|
||||||
func GetMyStarredRepos(ctx *context.APIContext) {
|
func GetMyStarredRepos(ctx *context.APIContext) {
|
||||||
// swagger:route GET /user/starred user userCurrentListStarred
|
// swagger:operation GET /user/starred user userCurrentListStarred
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: The repos that the authenticated user has starred
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// responses:
|
||||||
// 200: RepositoryList
|
// "200":
|
||||||
// 500: error
|
// "$ref": "#/responses/RepositoryList"
|
||||||
|
|
||||||
repos, err := getStarredRepos(ctx.User.ID, true)
|
repos, err := getStarredRepos(ctx.User.ID, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "getStarredRepos", err)
|
ctx.Error(500, "getStarredRepos", err)
|
||||||
|
@ -71,12 +74,25 @@ func GetMyStarredRepos(ctx *context.APIContext) {
|
||||||
|
|
||||||
// IsStarring returns whether the authenticated is starring the repo
|
// IsStarring returns whether the authenticated is starring the repo
|
||||||
func IsStarring(ctx *context.APIContext) {
|
func IsStarring(ctx *context.APIContext) {
|
||||||
// swagger:route GET /user/starred/{username}/{reponame} user userCurrentCheckStarring
|
// swagger:operation GET /user/starred/{owner}/{repo} user userCurrentCheckStarring
|
||||||
//
|
// ---
|
||||||
// Responses:
|
// summary: Whether the authenticated is starring the repo
|
||||||
// 204: empty
|
// parameters:
|
||||||
// 404: notFound
|
// - 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:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
|
// "404":
|
||||||
|
// "$ref": "#/responses/notFound"
|
||||||
if models.IsStaring(ctx.User.ID, ctx.Repo.Repository.ID) {
|
if models.IsStaring(ctx.User.ID, ctx.Repo.Repository.ID) {
|
||||||
ctx.Status(204)
|
ctx.Status(204)
|
||||||
} else {
|
} else {
|
||||||
|
@ -86,12 +102,23 @@ func IsStarring(ctx *context.APIContext) {
|
||||||
|
|
||||||
// Star the repo specified in the APIContext, as the authenticated user
|
// Star the repo specified in the APIContext, as the authenticated user
|
||||||
func Star(ctx *context.APIContext) {
|
func Star(ctx *context.APIContext) {
|
||||||
// swagger:route PUT /user/starred/{username}/{reponame} user userCurrentPutStar
|
// swagger:operation PUT /user/starred/{owner}/{repo} user userCurrentPutStar
|
||||||
//
|
// ---
|
||||||
// Responses:
|
// summary: Star the given repo
|
||||||
// 204: empty
|
// parameters:
|
||||||
// 500: error
|
// - name: owner
|
||||||
|
// in: path
|
||||||
|
// description: owner of the repo to star
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: repo
|
||||||
|
// in: path
|
||||||
|
// description: name of the repo to star
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
err := models.StarRepo(ctx.User.ID, ctx.Repo.Repository.ID, true)
|
err := models.StarRepo(ctx.User.ID, ctx.Repo.Repository.ID, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "StarRepo", err)
|
ctx.Error(500, "StarRepo", err)
|
||||||
|
@ -102,12 +129,23 @@ func Star(ctx *context.APIContext) {
|
||||||
|
|
||||||
// Unstar the repo specified in the APIContext, as the authenticated user
|
// Unstar the repo specified in the APIContext, as the authenticated user
|
||||||
func Unstar(ctx *context.APIContext) {
|
func Unstar(ctx *context.APIContext) {
|
||||||
// swagger:route DELETE /user/starred/{username}/{reponame} user userCurrentDeleteStar
|
// swagger:operation DELETE /user/starred/{owner}/{repo} user userCurrentDeleteStar
|
||||||
//
|
// ---
|
||||||
// Responses:
|
// summary: Unstar the given repo
|
||||||
// 204: empty
|
// parameters:
|
||||||
// 500: error
|
// - name: owner
|
||||||
|
// in: path
|
||||||
|
// description: owner of the repo to unstar
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// - name: repo
|
||||||
|
// in: path
|
||||||
|
// description: name of the repo to unstar
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
err := models.StarRepo(ctx.User.ID, ctx.Repo.Repository.ID, false)
|
err := models.StarRepo(ctx.User.ID, ctx.Repo.Repository.ID, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "StarRepo", err)
|
ctx.Error(500, "StarRepo", err)
|
||||||
|
|
|
@ -17,15 +17,23 @@ import (
|
||||||
|
|
||||||
// Search search users
|
// Search search users
|
||||||
func Search(ctx *context.APIContext) {
|
func Search(ctx *context.APIContext) {
|
||||||
// swagger:route GET /users/search user userSearch
|
// swagger:operation GET /users/search user userSearch
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Search for users
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: UserList
|
// - name: q
|
||||||
// 500: error
|
// in: query
|
||||||
|
// description: keyword
|
||||||
|
// type: string
|
||||||
|
// - name: limit
|
||||||
|
// in: query
|
||||||
|
// description: maximum number of users to return
|
||||||
|
// type: integer
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/UserList"
|
||||||
opts := &models.SearchUserOptions{
|
opts := &models.SearchUserOptions{
|
||||||
Keyword: strings.Trim(ctx.Query("q"), " "),
|
Keyword: strings.Trim(ctx.Query("q"), " "),
|
||||||
Type: models.UserTypeIndividual,
|
Type: models.UserTypeIndividual,
|
||||||
|
@ -65,16 +73,22 @@ func Search(ctx *context.APIContext) {
|
||||||
|
|
||||||
// GetInfo get user's information
|
// GetInfo get user's information
|
||||||
func GetInfo(ctx *context.APIContext) {
|
func GetInfo(ctx *context.APIContext) {
|
||||||
// swagger:route GET /users/{username} user userGet
|
// swagger:operation GET /users/{username} user userGet
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Get a user
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: User
|
// - name: username
|
||||||
// 404: notFound
|
// in: path
|
||||||
// 500: error
|
// description: username of user to get
|
||||||
|
// type: string
|
||||||
|
// required: true
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/User"
|
||||||
|
// "404":
|
||||||
|
// "$ref": "#/responses/notFound"
|
||||||
u, err := models.GetUserByName(ctx.Params(":username"))
|
u, err := models.GetUserByName(ctx.Params(":username"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsErrUserNotExist(err) {
|
if models.IsErrUserNotExist(err) {
|
||||||
|
@ -92,15 +106,15 @@ func GetInfo(ctx *context.APIContext) {
|
||||||
ctx.JSON(200, u.APIFormat())
|
ctx.JSON(200, u.APIFormat())
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetAuthenticatedUser get curent user's information
|
// GetAuthenticatedUser get current user's information
|
||||||
func GetAuthenticatedUser(ctx *context.APIContext) {
|
func GetAuthenticatedUser(ctx *context.APIContext) {
|
||||||
// swagger:route GET /user user userGetCurrent
|
// swagger:operation GET /user user userGetCurrent
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: Get the authenticated user
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// responses:
|
||||||
// 200: User
|
// "200":
|
||||||
|
// "$ref": "#/responses/User"
|
||||||
ctx.JSON(200, ctx.User.APIFormat())
|
ctx.JSON(200, ctx.User.APIFormat())
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,15 +33,19 @@ func getWatchedRepos(userID int64, private bool) ([]*api.Repository, error) {
|
||||||
|
|
||||||
// GetWatchedRepos returns the repos that the user specified in ctx is watching
|
// GetWatchedRepos returns the repos that the user specified in ctx is watching
|
||||||
func GetWatchedRepos(ctx *context.APIContext) {
|
func GetWatchedRepos(ctx *context.APIContext) {
|
||||||
// swagger:route GET /users/{username}/subscriptions user userListSubscriptions
|
// swagger:operation GET /users/{username}/subscriptions user userListSubscriptions
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List the repositories watched by a user
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// parameters:
|
||||||
// 200: RepositoryList
|
// - name: username
|
||||||
// 500: error
|
// type: string
|
||||||
|
// in: path
|
||||||
|
// description: username of the user
|
||||||
|
// responses:
|
||||||
|
// "200":
|
||||||
|
// "$ref": "#/responses/RepositoryList"
|
||||||
user := GetUserByParams(ctx)
|
user := GetUserByParams(ctx)
|
||||||
private := user.ID == ctx.User.ID
|
private := user.ID == ctx.User.ID
|
||||||
repos, err := getWatchedRepos(user.ID, private)
|
repos, err := getWatchedRepos(user.ID, private)
|
||||||
|
@ -53,15 +57,14 @@ func GetWatchedRepos(ctx *context.APIContext) {
|
||||||
|
|
||||||
// GetMyWatchedRepos returns the repos that the authenticated user is watching
|
// GetMyWatchedRepos returns the repos that the authenticated user is watching
|
||||||
func GetMyWatchedRepos(ctx *context.APIContext) {
|
func GetMyWatchedRepos(ctx *context.APIContext) {
|
||||||
// swagger:route GET /user/subscriptions user userCurrentListSubscriptions
|
// swagger:operation GET /user/subscriptions user userCurrentListSubscriptions
|
||||||
//
|
// ---
|
||||||
// Produces:
|
// summary: List repositories watched by the authenticated user
|
||||||
// - application/json
|
// produces:
|
||||||
//
|
// - application/json
|
||||||
// Responses:
|
// responses:
|
||||||
// 200: RepositoryList
|
// "200":
|
||||||
// 500: error
|
// "$ref": "#/responses/RepositoryList"
|
||||||
|
|
||||||
repos, err := getWatchedRepos(ctx.User.ID, true)
|
repos, err := getWatchedRepos(ctx.User.ID, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "getWatchedRepos", err)
|
ctx.Error(500, "getWatchedRepos", err)
|
||||||
|
@ -72,12 +75,23 @@ func GetMyWatchedRepos(ctx *context.APIContext) {
|
||||||
// IsWatching returns whether the authenticated user is watching the repo
|
// IsWatching returns whether the authenticated user is watching the repo
|
||||||
// specified in ctx
|
// specified in ctx
|
||||||
func IsWatching(ctx *context.APIContext) {
|
func IsWatching(ctx *context.APIContext) {
|
||||||
// swagger:route GET /repos/{username}/{reponame}/subscription repository userCurrentCheckSubscription
|
// swagger:operation GET /repos/{owner}/{repo}/subscription repository userCurrentCheckSubscription
|
||||||
//
|
// ---
|
||||||
// Responses:
|
// summary: Check if the current user is watching a repo
|
||||||
// 200: WatchInfo
|
// parameters:
|
||||||
// 404: notFound
|
// - 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/WatchInfo"
|
||||||
if models.IsWatching(ctx.User.ID, ctx.Repo.Repository.ID) {
|
if models.IsWatching(ctx.User.ID, ctx.Repo.Repository.ID) {
|
||||||
ctx.JSON(200, api.WatchInfo{
|
ctx.JSON(200, api.WatchInfo{
|
||||||
Subscribed: true,
|
Subscribed: true,
|
||||||
|
@ -94,12 +108,23 @@ func IsWatching(ctx *context.APIContext) {
|
||||||
|
|
||||||
// Watch the repo specified in ctx, as the authenticated user
|
// Watch the repo specified in ctx, as the authenticated user
|
||||||
func Watch(ctx *context.APIContext) {
|
func Watch(ctx *context.APIContext) {
|
||||||
// swagger:route PUT /repos/{username}/{reponame}/subscription repository userCurrentPutSubscription
|
// swagger:operation PUT /repos/{owner}/{repo}/subscription repository userCurrentPutSubscription
|
||||||
//
|
// ---
|
||||||
// Responses:
|
// summary: Watch a repo
|
||||||
// 200: WatchInfo
|
// parameters:
|
||||||
// 500: error
|
// - 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/WatchInfo"
|
||||||
err := models.WatchRepo(ctx.User.ID, ctx.Repo.Repository.ID, true)
|
err := models.WatchRepo(ctx.User.ID, ctx.Repo.Repository.ID, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "WatchRepo", err)
|
ctx.Error(500, "WatchRepo", err)
|
||||||
|
@ -118,12 +143,23 @@ func Watch(ctx *context.APIContext) {
|
||||||
|
|
||||||
// Unwatch the repo specified in ctx, as the authenticated user
|
// Unwatch the repo specified in ctx, as the authenticated user
|
||||||
func Unwatch(ctx *context.APIContext) {
|
func Unwatch(ctx *context.APIContext) {
|
||||||
// swagger:route DELETE /repos/{username}/{reponame}/subscription repository userCurrentDeleteSubscription
|
// swagger:operation DELETE /repos/{owner}/{repo}/subscription repository userCurrentDeleteSubscription
|
||||||
//
|
// ---
|
||||||
// Responses:
|
// summary: Unwatch a repo
|
||||||
// 204: empty
|
// parameters:
|
||||||
// 500: error
|
// - 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:
|
||||||
|
// "204":
|
||||||
|
// "$ref": "#/responses/empty"
|
||||||
err := models.WatchRepo(ctx.User.ID, ctx.Repo.Repository.ID, false)
|
err := models.WatchRepo(ctx.User.ID, ctx.Repo.Repository.ID, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(500, "UnwatchRepo", err)
|
ctx.Error(500, "UnwatchRepo", err)
|
||||||
|
|
|
@ -11,21 +11,17 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// CreateUserOption create user options
|
// CreateUserOption create user options
|
||||||
// swagger:parameters adminCreateUser
|
|
||||||
type CreateUserOption struct {
|
type CreateUserOption struct {
|
||||||
// in: body
|
|
||||||
SourceID int64 `json:"source_id"`
|
SourceID int64 `json:"source_id"`
|
||||||
// in: body
|
|
||||||
LoginName string `json:"login_name"`
|
LoginName string `json:"login_name"`
|
||||||
// in: body
|
// required: true
|
||||||
Username string `json:"username" binding:"Required;AlphaDashDot;MaxSize(35)"`
|
Username string `json:"username" binding:"Required;AlphaDashDot;MaxSize(35)"`
|
||||||
// in: body
|
|
||||||
FullName string `json:"full_name" binding:"MaxSize(100)"`
|
FullName string `json:"full_name" binding:"MaxSize(100)"`
|
||||||
// in: body
|
// required: true
|
||||||
|
// swagger:strfmt email
|
||||||
Email string `json:"email" binding:"Required;Email;MaxSize(254)"`
|
Email string `json:"email" binding:"Required;Email;MaxSize(254)"`
|
||||||
// in: body
|
// required: true
|
||||||
Password string `json:"password" binding:"MaxSize(255)"`
|
Password string `json:"password" binding:"Required;MaxSize(255)"`
|
||||||
// in: body
|
|
||||||
SendNotify bool `json:"send_notify"`
|
SendNotify bool `json:"send_notify"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,31 +36,20 @@ func (c *Client) AdminCreateUser(opt CreateUserOption) (*User, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// EditUserOption edit user options
|
// EditUserOption edit user options
|
||||||
// swagger:parameters adminEditUser
|
|
||||||
type EditUserOption struct {
|
type EditUserOption struct {
|
||||||
// in: body
|
|
||||||
SourceID int64 `json:"source_id"`
|
SourceID int64 `json:"source_id"`
|
||||||
// in: body
|
|
||||||
LoginName string `json:"login_name"`
|
LoginName string `json:"login_name"`
|
||||||
// in: body
|
|
||||||
FullName string `json:"full_name" binding:"MaxSize(100)"`
|
FullName string `json:"full_name" binding:"MaxSize(100)"`
|
||||||
// in: body
|
// required: true
|
||||||
|
// swagger:strfmt email
|
||||||
Email string `json:"email" binding:"Required;Email;MaxSize(254)"`
|
Email string `json:"email" binding:"Required;Email;MaxSize(254)"`
|
||||||
// in: body
|
|
||||||
Password string `json:"password" binding:"MaxSize(255)"`
|
Password string `json:"password" binding:"MaxSize(255)"`
|
||||||
// in: body
|
|
||||||
Website string `json:"website" binding:"MaxSize(50)"`
|
Website string `json:"website" binding:"MaxSize(50)"`
|
||||||
// in: body
|
|
||||||
Location string `json:"location" binding:"MaxSize(50)"`
|
Location string `json:"location" binding:"MaxSize(50)"`
|
||||||
// in: body
|
|
||||||
Active *bool `json:"active"`
|
Active *bool `json:"active"`
|
||||||
// in: body
|
|
||||||
Admin *bool `json:"admin"`
|
Admin *bool `json:"admin"`
|
||||||
// in: body
|
|
||||||
AllowGitHook *bool `json:"allow_git_hook"`
|
AllowGitHook *bool `json:"allow_git_hook"`
|
||||||
// in: body
|
|
||||||
AllowImportLocal *bool `json:"allow_import_local"`
|
AllowImportLocal *bool `json:"allow_import_local"`
|
||||||
// in: body
|
|
||||||
MaxRepoCreation *int `json:"max_repo_creation"`
|
MaxRepoCreation *int `json:"max_repo_creation"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
// Copyright 2017 The Gitea Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a MIT-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
package gitea // import "code.gitea.io/sdk/gitea"
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
// Attachment a generic attachment
|
||||||
|
type Attachment struct {
|
||||||
|
ID int64 `json:"id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Size int64 `json:"size"`
|
||||||
|
DownloadCount int64 `json:"download_count"`
|
||||||
|
Created time.Time `json:"created_at"`
|
||||||
|
UUID string `json:"uuid"`
|
||||||
|
DownloadURL string `json:"browser_download_url"`
|
||||||
|
}
|
|
@ -20,9 +20,8 @@ func (c *Client) ListForks(user, repo string) ([]*Repository, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateForkOption options for creating a fork
|
// CreateForkOption options for creating a fork
|
||||||
// swagger:parameters createFork
|
|
||||||
type CreateForkOption struct {
|
type CreateForkOption struct {
|
||||||
// in: body
|
// organization name, if forking into an organization
|
||||||
Organization *string `json:"organization"`
|
Organization *string `json:"organization"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,6 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Hook a hook is a web hook when one repository changed
|
// Hook a hook is a web hook when one repository changed
|
||||||
// swagger:response Hook
|
|
||||||
type Hook struct {
|
type Hook struct {
|
||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
Type string `json:"type"`
|
Type string `json:"type"`
|
||||||
|
@ -28,12 +27,13 @@ type Hook struct {
|
||||||
Config map[string]string `json:"config"`
|
Config map[string]string `json:"config"`
|
||||||
Events []string `json:"events"`
|
Events []string `json:"events"`
|
||||||
Active bool `json:"active"`
|
Active bool `json:"active"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Updated time.Time `json:"updated_at"`
|
Updated time.Time `json:"updated_at"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Created time.Time `json:"created_at"`
|
Created time.Time `json:"created_at"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// HookList represents a list of API hook.
|
// HookList represents a list of API hook.
|
||||||
// swagger:response HookList
|
|
||||||
type HookList []*Hook
|
type HookList []*Hook
|
||||||
|
|
||||||
// ListOrgHooks list all the hooks of one organization
|
// ListOrgHooks list all the hooks of one organization
|
||||||
|
@ -61,15 +61,14 @@ func (c *Client) GetRepoHook(user, repo string, id int64) (*Hook, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateHookOption options when create a hook
|
// CreateHookOption options when create a hook
|
||||||
// swagger:parameters orgCreateHook repoCreateHook
|
|
||||||
type CreateHookOption struct {
|
type CreateHookOption struct {
|
||||||
// in: body
|
// required: true
|
||||||
|
// enum: gitea,gogs,slack,discord
|
||||||
Type string `json:"type" binding:"Required"`
|
Type string `json:"type" binding:"Required"`
|
||||||
// in: body
|
// required: true
|
||||||
Config map[string]string `json:"config" binding:"Required"`
|
Config map[string]string `json:"config" binding:"Required"`
|
||||||
// in: body
|
|
||||||
Events []string `json:"events"`
|
Events []string `json:"events"`
|
||||||
// in: body
|
// default: false
|
||||||
Active bool `json:"active"`
|
Active bool `json:"active"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,13 +93,9 @@ func (c *Client) CreateRepoHook(user, repo string, opt CreateHookOption) (*Hook,
|
||||||
}
|
}
|
||||||
|
|
||||||
// EditHookOption options when modify one hook
|
// EditHookOption options when modify one hook
|
||||||
// swagger:parameters orgEditHook repoEditHook
|
|
||||||
type EditHookOption struct {
|
type EditHookOption struct {
|
||||||
// in: body
|
|
||||||
Config map[string]string `json:"config"`
|
Config map[string]string `json:"config"`
|
||||||
// in: body
|
|
||||||
Events []string `json:"events"`
|
Events []string `json:"events"`
|
||||||
// in: body
|
|
||||||
Active *bool `json:"active"`
|
Active *bool `json:"active"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,25 +137,32 @@ type Payloader interface {
|
||||||
JSONPayload() ([]byte, error)
|
JSONPayload() ([]byte, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// PayloadUser FIXME
|
// PayloadUser represents the author or committer of a commit
|
||||||
type PayloadUser struct {
|
type PayloadUser struct {
|
||||||
|
// Full name of the commit author
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
|
// swagger:strfmt email
|
||||||
Email string `json:"email"`
|
Email string `json:"email"`
|
||||||
UserName string `json:"username"`
|
UserName string `json:"username"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PayloadCommit FIXME: consider use same format as API when commits API are added.
|
// FIXME: consider using same format as API when commits API are added.
|
||||||
|
// applies to PayloadCommit and PayloadCommitVerification
|
||||||
|
|
||||||
|
// PayloadCommit represents a commit
|
||||||
type PayloadCommit struct {
|
type PayloadCommit struct {
|
||||||
|
// sha1 hash of the commit
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
Message string `json:"message"`
|
Message string `json:"message"`
|
||||||
URL string `json:"url"`
|
URL string `json:"url"`
|
||||||
Author *PayloadUser `json:"author"`
|
Author *PayloadUser `json:"author"`
|
||||||
Committer *PayloadUser `json:"committer"`
|
Committer *PayloadUser `json:"committer"`
|
||||||
Verification *PayloadCommitVerification `json:"verification"`
|
Verification *PayloadCommitVerification `json:"verification"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Timestamp time.Time `json:"timestamp"`
|
Timestamp time.Time `json:"timestamp"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PayloadCommitVerification represent the GPG verification part of a commit. FIXME: like PayloadCommit consider use same format as API when commits API are added.
|
// PayloadCommitVerification represents the GPG verification of a commit
|
||||||
type PayloadCommitVerification struct {
|
type PayloadCommitVerification struct {
|
||||||
Verified bool `json:"verified"`
|
Verified bool `json:"verified"`
|
||||||
Reason string `json:"reason"`
|
Reason string `json:"reason"`
|
||||||
|
|
|
@ -27,7 +27,8 @@ type PullRequestMeta struct {
|
||||||
Merged *time.Time `json:"merged_at"`
|
Merged *time.Time `json:"merged_at"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Issue an issue to a repository
|
// Issue represents an issue in a repository
|
||||||
|
// swagger:model
|
||||||
type Issue struct {
|
type Issue struct {
|
||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
URL string `json:"url"`
|
URL string `json:"url"`
|
||||||
|
@ -38,9 +39,15 @@ type Issue struct {
|
||||||
Labels []*Label `json:"labels"`
|
Labels []*Label `json:"labels"`
|
||||||
Milestone *Milestone `json:"milestone"`
|
Milestone *Milestone `json:"milestone"`
|
||||||
Assignee *User `json:"assignee"`
|
Assignee *User `json:"assignee"`
|
||||||
|
// Whether the issue is open or closed
|
||||||
|
//
|
||||||
|
// type: string
|
||||||
|
// enum: open,closed
|
||||||
State StateType `json:"state"`
|
State StateType `json:"state"`
|
||||||
Comments int `json:"comments"`
|
Comments int `json:"comments"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Created time.Time `json:"created_at"`
|
Created time.Time `json:"created_at"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Updated time.Time `json:"updated_at"`
|
Updated time.Time `json:"updated_at"`
|
||||||
|
|
||||||
PullRequest *PullRequestMeta `json:"pull_request"`
|
PullRequest *PullRequestMeta `json:"pull_request"`
|
||||||
|
@ -78,10 +85,14 @@ func (c *Client) GetIssue(owner, repo string, index int64) (*Issue, error) {
|
||||||
|
|
||||||
// CreateIssueOption options to create one issue
|
// CreateIssueOption options to create one issue
|
||||||
type CreateIssueOption struct {
|
type CreateIssueOption struct {
|
||||||
|
// required:true
|
||||||
Title string `json:"title" binding:"Required"`
|
Title string `json:"title" binding:"Required"`
|
||||||
Body string `json:"body"`
|
Body string `json:"body"`
|
||||||
|
// username of assignee
|
||||||
Assignee string `json:"assignee"`
|
Assignee string `json:"assignee"`
|
||||||
|
// milestone id
|
||||||
Milestone int64 `json:"milestone"`
|
Milestone int64 `json:"milestone"`
|
||||||
|
// list of label ids
|
||||||
Labels []int64 `json:"labels"`
|
Labels []int64 `json:"labels"`
|
||||||
Closed bool `json:"closed"`
|
Closed bool `json:"closed"`
|
||||||
}
|
}
|
||||||
|
@ -97,7 +108,7 @@ func (c *Client) CreateIssue(owner, repo string, opt CreateIssueOption) (*Issue,
|
||||||
jsonHeader, bytes.NewReader(body), issue)
|
jsonHeader, bytes.NewReader(body), issue)
|
||||||
}
|
}
|
||||||
|
|
||||||
// EditIssueOption edit issue options
|
// EditIssueOption options for editing an issue
|
||||||
type EditIssueOption struct {
|
type EditIssueOption struct {
|
||||||
Title string `json:"title"`
|
Title string `json:"title"`
|
||||||
Body *string `json:"body"`
|
Body *string `json:"body"`
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Comment represents a comment in commit and issue page.
|
// Comment represents a comment on a commit or issue
|
||||||
type Comment struct {
|
type Comment struct {
|
||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
HTMLURL string `json:"html_url"`
|
HTMLURL string `json:"html_url"`
|
||||||
|
@ -19,7 +19,9 @@ type Comment struct {
|
||||||
IssueURL string `json:"issue_url"`
|
IssueURL string `json:"issue_url"`
|
||||||
Poster *User `json:"user"`
|
Poster *User `json:"user"`
|
||||||
Body string `json:"body"`
|
Body string `json:"body"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Created time.Time `json:"created_at"`
|
Created time.Time `json:"created_at"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Updated time.Time `json:"updated_at"`
|
Updated time.Time `json:"updated_at"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,8 +37,9 @@ func (c *Client) ListRepoIssueComments(owner, repo string) ([]*Comment, error) {
|
||||||
return comments, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues/comments", owner, repo), nil, nil, &comments)
|
return comments, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues/comments", owner, repo), nil, nil, &comments)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateIssueCommentOption is option when creating an issue comment.
|
// CreateIssueCommentOption options for creating a comment on an issue
|
||||||
type CreateIssueCommentOption struct {
|
type CreateIssueCommentOption struct {
|
||||||
|
// required:true
|
||||||
Body string `json:"body" binding:"Required"`
|
Body string `json:"body" binding:"Required"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,8 +53,9 @@ func (c *Client) CreateIssueComment(owner, repo string, index int64, opt CreateI
|
||||||
return comment, c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/issues/%d/comments", owner, repo, index), jsonHeader, bytes.NewReader(body), comment)
|
return comment, c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/issues/%d/comments", owner, repo, index), jsonHeader, bytes.NewReader(body), comment)
|
||||||
}
|
}
|
||||||
|
|
||||||
// EditIssueCommentOption is option when editing an issue comment.
|
// EditIssueCommentOption options for editing a comment
|
||||||
type EditIssueCommentOption struct {
|
type EditIssueCommentOption struct {
|
||||||
|
// required: true
|
||||||
Body string `json:"body" binding:"Required"`
|
Body string `json:"body" binding:"Required"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,14 +11,16 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// Label a label to an issue or a pr
|
// Label a label to an issue or a pr
|
||||||
|
// swagger:model
|
||||||
type Label struct {
|
type Label struct {
|
||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
|
// example: 00aabb
|
||||||
Color string `json:"color"`
|
Color string `json:"color"`
|
||||||
URL string `json:"url"`
|
URL string `json:"url"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListRepoLabels list lables of one reppsitory
|
// ListRepoLabels list labels of one repository
|
||||||
func (c *Client) ListRepoLabels(owner, repo string) ([]*Label, error) {
|
func (c *Client) ListRepoLabels(owner, repo string) ([]*Label, error) {
|
||||||
labels := make([]*Label, 0, 10)
|
labels := make([]*Label, 0, 10)
|
||||||
return labels, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/labels", owner, repo), nil, nil, &labels)
|
return labels, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/labels", owner, repo), nil, nil, &labels)
|
||||||
|
@ -31,9 +33,12 @@ func (c *Client) GetRepoLabel(owner, repo string, id int64) (*Label, error) {
|
||||||
return label, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/labels/%d", owner, repo, id), nil, nil, label)
|
return label, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/labels/%d", owner, repo, id), nil, nil, label)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateLabelOption create options when one label of repository
|
// CreateLabelOption options for creating a label
|
||||||
type CreateLabelOption struct {
|
type CreateLabelOption struct {
|
||||||
|
// required:true
|
||||||
Name string `json:"name" binding:"Required"`
|
Name string `json:"name" binding:"Required"`
|
||||||
|
// required:true
|
||||||
|
// example: #00aabb
|
||||||
Color string `json:"color" binding:"Required;Size(7)"`
|
Color string `json:"color" binding:"Required;Size(7)"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +53,7 @@ func (c *Client) CreateLabel(owner, repo string, opt CreateLabelOption) (*Label,
|
||||||
jsonHeader, bytes.NewReader(body), label)
|
jsonHeader, bytes.NewReader(body), label)
|
||||||
}
|
}
|
||||||
|
|
||||||
// EditLabelOption edit label options
|
// EditLabelOption options for editing a label
|
||||||
type EditLabelOption struct {
|
type EditLabelOption struct {
|
||||||
Name *string `json:"name"`
|
Name *string `json:"name"`
|
||||||
Color *string `json:"color"`
|
Color *string `json:"color"`
|
||||||
|
@ -71,8 +76,9 @@ func (c *Client) DeleteLabel(owner, repo string, id int64) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// IssueLabelsOption list one issue's labels options
|
// IssueLabelsOption a collection of labels
|
||||||
type IssueLabelsOption struct {
|
type IssueLabelsOption struct {
|
||||||
|
// list of label IDs
|
||||||
Labels []int64 `json:"labels"`
|
Labels []int64 `json:"labels"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,9 @@ type Milestone struct {
|
||||||
State StateType `json:"state"`
|
State StateType `json:"state"`
|
||||||
OpenIssues int `json:"open_issues"`
|
OpenIssues int `json:"open_issues"`
|
||||||
ClosedIssues int `json:"closed_issues"`
|
ClosedIssues int `json:"closed_issues"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Closed *time.Time `json:"closed_at"`
|
Closed *time.Time `json:"closed_at"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Deadline *time.Time `json:"due_on"`
|
Deadline *time.Time `json:"due_on"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,10 +37,11 @@ func (c *Client) GetMilestone(owner, repo string, id int64) (*Milestone, error)
|
||||||
return milestone, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/milestones/%d", owner, repo, id), nil, nil, milestone)
|
return milestone, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/milestones/%d", owner, repo, id), nil, nil, milestone)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateMilestoneOption options when creating milestone
|
// CreateMilestoneOption options for creating a milestone
|
||||||
type CreateMilestoneOption struct {
|
type CreateMilestoneOption struct {
|
||||||
Title string `json:"title"`
|
Title string `json:"title"`
|
||||||
Description string `json:"description"`
|
Description string `json:"description"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Deadline *time.Time `json:"due_on"`
|
Deadline *time.Time `json:"due_on"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +55,7 @@ func (c *Client) CreateMilestone(owner, repo string, opt CreateMilestoneOption)
|
||||||
return milestone, c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/milestones", owner, repo), jsonHeader, bytes.NewReader(body), milestone)
|
return milestone, c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/milestones", owner, repo), jsonHeader, bytes.NewReader(body), milestone)
|
||||||
}
|
}
|
||||||
|
|
||||||
// EditMilestoneOption options when modify milestone
|
// EditMilestoneOption options for editing a milestone
|
||||||
type EditMilestoneOption struct {
|
type EditMilestoneOption struct {
|
||||||
Title string `json:"title"`
|
Title string `json:"title"`
|
||||||
Description *string `json:"description"`
|
Description *string `json:"description"`
|
||||||
|
|
|
@ -12,9 +12,9 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// TrackedTime worked time for an issue / pr
|
// TrackedTime worked time for an issue / pr
|
||||||
// swagger:response TrackedTime
|
|
||||||
type TrackedTime struct {
|
type TrackedTime struct {
|
||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Created time.Time `json:"created"`
|
Created time.Time `json:"created"`
|
||||||
// Time in seconds
|
// Time in seconds
|
||||||
Time int64 `json:"time"`
|
Time int64 `json:"time"`
|
||||||
|
@ -23,7 +23,6 @@ type TrackedTime struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// TrackedTimes represent a list of tracked times
|
// TrackedTimes represent a list of tracked times
|
||||||
// swagger:response TrackedTimes
|
|
||||||
type TrackedTimes []*TrackedTime
|
type TrackedTimes []*TrackedTime
|
||||||
|
|
||||||
// GetUserTrackedTimes list tracked times of a user
|
// GetUserTrackedTimes list tracked times of a user
|
||||||
|
@ -44,10 +43,10 @@ func (c *Client) GetMyTrackedTimes() (TrackedTimes, error) {
|
||||||
return times, c.getParsedResponse("GET", "/user/times", nil, nil, ×)
|
return times, c.getParsedResponse("GET", "/user/times", nil, nil, ×)
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddTimeOption adds time manually to an issue
|
// AddTimeOption options for adding time to an issue
|
||||||
// swagger:parameters addTime
|
|
||||||
type AddTimeOption struct {
|
type AddTimeOption struct {
|
||||||
// in: body
|
// time in seconds
|
||||||
|
// required: true
|
||||||
Time int64 `json:"time" binding:"Required"`
|
Time int64 `json:"time" binding:"Required"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,22 +4,19 @@
|
||||||
|
|
||||||
package gitea
|
package gitea
|
||||||
|
|
||||||
// SearchResults results of search
|
// SearchResults results of a successful search
|
||||||
// swagger:response SearchResults
|
|
||||||
type SearchResults struct {
|
type SearchResults struct {
|
||||||
OK bool `json:"ok"`
|
OK bool `json:"ok"`
|
||||||
Data []*Repository `json:"data"`
|
Data []*Repository `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// SearchError error of failing search
|
// SearchError error of a failed search
|
||||||
// swagger:response SearchError
|
|
||||||
type SearchError struct {
|
type SearchError struct {
|
||||||
OK bool `json:"ok"`
|
OK bool `json:"ok"`
|
||||||
Error string `json:"error"`
|
Error string `json:"error"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// MarkdownOption markdown options
|
// MarkdownOption markdown options
|
||||||
// swagger:parameters renderMarkdown
|
|
||||||
type MarkdownOption struct {
|
type MarkdownOption struct {
|
||||||
// Text markdown to render
|
// Text markdown to render
|
||||||
//
|
//
|
||||||
|
@ -44,9 +41,8 @@ type MarkdownOption struct {
|
||||||
type MarkdownRender string
|
type MarkdownRender string
|
||||||
|
|
||||||
// ServerVersion wraps the version of the server
|
// ServerVersion wraps the version of the server
|
||||||
// swagger:response ServerVersion
|
|
||||||
type ServerVersion struct {
|
type ServerVersion struct {
|
||||||
Version string
|
Version string `json:"version"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServerVersion returns the version of the server
|
// ServerVersion returns the version of the server
|
||||||
|
|
|
@ -10,8 +10,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Organization a group of some repositories, users and teams
|
// Organization represents an organization
|
||||||
// swagger:response Organization
|
|
||||||
type Organization struct {
|
type Organization struct {
|
||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
UserName string `json:"username"`
|
UserName string `json:"username"`
|
||||||
|
@ -40,22 +39,17 @@ func (c *Client) GetOrg(orgname string) (*Organization, error) {
|
||||||
return org, c.getParsedResponse("GET", fmt.Sprintf("/orgs/%s", orgname), nil, nil, org)
|
return org, c.getParsedResponse("GET", fmt.Sprintf("/orgs/%s", orgname), nil, nil, org)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateOrgOption create one organization options
|
// CreateOrgOption options for creating an organization
|
||||||
// swagger:parameters adminCreateOrg
|
|
||||||
type CreateOrgOption struct {
|
type CreateOrgOption struct {
|
||||||
// in: body
|
// required: true
|
||||||
UserName string `json:"username" binding:"Required"`
|
UserName string `json:"username" binding:"Required"`
|
||||||
// in: body
|
|
||||||
FullName string `json:"full_name"`
|
FullName string `json:"full_name"`
|
||||||
// in: body
|
|
||||||
Description string `json:"description"`
|
Description string `json:"description"`
|
||||||
// in: body
|
|
||||||
Website string `json:"website"`
|
Website string `json:"website"`
|
||||||
// in: body
|
|
||||||
Location string `json:"location"`
|
Location string `json:"location"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// EditOrgOption edit one organization options
|
// EditOrgOption options for editing an organization
|
||||||
type EditOrgOption struct {
|
type EditOrgOption struct {
|
||||||
FullName string `json:"full_name"`
|
FullName string `json:"full_name"`
|
||||||
Description string `json:"description"`
|
Description string `json:"description"`
|
||||||
|
|
|
@ -4,24 +4,29 @@
|
||||||
|
|
||||||
package gitea
|
package gitea
|
||||||
|
|
||||||
// Team is a sub virtual organization of one Organization
|
// Team represents a team in an organization
|
||||||
type Team struct {
|
type Team struct {
|
||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Description string `json:"description"`
|
Description string `json:"description"`
|
||||||
|
// enum: none,read,write,admin,owner
|
||||||
Permission string `json:"permission"`
|
Permission string `json:"permission"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateTeamOption options when create team
|
// CreateTeamOption options for creating a team
|
||||||
type CreateTeamOption struct {
|
type CreateTeamOption struct {
|
||||||
|
// required: true
|
||||||
Name string `json:"name" binding:"Required;AlphaDashDot;MaxSize(30)"`
|
Name string `json:"name" binding:"Required;AlphaDashDot;MaxSize(30)"`
|
||||||
Description string `json:"description" binding:"MaxSize(255)"`
|
Description string `json:"description" binding:"MaxSize(255)"`
|
||||||
|
// enum: read,write,admin
|
||||||
Permission string `json:"permission"`
|
Permission string `json:"permission"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// EditTeamOption options when edit team
|
// EditTeamOption options for editing a team
|
||||||
type EditTeamOption struct {
|
type EditTeamOption struct {
|
||||||
|
// required: true
|
||||||
Name string `json:"name" binding:"Required;AlphaDashDot;MaxSize(30)"`
|
Name string `json:"name" binding:"Required;AlphaDashDot;MaxSize(30)"`
|
||||||
Description string `json:"description" binding:"MaxSize(255)"`
|
Description string `json:"description" binding:"MaxSize(255)"`
|
||||||
|
// enum: read,write,admin
|
||||||
Permission string `json:"permission"`
|
Permission string `json:"permission"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// PullRequest represents a pull request API object.
|
// PullRequest represents a pull request
|
||||||
type PullRequest struct {
|
type PullRequest struct {
|
||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
URL string `json:"url"`
|
URL string `json:"url"`
|
||||||
|
@ -31,6 +31,7 @@ type PullRequest struct {
|
||||||
|
|
||||||
Mergeable bool `json:"mergeable"`
|
Mergeable bool `json:"mergeable"`
|
||||||
HasMerged bool `json:"merged"`
|
HasMerged bool `json:"merged"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Merged *time.Time `json:"merged_at"`
|
Merged *time.Time `json:"merged_at"`
|
||||||
MergedCommitID *string `json:"merge_commit_sha"`
|
MergedCommitID *string `json:"merge_commit_sha"`
|
||||||
MergedBy *User `json:"merged_by"`
|
MergedBy *User `json:"merged_by"`
|
||||||
|
@ -39,11 +40,13 @@ type PullRequest struct {
|
||||||
Head *PRBranchInfo `json:"head"`
|
Head *PRBranchInfo `json:"head"`
|
||||||
MergeBase string `json:"merge_base"`
|
MergeBase string `json:"merge_base"`
|
||||||
|
|
||||||
|
// swagger:strfmt date-time
|
||||||
Created *time.Time `json:"created_at"`
|
Created *time.Time `json:"created_at"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Updated *time.Time `json:"updated_at"`
|
Updated *time.Time `json:"updated_at"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PRBranchInfo base branch info when send a PR
|
// PRBranchInfo information about a branch
|
||||||
type PRBranchInfo struct {
|
type PRBranchInfo struct {
|
||||||
Name string `json:"label"`
|
Name string `json:"label"`
|
||||||
Ref string `json:"ref"`
|
Ref string `json:"ref"`
|
||||||
|
@ -52,7 +55,7 @@ type PRBranchInfo struct {
|
||||||
Repository *Repository `json:"repo"`
|
Repository *Repository `json:"repo"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListPullRequestsOptions options when list PRs
|
// ListPullRequestsOptions options for listing pull requests
|
||||||
type ListPullRequestsOptions struct {
|
type ListPullRequestsOptions struct {
|
||||||
Page int `json:"page"`
|
Page int `json:"page"`
|
||||||
State string `json:"state"`
|
State string `json:"state"`
|
||||||
|
|
|
@ -23,7 +23,9 @@ type Release struct {
|
||||||
ZipURL string `json:"zipball_url"`
|
ZipURL string `json:"zipball_url"`
|
||||||
IsDraft bool `json:"draft"`
|
IsDraft bool `json:"draft"`
|
||||||
IsPrerelease bool `json:"prerelease"`
|
IsPrerelease bool `json:"prerelease"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
CreatedAt time.Time `json:"created_at"`
|
CreatedAt time.Time `json:"created_at"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
PublishedAt time.Time `json:"published_at"`
|
PublishedAt time.Time `json:"published_at"`
|
||||||
Publisher *User `json:"author"`
|
Publisher *User `json:"author"`
|
||||||
}
|
}
|
||||||
|
@ -48,6 +50,7 @@ func (c *Client) GetRelease(user, repo string, id int64) (*Release, error) {
|
||||||
|
|
||||||
// CreateReleaseOption options when creating a release
|
// CreateReleaseOption options when creating a release
|
||||||
type CreateReleaseOption struct {
|
type CreateReleaseOption struct {
|
||||||
|
// required: true
|
||||||
TagName string `json:"tag_name" binding:"Required"`
|
TagName string `json:"tag_name" binding:"Required"`
|
||||||
Target string `json:"target_commitish"`
|
Target string `json:"target_commitish"`
|
||||||
Title string `json:"name"`
|
Title string `json:"name"`
|
||||||
|
|
|
@ -11,15 +11,14 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Permission represents a API permission.
|
// Permission represents a set of permissions
|
||||||
type Permission struct {
|
type Permission struct {
|
||||||
Admin bool `json:"admin"`
|
Admin bool `json:"admin"`
|
||||||
Push bool `json:"push"`
|
Push bool `json:"push"`
|
||||||
Pull bool `json:"pull"`
|
Pull bool `json:"pull"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Repository represents a API repository.
|
// Repository represents a repository
|
||||||
// swagger:response Repository
|
|
||||||
type Repository struct {
|
type Repository struct {
|
||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
Owner *User `json:"owner"`
|
Owner *User `json:"owner"`
|
||||||
|
@ -41,15 +40,13 @@ type Repository struct {
|
||||||
Watchers int `json:"watchers_count"`
|
Watchers int `json:"watchers_count"`
|
||||||
OpenIssues int `json:"open_issues_count"`
|
OpenIssues int `json:"open_issues_count"`
|
||||||
DefaultBranch string `json:"default_branch"`
|
DefaultBranch string `json:"default_branch"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Created time.Time `json:"created_at"`
|
Created time.Time `json:"created_at"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Updated time.Time `json:"updated_at"`
|
Updated time.Time `json:"updated_at"`
|
||||||
Permissions *Permission `json:"permissions,omitempty"`
|
Permissions *Permission `json:"permissions,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// RepositoryList represents a list of API repository.
|
|
||||||
// swagger:response RepositoryList
|
|
||||||
type RepositoryList []*Repository
|
|
||||||
|
|
||||||
// ListMyRepos lists all repositories for the authenticated user that has access to.
|
// ListMyRepos lists all repositories for the authenticated user that has access to.
|
||||||
func (c *Client) ListMyRepos() ([]*Repository, error) {
|
func (c *Client) ListMyRepos() ([]*Repository, error) {
|
||||||
repos := make([]*Repository, 0, 10)
|
repos := make([]*Repository, 0, 10)
|
||||||
|
@ -69,36 +66,24 @@ func (c *Client) ListOrgRepos(org string) ([]*Repository, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateRepoOption options when creating repository
|
// CreateRepoOption options when creating repository
|
||||||
//swagger:parameters createOrgRepo adminCreateRepo createCurrentUserRepo
|
// swagger:model
|
||||||
type CreateRepoOption struct {
|
type CreateRepoOption struct {
|
||||||
// Name of the repository to create
|
// Name of the repository to create
|
||||||
//
|
//
|
||||||
// in: body
|
// required: true
|
||||||
// unique: true
|
// unique: true
|
||||||
Name string `json:"name" binding:"Required;AlphaDashDot;MaxSize(100)"`
|
Name string `json:"name" binding:"Required;AlphaDashDot;MaxSize(100)"`
|
||||||
// Description of the repository to create
|
// Description of the repository to create
|
||||||
//
|
|
||||||
// in: body
|
|
||||||
Description string `json:"description" binding:"MaxSize(255)"`
|
Description string `json:"description" binding:"MaxSize(255)"`
|
||||||
// Is the repository to create private ?
|
// Whether the repository is private
|
||||||
//
|
|
||||||
// in: body
|
|
||||||
Private bool `json:"private"`
|
Private bool `json:"private"`
|
||||||
// Init the repository to create ?
|
// Whether the repository should be auto-intialized?
|
||||||
//
|
|
||||||
// in: body
|
|
||||||
AutoInit bool `json:"auto_init"`
|
AutoInit bool `json:"auto_init"`
|
||||||
// Gitignores to use
|
// Gitignores to use
|
||||||
//
|
|
||||||
// in: body
|
|
||||||
Gitignores string `json:"gitignores"`
|
Gitignores string `json:"gitignores"`
|
||||||
// License to use
|
// License to use
|
||||||
//
|
|
||||||
// in: body
|
|
||||||
License string `json:"license"`
|
License string `json:"license"`
|
||||||
// Readme of the repository to create
|
// Readme of the repository to create
|
||||||
//
|
|
||||||
// in: body
|
|
||||||
Readme string `json:"readme"`
|
Readme string `json:"readme"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,24 +119,18 @@ func (c *Client) DeleteRepo(owner, repo string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// MigrateRepoOption options when migrate repository from an external place
|
// MigrateRepoOption options for migrating a repository from an external service
|
||||||
// swagger:parameters repoMigrate
|
|
||||||
type MigrateRepoOption struct {
|
type MigrateRepoOption struct {
|
||||||
// in: body
|
// required: true
|
||||||
CloneAddr string `json:"clone_addr" binding:"Required"`
|
CloneAddr string `json:"clone_addr" binding:"Required"`
|
||||||
// in: body
|
|
||||||
AuthUsername string `json:"auth_username"`
|
AuthUsername string `json:"auth_username"`
|
||||||
// in: body
|
|
||||||
AuthPassword string `json:"auth_password"`
|
AuthPassword string `json:"auth_password"`
|
||||||
// in: body
|
// required: true
|
||||||
UID int `json:"uid" binding:"Required"`
|
UID int `json:"uid" binding:"Required"`
|
||||||
// in: body
|
// required: true
|
||||||
RepoName string `json:"repo_name" binding:"Required"`
|
RepoName string `json:"repo_name" binding:"Required"`
|
||||||
// in: body
|
|
||||||
Mirror bool `json:"mirror"`
|
Mirror bool `json:"mirror"`
|
||||||
// in: body
|
|
||||||
Private bool `json:"private"`
|
Private bool `json:"private"`
|
||||||
// in: body
|
|
||||||
Description string `json:"description"`
|
Description string `json:"description"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Branch represents a repository branch.
|
// Branch represents a repository branch
|
||||||
type Branch struct {
|
type Branch struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Commit *PayloadCommit `json:"commit"`
|
Commit *PayloadCommit `json:"commit"`
|
||||||
|
|
|
@ -33,7 +33,7 @@ func (c *Client) IsCollaborator(user, repo, collaborator string) (bool, error) {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddCollaboratorOption options when add some user as a collaborator of a repository
|
// AddCollaboratorOption options when adding a user as a collaborator of a repository
|
||||||
type AddCollaboratorOption struct {
|
type AddCollaboratorOption struct {
|
||||||
Permission *string `json:"permission"`
|
Permission *string `json:"permission"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ type DeployKey struct {
|
||||||
Key string `json:"key"`
|
Key string `json:"key"`
|
||||||
URL string `json:"url"`
|
URL string `json:"url"`
|
||||||
Title string `json:"title"`
|
Title string `json:"title"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Created time.Time `json:"created_at"`
|
Created time.Time `json:"created_at"`
|
||||||
ReadOnly bool `json:"read_only"`
|
ReadOnly bool `json:"read_only"`
|
||||||
}
|
}
|
||||||
|
@ -33,18 +34,15 @@ func (c *Client) GetDeployKey(user, repo string, keyID int64) (*DeployKey, error
|
||||||
return key, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/keys/%d", user, repo, keyID), nil, nil, &key)
|
return key, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/keys/%d", user, repo, keyID), nil, nil, &key)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateKeyOption options when create deploy key
|
// CreateKeyOption options when creating a key
|
||||||
// swagger:parameters userCurrentPostKey adminCreatePublicKey
|
|
||||||
type CreateKeyOption struct {
|
type CreateKeyOption struct {
|
||||||
// Title of the key to add
|
// Title of the key to add
|
||||||
//
|
//
|
||||||
// in: body
|
|
||||||
// required: true
|
// required: true
|
||||||
// unique: true
|
// unique: true
|
||||||
Title string `json:"title" binding:"Required"`
|
Title string `json:"title" binding:"Required"`
|
||||||
// An armored SSH key to add
|
// An armored SSH key to add
|
||||||
//
|
//
|
||||||
// in: body
|
|
||||||
// required: true
|
// required: true
|
||||||
// unique: true
|
// unique: true
|
||||||
Key string `json:"key" binding:"Required"`
|
Key string `json:"key" binding:"Required"`
|
||||||
|
|
|
@ -10,8 +10,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// WatchInfo represents a API watch status of one repository
|
// WatchInfo represents an API watch status of one repository
|
||||||
// swagger:response WatchInfo
|
|
||||||
type WatchInfo struct {
|
type WatchInfo struct {
|
||||||
Subscribed bool `json:"subscribed"`
|
Subscribed bool `json:"subscribed"`
|
||||||
Ignored bool `json:"ignored"`
|
Ignored bool `json:"ignored"`
|
||||||
|
|
|
@ -37,7 +37,9 @@ type Status struct {
|
||||||
URL string `json:"url"`
|
URL string `json:"url"`
|
||||||
Context string `json:"context"`
|
Context string `json:"context"`
|
||||||
Creator *User `json:"creator"`
|
Creator *User `json:"creator"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Created time.Time `json:"created_at"`
|
Created time.Time `json:"created_at"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Updated time.Time `json:"updated_at"`
|
Updated time.Time `json:"updated_at"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,20 +9,21 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
// User represents a API user.
|
// User represents a user
|
||||||
// swagger:response User
|
// swagger:model
|
||||||
type User struct {
|
type User struct {
|
||||||
|
// the user's id
|
||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
|
// the user's username
|
||||||
UserName string `json:"login"`
|
UserName string `json:"login"`
|
||||||
|
// the user's full name
|
||||||
FullName string `json:"full_name"`
|
FullName string `json:"full_name"`
|
||||||
|
// swagger:strfmt email
|
||||||
Email string `json:"email"`
|
Email string `json:"email"`
|
||||||
|
// URL to the user's avatar
|
||||||
AvatarURL string `json:"avatar_url"`
|
AvatarURL string `json:"avatar_url"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// UserList represents a list of API user.
|
|
||||||
// swagger:response UserList
|
|
||||||
type UserList []*User
|
|
||||||
|
|
||||||
// MarshalJSON implements the json.Marshaler interface for User, adding field(s) for backward compatibility
|
// MarshalJSON implements the json.Marshaler interface for User, adding field(s) for backward compatibility
|
||||||
func (u User) MarshalJSON() ([]byte, error) {
|
func (u User) MarshalJSON() ([]byte, error) {
|
||||||
// Re-declaring User to avoid recursion
|
// Re-declaring User to avoid recursion
|
||||||
|
|
|
@ -9,8 +9,9 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Email en email information of user
|
// Email an email address belonging to a user
|
||||||
type Email struct {
|
type Email struct {
|
||||||
|
// swagger:strfmt email
|
||||||
Email string `json:"email"`
|
Email string `json:"email"`
|
||||||
Verified bool `json:"verified"`
|
Verified bool `json:"verified"`
|
||||||
Primary bool `json:"primary"`
|
Primary bool `json:"primary"`
|
||||||
|
@ -22,8 +23,9 @@ func (c *Client) ListEmails() ([]*Email, error) {
|
||||||
return emails, c.getParsedResponse("GET", "/user/emails", nil, nil, &emails)
|
return emails, c.getParsedResponse("GET", "/user/emails", nil, nil, &emails)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateEmailOption options when create an email
|
// CreateEmailOption options when creating email addresses
|
||||||
type CreateEmailOption struct {
|
type CreateEmailOption struct {
|
||||||
|
// email addresses to add
|
||||||
Emails []string `json:"emails"`
|
Emails []string `json:"emails"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,8 +39,14 @@ func (c *Client) AddEmail(opt CreateEmailOption) ([]*Email, error) {
|
||||||
return emails, c.getParsedResponse("POST", "/user/emails", jsonHeader, bytes.NewReader(body), emails)
|
return emails, c.getParsedResponse("POST", "/user/emails", jsonHeader, bytes.NewReader(body), emails)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeleteEmailOption options when deleting email addresses
|
||||||
|
type DeleteEmailOption struct {
|
||||||
|
// email addresses to delete
|
||||||
|
Emails []string `json:"emails"`
|
||||||
|
}
|
||||||
|
|
||||||
// DeleteEmail delete one email of current users'
|
// DeleteEmail delete one email of current users'
|
||||||
func (c *Client) DeleteEmail(opt CreateEmailOption) error {
|
func (c *Client) DeleteEmail(opt DeleteEmailOption) error {
|
||||||
body, err := json.Marshal(&opt)
|
body, err := json.Marshal(&opt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -11,12 +11,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GPGKeyList represents a list of GPGKey
|
|
||||||
// swagger:response GPGKeyList
|
|
||||||
type GPGKeyList []*GPGKey
|
|
||||||
|
|
||||||
// GPGKey a user GPG key to sign commit and tag in repository
|
// GPGKey a user GPG key to sign commit and tag in repository
|
||||||
// swagger:response GPGKey
|
|
||||||
type GPGKey struct {
|
type GPGKey struct {
|
||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
PrimaryKeyID string `json:"primary_key_id"`
|
PrimaryKeyID string `json:"primary_key_id"`
|
||||||
|
@ -28,7 +23,9 @@ type GPGKey struct {
|
||||||
CanEncryptComms bool `json:"can_encrypt_comms"`
|
CanEncryptComms bool `json:"can_encrypt_comms"`
|
||||||
CanEncryptStorage bool `json:"can_encrypt_storage"`
|
CanEncryptStorage bool `json:"can_encrypt_storage"`
|
||||||
CanCertify bool `json:"can_certify"`
|
CanCertify bool `json:"can_certify"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Created time.Time `json:"created_at,omitempty"`
|
Created time.Time `json:"created_at,omitempty"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Expires time.Time `json:"expires_at,omitempty"`
|
Expires time.Time `json:"expires_at,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,11 +37,9 @@ type GPGKeyEmail struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateGPGKeyOption options create user GPG key
|
// CreateGPGKeyOption options create user GPG key
|
||||||
// swagger:parameters userCurrentPostGPGKey
|
|
||||||
type CreateGPGKeyOption struct {
|
type CreateGPGKeyOption struct {
|
||||||
// An armored GPG key to add
|
// An armored GPG key to add
|
||||||
//
|
//
|
||||||
// in: body
|
|
||||||
// required: true
|
// required: true
|
||||||
// unique: true
|
// unique: true
|
||||||
ArmoredKey string `json:"armored_public_key" binding:"Required"`
|
ArmoredKey string `json:"armored_public_key" binding:"Required"`
|
||||||
|
|
|
@ -11,17 +11,13 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// PublicKeyList represents a list of PublicKey
|
|
||||||
// swagger:response PublicKeyList
|
|
||||||
type PublicKeyList []*PublicKey
|
|
||||||
|
|
||||||
// PublicKey publickey is a user key to push code to repository
|
// PublicKey publickey is a user key to push code to repository
|
||||||
// swagger:response PublicKey
|
|
||||||
type PublicKey struct {
|
type PublicKey struct {
|
||||||
ID int64 `json:"id"`
|
ID int64 `json:"id"`
|
||||||
Key string `json:"key"`
|
Key string `json:"key"`
|
||||||
URL string `json:"url,omitempty"`
|
URL string `json:"url,omitempty"`
|
||||||
Title string `json:"title,omitempty"`
|
Title string `json:"title,omitempty"`
|
||||||
|
// swagger:strfmt date-time
|
||||||
Created time.Time `json:"created_at,omitempty"`
|
Created time.Time `json:"created_at,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,10 +9,10 @@
|
||||||
"revisionTime": "2017-10-23T00:52:09Z"
|
"revisionTime": "2017-10-23T00:52:09Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"checksumSHA1": "Zgp5RqU+20L2p9TNl1rSsUIWEEE=",
|
"checksumSHA1": "OICEgmUefW4L4l/FK/NVFnl/aOM=",
|
||||||
"path": "code.gitea.io/sdk/gitea",
|
"path": "code.gitea.io/sdk/gitea",
|
||||||
"revision": "bc243ad6c268d60658c71185452334b300c268cf",
|
"revision": "1da52cf95ff3e7953227cfa0469e1c05a7d02557",
|
||||||
"revisionTime": "2017-08-21T08:23:17Z"
|
"revisionTime": "2017-11-12T09:10:33Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"checksumSHA1": "bOODD4Gbw3GfcuQPU2dI40crxxk=",
|
"checksumSHA1": "bOODD4Gbw3GfcuQPU2dI40crxxk=",
|
||||||
|
|
Loading…
Reference in New Issue