feat(server): add project sharing access control
This commit is contained in:
@@ -865,6 +865,97 @@ type DeleteAssetResponse {
|
||||
Deleted bool `json:"deleted"`
|
||||
}
|
||||
|
||||
type SharePerson {
|
||||
Id string `json:"id"`
|
||||
UserId string `json:"userId,optional"`
|
||||
Name string `json:"name,optional"`
|
||||
Identifier string `json:"identifier,optional"`
|
||||
AvatarUrl string `json:"avatarUrl,optional"`
|
||||
Permission string `json:"permission"`
|
||||
CreatedAt string `json:"createdAt,optional"`
|
||||
}
|
||||
|
||||
type ShareVisitor {
|
||||
Id string `json:"id"`
|
||||
UserId string `json:"userId,optional"`
|
||||
Name string `json:"name"`
|
||||
Identifier string `json:"identifier,optional"`
|
||||
AvatarUrl string `json:"avatarUrl,optional"`
|
||||
VisitCount int64 `json:"visitCount"`
|
||||
LastSeenAt string `json:"lastSeenAt"`
|
||||
}
|
||||
|
||||
type ShareCapabilities {
|
||||
CanViewCanvas bool `json:"canViewCanvas"`
|
||||
CanViewChat bool `json:"canViewChat"`
|
||||
CanEdit bool `json:"canEdit"`
|
||||
CanManage bool `json:"canManage"`
|
||||
}
|
||||
|
||||
type ShareAccess {
|
||||
Permission string `json:"permission"`
|
||||
Source string `json:"source"`
|
||||
Authenticated bool `json:"authenticated"`
|
||||
IsOwner bool `json:"isOwner"`
|
||||
Capabilities ShareCapabilities `json:"capabilities"`
|
||||
}
|
||||
|
||||
type ShareSettings {
|
||||
ProjectId string `json:"projectId"`
|
||||
ShareId string `json:"shareId,optional"`
|
||||
LinkPermission string `json:"linkPermission"`
|
||||
Owner SharePerson `json:"owner"`
|
||||
Members []SharePerson `json:"members"`
|
||||
VisitorCount int64 `json:"visitorCount"`
|
||||
UpdatedAt string `json:"updatedAt,optional"`
|
||||
}
|
||||
|
||||
type ShareSettingsRequest {
|
||||
Id string `path:"id"`
|
||||
}
|
||||
|
||||
type ShareSettingsResponse {
|
||||
Settings ShareSettings `json:"settings"`
|
||||
}
|
||||
|
||||
type UpdateShareLinkRequest {
|
||||
Id string `path:"id"`
|
||||
Permission string `json:"permission"`
|
||||
}
|
||||
|
||||
type InviteShareMemberRequest {
|
||||
Id string `path:"id"`
|
||||
Identifier string `json:"identifier"`
|
||||
Permission string `json:"permission"`
|
||||
}
|
||||
|
||||
type UpdateShareMemberRequest {
|
||||
Id string `path:"id"`
|
||||
MemberId string `path:"memberId"`
|
||||
Permission string `json:"permission"`
|
||||
}
|
||||
|
||||
type DeleteShareMemberRequest {
|
||||
Id string `path:"id"`
|
||||
MemberId string `path:"memberId"`
|
||||
}
|
||||
|
||||
type ShareVisitorsResponse {
|
||||
Visitors []ShareVisitor `json:"visitors"`
|
||||
}
|
||||
|
||||
type ResolveShareRequest {
|
||||
ShareId string `path:"shareId"`
|
||||
VisitorId string `header:"X-Share-Visitor,optional"`
|
||||
}
|
||||
|
||||
type ResolveShareResponse {
|
||||
ShareId string `json:"shareId"`
|
||||
Project Project `json:"project"`
|
||||
Access ShareAccess `json:"access"`
|
||||
UpdatedAt string `json:"updatedAt"`
|
||||
}
|
||||
|
||||
@server (
|
||||
prefix: /api
|
||||
)
|
||||
@@ -1021,5 +1112,29 @@ service img_infinite_canvas-api {
|
||||
|
||||
@handler deleteAsset
|
||||
delete /assets (DeleteAssetRequest) returns (DeleteAssetResponse)
|
||||
|
||||
@handler getShareSettings
|
||||
get /projects/:id/sharing (ShareSettingsRequest) returns (ShareSettingsResponse)
|
||||
|
||||
@handler updateShareLink
|
||||
put /projects/:id/sharing/link (UpdateShareLinkRequest) returns (ShareSettingsResponse)
|
||||
|
||||
@handler inviteShareMember
|
||||
post /projects/:id/sharing/members (InviteShareMemberRequest) returns (ShareSettingsResponse)
|
||||
|
||||
@handler updateShareMember
|
||||
patch /projects/:id/sharing/members/:memberId (UpdateShareMemberRequest) returns (ShareSettingsResponse)
|
||||
|
||||
@handler deleteShareMember
|
||||
delete /projects/:id/sharing/members/:memberId (DeleteShareMemberRequest) returns (ShareSettingsResponse)
|
||||
|
||||
@handler listShareVisitors
|
||||
get /projects/:id/sharing/visitors (ShareSettingsRequest) returns (ShareVisitorsResponse)
|
||||
|
||||
@handler revokeShareAccess
|
||||
delete /projects/:id/sharing/access (ShareSettingsRequest) returns (ShareSettingsResponse)
|
||||
|
||||
@handler resolveShare
|
||||
get /shares/:shareId (ResolveShareRequest) returns (ResolveShareResponse)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user