# Protocol Documentation ## Table of Contents - [api/v2/common.proto](#api_v2_common-proto) - [RowStatus](#slash-api-v2-RowStatus) - [api/v2/shortcut_service.proto](#api_v2_shortcut_service-proto) - [CreateShortcutRequest](#slash-api-v2-CreateShortcutRequest) - [CreateShortcutResponse](#slash-api-v2-CreateShortcutResponse) - [DeleteShortcutRequest](#slash-api-v2-DeleteShortcutRequest) - [DeleteShortcutResponse](#slash-api-v2-DeleteShortcutResponse) - [GetShortcutRequest](#slash-api-v2-GetShortcutRequest) - [GetShortcutResponse](#slash-api-v2-GetShortcutResponse) - [ListShortcutsRequest](#slash-api-v2-ListShortcutsRequest) - [ListShortcutsResponse](#slash-api-v2-ListShortcutsResponse) - [OpenGraphMetadata](#slash-api-v2-OpenGraphMetadata) - [Shortcut](#slash-api-v2-Shortcut) - [UpdateShortcutRequest](#slash-api-v2-UpdateShortcutRequest) - [UpdateShortcutResponse](#slash-api-v2-UpdateShortcutResponse) - [Visibility](#slash-api-v2-Visibility) - [ShortcutService](#slash-api-v2-ShortcutService) - [api/v2/subscription_service.proto](#api_v2_subscription_service-proto) - [GetSubscriptionRequest](#slash-api-v2-GetSubscriptionRequest) - [GetSubscriptionResponse](#slash-api-v2-GetSubscriptionResponse) - [Subscription](#slash-api-v2-Subscription) - [UpdateSubscriptionRequest](#slash-api-v2-UpdateSubscriptionRequest) - [UpdateSubscriptionResponse](#slash-api-v2-UpdateSubscriptionResponse) - [PlanType](#slash-api-v2-PlanType) - [SubscriptionService](#slash-api-v2-SubscriptionService) - [api/v2/user_service.proto](#api_v2_user_service-proto) - [CreateUserAccessTokenRequest](#slash-api-v2-CreateUserAccessTokenRequest) - [CreateUserAccessTokenResponse](#slash-api-v2-CreateUserAccessTokenResponse) - [CreateUserRequest](#slash-api-v2-CreateUserRequest) - [CreateUserResponse](#slash-api-v2-CreateUserResponse) - [DeleteUserAccessTokenRequest](#slash-api-v2-DeleteUserAccessTokenRequest) - [DeleteUserAccessTokenResponse](#slash-api-v2-DeleteUserAccessTokenResponse) - [DeleteUserRequest](#slash-api-v2-DeleteUserRequest) - [DeleteUserResponse](#slash-api-v2-DeleteUserResponse) - [GetUserRequest](#slash-api-v2-GetUserRequest) - [GetUserResponse](#slash-api-v2-GetUserResponse) - [ListUserAccessTokensRequest](#slash-api-v2-ListUserAccessTokensRequest) - [ListUserAccessTokensResponse](#slash-api-v2-ListUserAccessTokensResponse) - [ListUsersRequest](#slash-api-v2-ListUsersRequest) - [ListUsersResponse](#slash-api-v2-ListUsersResponse) - [UpdateUserRequest](#slash-api-v2-UpdateUserRequest) - [UpdateUserResponse](#slash-api-v2-UpdateUserResponse) - [User](#slash-api-v2-User) - [UserAccessToken](#slash-api-v2-UserAccessToken) - [Role](#slash-api-v2-Role) - [UserService](#slash-api-v2-UserService) - [api/v2/user_setting_service.proto](#api_v2_user_setting_service-proto) - [GetUserSettingRequest](#slash-api-v2-GetUserSettingRequest) - [GetUserSettingResponse](#slash-api-v2-GetUserSettingResponse) - [UpdateUserSettingRequest](#slash-api-v2-UpdateUserSettingRequest) - [UpdateUserSettingResponse](#slash-api-v2-UpdateUserSettingResponse) - [UserSetting](#slash-api-v2-UserSetting) - [UserSetting.ColorTheme](#slash-api-v2-UserSetting-ColorTheme) - [UserSetting.Locale](#slash-api-v2-UserSetting-Locale) - [UserSettingService](#slash-api-v2-UserSettingService) - [api/v2/workspace_service.proto](#api_v2_workspace_service-proto) - [AutoBackupWorkspaceSetting](#slash-api-v2-AutoBackupWorkspaceSetting) - [GetWorkspaceProfileRequest](#slash-api-v2-GetWorkspaceProfileRequest) - [GetWorkspaceProfileResponse](#slash-api-v2-GetWorkspaceProfileResponse) - [GetWorkspaceSettingRequest](#slash-api-v2-GetWorkspaceSettingRequest) - [GetWorkspaceSettingResponse](#slash-api-v2-GetWorkspaceSettingResponse) - [UpdateWorkspaceSettingRequest](#slash-api-v2-UpdateWorkspaceSettingRequest) - [UpdateWorkspaceSettingResponse](#slash-api-v2-UpdateWorkspaceSettingResponse) - [WorkspaceProfile](#slash-api-v2-WorkspaceProfile) - [WorkspaceSetting](#slash-api-v2-WorkspaceSetting) - [WorkspaceService](#slash-api-v2-WorkspaceService) - [Scalar Value Types](#scalar-value-types)
## api/v2/common.proto ### RowStatus | Name | Number | Description | | ---- | ------ | ----------- | | ROW_STATUS_UNSPECIFIED | 0 | | | NORMAL | 1 | | | ARCHIVED | 2 | | ## api/v2/shortcut_service.proto ### CreateShortcutRequest | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | shortcut | [Shortcut](#slash-api-v2-Shortcut) | | | ### CreateShortcutResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | shortcut | [Shortcut](#slash-api-v2-Shortcut) | | | ### DeleteShortcutRequest | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [int32](#int32) | | | ### DeleteShortcutResponse ### GetShortcutRequest | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [int32](#int32) | | | ### GetShortcutResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | shortcut | [Shortcut](#slash-api-v2-Shortcut) | | | ### ListShortcutsRequest ### ListShortcutsResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | shortcuts | [Shortcut](#slash-api-v2-Shortcut) | repeated | | ### OpenGraphMetadata | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | title | [string](#string) | | | | description | [string](#string) | | | | image | [string](#string) | | | ### Shortcut | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [int32](#int32) | | | | creator_id | [int32](#int32) | | | | created_time | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | | updated_time | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | | row_status | [RowStatus](#slash-api-v2-RowStatus) | | | | name | [string](#string) | | | | link | [string](#string) | | | | title | [string](#string) | | | | tags | [string](#string) | repeated | | | description | [string](#string) | | | | visibility | [Visibility](#slash-api-v2-Visibility) | | | | view_count | [int32](#int32) | | | | og_metadata | [OpenGraphMetadata](#slash-api-v2-OpenGraphMetadata) | | | ### UpdateShortcutRequest | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | shortcut | [Shortcut](#slash-api-v2-Shortcut) | | | | update_mask | [google.protobuf.FieldMask](#google-protobuf-FieldMask) | | | ### UpdateShortcutResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | shortcut | [Shortcut](#slash-api-v2-Shortcut) | | | ### Visibility | Name | Number | Description | | ---- | ------ | ----------- | | VISIBILITY_UNSPECIFIED | 0 | | | PRIVATE | 1 | | | WORKSPACE | 2 | | | PUBLIC | 3 | | ### ShortcutService | Method Name | Request Type | Response Type | Description | | ----------- | ------------ | ------------- | ------------| | ListShortcuts | [ListShortcutsRequest](#slash-api-v2-ListShortcutsRequest) | [ListShortcutsResponse](#slash-api-v2-ListShortcutsResponse) | ListShortcuts returns a list of shortcuts. | | GetShortcut | [GetShortcutRequest](#slash-api-v2-GetShortcutRequest) | [GetShortcutResponse](#slash-api-v2-GetShortcutResponse) | GetShortcut returns a shortcut by name. | | CreateShortcut | [CreateShortcutRequest](#slash-api-v2-CreateShortcutRequest) | [CreateShortcutResponse](#slash-api-v2-CreateShortcutResponse) | CreateShortcut creates a shortcut. | | UpdateShortcut | [UpdateShortcutRequest](#slash-api-v2-UpdateShortcutRequest) | [UpdateShortcutResponse](#slash-api-v2-UpdateShortcutResponse) | UpdateShortcut updates a shortcut. | | DeleteShortcut | [DeleteShortcutRequest](#slash-api-v2-DeleteShortcutRequest) | [DeleteShortcutResponse](#slash-api-v2-DeleteShortcutResponse) | DeleteShortcut deletes a shortcut by name. | ## api/v2/subscription_service.proto ### GetSubscriptionRequest ### GetSubscriptionResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | subscription | [Subscription](#slash-api-v2-Subscription) | | | ### Subscription | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | plan | [PlanType](#slash-api-v2-PlanType) | | | | started_time | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | | expires_time | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | ### UpdateSubscriptionRequest | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | license_key | [string](#string) | | | ### UpdateSubscriptionResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | subscription | [Subscription](#slash-api-v2-Subscription) | | | ### PlanType | Name | Number | Description | | ---- | ------ | ----------- | | PLAN_TYPE_UNSPECIFIED | 0 | | | FREE | 1 | | | PRO | 2 | | ### SubscriptionService | Method Name | Request Type | Response Type | Description | | ----------- | ------------ | ------------- | ------------| | GetSubscription | [GetSubscriptionRequest](#slash-api-v2-GetSubscriptionRequest) | [GetSubscriptionResponse](#slash-api-v2-GetSubscriptionResponse) | | | UpdateSubscription | [UpdateSubscriptionRequest](#slash-api-v2-UpdateSubscriptionRequest) | [UpdateSubscriptionResponse](#slash-api-v2-UpdateSubscriptionResponse) | | ## api/v2/user_service.proto ### CreateUserAccessTokenRequest | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [int32](#int32) | | id is the user id. | | description | [string](#string) | | description is the description of the access token. | | expires_at | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | optional | expires_at is the expiration time of the access token. If expires_at is not set, the access token will never expire. | ### CreateUserAccessTokenResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | access_token | [UserAccessToken](#slash-api-v2-UserAccessToken) | | | ### CreateUserRequest | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | user | [User](#slash-api-v2-User) | | | ### CreateUserResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | user | [User](#slash-api-v2-User) | | | ### DeleteUserAccessTokenRequest | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [int32](#int32) | | id is the user id. | | access_token | [string](#string) | | access_token is the access token to delete. | ### DeleteUserAccessTokenResponse ### DeleteUserRequest | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [int32](#int32) | | | ### DeleteUserResponse ### GetUserRequest | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [int32](#int32) | | | ### GetUserResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | user | [User](#slash-api-v2-User) | | | ### ListUserAccessTokensRequest | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [int32](#int32) | | id is the user id. | ### ListUserAccessTokensResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | access_tokens | [UserAccessToken](#slash-api-v2-UserAccessToken) | repeated | | ### ListUsersRequest ### ListUsersResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | users | [User](#slash-api-v2-User) | repeated | | ### UpdateUserRequest | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | user | [User](#slash-api-v2-User) | | | | update_mask | [google.protobuf.FieldMask](#google-protobuf-FieldMask) | | | ### UpdateUserResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | user | [User](#slash-api-v2-User) | | | ### User | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [int32](#int32) | | | | row_status | [RowStatus](#slash-api-v2-RowStatus) | | | | created_time | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | | updated_time | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | | role | [Role](#slash-api-v2-Role) | | | | email | [string](#string) | | | | nickname | [string](#string) | | | | password | [string](#string) | | | ### UserAccessToken | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | access_token | [string](#string) | | | | description | [string](#string) | | | | issued_at | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | | expires_at | [google.protobuf.Timestamp](#google-protobuf-Timestamp) | | | ### Role | Name | Number | Description | | ---- | ------ | ----------- | | ROLE_UNSPECIFIED | 0 | | | ADMIN | 1 | | | USER | 2 | | ### UserService | Method Name | Request Type | Response Type | Description | | ----------- | ------------ | ------------- | ------------| | ListUsers | [ListUsersRequest](#slash-api-v2-ListUsersRequest) | [ListUsersResponse](#slash-api-v2-ListUsersResponse) | ListUsers returns a list of users. | | GetUser | [GetUserRequest](#slash-api-v2-GetUserRequest) | [GetUserResponse](#slash-api-v2-GetUserResponse) | GetUser returns a user by id. | | CreateUser | [CreateUserRequest](#slash-api-v2-CreateUserRequest) | [CreateUserResponse](#slash-api-v2-CreateUserResponse) | CreateUser creates a new user. | | UpdateUser | [UpdateUserRequest](#slash-api-v2-UpdateUserRequest) | [UpdateUserResponse](#slash-api-v2-UpdateUserResponse) | | | DeleteUser | [DeleteUserRequest](#slash-api-v2-DeleteUserRequest) | [DeleteUserResponse](#slash-api-v2-DeleteUserResponse) | DeleteUser deletes a user by id. | | ListUserAccessTokens | [ListUserAccessTokensRequest](#slash-api-v2-ListUserAccessTokensRequest) | [ListUserAccessTokensResponse](#slash-api-v2-ListUserAccessTokensResponse) | ListUserAccessTokens returns a list of access tokens for a user. | | CreateUserAccessToken | [CreateUserAccessTokenRequest](#slash-api-v2-CreateUserAccessTokenRequest) | [CreateUserAccessTokenResponse](#slash-api-v2-CreateUserAccessTokenResponse) | CreateUserAccessToken creates a new access token for a user. | | DeleteUserAccessToken | [DeleteUserAccessTokenRequest](#slash-api-v2-DeleteUserAccessTokenRequest) | [DeleteUserAccessTokenResponse](#slash-api-v2-DeleteUserAccessTokenResponse) | DeleteUserAccessToken deletes an access token for a user. | ## api/v2/user_setting_service.proto ### GetUserSettingRequest | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [int32](#int32) | | id is the user id. | ### GetUserSettingResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | user_setting | [UserSetting](#slash-api-v2-UserSetting) | | | ### UpdateUserSettingRequest | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [int32](#int32) | | id is the user id. | | user_setting | [UserSetting](#slash-api-v2-UserSetting) | | user_setting is the user setting to update. | | update_mask | [google.protobuf.FieldMask](#google-protobuf-FieldMask) | | update_mask is the field mask to update. | ### UpdateUserSettingResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | user_setting | [UserSetting](#slash-api-v2-UserSetting) | | | ### UserSetting | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [int32](#int32) | | id is the user id. | | locale | [UserSetting.Locale](#slash-api-v2-UserSetting-Locale) | | locale is the user locale. | | color_theme | [UserSetting.ColorTheme](#slash-api-v2-UserSetting-ColorTheme) | | color_theme is the user color theme. | ### UserSetting.ColorTheme | Name | Number | Description | | ---- | ------ | ----------- | | COLOR_THEME_UNSPECIFIED | 0 | | | COLOR_THEME_SYSTEM | 1 | | | COLOR_THEME_LIGHT | 2 | | | COLOR_THEME_DARK | 3 | | ### UserSetting.Locale | Name | Number | Description | | ---- | ------ | ----------- | | LOCALE_UNSPECIFIED | 0 | | | LOCALE_EN | 1 | | | LOCALE_ZH | 2 | | ### UserSettingService | Method Name | Request Type | Response Type | Description | | ----------- | ------------ | ------------- | ------------| | GetUserSetting | [GetUserSettingRequest](#slash-api-v2-GetUserSettingRequest) | [GetUserSettingResponse](#slash-api-v2-GetUserSettingResponse) | GetUserSetting returns the user setting. | | UpdateUserSetting | [UpdateUserSettingRequest](#slash-api-v2-UpdateUserSettingRequest) | [UpdateUserSettingResponse](#slash-api-v2-UpdateUserSettingResponse) | UpdateUserSetting updates the user setting. | ## api/v2/workspace_service.proto ### AutoBackupWorkspaceSetting | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | enabled | [bool](#bool) | | Whether auto backup is enabled. | | cron_expression | [string](#string) | | The cron expression for auto backup. For example, "0 0 0 * * *" means backup at 00:00:00 every day. See https://en.wikipedia.org/wiki/Cron for more details. | | max_keep | [int32](#int32) | | The maximum number of backups to keep. | ### GetWorkspaceProfileRequest ### GetWorkspaceProfileResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | profile | [WorkspaceProfile](#slash-api-v2-WorkspaceProfile) | | The workspace profile. | ### GetWorkspaceSettingRequest ### GetWorkspaceSettingResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | setting | [WorkspaceSetting](#slash-api-v2-WorkspaceSetting) | | The user setting. | ### UpdateWorkspaceSettingRequest | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | setting | [WorkspaceSetting](#slash-api-v2-WorkspaceSetting) | | The user setting. | | update_mask | [google.protobuf.FieldMask](#google-protobuf-FieldMask) | | The update mask. | ### UpdateWorkspaceSettingResponse | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | setting | [WorkspaceSetting](#slash-api-v2-WorkspaceSetting) | | The user setting. | ### WorkspaceProfile | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | mode | [string](#string) | | Current workspace mode: dev, prod. | | plan | [PlanType](#slash-api-v2-PlanType) | | The workspace plan. | | enable_signup | [bool](#bool) | | Whether to enable other users to sign up. | | custom_style | [string](#string) | | The custom style. | | custom_script | [string](#string) | | The custom script. | ### WorkspaceSetting | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | license_key | [string](#string) | | | | enable_signup | [bool](#bool) | | Whether to enable other users to sign up. | | custom_style | [string](#string) | | The custom style. | | custom_script | [string](#string) | | The custom script. | | auto_backup | [AutoBackupWorkspaceSetting](#slash-api-v2-AutoBackupWorkspaceSetting) | | The auto backup setting. | ### WorkspaceService | Method Name | Request Type | Response Type | Description | | ----------- | ------------ | ------------- | ------------| | GetWorkspaceProfile | [GetWorkspaceProfileRequest](#slash-api-v2-GetWorkspaceProfileRequest) | [GetWorkspaceProfileResponse](#slash-api-v2-GetWorkspaceProfileResponse) | | | GetWorkspaceSetting | [GetWorkspaceSettingRequest](#slash-api-v2-GetWorkspaceSettingRequest) | [GetWorkspaceSettingResponse](#slash-api-v2-GetWorkspaceSettingResponse) | | | UpdateWorkspaceSetting | [UpdateWorkspaceSettingRequest](#slash-api-v2-UpdateWorkspaceSettingRequest) | [UpdateWorkspaceSettingResponse](#slash-api-v2-UpdateWorkspaceSettingResponse) | | ## Scalar Value Types | .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | | ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | | 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) |