53 lines
1.6 KiB
Plaintext
53 lines
1.6 KiB
Plaintext
syntax = "v1"
|
|
|
|
type (
|
|
PermissionCatalogQuery {
|
|
Status string `form:"status,optional" validate:"omitempty,oneof=open close"`
|
|
Type string `form:"type,optional" validate:"omitempty,oneof=backend_user frontend_user"`
|
|
Tree bool `form:"tree,optional"`
|
|
}
|
|
|
|
PermissionNode {
|
|
ID string `json:"id"`
|
|
Parent string `json:"parent,omitempty"`
|
|
Name string `json:"name"`
|
|
HTTPMethods string `json:"http_methods,omitempty"`
|
|
HTTPPath string `json:"http_path,omitempty"`
|
|
Status string `json:"status"`
|
|
Type string `json:"type"`
|
|
Children []PermissionNode `json:"children,omitempty"`
|
|
}
|
|
|
|
PermissionCatalogData {
|
|
Tree []PermissionNode `json:"tree,omitempty"`
|
|
List []PermissionNode `json:"list,omitempty"`
|
|
}
|
|
|
|
MePermissionsQuery {
|
|
IncludeTree bool `form:"include_tree,optional"`
|
|
}
|
|
|
|
MePermissionsData {
|
|
UID string `json:"uid"`
|
|
TenantID string `json:"tenant_id"`
|
|
Roles []string `json:"roles"`
|
|
Permissions map[string]string `json:"permissions"`
|
|
Tree []PermissionNode `json:"tree,omitempty"`
|
|
}
|
|
)
|
|
|
|
@server(
|
|
group: permission
|
|
prefix: /api/v1/permissions
|
|
middleware: AuthJWT
|
|
tags: "Permission"
|
|
summary: "Permission catalog and current member permissions. Requires Bearer JWT."
|
|
)
|
|
service gateway {
|
|
@handler getPermissionCatalog
|
|
get /catalog (PermissionCatalogQuery) returns (PermissionCatalogData)
|
|
|
|
@handler getMePermissions
|
|
get /me (MePermissionsQuery) returns (MePermissionsData)
|
|
}
|