PEER -> SearchExtended
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"oc-peer/infrastructure"
|
||||
"strconv"
|
||||
|
||||
oclib "cloud.o-forge.io/core/oc-lib"
|
||||
"cloud.o-forge.io/core/oc-lib/dbs"
|
||||
@@ -23,6 +24,8 @@ type PeerController struct {
|
||||
// @Description search workspace
|
||||
// @Param search path string true "the word search you want to get"
|
||||
// @Param is_draft query string false
|
||||
// @Param offset query string false
|
||||
// @Param limit query string false
|
||||
// @Success 200 {workspace} models.workspace
|
||||
// @router /search/:search [get]
|
||||
func (o *PeerController) Search() {
|
||||
@@ -30,27 +33,57 @@ func (o *PeerController) Search() {
|
||||
// store and return Id or post with UUIDLibDataEnum
|
||||
search := o.Ctx.Input.Param(":search")
|
||||
isDraft := o.Ctx.Input.Query("is_draft")
|
||||
o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.PEER), user, peerID, groups, nil).Search(nil, search, isDraft == "true")
|
||||
offset, _ := strconv.Atoi(o.Ctx.Input.Query("offset"))
|
||||
limit, _ := strconv.Atoi(o.Ctx.Input.Query("limit"))
|
||||
o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.PEER), user, peerID, groups, nil).Search(nil, search, isDraft == "true", int64(offset), int64(limit))
|
||||
o.ServeJSON()
|
||||
}
|
||||
|
||||
// @Title Search
|
||||
// @Description search workspace
|
||||
// @Param is_draft query string false
|
||||
// @Param offset query string false
|
||||
// @Param limit query string false
|
||||
// @Param data body json true "body for data content (Json format)"
|
||||
// @Success 200 {workspace} models.workspace
|
||||
// @router /extended/search [post]
|
||||
func (o *PeerController) SearchExtended() {
|
||||
user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
|
||||
// store and return Id or post with UUIDLibDataEnum
|
||||
isDraft := o.Ctx.Input.Query("is_draft")
|
||||
offset, _ := strconv.Atoi(o.Ctx.Input.Query("offset"))
|
||||
limit, _ := strconv.Atoi(o.Ctx.Input.Query("limit"))
|
||||
var res map[string]interface{}
|
||||
json.Unmarshal(o.Ctx.Input.CopyBody(100000), &res)
|
||||
fmt.Println(res, oclib.FiltersFromFlatMap(res, &peer.Peer{}))
|
||||
data := oclib.NewRequest(oclib.LibDataEnum(oclib.PEER), user, peerID, groups, nil).Search(
|
||||
oclib.FiltersFromFlatMap(res, &peer.Peer{}), "", isDraft == "true", int64(offset), int64(limit))
|
||||
fmt.Println(data.Data[0].GetName())
|
||||
o.Data["json"] = data
|
||||
o.ServeJSON()
|
||||
}
|
||||
|
||||
// @Title GetAll
|
||||
// @Description find all peer
|
||||
// @Param is_draft query string false
|
||||
// @Param offset query string false
|
||||
// @Param limit query string false
|
||||
// @Success 200 {peer} models.peer
|
||||
// @router / [get]
|
||||
func (o *PeerController) GetAll() {
|
||||
user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
|
||||
isDraft := o.Ctx.Input.Query("is_draft")
|
||||
offset, _ := strconv.Atoi(o.Ctx.Input.Query("offset"))
|
||||
limit, _ := strconv.Atoi(o.Ctx.Input.Query("limit"))
|
||||
verify := o.Ctx.Input.Query("verify")
|
||||
if verify == "true" {
|
||||
o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.PEER), user, peerID, groups, nil).Search(&dbs.Filters{
|
||||
And: map[string][]dbs.Filter{
|
||||
"verify": {{Operator: dbs.EQUAL.String(), Value: true}},
|
||||
},
|
||||
}, "", false)
|
||||
}, "", false, int64(offset), int64(limit))
|
||||
} else {
|
||||
o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.PEER), user, peerID, groups, nil).LoadAll(isDraft == "true")
|
||||
o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.PEER), user, peerID, groups, nil).LoadAll(isDraft == "true", int64(offset), int64(limit))
|
||||
}
|
||||
o.ServeJSON()
|
||||
}
|
||||
@@ -113,11 +146,38 @@ func (o *PeerController) Valid() {
|
||||
o.ServeJSON()
|
||||
}
|
||||
|
||||
// @Title add
|
||||
// @Description add peer by peerid
|
||||
// @Param id path string true "the peer id you want to blacklist"
|
||||
// @Success 200 {peer} models.peer
|
||||
// @router /add/:id [post]
|
||||
func (o *PeerController) Add() {
|
||||
user, _, _ := oclib.ExtractTokenInfo(*o.Ctx.Request)
|
||||
id := o.Ctx.Input.Param(":id")
|
||||
infrastructure.SearchMu.Lock()
|
||||
if infrastructure.SearchStreamAction[user] != nil {
|
||||
for _, p := range infrastructure.SearchStreamAction[user] {
|
||||
if p.GetID() == id {
|
||||
req := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), nil)
|
||||
o.Data["json"] = req.StoreOne(p.Serialize(p))
|
||||
o.ServeJSON()
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
o.Data["json"] = map[string]interface{}{
|
||||
"data": nil,
|
||||
"code": 404,
|
||||
"error": "peer not received found",
|
||||
}
|
||||
o.ServeJSON()
|
||||
}
|
||||
|
||||
// @Title known
|
||||
// @Description add kwown peer by peerid
|
||||
// @Param id path string true "the peer id you want to blacklist"
|
||||
// @Success 200 {peer} models.peer
|
||||
// @router /:id/known [post]
|
||||
// @router /known/:id [post]
|
||||
func (o *PeerController) Known() {
|
||||
user, _, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
|
||||
id := o.Ctx.Input.Param(":id")
|
||||
@@ -131,7 +191,7 @@ func (o *PeerController) Known() {
|
||||
// @Description add partner peer by peerid
|
||||
// @Param id path string true "the peer id you want to blacklist"
|
||||
// @Success 200 {peer} models.peer
|
||||
// @router /:id/partner [post]
|
||||
// @router /partner/:id [post]
|
||||
func (o *PeerController) Partner() {
|
||||
user, _, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
|
||||
id := o.Ctx.Input.Param(":id")
|
||||
@@ -144,7 +204,7 @@ func (o *PeerController) Partner() {
|
||||
// @Description add blacklist peer by peerid
|
||||
// @Param id path string true "the peer id you want to blacklist"
|
||||
// @Success 200 {peer} models.peer
|
||||
// @router /:id/blacklist [post]
|
||||
// @router /blacklist/:id [post]
|
||||
func (o *PeerController) Blacklist() {
|
||||
user, _, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
|
||||
id := o.Ctx.Input.Param(":id")
|
||||
@@ -215,25 +275,32 @@ func (o *PeerController) changeRelation(id string, dest *peer.Peer, user string,
|
||||
}
|
||||
o.Data["json"] = map[string]interface{}{
|
||||
"data": nil,
|
||||
"code": 400,
|
||||
"code": 404,
|
||||
"error": "peer not found.",
|
||||
}
|
||||
o.ServeJSON()
|
||||
}
|
||||
|
||||
// TODO : link
|
||||
|
||||
// @Title DeleteState
|
||||
// @Description delete state peer by peerid
|
||||
// @Title Delete
|
||||
// @Description delete peer by peerid
|
||||
// @Param id path string true "the peer id you want to delete state"
|
||||
// @Success 200 {peer} models.peer
|
||||
// @router /:id/undo_state [post]
|
||||
func (o *PeerController) DeleteState() {
|
||||
user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
|
||||
// @router /:id [delete]
|
||||
func (o *PeerController) Delete() {
|
||||
id := o.Ctx.Input.Param(":id")
|
||||
o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.PEER), user, peerID, groups, nil).UpdateOne(map[string]interface{}{
|
||||
"state": peer.NONE,
|
||||
}, id)
|
||||
if ok, _ := oclib.IsMySelf(id); ok {
|
||||
o.Data["json"] = map[string]interface{}{
|
||||
"data": nil,
|
||||
"code": 400,
|
||||
"error": "can't remove myself",
|
||||
}
|
||||
o.ServeJSON()
|
||||
return
|
||||
}
|
||||
user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
|
||||
|
||||
o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.PEER), user, peerID, groups, nil).DeleteOne(id)
|
||||
fmt.Println(o.Data["json"])
|
||||
o.ServeJSON()
|
||||
}
|
||||
|
||||
|
||||
2
go.mod
2
go.mod
@@ -3,7 +3,7 @@ module oc-peer
|
||||
go 1.25.0
|
||||
|
||||
require (
|
||||
cloud.o-forge.io/core/oc-lib v0.0.0-20260331144112-c0722483b86c
|
||||
cloud.o-forge.io/core/oc-lib v0.0.0-20260407090927-6fe91eda875d
|
||||
github.com/beego/beego/v2 v2.3.8
|
||||
github.com/smartystreets/goconvey v1.7.2
|
||||
)
|
||||
|
||||
6
go.sum
6
go.sum
@@ -38,6 +38,12 @@ cloud.o-forge.io/core/oc-lib v0.0.0-20260327114131-45f2351b2f1f h1:lY+EJlJazoDBo
|
||||
cloud.o-forge.io/core/oc-lib v0.0.0-20260327114131-45f2351b2f1f/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA=
|
||||
cloud.o-forge.io/core/oc-lib v0.0.0-20260331144112-c0722483b86c h1:wTIridvhud8zwMsMkwxgrQ+j+6UAo2IHDr3N80AA6zc=
|
||||
cloud.o-forge.io/core/oc-lib v0.0.0-20260331144112-c0722483b86c/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA=
|
||||
cloud.o-forge.io/core/oc-lib v0.0.0-20260403121807-913d9b3dfb0a h1:H7K91js08Vyx307MW6BwQ/kqNGTrQVMaR3xvrIrc2W8=
|
||||
cloud.o-forge.io/core/oc-lib v0.0.0-20260403121807-913d9b3dfb0a/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA=
|
||||
cloud.o-forge.io/core/oc-lib v0.0.0-20260407075448-b7ee6d8e7f13 h1:mygo9rIB3uJ/GJQKD0F1xvEEEITZD3DuyRrX+W/VD+M=
|
||||
cloud.o-forge.io/core/oc-lib v0.0.0-20260407075448-b7ee6d8e7f13/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA=
|
||||
cloud.o-forge.io/core/oc-lib v0.0.0-20260407090927-6fe91eda875d h1:54Vl14gurwAkmZEaWZKUM5eDZfB7MF/fzWjibWLQljE=
|
||||
cloud.o-forge.io/core/oc-lib v0.0.0-20260407090927-6fe91eda875d/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
|
||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
|
||||
@@ -121,7 +121,7 @@ func ListenNATS() {
|
||||
And: map[string][]dbs.Filter{
|
||||
"peer_id": {{Operator: dbs.EQUAL.String(), Value: p.PeerID}},
|
||||
},
|
||||
}, "", false); len(s.Data) > 0 {
|
||||
}, "", false, 0, 1); len(s.Data) > 0 {
|
||||
p.Relation = s.Data[0].(*peer.Peer).Relation
|
||||
} else {
|
||||
p.NotInCatalog = true
|
||||
|
||||
@@ -25,10 +25,37 @@ func init() {
|
||||
Filters: nil,
|
||||
Params: nil})
|
||||
|
||||
beego.GlobalControllerRouter["oc-peer/controllers:PeerController"] = append(beego.GlobalControllerRouter["oc-peer/controllers:PeerController"],
|
||||
beego.ControllerComments{
|
||||
Method: "Delete",
|
||||
Router: `/:id`,
|
||||
AllowHTTPMethods: []string{"delete"},
|
||||
MethodParams: param.Make(),
|
||||
Filters: nil,
|
||||
Params: nil})
|
||||
|
||||
beego.GlobalControllerRouter["oc-peer/controllers:PeerController"] = append(beego.GlobalControllerRouter["oc-peer/controllers:PeerController"],
|
||||
beego.ControllerComments{
|
||||
Method: "Add",
|
||||
Router: `/add/:id`,
|
||||
AllowHTTPMethods: []string{"post"},
|
||||
MethodParams: param.Make(),
|
||||
Filters: nil,
|
||||
Params: nil})
|
||||
|
||||
beego.GlobalControllerRouter["oc-peer/controllers:PeerController"] = append(beego.GlobalControllerRouter["oc-peer/controllers:PeerController"],
|
||||
beego.ControllerComments{
|
||||
Method: "Blacklist",
|
||||
Router: `/:id/blacklist`,
|
||||
Router: `/blacklist/:id`,
|
||||
AllowHTTPMethods: []string{"post"},
|
||||
MethodParams: param.Make(),
|
||||
Filters: nil,
|
||||
Params: nil})
|
||||
|
||||
beego.GlobalControllerRouter["oc-peer/controllers:PeerController"] = append(beego.GlobalControllerRouter["oc-peer/controllers:PeerController"],
|
||||
beego.ControllerComments{
|
||||
Method: "SearchExtended",
|
||||
Router: `/extended/search`,
|
||||
AllowHTTPMethods: []string{"post"},
|
||||
MethodParams: param.Make(),
|
||||
Filters: nil,
|
||||
@@ -37,7 +64,7 @@ func init() {
|
||||
beego.GlobalControllerRouter["oc-peer/controllers:PeerController"] = append(beego.GlobalControllerRouter["oc-peer/controllers:PeerController"],
|
||||
beego.ControllerComments{
|
||||
Method: "Known",
|
||||
Router: `/:id/known`,
|
||||
Router: `/known/:id`,
|
||||
AllowHTTPMethods: []string{"post"},
|
||||
MethodParams: param.Make(),
|
||||
Filters: nil,
|
||||
@@ -46,16 +73,7 @@ func init() {
|
||||
beego.GlobalControllerRouter["oc-peer/controllers:PeerController"] = append(beego.GlobalControllerRouter["oc-peer/controllers:PeerController"],
|
||||
beego.ControllerComments{
|
||||
Method: "Partner",
|
||||
Router: `/:id/partner`,
|
||||
AllowHTTPMethods: []string{"post"},
|
||||
MethodParams: param.Make(),
|
||||
Filters: nil,
|
||||
Params: nil})
|
||||
|
||||
beego.GlobalControllerRouter["oc-peer/controllers:PeerController"] = append(beego.GlobalControllerRouter["oc-peer/controllers:PeerController"],
|
||||
beego.ControllerComments{
|
||||
Method: "DeleteState",
|
||||
Router: `/:id/undo_state`,
|
||||
Router: `/partner/:id`,
|
||||
AllowHTTPMethods: []string{"post"},
|
||||
MethodParams: param.Make(),
|
||||
Filters: nil,
|
||||
|
||||
@@ -28,6 +28,18 @@
|
||||
"name": "is_draft",
|
||||
"description": "false",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"in": "query",
|
||||
"name": "offset",
|
||||
"description": "false",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"in": "query",
|
||||
"name": "limit",
|
||||
"description": "false",
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
@@ -37,6 +49,70 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/add/{id}": {
|
||||
"post": {
|
||||
"tags": [
|
||||
"oc-peer/controllersPeerController"
|
||||
],
|
||||
"description": "add peer by peerid\n\u003cbr\u003e",
|
||||
"operationId": "PeerController.add",
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "id",
|
||||
"description": "the peer id you want to blacklist",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "{peer} models.peer"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/extended/search": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"oc-peer/controllersPeerController"
|
||||
],
|
||||
"description": "search workspace\n\u003cbr\u003e",
|
||||
"operationId": "PeerController.Search",
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "search",
|
||||
"description": "the word search you want to get",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"in": "query",
|
||||
"name": "is_draft",
|
||||
"description": "false",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"in": "query",
|
||||
"name": "offset",
|
||||
"description": "false",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"in": "query",
|
||||
"name": "limit",
|
||||
"description": "false",
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "{workspace} models.workspace"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/search/{search}": {
|
||||
"get": {
|
||||
"tags": [
|
||||
@@ -57,6 +133,18 @@
|
||||
"name": "is_draft",
|
||||
"description": "false",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"in": "query",
|
||||
"name": "offset",
|
||||
"description": "false",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"in": "query",
|
||||
"name": "limit",
|
||||
"description": "false",
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
@@ -148,6 +236,27 @@
|
||||
"description": "{peer} models.peer"
|
||||
}
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"tags": [
|
||||
"oc-peer/controllersPeerController"
|
||||
],
|
||||
"description": "delete peer by peerid\n\u003cbr\u003e",
|
||||
"operationId": "PeerController.Delete",
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "id",
|
||||
"description": "the peer id you want to delete state",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "{peer} models.peer"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/{id}/blacklist": {
|
||||
@@ -218,29 +327,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/{id}/undo_state": {
|
||||
"post": {
|
||||
"tags": [
|
||||
"oc-peer/controllersPeerController"
|
||||
],
|
||||
"description": "delete state peer by peerid\n\u003cbr\u003e",
|
||||
"operationId": "PeerController.DeleteState",
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "id",
|
||||
"description": "the peer id you want to delete state",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "{peer} models.peer"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"definitions": {
|
||||
|
||||
@@ -25,6 +25,14 @@ paths:
|
||||
name: is_draft
|
||||
description: "false"
|
||||
type: string
|
||||
- in: query
|
||||
name: offset
|
||||
description: "false"
|
||||
type: string
|
||||
- in: query
|
||||
name: limit
|
||||
description: "false"
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: '{peer} models.peer'
|
||||
@@ -45,6 +53,22 @@ paths:
|
||||
responses:
|
||||
"200":
|
||||
description: '{peer} models.peer'
|
||||
delete:
|
||||
tags:
|
||||
- oc-peer/controllersPeerController
|
||||
description: |-
|
||||
delete peer by peerid
|
||||
<br>
|
||||
operationId: PeerController.Delete
|
||||
parameters:
|
||||
- in: path
|
||||
name: id
|
||||
description: the peer id you want to delete state
|
||||
required: true
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: '{peer} models.peer'
|
||||
/{id}/blacklist:
|
||||
post:
|
||||
tags:
|
||||
@@ -96,23 +120,52 @@ paths:
|
||||
responses:
|
||||
"200":
|
||||
description: '{peer} models.peer'
|
||||
/{id}/undo_state:
|
||||
/add/{id}:
|
||||
post:
|
||||
tags:
|
||||
- oc-peer/controllersPeerController
|
||||
description: |-
|
||||
delete state peer by peerid
|
||||
add peer by peerid
|
||||
<br>
|
||||
operationId: PeerController.DeleteState
|
||||
operationId: PeerController.add
|
||||
parameters:
|
||||
- in: path
|
||||
name: id
|
||||
description: the peer id you want to delete state
|
||||
description: the peer id you want to blacklist
|
||||
required: true
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: '{peer} models.peer'
|
||||
/extended/search:
|
||||
get:
|
||||
tags:
|
||||
- oc-peer/controllersPeerController
|
||||
description: |-
|
||||
search workspace
|
||||
<br>
|
||||
operationId: PeerController.Search
|
||||
parameters:
|
||||
- in: path
|
||||
name: search
|
||||
description: the word search you want to get
|
||||
required: true
|
||||
type: string
|
||||
- in: query
|
||||
name: is_draft
|
||||
description: "false"
|
||||
type: string
|
||||
- in: query
|
||||
name: offset
|
||||
description: "false"
|
||||
type: string
|
||||
- in: query
|
||||
name: limit
|
||||
description: "false"
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: '{workspace} models.workspace'
|
||||
/search/{search}:
|
||||
get:
|
||||
tags:
|
||||
@@ -131,6 +184,14 @@ paths:
|
||||
name: is_draft
|
||||
description: "false"
|
||||
type: string
|
||||
- in: query
|
||||
name: offset
|
||||
description: "false"
|
||||
type: string
|
||||
- in: query
|
||||
name: limit
|
||||
description: "false"
|
||||
type: string
|
||||
responses:
|
||||
"200":
|
||||
description: '{workspace} models.workspace'
|
||||
|
||||
Reference in New Issue
Block a user