← Workspaces docs  ·  Generated proto reference  ·  raw .proto  ·  HTTP/JSON (Scalar)

Workspaces — Proto Reference (workspace.v1)

Table of Contents

workspace/v1/workspace.proto

Top

AcceptInvitationRequest

FieldTypeLabelDescription
token string

acting_user_id string

project_id string

tenant_id string

AcceptInvitationResponse

FieldTypeLabelDescription
membership Membership

AddGroupMemberRequest

FieldTypeLabelDescription
group_id string

member GroupMember

acting_user_id string

project_id string

tenant_id string

AddGroupMemberResponse

AddMemberRequest

FieldTypeLabelDescription
workspace_id string

user_id string

role Role

acting_user_id string

project_id string

tenant_id string

AddMemberResponse

FieldTypeLabelDescription
membership Membership

AssignSeatRequest

FieldTypeLabelDescription
project_id string

tenant_id string

sku string

user_id string

AssignSeatResponse

FieldTypeLabelDescription
already_held bool

already_held is true when the user already had a seat (idempotent no-op).

BatchCheckItem

BatchCheck answers many Check questions in one round-trip — the list/grid hot

path (filter N documents/lessons to those a user can see). Results are

index-aligned to items; a per-item validation error is reported in that

item's result rather than failing the whole batch. Every item shares the

request's project_id and tenant_id.

NOTE: BatchCheck carries NO request context, so CONDITIONAL grants (caveats:

scope_in / not_after / ip_in_cidrs / consent_granted / age_at_least) cannot be

evaluated through it and a conditioned grant is denied. Use Check (which takes

`context`) for conditional grants.

FieldTypeLabelDescription
namespace string

object_id string

relation string

subject_user_id string

BatchCheckRequest

FieldTypeLabelDescription
project_id string

tenant_id string

items BatchCheckItem repeated

at_least_consistency_token string

at_least_consistency_token, when set, demands the batch observe state at least as fresh as the token (from a prior WriteRelationTuples). Empty = read latest. A malformed or foreign-shard token is rejected.

BatchCheckResponse

FieldTypeLabelDescription
results BatchCheckResult repeated

BatchCheckResult

FieldTypeLabelDescription
allowed bool

error string

error is non-empty when the item could not be evaluated (e.g. invalid arguments); allowed is then false.

CheckRequest

Check answers "does subject have relation on namespace:object_id?",

evaluating the namespace's userset rewrite rules transitively.

FieldTypeLabelDescription
namespace string

object_id string

relation string

subject_user_id string

project_id string

tenant_id string

subject_set SubjectSet

subject_set asks whether a USERSET (e.g. group:cohort-7#member, or a service-account set) has the relation, rather than a concrete user. It is used iff subject_user_id is empty; exactly one of the two must be set. The answer is "does the queried userset intersect the relation's effective userset" — true if the set is structurally included, or if any concrete member of the set has the relation.

context google.protobuf.Struct

context carries request-time attributes that CONDITIONAL grants are evaluated against (e.g. {"age": 9, "consent": true, "ip": "1.2.3.4", "now": "2026-06-16T00:00:00Z"}). Unset = no context; conditional grants then fail closed, while unconditional grants are unaffected.

at_least_consistency_token string

at_least_consistency_token, when set, demands the check observe state at least as fresh as the token (from a prior WriteRelationTuples). Empty = read latest. A malformed or foreign-shard token is rejected.

CheckResponse

FieldTypeLabelDescription
allowed bool

CreateGroupRequest

FieldTypeLabelDescription
display_name string

slug string

workspace_id string

optional owning workspace; empty for a standalone group.

acting_user_id string

project_id string

tenant_id string

CreateGroupResponse

FieldTypeLabelDescription
group Group

CreateInvitationRequest

FieldTypeLabelDescription
workspace_id string

email string

role Role

acting_user_id string

project_id string

tenant_id string

CreateInvitationResponse

FieldTypeLabelDescription
invitation Invitation

CreateProjectRequest

FieldTypeLabelDescription
id string

name string

model_json string

data_region string

max_check_reads int32

max_check_reads: 0 leaves the project on the global default budget. A positive value overrides it and must be >= the same floor as the global (see GATEWAY_MAX_CHECK_READS).

CreateProjectResponse

FieldTypeLabelDescription
project Project

CreateWorkspaceRequest

FieldTypeLabelDescription
display_name string

slug string

slug is optional; the server derives one from display_name when empty.

acting_user_id string

project_id string

tenant_id string

CreateWorkspaceResponse

FieldTypeLabelDescription
workspace Workspace

DeleteGroupRequest

FieldTypeLabelDescription
group_id string

acting_user_id string

project_id string

tenant_id string

DeleteGroupResponse

DeleteWorkspaceRequest

FieldTypeLabelDescription
workspace_id string

acting_user_id string

project_id string

tenant_id string

DeleteWorkspaceResponse

DeprovisionUserRequest

DeprovisionUser revokes ALL of a user's ACCESS GRANTS: it deletes every

relation tuple whose concrete subject is user_id, across all namespaces AND

ALL TENANTS of the project, so a leaving user cannot retain live access in a

sibling tenant; tenant_id is therefore ignored here. It does NOT delete the

user's PII (membership/invitation/workspace rows) — full subject erasure and

data-subject export are a separate concern (issue #14), so this RPC alone is

not a GDPR/COPPA "right to erasure".

FieldTypeLabelDescription
project_id string

tenant_id string

tenant_id is accepted for call-shape symmetry but IGNORED: erasure spans every tenant of the project.

user_id string

DeprovisionUserResponse

FieldTypeLabelDescription
deleted_count int64

Enrollment

FieldTypeLabelDescription
group_id string

member GroupMember

state EnrollmentState

created_at google.protobuf.Timestamp

updated_at google.protobuf.Timestamp

ExpandRequest

Expand returns the effective userset tree for namespace:object_id#relation.

FieldTypeLabelDescription
namespace string

object_id string

relation string

project_id string

tenant_id string

at_least_consistency_token string

at_least_consistency_token, when set, demands the expansion reflect state at least as fresh as the token (from a prior WriteRelationTuples). Empty = read latest. A malformed or foreign-shard token is rejected.

ExpandResponse

FieldTypeLabelDescription
tree UsersetTree

ExportSubjectGrantsRequest

ExportSubjectGrants returns every authorization grant a user holds in a

project — across ALL tenants (mirroring DeprovisionUser's erase scope) — for

GDPR/COPPA data-subject access requests. Read-only.

FieldTypeLabelDescription
project_id string

user_id string

ExportSubjectGrantsResponse

FieldTypeLabelDescription
grants SubjectGrant repeated

GetGroupRequest

FieldTypeLabelDescription
group_id string

acting_user_id string

project_id string

tenant_id string

GetGroupResponse

FieldTypeLabelDescription
group Group

GetProjectRequest

FieldTypeLabelDescription
id string

GetProjectResponse

FieldTypeLabelDescription
project Project

GetSeatUsageRequest

FieldTypeLabelDescription
project_id string

tenant_id string

sku string

GetSeatUsageResponse

FieldTypeLabelDescription
sku string

used int32

limit int32

limited bool

limited is false when no limit is configured for the sku (unlimited).

GetWorkspaceRequest

FieldTypeLabelDescription
workspace_id string

acting_user_id string

project_id string

tenant_id string

GetWorkspaceResponse

FieldTypeLabelDescription
workspace Workspace

Group

FieldTypeLabelDescription
id string

project_id string

workspace_id string

workspace_id optionally scopes the group to a workspace (a company's internal groups). Empty for project-level / standalone groups (a B2C user's "family" list).

slug string

display_name string

created_by_user_id string

created_at google.protobuf.Timestamp

updated_at google.protobuf.Timestamp

tenant_id string

GroupMember

GroupMember is either a user or a nested group.

FieldTypeLabelDescription
user_id string

group_id string

Invitation

FieldTypeLabelDescription
id string

workspace_id string

email string

role Role

status InvitationStatus

invited_by_user_id string

created_at google.protobuf.Timestamp

expires_at google.protobuf.Timestamp

token string

token is returned ONLY from CreateInvitation so the caller can deliver it out of band; it is never echoed by ListInvitations.

tenant_id string

ListEnrollmentsRequest

FieldTypeLabelDescription
group_id string

acting_user_id string

project_id string

tenant_id string

ListEnrollmentsResponse

FieldTypeLabelDescription
enrollments Enrollment repeated

ListGroupMembersRequest

FieldTypeLabelDescription
group_id string

acting_user_id string

project_id string

tenant_id string

ListGroupMembersResponse

FieldTypeLabelDescription
members GroupMember repeated

ListGroupsRequest

FieldTypeLabelDescription
workspace_id string

optional: restrict to groups owned by this workspace.

acting_user_id string

project_id string

tenant_id string

ListGroupsResponse

FieldTypeLabelDescription
groups Group repeated

ListInvitationsRequest

FieldTypeLabelDescription
workspace_id string

acting_user_id string

project_id string

tenant_id string

ListInvitationsResponse

FieldTypeLabelDescription
invitations Invitation repeated

ListMembersRequest

FieldTypeLabelDescription
workspace_id string

acting_user_id string

project_id string

tenant_id string

ListMembersResponse

FieldTypeLabelDescription
members Membership repeated

ListObjectsRequest

ListObjects returns the object_ids in a namespace where subject_user_id has

the relation, for the given project/tenant. The reverse of Check: "which

courses can this learner see?".

FieldTypeLabelDescription
namespace string

relation string

subject_user_id string

project_id string

tenant_id string

at_least_consistency_token string

at_least_consistency_token, when set, demands the listing reflect state at least as fresh as the token (from a prior WriteRelationTuples). Empty = read latest. A malformed or foreign-shard token is rejected.

ListObjectsResponse

FieldTypeLabelDescription
object_ids string repeated

ListProjectsRequest

ListProjectsResponse

FieldTypeLabelDescription
projects Project repeated

ListSeatsRequest

FieldTypeLabelDescription
project_id string

tenant_id string

sku string

ListSeatsResponse

FieldTypeLabelDescription
seats SeatAssignment repeated

ListWorkspacesRequest

ListWorkspaces returns every workspace acting_user_id is an active member

of, auto-provisioning their PERSONAL workspace on first call.

FieldTypeLabelDescription
acting_user_id string

project_id string

tenant_id string

ListWorkspacesResponse

FieldTypeLabelDescription
workspaces Workspace repeated

Membership

FieldTypeLabelDescription
workspace_id string

user_id string

role Role

status MembershipStatus

created_at google.protobuf.Timestamp

updated_at google.protobuf.Timestamp

tenant_id string

Project

FieldTypeLabelDescription
id string

name string

status ProjectStatus

model_json string

model_json is the project's authorization model as a JSON document. Empty means the project uses the built-in default model.

created_at google.protobuf.Timestamp

updated_at google.protobuf.Timestamp

data_region string

data_region, when set, pins the project's data to a region/storage target. An instance configured for a different region refuses to serve it (fail closed). Empty means unpinned. Multi-region storage ROUTING is forward- compat; today this is recorded, validated, and enforced as a serving guard.

max_check_reads int32

max_check_reads, when > 0, overrides the global per-request read budget (GATEWAY_MAX_CHECK_READS) for this project's Check/Expand/ListObjects evaluations. 0 means unset: the project uses the fleet-wide default.

ReadRelationTuplesRequest

ReadRelationTuples returns stored tuples matching the non-empty filter

fields (exact match). It does NOT evaluate userset rewrites — it is the

raw store read. Use Check for permission decisions.

FieldTypeLabelDescription
namespace string

object_id string

relation string

subject_user_id string

optional: restrict to tuples whose subject is this concrete user.

project_id string

tenant_id string

at_least_consistency_token string

at_least_consistency_token, when set, demands the read reflect state at least as fresh as the token (from a prior WriteRelationTuples). Empty = read latest. A malformed or foreign-shard token is rejected.

ReadRelationTuplesResponse

FieldTypeLabelDescription
tuples RelationTuple repeated

ReinstateMemberRequest

FieldTypeLabelDescription
workspace_id string

user_id string

acting_user_id string

project_id string

tenant_id string

ReinstateMemberResponse

FieldTypeLabelDescription
membership Membership

RelationTuple

FieldTypeLabelDescription
project_id string

namespace string

object_id string

relation string

subject Subject

tenant_id string

expires_at google.protobuf.Timestamp

expires_at, when set, makes the grant time-bounded: the tuple stops granting access once this instant passes (enforced at read time, so Check and tuple-to-userset walks both honor it). Unset = never expires. Expiry is mutable metadata, NOT part of tuple identity: re-writing the same tuple with a new expires_at updates it; deletes still match by identity.

condition_name string

condition_name, when set, makes the grant CONDITIONAL: it applies only if the named built-in condition (e.g. consent_granted, age_at_least, ip_in_cidrs, not_after) evaluates true against condition_params (bound here) and the request-time CheckRequest.context. Unset = unconditional. The condition is grant metadata, not part of tuple identity: re-writing the tuple replaces it; deletes still match by identity. Unknown name / missing input / ill-typed value all DENY (fail closed).

condition_params google.protobuf.Struct

condition_params are the static parameters bound to the condition at write time (e.g. {"min_age": 13} for age_at_least).

RemoveGroupMemberRequest

FieldTypeLabelDescription
group_id string

member GroupMember

acting_user_id string

project_id string

tenant_id string

RemoveGroupMemberResponse

RemoveMemberRequest

FieldTypeLabelDescription
workspace_id string

user_id string

acting_user_id string

project_id string

tenant_id string

RemoveMemberResponse

RevokeInvitationRequest

FieldTypeLabelDescription
invitation_id string

acting_user_id string

project_id string

tenant_id string

RevokeInvitationResponse

RevokeSeatRequest

FieldTypeLabelDescription
project_id string

tenant_id string

sku string

user_id string

RevokeSeatResponse

SeatAssignment

FieldTypeLabelDescription
sku string

user_id string

assigned_at google.protobuf.Timestamp

SeatLimit

FieldTypeLabelDescription
sku string

limit int32 optional

limit is absent when the sku is unlimited (no cap configured); present (including 0, which admits no seats) when a cap is set.

SetEnrollmentStateRequest

FieldTypeLabelDescription
group_id string

member GroupMember

state EnrollmentState

acting_user_id string

project_id string

tenant_id string

SetEnrollmentStateResponse

FieldTypeLabelDescription
enrollment Enrollment

SetSeatLimitRequest

FieldTypeLabelDescription
project_id string

tenant_id string

sku string

limit int32 optional

limit, when present, sets the cap (must be >= 0; 0 admits no seats). When ABSENT, the sku's limit is CLEARED, returning it to unlimited — this is the only way to undo a previously-set cap.

SetSeatLimitResponse

FieldTypeLabelDescription
limit SeatLimit

Subject

Subject is the right-hand side of a tuple: a concrete user, a userset, or

the public wildcard (matches every user — link-sharing / published

content).

FieldTypeLabelDescription
user_id string

set SubjectSet

wildcard bool

SubjectGrant

SubjectGrant is one access grant the subject holds. via_group is empty for a

DIRECT grant (a tuple whose subject is the user, including the user's group

memberships); otherwise it is the group id whose membership confers the grant.

FieldTypeLabelDescription
tenant_id string

namespace string

object_id string

relation string

via_group string

SubjectSet

SubjectSet references the set of subjects related to another object — the

userset `namespace:object_id#relation`. When relation is empty it denotes

the object itself (rarely needed).

FieldTypeLabelDescription
namespace string

object_id string

relation string

SuspendMemberRequest

SuspendMember revokes a member's live access WITHOUT deleting their

membership: it removes the backing role tuple (so every Check denies) and

marks the membership suspended. ReinstateMember restores both. This is the

safe way to pause access — denial is by tuple absence, not a status read on

the hot path.

FieldTypeLabelDescription
workspace_id string

user_id string

acting_user_id string

project_id string

tenant_id string

SuspendMemberResponse

FieldTypeLabelDescription
membership Membership

TransferOwnershipRequest

TransferOwnership hands a TEAM workspace's ownership to another user. Only

the current owner (acting_user_id) may transfer; the new owner is granted the

`owner` role (added as a member if needed) and the former owner is demoted to

`admin` (kept, not orphaned). Personal workspaces cannot be transferred.

FieldTypeLabelDescription
workspace_id string

new_owner_user_id string

acting_user_id string

project_id string

tenant_id string

TransferOwnershipResponse

FieldTypeLabelDescription
workspace Workspace

TupleUpdate

FieldTypeLabelDescription
op TupleUpdate.Op

tuple RelationTuple

UpdateMemberRoleRequest

FieldTypeLabelDescription
workspace_id string

user_id string

role Role

acting_user_id string

project_id string

tenant_id string

UpdateMemberRoleResponse

FieldTypeLabelDescription
membership Membership

UpdateProjectRequest

FieldTypeLabelDescription
id string

name string

status ProjectStatus

model_json string

data_region string

data_region: empty leaves it unchanged (like name/model). Setting it repins the project; a repin converges across a horizontally-scaled fleet only after the resolver TTL (~30s), so it is not instantaneous.

clear_data_region bool

clear_data_region, when true, reverts the project to region-agnostic (unpinned). Mutually exclusive with a non-empty data_region. This is the explicit "unpin" path, since an empty data_region means "leave unchanged".

max_check_reads int32

max_check_reads: 0 leaves it unchanged (like name/model). A positive value overrides the global per-request read budget and must be >= the same floor as the global default. The override converges across a horizontally-scaled fleet only after the resolver TTL (~30s), so it is not instantaneous.

clear_max_check_reads bool

clear_max_check_reads, when true, reverts the project to the global default budget. Mutually exclusive with a positive max_check_reads. This is the explicit "reset" path, since a 0 max_check_reads means "leave unchanged".

UpdateProjectResponse

FieldTypeLabelDescription
project Project

UpdateWorkspaceRequest

FieldTypeLabelDescription
workspace_id string

display_name string

acting_user_id string

project_id string

tenant_id string

UpdateWorkspaceResponse

FieldTypeLabelDescription
workspace Workspace

UsersetTree

FieldTypeLabelDescription
type UsersetTree.NodeType

user_ids string repeated

For LEAF nodes: the concrete subjects and usersets at this node.

sets SubjectSet repeated

children UsersetTree repeated

For UNION / INTERSECTION nodes: the child subtrees. Empty for EXCLUSION (which uses `include` / `exclude` instead).

expanded SubjectSet

The userset this node expands.

wildcard bool

For LEAF nodes: true if the public wildcard subject is present.

include UsersetTree

For EXCLUSION nodes only: the include leg (the base set) and the exclude leg (subjects removed from it). The effective set is `include` minus `exclude`. Unset for every other node type.

exclude UsersetTree

Workspace

FieldTypeLabelDescription
id string

project_id string

project_id is the configuration/model shard (identity ADR-0002).

slug string

display_name string

type WorkspaceType

owner_user_id string

created_at google.protobuf.Timestamp

updated_at google.protobuf.Timestamp

tenant_id string

tenant_id is the data-isolation shard within the project; empty = default.

WriteRelationTuplesRequest

FieldTypeLabelDescription
updates TupleUpdate repeated

project_id string

project_id scopes every tuple in the batch; empty = default project.

tenant_id string

WriteRelationTuplesResponse

FieldTypeLabelDescription
consistency_token string

consistency_token is an opaque "zookie" naming the shard's write sequence reached by this batch. Pass it to a later Check/Expand/ListObjects/ BatchCheck/ReadRelationTuples as at_least_consistency_token to demand read-after-write (observe at least this write). Optional to use.

EnrollmentState

─── Enrollment lifecycle overlay ──────────────────────────────────────

An enrollment overlays a lifecycle STATE on a group membership, so a group

used as a cohort/class can track each member's progress. Only the

access-bearing states (ENROLLED, ACTIVE) place the member in the group's

`member` userset (the backing `group:#member` tuple is present); the

others (WAITLISTED, COMPLETED, DROPPED) record the state WITHOUT granting

access (no tuple). Access is therefore revoked/granted purely by tuple

presence — the same mechanism as workspace member suspend/reinstate — so

Check/CheckSet over `group:#member` naturally exclude a completed,

dropped, or waitlisted enrollee. The enrollment row and its tuple move

atomically. The overlay is additive: AddGroupMember/RemoveGroupMember still

work for plain (un-tracked) membership.

NameNumberDescription
ENROLLMENT_STATE_UNSPECIFIED 0

ENROLLMENT_STATE_WAITLISTED 1

WAITLISTED: applied but not admitted — no access.

ENROLLMENT_STATE_ENROLLED 2

ENROLLED: admitted/registered — access (in the `member` set).

ENROLLMENT_STATE_ACTIVE 3

ACTIVE: actively participating — access (in the `member` set).

ENROLLMENT_STATE_COMPLETED 4

COMPLETED: finished — access ends.

ENROLLMENT_STATE_DROPPED 5

DROPPED: withdrew/removed — access ends.

InvitationStatus

NameNumberDescription
INVITATION_STATUS_UNSPECIFIED 0

INVITATION_STATUS_PENDING 1

INVITATION_STATUS_ACCEPTED 2

INVITATION_STATUS_REVOKED 3

INVITATION_STATUS_EXPIRED 4

MembershipStatus

NameNumberDescription
MEMBERSHIP_STATUS_UNSPECIFIED 0

MEMBERSHIP_STATUS_ACTIVE 1

MEMBERSHIP_STATUS_INVITED 2

MEMBERSHIP_STATUS_SUSPENDED 3

ProjectStatus

NameNumberDescription
PROJECT_STATUS_UNSPECIFIED 0

PROJECT_STATUS_ACTIVE 1

PROJECT_STATUS_SUSPENDED 2

Role

Role is the coarse membership grade. It maps 1:1 onto a relation in the

`workspace` authz namespace, ordered owner ⊃ admin ⊃ member ⊃ guest.

NameNumberDescription
ROLE_UNSPECIFIED 0

ROLE_OWNER 1

ROLE_ADMIN 2

ROLE_MEMBER 3

ROLE_GUEST 4

TupleUpdate.Op

NameNumberDescription
OP_UNSPECIFIED 0

OP_INSERT 1

OP_DELETE 2

UsersetTree.NodeType

NameNumberDescription
NODE_TYPE_UNSPECIFIED 0

NODE_TYPE_UNION 1

NODE_TYPE_LEAF 2

NODE_TYPE_INTERSECTION 3

NODE_TYPE_EXCLUSION 4

EXCLUSION encodes its operands EXPLICITLY in `include` / `exclude`, NOT in `children`: the effective set is `include` minus `exclude`. `children` is empty for EXCLUSION nodes.

WorkspaceType

NameNumberDescription
WORKSPACE_TYPE_UNSPECIFIED 0

WORKSPACE_TYPE_PERSONAL 1

PERSONAL is the single auto-provisioned workspace every user owns. It cannot be deleted and admits exactly one member (the owner).

WORKSPACE_TYPE_TEAM 2

TEAM is any workspace a user creates to collaborate with others — a family, a project group, or a whole company.

AdminService

Method NameRequest TypeResponse TypeDescription
CreateProject CreateProjectRequest CreateProjectResponse

GetProject GetProjectRequest GetProjectResponse

UpdateProject UpdateProjectRequest UpdateProjectResponse

ListProjects ListProjectsRequest ListProjectsResponse

AuthzService

Method NameRequest TypeResponse TypeDescription
WriteRelationTuples WriteRelationTuplesRequest WriteRelationTuplesResponse

ReadRelationTuples ReadRelationTuplesRequest ReadRelationTuplesResponse

Check CheckRequest CheckResponse

BatchCheck BatchCheckRequest BatchCheckResponse

Expand ExpandRequest ExpandResponse

ListObjects ListObjectsRequest ListObjectsResponse

DeprovisionUser DeprovisionUserRequest DeprovisionUserResponse

ExportSubjectGrants ExportSubjectGrantsRequest ExportSubjectGrantsResponse

GroupService

Method NameRequest TypeResponse TypeDescription
CreateGroup CreateGroupRequest CreateGroupResponse

GetGroup GetGroupRequest GetGroupResponse

ListGroups ListGroupsRequest ListGroupsResponse

DeleteGroup DeleteGroupRequest DeleteGroupResponse

AddGroupMember AddGroupMemberRequest AddGroupMemberResponse

RemoveGroupMember RemoveGroupMemberRequest RemoveGroupMemberResponse

ListGroupMembers ListGroupMembersRequest ListGroupMembersResponse

SetEnrollmentState SetEnrollmentStateRequest SetEnrollmentStateResponse

SetEnrollmentState upserts a member's enrollment state and moves the backing `member` tuple accordingly (present iff the state grants access).

ListEnrollments ListEnrollmentsRequest ListEnrollmentsResponse

SeatService

Method NameRequest TypeResponse TypeDescription
SetSeatLimit SetSeatLimitRequest SetSeatLimitResponse

GetSeatUsage GetSeatUsageRequest GetSeatUsageResponse

AssignSeat AssignSeatRequest AssignSeatResponse

RevokeSeat RevokeSeatRequest RevokeSeatResponse

ListSeats ListSeatsRequest ListSeatsResponse

WorkspaceService

Method NameRequest TypeResponse TypeDescription
CreateWorkspace CreateWorkspaceRequest CreateWorkspaceResponse

GetWorkspace GetWorkspaceRequest GetWorkspaceResponse

ListWorkspaces ListWorkspacesRequest ListWorkspacesResponse

UpdateWorkspace UpdateWorkspaceRequest UpdateWorkspaceResponse

TransferOwnership TransferOwnershipRequest TransferOwnershipResponse

DeleteWorkspace DeleteWorkspaceRequest DeleteWorkspaceResponse

AddMember AddMemberRequest AddMemberResponse

UpdateMemberRole UpdateMemberRoleRequest UpdateMemberRoleResponse

RemoveMember RemoveMemberRequest RemoveMemberResponse

SuspendMember SuspendMemberRequest SuspendMemberResponse

ReinstateMember ReinstateMemberRequest ReinstateMemberResponse

ListMembers ListMembersRequest ListMembersResponse

CreateInvitation CreateInvitationRequest CreateInvitationResponse

AcceptInvitation AcceptInvitationRequest AcceptInvitationResponse

ListInvitations ListInvitationsRequest ListInvitationsResponse

RevokeInvitation RevokeInvitationRequest RevokeInvitationResponse

Scalar Value Types

.proto TypeNotesC++JavaPythonGoC#PHPRuby
double double double float float64 double float Float
float float float float float32 float float Float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int int32 int integer Bignum or Fixnum (as required)
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long int64 long integer/string Bignum
uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required)
uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required)
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required)
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required)
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum
sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required)
sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum
bool bool boolean boolean bool bool boolean TrueClass/FalseClass
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8)
bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)