From b2faa03d9a37918c67ff6f92f14579d0236e298d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Wed, 8 Sep 2021 16:09:26 +0200 Subject: [PATCH] try to use the google protobuf field mask MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- .../v1beta1/collaboration_api.proto | 19 +- .../collaboration/v1beta1/resources.proto | 7 +- cs3/sharing/ocm/v1beta1/ocm_api.proto | 18 +- cs3/sharing/ocm/v1beta1/resources.proto | 7 +- docs/index.html | 17175 ---------------- proto.lock | 117 +- prototool.yaml | 35 + third_party/google/protobuf/field_mask.proto | 245 + tools/check-license/check-license.go | 2 +- 9 files changed, 378 insertions(+), 17247 deletions(-) delete mode 100644 docs/index.html create mode 100644 third_party/google/protobuf/field_mask.proto diff --git a/cs3/sharing/collaboration/v1beta1/collaboration_api.proto b/cs3/sharing/collaboration/v1beta1/collaboration_api.proto index 437f3954..ec803d32 100644 --- a/cs3/sharing/collaboration/v1beta1/collaboration_api.proto +++ b/cs3/sharing/collaboration/v1beta1/collaboration_api.proto @@ -32,6 +32,7 @@ import "cs3/rpc/v1beta1/status.proto"; import "cs3/sharing/collaboration/v1beta1/resources.proto"; import "cs3/storage/provider/v1beta1/resources.proto"; import "cs3/types/v1beta1/types.proto"; +import "google/protobuf/field_mask.proto"; // User Share Provider API // @@ -225,19 +226,11 @@ message UpdateReceivedShareRequest { // Opaque information. cs3.types.v1beta1.Opaque opaque = 1; // REQUIRED. - ShareReference ref = 2; - // REQUIRED. - // The field to update. - message UpdateField { - // One of the update fields MUST be specified. - oneof field { - // Update the display name. - string display_name = 1; - // Update the share state - ShareState state = 2; - } - } - UpdateField field = 3; + // The share to update. + Share share = 2; + // The update mask applies to the resource. For the `FieldMask` definition, + // see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask + google.protobuf.FieldMask update_mask = 3; } message UpdateReceivedShareResponse { diff --git a/cs3/sharing/collaboration/v1beta1/resources.proto b/cs3/sharing/collaboration/v1beta1/resources.proto index fe677183..5f63ab51 100644 --- a/cs3/sharing/collaboration/v1beta1/resources.proto +++ b/cs3/sharing/collaboration/v1beta1/resources.proto @@ -79,14 +79,17 @@ message SharePermissions { // A received share is the share that a grantee will receive. // It expands the original share by adding state to the share, // a display name from the perspective of the grantee and a -// resource mount path in case the share will be mounted -// in a path in a storage provider. +// resource mount point in case the share will be mounted +// in a storage provider. message ReceivedShare { // REQUIRED. Share share = 1; // REQUIRED. // The state of the share. ShareState state = 2; + // REQUIRED. + // The mount point of the share. + storage.provider.v1beta1.Reference mount_point = 3; } // The state of the share. diff --git a/cs3/sharing/ocm/v1beta1/ocm_api.proto b/cs3/sharing/ocm/v1beta1/ocm_api.proto index af17547b..1f8a131d 100644 --- a/cs3/sharing/ocm/v1beta1/ocm_api.proto +++ b/cs3/sharing/ocm/v1beta1/ocm_api.proto @@ -34,6 +34,7 @@ import "cs3/rpc/v1beta1/status.proto"; import "cs3/sharing/ocm/v1beta1/resources.proto"; import "cs3/storage/provider/v1beta1/resources.proto"; import "cs3/types/v1beta1/types.proto"; +import "google/protobuf/field_mask.proto"; // OCM Share Provider API // @@ -245,18 +246,11 @@ message UpdateReceivedOCMShareRequest { // Opaque information. cs3.types.v1beta1.Opaque opaque = 1; // REQUIRED. - ShareReference ref = 2; - // REQUIRED. - message UpdateField { - // One of the update fields MUST be specified. - oneof field { - // Update the display name. - string display_name = 1; - // Update the share state - ShareState state = 2; - } - } - UpdateField field = 3; + // The share to update. + Share share = 2; + // The update mask applies to the resource. For the `FieldMask` definition, + // see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask + google.protobuf.FieldMask update_mask = 3; } message UpdateReceivedOCMShareResponse { diff --git a/cs3/sharing/ocm/v1beta1/resources.proto b/cs3/sharing/ocm/v1beta1/resources.proto index efc0c405..f3de64fd 100644 --- a/cs3/sharing/ocm/v1beta1/resources.proto +++ b/cs3/sharing/ocm/v1beta1/resources.proto @@ -91,14 +91,17 @@ message SharePermissions { // A received share is the share that a grantee will receive. // It expands the original share by adding state to the share, // a display name from the perspective of the grantee and a -// resource mount path in case the share will be mounted -// in a path in a storage provider. +// resource mount point in case the share will be mounted +// in a storage provider. message ReceivedShare { // REQUIRED. Share share = 1; // REQUIRED. // The state of the share. ShareState state = 2; + // REQUIRED. + // The mount point of the share. + storage.provider.v1beta1.Reference mount_point = 3; } // The state of the share. diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 5e8b8890..00000000 --- a/docs/index.html +++ /dev/null @@ -1,17175 +0,0 @@ - - - - - Protocol Documentation - - - - - - - - - - -

Protocol Documentation

- -

Table of Contents

- -
- -
- - - -
-

cs3/gateway/v1beta1/gateway_api.proto

Top -
-

- - -

AuthenticateRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

typestring

REQUIRED. -The type of authentication to use.

client_idstring

OPTIONAL. -The id of the client. -For basic authentication with username and password -both client_id and client_secret are expected to be filled. -However, for example, for OIDC only a token is necessary.

client_secretstring

OPTIONAL. -The secret of the client.

- - - - - -

AuthenticateResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

tokenstring

REQUIRED. -The access token.

usercs3.identity.user.v1beta1.User

REQUIRED. -The authenticated user.

- - - - - -

GetQuotaRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refcs3.storage.provider.v1beta1.Reference

REQUIRED. -The reference to which the action should be performed.

- - - - - -

InitiateFileDownloadResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

protocolsFileDownloadProtocolrepeated

REQUIRED. -The protocols through which data can be downloaded.

- - - - - -

InitiateFileUploadResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

protocolsFileUploadProtocolrepeated

REQUIRED. -The protocols through which data can be uploaded.

- - - - - -

ListAuthProvidersResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

typesstringrepeated

REQUIRED. -The list of auth types. -TODO(labkode): maybe add description?

- - - - - -

ListRecycleRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refcs3.storage.provider.v1beta1.Reference

REQUIRED. -The reference to which the action should be performed.

from_tscs3.types.v1beta1.Timestamp

OPTIONAL. -SHOULD be specified. -The start time range to query for recycle items. -The value is the Unix Epoch timestamp in seconds.

to_tscs3.types.v1beta1.Timestamp

OPTIONAL. -SHOULD be specified. -The end time range to query for recycle items. -The value is Unix Epoch timestamp in seconds.

- - - - - -

ListRecycleStreamRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refcs3.storage.provider.v1beta1.Reference

REQUIRED. -The reference to which the action should be performed.

from_tscs3.types.v1beta1.Timestamp

OPTIONAL. -SHOULD be specified. -The start time range to query for recycle items. -The value is the Unix Epoch timestamp in seconds.

to_tscs3.types.v1beta1.Timestamp

OPTIONAL. -SHOULD be specified. -The end time range to query for recycle items. -The value is Unix Epoch timestamp in seconds.

- - - - - -

OpenInAppRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refcs3.storage.provider.v1beta1.Reference

REQUIRED. -The resource reference. If a path is given, it will be resolved via Stat() to a ResourceInfo -when a call to the WOPI server is to be issued (cf. the provider grpc message)

view_modeOpenInAppRequest.ViewMode

appstring

OPTIONAL. -A reference to the application to be used to open the resource, should the -default inferred from the resource's mimetype be overridden by user's choice. -If the targeted resource is a directory, this parameter is required and -in its absence the implementation MUST return INVALID_ARGUMENT.

- - - - - -

PurgeRecycleRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refcs3.storage.provider.v1beta1.Reference

REQUIRED. -The reference to which the action should be performed.

- - - - - -

WhoAmIRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

tokenstring

REQUIRED. -The access token.

- - - - - -

WhoAmIResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

usercs3.identity.user.v1beta1.User

REQUIRED. -The user information.

- - - - - - - -

OpenInAppRequest.ViewMode

-

REQUIRED.

View mode.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
VIEW_MODE_INVALID0

VIEW_MODE_VIEW_ONLY1

The resource can be opened but not downloaded.

VIEW_MODE_READ_ONLY2

The resource can be downloaded.

VIEW_MODE_READ_WRITE3

The resource can be downloaded and updated.

- - - - - -

GatewayAPI

-

Gateway API

The Gateway API is the only API exposed direclty to end-clients.

It is a facade API that all clients should connect to.

Other APIS like the StorageProviderAPI are internal APIS.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL

NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and

"OPTIONAL" in this document are to be interpreted as described in

RFC 2119.

The following are global requirements that apply to all methods:

Any method MUST return CODE_OK on a succesful operation.

Any method MAY return NOT_IMPLEMENTED.

Any method MAY return INTERNAL.

Any method MAY return UNKNOWN.

Any method MAY return UNAUTHENTICATED.

*****************************************************************/

************************ AUTH ******** **************************/

*****************************************************************/

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
AuthenticateAuthenticateRequestAuthenticateResponse

Authenticates a user.

WhoAmIWhoAmIRequestWhoAmIResponse

WhoAmI returns the information for a user. - -*****************************************************************/ -********************** APPLICATIONS AUTH ************************/ -*****************************************************************/

GenerateAppPassword.cs3.auth.applications.v1beta1.GenerateAppPasswordRequest.cs3.auth.applications.v1beta1.GenerateAppPasswordResponse

GenerateAppPassword creates a password with specified scope to be used by -third-party applications.

ListAppPasswords.cs3.auth.applications.v1beta1.ListAppPasswordsRequest.cs3.auth.applications.v1beta1.ListAppPasswordsResponse

ListAppPasswords lists the application passwords created by a user.

InvalidateAppPassword.cs3.auth.applications.v1beta1.InvalidateAppPasswordRequest.cs3.auth.applications.v1beta1.InvalidateAppPasswordResponse

InvalidateAppPassword invalidates a generated password.

GetAppPassword.cs3.auth.applications.v1beta1.GetAppPasswordRequest.cs3.auth.applications.v1beta1.GetAppPasswordResponse

GetAppPassword retrieves the password information by the combination of username and password. - -*****************************************************************/ -************************ STORAGE PROVIDER ***********************/ -*****************************************************************/

CreateContainer.cs3.storage.provider.v1beta1.CreateContainerRequest.cs3.storage.provider.v1beta1.CreateContainerResponse

Creates a new resource of type container. -MUST return CODE_PRECONDITION_FAILED if the container -cannot be created at the specified reference.

Delete.cs3.storage.provider.v1beta1.DeleteRequest.cs3.storage.provider.v1beta1.DeleteResponse

Deletes a resource. -If a resource specifies the non-empty container (directory, ...), -then the entire directory is deleted recursively. -If a resource specifies a reference or symlink type, only the reference is removed (not the target). -MUST return CODE_NOT_FOUND if the reference does not exist.

GetPath.cs3.storage.provider.v1beta1.GetPathRequest.cs3.storage.provider.v1beta1.GetPathResponse

Returns the path reference for -the provided resource id reference. -MUST return CODE_NOT_FOUND if the reference does not exist

GetQuotaGetQuotaRequest.cs3.storage.provider.v1beta1.GetQuotaResponse

Returns the quota available under the provided -reference. -MUST return CODE_NOT_FOUND if the reference does not exist -MUST return CODE_RESOURCE_EXHAUSTED on exceeded quota limits.

InitiateFileDownload.cs3.storage.provider.v1beta1.InitiateFileDownloadRequestInitiateFileDownloadResponse

Initiates the download of a file using an -out-of-band data transfer mechanism.

InitiateFileUpload.cs3.storage.provider.v1beta1.InitiateFileUploadRequestInitiateFileUploadResponse

Initiates the upload of a file using an -out-of-band data transfer mechanism.

ListContainerStream.cs3.storage.provider.v1beta1.ListContainerStreamRequest.cs3.storage.provider.v1beta1.ListContainerStreamResponse stream

Returns a stream of resource informations -for the provided reference. -MUST return CODE_NOT_FOUND if the reference does not exists.

ListContainer.cs3.storage.provider.v1beta1.ListContainerRequest.cs3.storage.provider.v1beta1.ListContainerResponse

Returns a list of resource information -for the provided reference. -MUST return CODE_NOT_FOUND if the reference does not exists.

ListFileVersions.cs3.storage.provider.v1beta1.ListFileVersionsRequest.cs3.storage.provider.v1beta1.ListFileVersionsResponse

Returns a list of the versions for a resource of -type file at the provided reference. -MUST return CODE_NOT_FOUND if the reference does not exist. -MUST return CODE_OK and MUST return an empty list if no versions are available. -TODO: What code if resource not of type file?

ListRecycleStreamListRecycleStreamRequest.cs3.storage.provider.v1beta1.ListRecycleStreamResponse stream

Returns a stream of recycle items for this storage provider.

ListRecycleListRecycleRequest.cs3.storage.provider.v1beta1.ListRecycleResponse

Returns a list of recycle items for this storage provider. -MUST return CODE_OK and MUST return an empty list if no recycle items are available.

Move.cs3.storage.provider.v1beta1.MoveRequest.cs3.storage.provider.v1beta1.MoveResponse

Moves a resource from one reference to another. -MUST return CODE_NOT_FOUND if any of the references do not exist. -MUST return CODE_PRECONDITION_FAILED if the source reference -cannot be moved to the destination reference.

PurgeRecyclePurgeRecycleRequest.cs3.storage.provider.v1beta1.PurgeRecycleResponse

Permanently removes a recycle item from the recycle. -This operation is irrevocable. -MUST return CODE_NOT_FOUND if the recycle item id does not exist.

RestoreFileVersion.cs3.storage.provider.v1beta1.RestoreFileVersionRequest.cs3.storage.provider.v1beta1.RestoreFileVersionResponse

Restores a file version for the provided reference. -MUST return CODE_NOT_FOUND if the reference does not exist. -MUST return CODE_NOT_FOUND if the version does not exist.

RestoreRecycleItem.cs3.storage.provider.v1beta1.RestoreRecycleItemRequest.cs3.storage.provider.v1beta1.RestoreRecycleItemResponse

Restores a recycle item from the recycle. -MUST return CODE_NOT_FOUND if the recycle item id does not exist. -MUST return CODE_PRECONDITION_FAILED if the restore_path is non-empty -and the recycle item cannot be restored to the restore_path.

Stat.cs3.storage.provider.v1beta1.StatRequest.cs3.storage.provider.v1beta1.StatResponse

Returns the resource information at the provided reference. -MUST return CODE_NOT_FOUND if the reference does not exist.

CreateSymlink.cs3.storage.provider.v1beta1.CreateSymlinkRequest.cs3.storage.provider.v1beta1.CreateSymlinkResponse

Creates a symlink to another resource.

SetArbitraryMetadata.cs3.storage.provider.v1beta1.SetArbitraryMetadataRequest.cs3.storage.provider.v1beta1.SetArbitraryMetadataResponse

Sets arbitrary metadata into a storage resource. -Arbitrary metadata is returned in a cs3.storage.provider.v1beta1.ResourceInfo.

UnsetArbitraryMetadata.cs3.storage.provider.v1beta1.UnsetArbitraryMetadataRequest.cs3.storage.provider.v1beta1.UnsetArbitraryMetadataResponse

Unsets arbitrary metdata into a storage resource. -Arbitrary metadata is returned in a cs3.storage.provider.v1beta1.ResourceInfo.

CreateHome.cs3.storage.provider.v1beta1.CreateHomeRequest.cs3.storage.provider.v1beta1.CreateHomeResponse

Creates the home directory for a user.

CreateStorageSpace.cs3.storage.provider.v1beta1.CreateStorageSpaceRequest.cs3.storage.provider.v1beta1.CreateStorageSpaceResponse

Creates a storage space.

ListStorageSpaces.cs3.storage.provider.v1beta1.ListStorageSpacesRequest.cs3.storage.provider.v1beta1.ListStorageSpacesResponse

Lists storage spaces.

UpdateStorageSpace.cs3.storage.provider.v1beta1.UpdateStorageSpaceRequest.cs3.storage.provider.v1beta1.UpdateStorageSpaceResponse

Updates a storage space.

DeleteStorageSpace.cs3.storage.provider.v1beta1.DeleteStorageSpaceRequest.cs3.storage.provider.v1beta1.DeleteStorageSpaceResponse

Deletes a storage space. - -*****************************************************************/ -************************ APP PROVIDER ********************/ -*****************************************************************/

OpenInAppOpenInAppRequest.cs3.app.provider.v1beta1.OpenInAppResponse

Returns the App provider URL, which allows the user to open a resource in an online editor. - -*****************************************************************/ -************************ USER SHARE PROVIDER ********************/ -*****************************************************************/

CreateShare.cs3.sharing.collaboration.v1beta1.CreateShareRequest.cs3.sharing.collaboration.v1beta1.CreateShareResponse

Creates a new share. -MUST return CODE_NOT_FOUND if the resource reference does not exist. -MUST return CODE_ALREADY_EXISTS if the share already exists for the 4-tuple consisting of -(owner, shared_resource, grantee). -New shares MUST be created in the state SHARE_STATE_PENDING.

RemoveShare.cs3.sharing.collaboration.v1beta1.RemoveShareRequest.cs3.sharing.collaboration.v1beta1.RemoveShareResponse

Removes a share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

GetShare.cs3.sharing.collaboration.v1beta1.GetShareRequest.cs3.sharing.collaboration.v1beta1.GetShareResponse

Gets share information for a single share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

ListShares.cs3.sharing.collaboration.v1beta1.ListSharesRequest.cs3.sharing.collaboration.v1beta1.ListSharesResponse

List the shares the authproviderenticated principal has created, -both as owner and creator. If a filter is specified, only -shares satisfying the filter MUST be returned.

UpdateShare.cs3.sharing.collaboration.v1beta1.UpdateShareRequest.cs3.sharing.collaboration.v1beta1.UpdateShareResponse

Updates a share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

ListReceivedShares.cs3.sharing.collaboration.v1beta1.ListReceivedSharesRequest.cs3.sharing.collaboration.v1beta1.ListReceivedSharesResponse

List all shares the authproviderenticated principal has received.

UpdateReceivedShare.cs3.sharing.collaboration.v1beta1.UpdateReceivedShareRequest.cs3.sharing.collaboration.v1beta1.UpdateReceivedShareResponse

Update the received share to change the share state or the display name. -MUST return CODE_NOT_FOUND if the share reference does not exist.

GetReceivedShare.cs3.sharing.collaboration.v1beta1.GetReceivedShareRequest.cs3.sharing.collaboration.v1beta1.GetReceivedShareResponse

Get the information for the given received share reference. -MUST return CODE_NOT_FOUND if the received share reference does not exist. - -*****************************************************************/ -************************ PREFERENCES ***************************/ -*****************************************************************/

SetKey.cs3.preferences.v1beta1.SetKeyRequest.cs3.preferences.v1beta1.SetKeyResponse

Maps the key-value pair.

GetKey.cs3.preferences.v1beta1.GetKeyRequest.cs3.preferences.v1beta1.GetKeyResponse

Returns the value associated with the -requested key. - -*****************************************************************/ -************************ PUBLIC SHARE ***************************/ -*****************************************************************/

CreatePublicShare.cs3.sharing.link.v1beta1.CreatePublicShareRequest.cs3.sharing.link.v1beta1.CreatePublicShareResponse

Creates a new share. -MUST return CODE_NOT_FOUND if the resource reference does not exist. -MUST return CODE_ALREADY_EXISTS if the share already exists for the 4-tuple consisting of -(owner, shared_resource, grantee). -New shares MUST be created in the state SHARE_STATE_PENDING.

RemovePublicShare.cs3.sharing.link.v1beta1.RemovePublicShareRequest.cs3.sharing.link.v1beta1.RemovePublicShareResponse

Removes a share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

GetPublicShare.cs3.sharing.link.v1beta1.GetPublicShareRequest.cs3.sharing.link.v1beta1.GetPublicShareResponse

Gets share information for a single share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

GetPublicShareByToken.cs3.sharing.link.v1beta1.GetPublicShareByTokenRequest.cs3.sharing.link.v1beta1.GetPublicShareByTokenResponse

Gets share information for a single share by its unlisted token. -MUST return CODE_NOT_FOUND if the share does not exist.

ListPublicShares.cs3.sharing.link.v1beta1.ListPublicSharesRequest.cs3.sharing.link.v1beta1.ListPublicSharesResponse

List the shares the authproviderenticated principal has created, -both as owner and creator. If a filter is specified, only -shares satisfying the filter MUST be returned.

UpdatePublicShare.cs3.sharing.link.v1beta1.UpdatePublicShareRequest.cs3.sharing.link.v1beta1.UpdatePublicShareResponse

Updates a share. -MUST return CODE_NOT_FOUND if the share reference does not exist. - -*****************************************************************/ -************************ OCM SHARE PROVIDER *********************/ -*****************************************************************/

CreateOCMShare.cs3.sharing.ocm.v1beta1.CreateOCMShareRequest.cs3.sharing.ocm.v1beta1.CreateOCMShareResponse

Creates a new ocm share. -MUST return CODE_NOT_FOUND if the resource reference does not exist. -MUST return CODE_ALREADY_EXISTS if the share already exists for the 4-tuple consisting of -(owner, shared_resource, grantee). -New shares MUST be created in the state SHARE_STATE_PENDING.

RemoveOCMShare.cs3.sharing.ocm.v1beta1.RemoveOCMShareRequest.cs3.sharing.ocm.v1beta1.RemoveOCMShareResponse

Removes a share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

GetOCMShare.cs3.sharing.ocm.v1beta1.GetOCMShareRequest.cs3.sharing.ocm.v1beta1.GetOCMShareResponse

Gets share information for a single share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

ListOCMShares.cs3.sharing.ocm.v1beta1.ListOCMSharesRequest.cs3.sharing.ocm.v1beta1.ListOCMSharesResponse

List the shares the authproviderenticated principal has created, -both as owner and creator. If a filter is specified, only -shares satisfying the filter MUST be returned.

UpdateOCMShare.cs3.sharing.ocm.v1beta1.UpdateOCMShareRequest.cs3.sharing.ocm.v1beta1.UpdateOCMShareResponse

Updates a share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

ListReceivedOCMShares.cs3.sharing.ocm.v1beta1.ListReceivedOCMSharesRequest.cs3.sharing.ocm.v1beta1.ListReceivedOCMSharesResponse

List all shares the authproviderenticated principal has received.

UpdateReceivedOCMShare.cs3.sharing.ocm.v1beta1.UpdateReceivedOCMShareRequest.cs3.sharing.ocm.v1beta1.UpdateReceivedOCMShareResponse

Update the received share to change the share state or the display name. -MUST return CODE_NOT_FOUND if the share reference does not exist.

GetReceivedOCMShare.cs3.sharing.ocm.v1beta1.GetReceivedOCMShareRequest.cs3.sharing.ocm.v1beta1.GetReceivedOCMShareResponse

Get the information for the given received share reference. -MUST return CODE_NOT_FOUND if the received share reference does not exist. - -*****************************************************************/ -************************ APP REGISTRY ****************************/ -*****************************************************************/

GetAppProviders.cs3.app.registry.v1beta1.GetAppProvidersRequest.cs3.app.registry.v1beta1.GetAppProvidersResponse

Returns the app providers that are capable of handling this resource info. -MUST return CODE_NOT_FOUND if no providers are available.

AddAppProvider.cs3.app.registry.v1beta1.AddAppProviderRequest.cs3.app.registry.v1beta1.AddAppProviderResponse

Registers a new app provider to the registry.

ListAppProviders.cs3.app.registry.v1beta1.ListAppProvidersRequest.cs3.app.registry.v1beta1.ListAppProvidersResponse

Returns a list of the available app providers known by this registry.

ListSupportedMimeTypes.cs3.app.registry.v1beta1.ListSupportedMimeTypesRequest.cs3.app.registry.v1beta1.ListSupportedMimeTypesResponse

Returns a list of the supported mime types along with the apps which they can opened with.

GetDefaultAppProviderForMimeType.cs3.app.registry.v1beta1.GetDefaultAppProviderForMimeTypeRequest.cs3.app.registry.v1beta1.GetDefaultAppProviderForMimeTypeResponse

Returns the default app provider which serves a specified mime type.

SetDefaultAppProviderForMimeType.cs3.app.registry.v1beta1.SetDefaultAppProviderForMimeTypeRequest.cs3.app.registry.v1beta1.SetDefaultAppProviderForMimeTypeResponse

Sets the default app provider for a specified mime type. - -*****************************************************************/ -************************ USER PROVIDER **************************/ -*****************************************************************/

GetUser.cs3.identity.user.v1beta1.GetUserRequest.cs3.identity.user.v1beta1.GetUserResponse

Gets the information about a user by the user id.

GetUserByClaim.cs3.identity.user.v1beta1.GetUserByClaimRequest.cs3.identity.user.v1beta1.GetUserByClaimResponse

Gets the information about a user based on a specified claim.

GetUserGroups.cs3.identity.user.v1beta1.GetUserGroupsRequest.cs3.identity.user.v1beta1.GetUserGroupsResponse

Gets the groups of a user.

FindUsers.cs3.identity.user.v1beta1.FindUsersRequest.cs3.identity.user.v1beta1.FindUsersResponse

Finds users by any attribute of the user. -TODO(labkode): to define the filters that make more sense. - -*****************************************************************/ -************************ GROUP PROVIDER **************************/ -*****************************************************************/

GetGroup.cs3.identity.group.v1beta1.GetGroupRequest.cs3.identity.group.v1beta1.GetGroupResponse

Gets the information about a group by the group id.

GetGroupByClaim.cs3.identity.group.v1beta1.GetGroupByClaimRequest.cs3.identity.group.v1beta1.GetGroupByClaimResponse

Gets the information about a group based on a specified claim.

GetMembers.cs3.identity.group.v1beta1.GetMembersRequest.cs3.identity.group.v1beta1.GetMembersResponse

Gets the members of a group.

HasMember.cs3.identity.group.v1beta1.HasMemberRequest.cs3.identity.group.v1beta1.HasMemberResponse

Tells if the group has a certain member.

FindGroups.cs3.identity.group.v1beta1.FindGroupsRequest.cs3.identity.group.v1beta1.FindGroupsResponse

TODO(labkode): to define the filters that make more sense. -Finds groups whose names match the specified filter. - -*****************************************************************/ -************************ AUTH REGISTRY **************************/ -*****************************************************************/

ListAuthProviders.cs3.auth.registry.v1beta1.ListAuthProvidersRequestListAuthProvidersResponse

Returns a list of the available auth providers known by this registry. - -************************ STORAGE REGISTRY ** ********************/ -*****************************************************************/

GetHome.cs3.storage.provider.v1beta1.GetHomeRequest.cs3.storage.provider.v1beta1.GetHomeResponse

Returns the home path for the given authenticated user. -When a user has access to multiple storage providers, one of them is the home. - -*****************************************************************/ -************************ OCM INVITE MANAGER *********************/ -*****************************************************************/

GenerateInviteToken.cs3.ocm.invite.v1beta1.GenerateInviteTokenRequest.cs3.ocm.invite.v1beta1.GenerateInviteTokenResponse

Generates a new token for the user with a validity of 24 hours.

ForwardInvite.cs3.ocm.invite.v1beta1.ForwardInviteRequest.cs3.ocm.invite.v1beta1.ForwardInviteResponse

Forwards a received invite to the sync'n'share system provider.

AcceptInvite.cs3.ocm.invite.v1beta1.AcceptInviteRequest.cs3.ocm.invite.v1beta1.AcceptInviteResponse

Completes an invitation acceptance.

GetAcceptedUser.cs3.ocm.invite.v1beta1.GetAcceptedUserRequest.cs3.ocm.invite.v1beta1.GetAcceptedUserResponse

Retrieves details about a remote user who has accepted an invite to share.

FindAcceptedUsers.cs3.ocm.invite.v1beta1.FindAcceptedUsersRequest.cs3.ocm.invite.v1beta1.FindAcceptedUsersResponse

Finds users who accepted invite tokens by their attributes. - -*****************************************************************/ -******************** OCM PROVIDER AUTHORIZER ********************/ -*****************************************************************/

IsProviderAllowed.cs3.ocm.provider.v1beta1.IsProviderAllowedRequest.cs3.ocm.provider.v1beta1.IsProviderAllowedResponse

Check if a given system provider is registered in the mesh or not. -MUST return CODE_UNAUTHENTICATED if the system is not registered

GetInfoByDomain.cs3.ocm.provider.v1beta1.GetInfoByDomainRequest.cs3.ocm.provider.v1beta1.GetInfoByDomainResponse

Get the information of the provider identified by a specific domain. -MUST return CODE_NOT_FOUND if the sync'n'share system provider does not exist.

ListAllProviders.cs3.ocm.provider.v1beta1.ListAllProvidersRequest.cs3.ocm.provider.v1beta1.ListAllProvidersResponse

Get the information of all the providers registered in the mesh. - -*****************************************************************/ -**************************** OCM CORE ***************************/ -*****************************************************************/

CreateOCMCoreShare.cs3.ocm.core.v1beta1.CreateOCMCoreShareRequest.cs3.ocm.core.v1beta1.CreateOCMCoreShareResponse

Creates a new ocm share. - -*****************************************************************/ -************************** FILE TRANSFER ************************/ -*****************************************************************/

CreateTransfer.cs3.tx.v1beta1.CreateTransferRequest.cs3.tx.v1beta1.CreateTransferResponse

Returns a response containing a TxInfo (transfer info) object.

GetTransferStatus.cs3.tx.v1beta1.GetTransferStatusRequest.cs3.tx.v1beta1.GetTransferStatusResponse

Requests a transfer status.

CancelTransfer.cs3.tx.v1beta1.CancelTransferRequest.cs3.tx.v1beta1.CancelTransferResponse

Requests to cancel a transfer.

- - - - -
-

cs3/gateway/v1beta1/resources.proto

Top -
-

- - -

FileDownloadProtocol

-

A file download protocol object stores information about

downloading resources using a specific protocol.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

protocolstring

REQUIRED. -The protocol to be followed.

download_endpointstring

REQUIRED. -The endpoint where to download the data. -The value MUST be a Uniform Resource Identifier (URI) -as specified in RFC 3986.

tokenstring

OPTIONAL. -A token that MUST be validated by the data gateway for the download. -Only makes sense for downloads passing through the data gateway.

- - - - - -

FileUploadProtocol

-

A file upload protocol object stores information about

uploading resources using a specific protocol.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

protocolstring

REQUIRED. -The protocol to be followed.

upload_endpointstring

REQUIRED. -The endpoint where to upload the data. -The value MUST be a Uniform Resource Identifier (URI) -as specified in RFC 3986.

available_checksumscs3.storage.provider.v1beta1.ResourceChecksumPriorityrepeated

REQUIRED. -List of available checksums -the client can use when sending -the file.

tokenstring

OPTIONAL. -A token that MUST be validated by the data gateway for the upload. -Only makes sense for uploads passing through the data gateway.

- - - - - - - - - - - - - -
-

cs3/preferences/v1beta1/preferences_api.proto

Top -
-

- - -

GetKeyRequest

-

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
keystring

REQUIRED.

- - - - - -

GetKeyResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

valstring

REQUIRED. -The value associated with the key.

- - - - - -

SetKeyRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
keystring

REQUIRED.

valstring

REQUIRED. -The value associated with the key.

- - - - - -

SetKeyResponse

-

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

- - - - - - - - - - - -

PreferencesAPI

-

Preferences API.

The Preferences API is responsible for creating

a key-value map according to user preferences.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL

NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and

"OPTIONAL" in this document are to be interpreted as described in

RFC 2119.

The following are global requirements that apply to all methods:

Any method MUST return CODE_OK on a succesful operation.

Any method MAY return NOT_IMPLEMENTED.

Any method MAY return INTERNAL.

Any method MAY return UNKNOWN.

Any method MAY return UNAUTHENTICATED.

- - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
SetKeySetKeyRequestSetKeyResponse

Maps the key-value pair.

GetKeyGetKeyRequestGetKeyResponse

Returns the value associated with the -requested key.

- - - - -
-

cs3/rpc/v1beta1/code.proto

Top -
-

- - - - -

Code

-

These are the canonical error codes used by CS3 APIs.

Adapted from Google APIs:

https://github.com/googleapis/googleapis/

Sometimes multiple error codes may apply. Services should return

the most specific error code that applies. For example, prefer

`OUT_OF_RANGE` over `FAILED_PRECONDITION` if both codes apply.

Similarly prefer `NOT_FOUND` or `ALREADY_EXISTS` over `FAILED_PRECONDITION`.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
CODE_INVALID0

A programmer would not intentionally set the code to CODE_INVALID. -This code exists to force service implementors to set -a specific code for the API call and to not rely on defaults. - -HTTP Mapping: 500 Internal Server Error

CODE_OK1

Not an error; returned on success - -HTTP Mapping: 200 OK

CODE_CANCELLED2

The operation was cancelled, typically by the caller. - -HTTP Mapping: 499 Client Closed Request

CODE_UNKNOWN3

Unknown error. For example, this error may be returned when -a `Status` value received from another address space belongs to -an error space that is not known in this address space. Also -errors raised by APIs that do not return enough error information -may be converted to this error. - -HTTP Mapping: 500 Internal Server Error

CODE_INVALID_ARGUMENT4

The client specified an invalid argument. Note that this differs -from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments -that are problematic regardless of the state of the system -(e.g., a malformed file name). - -HTTP Mapping: 400 Bad Request

CODE_DEADLINE_EXCEEDED5

The deadline expired before the operation could complete. For operations -that change the state of the system, this error may be returned -even if the operation has completed successfully. For example, a -successful response from a server could have been delayed long -enough for the deadline to expire. - -HTTP Mapping: 504 Gateway Timeout

CODE_NOT_FOUND6

Some requested entity (e.g., file or directory) was not found. - -Note to server developers: if a request is denied for an entire class -of users, such as gradual feature rollout or undocumented whitelist, -`NOT_FOUND` may be used. If a request is denied for some users within -a class of users, such as user-based access control, `PERMISSION_DENIED` -must be used. - -HTTP Mapping: 404 Not Found

CODE_ALREADY_EXISTS7

The entity that a client attempted to create (e.g., file or directory) -already exists. - -HTTP Mapping: 409 Conflict

CODE_PERMISSION_DENIED8

The caller does not have permission to execute the specified -operation. `PERMISSION_DENIED` must not be used for rejections -caused by exhausting some resource (use `RESOURCE_EXHAUSTED` -instead for those errors). `PERMISSION_DENIED` must not be -used if the caller can not be identified (use `UNAUTHENTICATED` -instead for those errors). This error code does not imply the -request is valid or the requested entity exists or satisfies -other pre-conditions. - -HTTP Mapping: 403 Forbidden

CODE_UNAUTHENTICATED9

The request does not have valid authentication credentials for the -operation. - -HTTP Mapping: 401 Unauthorized

CODE_RESOURCE_EXHAUSTED10

Some resource has been exhausted, perhaps a per-user quota, or -perhaps the entire file system is out of space. - -HTTP Mapping: 429 Too Many Requests

CODE_FAILED_PRECONDITION11

The operation was rejected because the system is not in a state -required for the operation's execution. For example, the directory -to be deleted is non-empty, an rmdir operation is applied to -a non-directory, etc. - -Service implementors can use the following guidelines to decide -between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`: - (a) Use `UNAVAILABLE` if the client can retry just the failing call. - (b) Use `ABORTED` if the client should retry at a higher level - (e.g., when a client-specified test-and-set fails, indicating the - client should restart a read-modify-write sequence). - (c) Use `FAILED_PRECONDITION` if the client should not retry until - the system state has been explicitly fixed. E.g., if an "rmdir" - fails because the directory is non-empty, `FAILED_PRECONDITION` - should be returned since the client should not retry unless - the files are deleted from the directory. - -HTTP Mapping: 400 Bad Request

CODE_ABORTED12

The operation was aborted, typically due to a concurrency issue such as -a sequencer check failure or transaction abort. - -See the guidelines above for deciding between `FAILED_PRECONDITION`, -`ABORTED`, and `UNAVAILABLE`. - -HTTP Mapping: 409 Conflict

CODE_OUT_OF_RANGE13

The operation was attempted past the valid range. E.g., seeking or -reading past end-of-file. - -Unlike `INVALID_ARGUMENT`, this error indicates a problem that may -be fixed if the system state changes. For example, a 32-bit file -system will generate `INVALID_ARGUMENT` if asked to read at an -offset that is not in the range [0,2^32-1], but it will generate -`OUT_OF_RANGE` if asked to read from an offset past the current -file size. - -There is a fair bit of overlap between `FAILED_PRECONDITION` and -`OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific -error) when it applies so that callers who are iterating through -a space can easily look for an `OUT_OF_RANGE` error to detect when -they are done. - -HTTP Mapping: 400 Bad Request

CODE_UNIMPLEMENTED14

The operation is not implemented or is not supported/enabled in this -service. - -HTTP Mapping: 501 Not Implemented

CODE_INTERNAL15

Internal errors. This means that some invariants expected by the -underlying system have been broken. This error code is reserved -for serious errors. - -HTTP Mapping: 500 Internal Server Error

CODE_UNAVAILABLE16

The service is currently unavailable. This is most likely a -transient condition, which can be corrected by retrying with -a backoff. - -See the guidelines above for deciding between `FAILED_PRECONDITION`, -`ABORTED`, and `UNAVAILABLE`. - -HTTP Mapping: 503 Service Unavailable

CODE_DATA_LOSS17

Unrecoverable data loss or corruption. - -HTTP Mapping: 500 Internal Server Error

CODE_REDIRECTION18

Redirects the operation to another location. -Used in a Status reponse with a reference to the target URI.

CODE_INSUFFICIENT_STORAGE19

The operation could not be performed because there is not enough -storage available. This can be because of lack of real storage -space or because of the exceeding of a quota associated to a -storage. - -HTTP Mapping: 507 Insufficient Storage

- - - - - - - -
-

cs3/rpc/v1beta1/status.proto

Top -
-

- - -

Status

-

The `Status` message contains two pieces of data: error code and error message.

The error code should be an enum value of [cs3.rpc.code].

The error message should be a developer-facing English

message that helps developers *understand* and *resolve* the error.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
codeCode

REQUIRED. -The status code, which should be an enum value of [cs3.rpc.code][cs3.rpc.code].

messagestring

OPTIONAL. -A developer-facing error message, which should be in English. Any -user-facing error message should be localized and sent in the

tracestring

OPTIONAL. -A trace added to the response for helping support to identify client problems.

target_uristring

OPTIONAL. -A target URI as per RFC3986 to redirect requests to another location. -A Status message with CODE_REDIRECT MUST always set the target_uri. -https://golang.org/pkg/net/url/#URL provides a quick view of the format.

- - - - - - - - - - - - - -
-

cs3/tx/v1beta1/resources.proto

Top -
-

- - -

TxId

-

TxId uniquely identifies a transfer in the transfer provider namespace.

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaque_idstring

REQUIRED. -The internal transfer id used by the service implementor -to uniquely identity the transfer in the internal -implementation of the service.

- - - - - -

TxInfo

-

TxInfo represents information about a transfer.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
idTxId

REQUIRED. -The transfer identifier.

refcs3.storage.provider.v1beta1.Reference

REQUIRED. -Reference of the resource to be transfered.

statusTxInfo.Status

REQUIRED. -The transfer status. Eg.: STATUS_TRANSFER_FAILED. -Note: the description field may provide additional information on the transfer status.

granteecs3.storage.provider.v1beta1.Grantee

REQUIRED. -The destination (receiver of the transfer)

creatorcs3.identity.user.v1beta1.UserId

REQUIRED. -Uniquely identifies a principal who initiates the transfer creation.

ctimecs3.types.v1beta1.Timestamp

REQUIRED. -Creation time of the transfer.

descriptionstring

OPTIONAL. -Information to describe the transfer status. -Eg. may contain information about a transfer failure. -Meant to be human-readable.

- - - - - - - -

TxInfo.Status

-

Status represents transfer status.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
STATUS_INVALID0

STATUS_DESTINATION_NOT_FOUND1

The destination could not be found.

STATUS_TRANSFER_NEW2

A new data transfer

STATUS_TRANSFER_AWAITING_ACCEPTANCE3

The data transfer is awaiting acceptance from the destination

STATUS_TRANSFER_ACCEPTED4

The data transfer is accepted by the destination.

STATUS_TRANSFER_IN_PROGRESS5

The data transfer has started and not yet completed.

STATUS_TRANSFER_COMPLETE6

The data transfer has completed.

STATUS_TRANSFER_FAILED7

The data transfer has failed.

STATUS_TRANSFER_CANCELLED8

The data transfer had been cancelled.

STATUS_TRANSFER_CANCEL_FAILED9

The request for cancelling the data transfer has failed.

STATUS_TRANSFER_EXPIRED10

The transfer has expired somewhere down the line.

- - - - - - - -
-

cs3/tx/v1beta1/tx_api.proto

Top -
-

- - -

CancelTransferRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
tx_idTxId

REQUIRED. -The transfer identifier.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

CancelTransferResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

tx_infoTxInfo

REQUIRED. -TxInfo, includes ao. transfer id, status, description.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

CreateTransferRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
refcs3.storage.provider.v1beta1.Reference

REQUIRED. -Reference of the resource to be transfered.

granteecs3.storage.provider.v1beta1.Grantee

REQUIRED. -The destination (receiver of the transfer)

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

CreateTransferResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

tx_infoTxInfo

REQUIRED. -TxInfo, includes transfer id, status, description.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

GetTransferStatusRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
tx_idTxId

REQUIRED. -The transfer identifier.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

GetTransferStatusResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

tx_infoTxInfo

REQUIRED. -TxInfo, includes ao. transfer id, status, description.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - - - - - - - -

TxAPI

-

Tx API

The Tx API provides data transfer capabilities.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL

NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and

"OPTIONAL" in this document are to be interpreted as described in

RFC 2119.

The following are global requirements that apply to all methods:

Any method MUST return CODE_OK on a succesful operation.

Any method MAY return NOT_IMPLEMENTED.

Any method MAY return INTERNAL.

Any method MAY return UNKNOWN.

Any method MAY return UNAUTHENTICATED.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
CreateTransferCreateTransferRequestCreateTransferResponse

Creates (requests the destination to accept) a transfer. -Returns a response containing a TxInfo (transfer info) object.

GetTransferStatusGetTransferStatusRequestGetTransferStatusResponse

Requests a transfer status.

CancelTransferCancelTransferRequestCancelTransferResponse

Requests to cancel a transfer.

- - - - -
-

cs3/types/v1beta1/types.proto

Top -
-

- - -

Opaque

-

Opaque represents opaque information

in a form on a map.

For example, a local filesystem can

use this message to include filesystem

extended attributes.

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
mapOpaque.MapEntryrepeated

REQUIRED.

- - - - - -

Opaque.MapEntry

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
keystring

valueOpaqueEntry

- - - - - -

OpaqueEntry

-

OpaqueEntry represents the encoded

opaque value.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
decoderstring

REQUIRED. -The decoder to use: json, xml, toml, ... -TODO(labkode): make encoder a fixed set using a enum type?

valuebytes

REQUIRED. -The encoded value.

- - - - - -

Timestamp

-

Adapted from Google google/protobuf/timestamp.proto.

A Timestamp represents a point in time independent of any time zone or local

calendar, encoded as a count of seconds and fractions of seconds at

nanosecond resolution. The count is relative to an epoch at UTC midnight on

January 1, 1970, in the proleptic Gregorian calendar which extends the

Gregorian calendar backwards to year one.

The range MUST be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z.

Restricting to this range ensures the conversion from and to [RFC

3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
secondsuint64

Represents seconds of UTC time since Unix epoch -1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to -9999-12-31T23:59:59Z inclusive.

nanosuint32

Non-negative fractions of a second at nanosecond resolution. Negative -second values with fractions must still have non-negative nanos values -that count forward in time. -Value MUST be from 0 to 999,999,999 -inclusive.

- - - - - - - - - - - - - -
-

cs3/admin/group/v1beta1/group_api.proto

Top -
-

- - -

AddUserToGroupRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
user_idcs3.identity.user.v1beta1.UserId

REQUIRED. -ID of the user to add to the group

group_idcs3.identity.group.v1beta1.GroupId

REQUIRED. -ID of the target group.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

AddUserToGroupResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

CreateGroupRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information. Allow to send any arbitrary data a service might use that is outside the API boundaries

groupcs3.identity.group.v1beta1.Group

REQUIRED. -The information of group to be created.

- - - - - -

CreateGroupResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

groupcs3.identity.group.v1beta1.Group

REQUIRED. -The group information.

- - - - - -

DeleteGroupRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information. Allow to send any arbitrary data a service might use that is outside the API boundaries.

group_idcs3.identity.group.v1beta1.GroupId

REQUIRED. -The group to be deleted, given their ID.

- - - - - -

DeleteGroupResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

RemoveUserFromGroupRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
user_idcs3.identity.user.v1beta1.UserId

REQUIRED. -ID of the user to add to the group

group_idcs3.identity.group.v1beta1.GroupId

REQUIRED. -ID of the target group.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

RemoveUserFromGroupResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - - - - - - - -

GroupAPI

-

Provides a write only API for managing groups.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
CreateGroupCreateGroupRequestCreateGroupResponse

Create a group.

DeleteGroupDeleteGroupRequestDeleteGroupResponse

Delete a group.

AddUserToGroupAddUserToGroupRequestAddUserToGroupResponse

Add a user to a group.

RemoveUserFromGroupRemoveUserFromGroupRequestRemoveUserFromGroupResponse

Remove a user from a group.

- - - - -
-

cs3/admin/user/v1beta1/user_api.proto

Top -
-

- - -

CreateUserRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information. Allow to send any arbitrary data a service might use that is outside the API boundaries

usercs3.identity.user.v1beta1.User

REQUIRED. -The information of user to be created.

- - - - - -

CreateUserResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

usercs3.identity.user.v1beta1.User

REQUIRED. -The user information.

- - - - - -

DeleteUserRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information. Allow to send any arbitrary data a service might use that is outside the API boundaries

user_idcs3.identity.user.v1beta1.UserId

REQUIRED. -The user to be deleted, given their ID.

- - - - - -

DeleteUserResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - - - - - - - -

UserAPI

-

Provides a write only API for managing users.

- - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
CreateUserCreateUserRequestCreateUserResponse

Create a user account.

DeleteUserDeleteUserRequestDeleteUserResponse

Delete a user account.

- - - - -
-

cs3/app/provider/v1beta1/provider_api.proto

Top -
-

- - -

OpenInAppRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

resource_infocs3.storage.provider.v1beta1.ResourceInfo

REQUIRED. -The resourceInfo to be opened. The gateway grpc message has a ref instead.

view_modeOpenInAppRequest.ViewMode

access_tokenstring

REQUIRED. -The access token this application provider will use when contacting -the storage provider to read and write. -Service implementors MUST make sure that the access token only grants -access to the requested resource. -Service implementors should use a ResourceId rather than a filepath to grant access, as -ResourceIds MUST NOT change when a resource is renamed. -The access token MUST be short-lived. -TODO(labkode): investigate token derivation techniques.

- - - - - -

OpenInAppResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

app_urlOpenInAppURL

REQUIRED. -The url that user agents will render to clients. -Usually the rendering happens by using HTML iframes or in separate browser tabs.

- - - - - - - -

OpenInAppRequest.ViewMode

-

REQUIRED.

View mode.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
VIEW_MODE_INVALID0

VIEW_MODE_VIEW_ONLY1

The resource can be opened but not downloaded.

VIEW_MODE_READ_ONLY2

The resource can be downloaded.

VIEW_MODE_READ_WRITE3

The resource can be downloaded and updated.

- - - - - -

ProviderAPI

-

App Provider API

The App Provider API is responsible for creating URLs that

will render a viewer or editor for the given resource, typically via WOPI protocol.

For example, a Collabora or HackMD editor.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL

NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and

"OPTIONAL" in this document are to be interpreted as described in

RFC 2119.

The following are global requirements that apply to all methods:

Any method MUST return CODE_OK on a succesful operation.

Any method MAY return NOT_IMPLEMENTED.

Any method MAY return INTERNAL.

Any method MAY return UNKNOWN.

Any method MAY return UNAUTHENTICATED.

- - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
OpenInAppOpenInAppRequestOpenInAppResponse

Returns the App provider URL -MUST return CODE_NOT_FOUND if the resource does not exist.

- - - - -
-

cs3/app/provider/v1beta1/resources.proto

Top -
-

- - -

OpenInAppURL

-

Represents the information for the app URL to be called by the clients.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
app_urlstring

REQUIRED. -The URL that clients will perform requests to.

methodstring

REQUIRED. -The method for the request to be made. -Only GET and POST are supported.

form_parametersOpenInAppURL.FormParametersEntryrepeated

OPTIONAL. -The form parameters which have to be passed along with the request. -These are sent only if the method is 'POST'.

headersOpenInAppURL.HeadersEntryrepeated

OPTIONAL. -The headers to be added to the request.

- - - - - -

OpenInAppURL.FormParametersEntry

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
keystring

valuestring

- - - - - -

OpenInAppURL.HeadersEntry

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
keystring

valuestring

- - - - - - - - - - - - - -
-

cs3/app/registry/v1beta1/registry_api.proto

Top -
-

- - -

AddAppProviderRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

providerProviderInfo

REQUIRED. -The app provider to be registered.

- - - - - -

AddAppProviderResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

GetAppProvidersRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

resource_infocs3.storage.provider.v1beta1.ResourceInfo

REQUIRED. -The resource information.

- - - - - -

GetAppProvidersResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

providersProviderInforepeated

REQUIRED. -The app providers available for the given resource info.

- - - - - -

GetDefaultAppProviderForMimeTypeRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

mime_typestring

REQUIRED. -The mimetype for which the default app has to be returned.

- - - - - -

GetDefaultAppProviderForMimeTypeResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

providerProviderInfo

REQUIRED. -The default app provider for the specified mime type.

- - - - - -

ListAppProvidersRequest

-

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

ListAppProvidersResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

providersProviderInforepeated

REQUIRED. -The list of app providers this registry knows about.

- - - - - -

ListSupportedMimeTypesRequest

-

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

ListSupportedMimeTypesResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

mime_typesListSupportedMimeTypesResponse.MimeTypesEntryrepeated

REQUIRED. -The list of supported mime types with the apps which they can be opened with.

- - - - - -

ListSupportedMimeTypesResponse.MimeTypesEntry

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
keystring

valueAppProviderList

- - - - - -

SetDefaultAppProviderForMimeTypeRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

mime_typestring

REQUIRED. -The mimetype for which the default app has to be returned.

providerProviderInfo

REQUIRED. -The app provider to be marked as default for the specified mime type.

- - - - - -

SetDefaultAppProviderForMimeTypeResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - - - - - - - -

RegistryAPI

-

App Registry API

The App Registry API is meant to as registry that

contains mappings between mime types and app providers.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL

NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and

"OPTIONAL" in this document are to be interpreted as described in

RFC 2119.

The following are global requirements that apply to all methods:

Any method MUST return CODE_OK on a succesful operation.

Any method MAY return NOT_IMPLEMENTED.

Any method MAY return INTERNAL.

Any method MAY return UNKNOWN.

Any method MAY return UNAUTHENTICATED.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
GetAppProvidersGetAppProvidersRequestGetAppProvidersResponse

Returns the app providers that are capable of handling this resource info. -MUST return CODE_NOT_FOUND if no providers are available.

AddAppProviderAddAppProviderRequestAddAppProviderResponse

Registers a new app provider to the registry.

ListAppProvidersListAppProvidersRequestListAppProvidersResponse

Returns a list of the available app providers known by this registry.

ListSupportedMimeTypesListSupportedMimeTypesRequestListSupportedMimeTypesResponse

Returns a list of the supported mime types along with the apps which they can opened with.

GetDefaultAppProviderForMimeTypeGetDefaultAppProviderForMimeTypeRequestGetDefaultAppProviderForMimeTypeResponse

Returns the default app provider which serves a specified mime type.

SetDefaultAppProviderForMimeTypeSetDefaultAppProviderForMimeTypeRequestSetDefaultAppProviderForMimeTypeResponse

Sets the default app provider for a specified mime type.

- - - - -
-

cs3/app/registry/v1beta1/resources.proto

Top -
-

- - -

AppProviderList

-

Holds a list of app providers which can open a particular mime type.

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
app_providersProviderInforepeated

- - - - - -

ProviderInfo

-

Represents the information of the app provider.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

mime_typesstringrepeated

REQUIRED. -The mimetypes handled by this provider.

addressstring

REQUIRED. -The address where the app provider can be reached. -For example, tcp://localhost:1099.

namestring

OPTIONAL. -A human-readable name of the app provider.

descriptionstring

OPTIONAL. -Information to describe the functionalities -offered by the app provider. Meant to be read -by humans.

iconstring

OPTIONAL. -A URI to a static asset which represents the app icon.

desktop_onlybool

OPTIONAL. -Whether the app can be opened only on desktop

- - - - - - - - - - - - - -
-

cs3/auth/applications/v1beta1/applications_api.proto

Top -
-

- - -

GenerateAppPasswordRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

token_scopeGenerateAppPasswordRequest.TokenScopeEntryrepeated

OPTIONAL. -The scope of the token to be issued. -This would be a list of resources with corresponding role-based access scope.

labelstring

OPTIONAL. -A label to be associated with the password.

expirationcs3.types.v1beta1.Timestamp

OPTIONAL. -The time when the token will expire.

- - - - - -

GenerateAppPasswordRequest.TokenScopeEntry

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
keystring

valuecs3.auth.provider.v1beta1.Scope

- - - - - -

GenerateAppPasswordResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

app_passwordAppPassword

REQUIRED. -The generated access password.

- - - - - -

GetAppPasswordRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

usercs3.identity.user.v1beta1.UserId

REQUIRED. -The user who created the app password.

passwordstring

REQUIRED. -The password which has to be retrieved.

- - - - - -

GetAppPasswordResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

app_passwordAppPassword

REQUIRED. -The generated access password.

- - - - - -

InvalidateAppPasswordRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

passwordstring

REQUIRED. -The password which has to be invalidated.

- - - - - -

InvalidateAppPasswordResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

ListAppPasswordsRequest

-

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

ListAppPasswordsResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

app_passwordsAppPasswordrepeated

REQUIRED. -The generated access password.

- - - - - - - - - - - -

ApplicationsAPI

-

Auth Applications API

The Auth Applications API is meant to generate and manage authentication

tokens with specified scopes to be used in third-party applications on behalf

of the user.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL

NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and

"OPTIONAL" in this document are to be interpreted as described in

RFC 2119.

The following are global requirements that apply to all methods:

Any method MUST return CODE_OK on a succesful operation.

Any method MAY return NOT_IMPLEMENTED.

Any method MAY return INTERNAL.

Any method MAY return UNKNOWN.

Any method MAY return UNAUTHENTICATED.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
GenerateAppPasswordGenerateAppPasswordRequestGenerateAppPasswordResponse

GenerateAppPassword creates a password with specified scope to be used by -third-party applications.

ListAppPasswordsListAppPasswordsRequestListAppPasswordsResponse

ListAppPasswords lists the application passwords created by a user.

InvalidateAppPasswordInvalidateAppPasswordRequestInvalidateAppPasswordResponse

InvalidateAppPassword invalidates a generated password.

GetAppPasswordGetAppPasswordRequestGetAppPasswordResponse

GetAppPassword retrieves the password information by the combination of username and password.

- - - - -
-

cs3/auth/applications/v1beta1/resources.proto

Top -
-

- - -

AppPassword

-

AppPassword stores information about secondary passwords generated by users

to be used with third-party applications.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
passwordstring

REQUIRED. -The generated access password.

token_scopeAppPassword.TokenScopeEntryrepeated

OPTIONAL. -The scope of the token to be issued. -This would be a list of resources with corresponding role-based access scope.

labelstring

OPTIONAL. -A label to be associated with the password.

usercs3.identity.user.v1beta1.UserId

REQUIRED. -The user who created the password.

expirationcs3.types.v1beta1.Timestamp

OPTIONAL. -The time when the token will expire.

ctimecs3.types.v1beta1.Timestamp

REQUIRED. -The creation time of the password.

utimecs3.types.v1beta1.Timestamp

REQUIRED. -The last time the password was used.

- - - - - -

AppPassword.TokenScopeEntry

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
keystring

valuecs3.auth.provider.v1beta1.Scope

- - - - - - - - - - - - - -
-

cs3/auth/provider/v1beta1/provider_api.proto

Top -
-

- - -

AuthenticateRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

client_idstring

OPTIONAL. -The id of the client. -For basic authentication with username and password -both client_id and client_secret are expected to be filled. -However, for example, for OIDC only a token is necessary.

client_secretstring

OPTIONAL. -The secret of the client.

- - - - - -

AuthenticateResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

usercs3.identity.user.v1beta1.User

REQUIRED. -The authenticated user.

token_scopeAuthenticateResponse.TokenScopeEntryrepeated

REQUIRED. -The scope of the token to be issued. -This would be a list of resources with corresponding role-based access scope.

- - - - - -

AuthenticateResponse.TokenScopeEntry

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
keystring

valueScope

- - - - - - - - - - - -

ProviderAPI

-

Auth Provider API

The Auth Provider API is meant to authenticate a client.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL

NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and

"OPTIONAL" in this document are to be interpreted as described in

RFC 2119.

The following are global requirements that apply to all methods:

Any method MUST return CODE_OK on a succesful operation.

Any method MAY return NOT_IMPLEMENTED.

Any method MAY return INTERNAL.

Any method MAY return UNKNOWN.

Any method MAY return UNAUTHENTICATED.

- - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
AuthenticateAuthenticateRequestAuthenticateResponse

Authenticate authenticates a client.

- - - - -
-

cs3/auth/provider/v1beta1/resources.proto

Top -
-

- - -

Scope

-

Scope defines role-based permissions for various resources.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
resourcecs3.types.v1beta1.OpaqueEntry

REQUIRED. -The resource embedded in the request of a particular method. It depends on -the method, hence is left as opaque.

roleRole

REQUIRED. -The role associated with the resource.

- - - - - - - -

Role

-

The role associated with the scope.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
ROLE_INVALID0

Used for invalid roles

ROLE_OWNER1

Grants owner permissions on a resource

ROLE_LEGACY2

Provides backwards compatibility

ROLE_VIEWER3

Grants non-editor role on a resource

ROLE_EDITOR4

Grants editor permission on a resource, including folders

ROLE_FILE_EDITOR5

Grants editor permission on a single file

ROLE_COOWNER6

Grants co-owner permissions on a resource

ROLE_UPLOADER7

Role with only write permission can use InitiateFileUpload, nothing else

- - - - - - - -
-

cs3/auth/registry/v1beta1/registry_api.proto

Top -
-

- - -

GetAuthProviderRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

typestring

REQUIRED. -The type of authentication provider.

- - - - - -

GetAuthProviderResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

providerProviderInfo

REQUIRED. -The auth provider handling the requested auth call.

- - - - - -

ListAuthProvidersRequest

-

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information. - -TODO(labkode): maybe add some filter?

- - - - - -

ListAuthProvidersResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

providersProviderInforepeated

REQUIRED. -The list of auth providers this registry knows about.

- - - - - - - - - - - -

RegistryAPI

-

Auth Registry API

The Auth Registry API is meant to as registry to obtain

information of available auth providers.

For example, to use OIDC or Kerberos for authentication.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL

NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and

"OPTIONAL" in this document are to be interpreted as described in

RFC 2119.

The following are global requirements that apply to all methods:

Any method MUST return CODE_OK on a succesful operation.

Any method MAY return NOT_IMPLEMENTED.

Any method MAY return INTERNAL.

Any method MAY return UNKNOWN.

Any method MAY return UNAUTHENTICATED.

- - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
GetAuthProviderGetAuthProviderRequestGetAuthProviderResponse

Returns the auth provider that is reponsible for the given -resource reference. -MUST return CODE_NOT_FOUND if the reference does not exist.

ListAuthProvidersListAuthProvidersRequestListAuthProvidersResponse

Returns a list of the available auth providers known by this registry.

- - - - -
-

cs3/auth/registry/v1beta1/resources.proto

Top -
-

- - -

ProviderInfo

-

ProviderInfo provides the information about an authentication provider.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information (containing storage-specific information). -For example, additional metadata attached to the resource.

provider_typestring

REQUIRED. -The storage provider id that will become part of the -resource id. -For example, if the provider_id is "home", resources obtained -from this storage provider will have a resource id like "home:1234".

addressstring

REQUIRED. -The address where the storage provider can be reached. -For example, tcp://localhost:1099.

descriptionstring

OPTIONAL. -Information to describe the functionalities -offered by the storage provider. Meant to be read -by humans.

- - - - - - - - - - - - - -
-

cs3/identity/group/v1beta1/group_api.proto

Top -
-

- - -

FindGroupsRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

filterstring

REQUIRED. -The filter to apply.

- - - - - -

FindGroupsResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

groupsGrouprepeated

REQUIRED. -The groups matching the specified filter.

- - - - - -

GetGroupByClaimRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

claimstring

REQUIRED. -The claim on the basis of which groups will be filtered.

valuestring

REQUIRED. -The value of the claim to find the specific group.

- - - - - -

GetGroupByClaimResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

groupGroup

REQUIRED. -The group information.

- - - - - -

GetGroupRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

group_idGroupId

REQUIRED. -The id of the group.

- - - - - -

GetGroupResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

groupGroup

REQUIRED. -The group information.

- - - - - -

GetMembersRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

group_idGroupId

REQUIRED. -The id of the group.

- - - - - -

GetMembersResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

memberscs3.identity.user.v1beta1.UserIdrepeated

REQUIRED. -The members of the group.

- - - - - -

HasMemberRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

group_idGroupId

REQUIRED. -The id of the group.

user_idcs3.identity.user.v1beta1.UserId

REQUIRED. -The id of the user to check.

- - - - - -

HasMemberResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

okbool

REQUIRED. -Tells if the user belongs to the group.

- - - - - - - - - - - -

GroupAPI

-

Provides an API for managing groups.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
GetGroupGetGroupRequestGetGroupResponse

Gets the information about a group by the group id.

GetGroupByClaimGetGroupByClaimRequestGetGroupByClaimResponse

Gets the information about a group based on a specified claim.

GetMembersGetMembersRequestGetMembersResponse

Gets the members of a group.

HasMemberHasMemberRequestHasMemberResponse

Tells if the group has certain member.

FindGroupsFindGroupsRequestFindGroupsResponse

Finds groups whose names match the specified filter.

- - - - -
-

cs3/identity/group/v1beta1/resources.proto

Top -
-

- - -

Group

-

Represents a group of the system.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
idGroupId

group_namestring

gid_numberint64

mailstring

mail_verifiedbool

display_namestring

memberscs3.identity.user.v1beta1.UserIdrepeated

opaquecs3.types.v1beta1.Opaque

- - - - - -

GroupId

-

A GroupId represents a group.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
idpstring

REQUIRED. -The identity provider for the group.

opaque_idstring

REQUIRED. -the unique identifier for the group in the scope of -the identity provider.

- - - - - - - - - - - - - -
-

cs3/identity/user/v1beta1/resources.proto

Top -
-

- - -

User

-

Represents a user of the system.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
idUserId

usernamestring

mailstring

mail_verifiedbool

display_namestring

groupsstringrepeated

opaquecs3.types.v1beta1.Opaque

uid_numberint64

gid_numberint64

- - - - - -

UserId

-

A UserId represents a user.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
idpstring

REQUIRED. -The identity provider for the user.

opaque_idstring

REQUIRED. -the unique identifier for the user in the scope of -the identity provider.

typeUserType

REQUIRED. -The type of user.

- - - - - - - -

UserType

-

The type of user.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
USER_TYPE_INVALID0

The user is invalid, for example, is missing primary attributes.

USER_TYPE_PRIMARY1

A primary user.

USER_TYPE_SECONDARY2

A secondary user for cases with multiple identities.

USER_TYPE_SERVICE3

A user catering to specific services.

USER_TYPE_APPLICATION4

A user to be used by specific applications.

USER_TYPE_GUEST5

A guest user not affiliated to the IDP.

USER_TYPE_FEDERATED6

A federated user provided by external IDPs.

USER_TYPE_LIGHTWEIGHT7

A lightweight user account without access to various major functionalities.

- - - - - - - -
-

cs3/identity/user/v1beta1/user_api.proto

Top -
-

- - -

FindUsersRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

filterstring

REQUIRED. TODO(labkode): create proper filters for most common searches. -The filter to apply.

- - - - - -

FindUsersResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

usersUserrepeated

REQUIRED. -The users matching the specified filter.

- - - - - -

GetUserByClaimRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

claimstring

REQUIRED. -The claim on the basis of which users will be filtered.

valuestring

REQUIRED. -The value of the claim to find the specific user.

- - - - - -

GetUserByClaimResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

userUser

REQUIRED. -The user information.

- - - - - -

GetUserGroupsRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

user_idUserId

REQUIRED. -The id of the user.

- - - - - -

GetUserGroupsResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

groupsstringrepeated

REQUIRED. -The groups for the user.

- - - - - -

GetUserRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

user_idUserId

REQUIRED. -The id of the user.

- - - - - -

GetUserResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

userUser

REQUIRED. -The user information.

- - - - - - - - - - - -

UserAPI

-

Provides an API for managing users.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
GetUserGetUserRequestGetUserResponse

Gets the information about a user by the user id.

GetUserByClaimGetUserByClaimRequestGetUserByClaimResponse

Gets the information about a user based on a specified claim.

GetUserGroupsGetUserGroupsRequestGetUserGroupsResponse

Gets the groups of a user.

FindUsersFindUsersRequestFindUsersResponse

Finds users by any attribute of the user. -TODO(labkode): to define the filters that make more sense.

- - - - -
-

cs3/ocm/core/v1beta1/ocm_core_api.proto

Top -
-

- - -

CreateOCMCoreShareRequest

-

https://rawgit.com/GEANT/OCM-API/v1/docs.html#null%2Fpaths%2F~1shares%2Fpost

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

descriptionstring

OPTIONAL. -Description for the share.

namestring

REQUIRED. -Name of the resource (file or folder).

provider_idstring

REQUIRED. -Identifier to identify the resource at the provider side. This is unique per provider.

ownercs3.identity.user.v1beta1.UserId

REQUIRED. -Provider specific identifier of the user that wants to share the resource.

share_withcs3.identity.user.v1beta1.UserId

REQUIRED. -Consumer specific identifier of the user or group the provider wants to share the resource with. -This is known in advance, for example using the OCM invitation flow. -Please note that the consumer service endpoint is known in advance as well, so this is no part of the request body. -TODO: this field needs to represent either a user or group in the future, not only a user.

protocolProtocol

REQUIRED. -The protocol which is used to establish synchronisation.

- - - - - -

CreateOCMCoreShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

idstring

REQUIRED. -Unique ID to identify the share at the consumer side.

createdcs3.types.v1beta1.Timestamp

REQUIRED.

- - - - - - - - - - - -

OcmCoreAPI

-

OCM Core API

The OCM Core API is the mapping in GRPC of the OCM core protocol.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL

NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and

"OPTIONAL" in this document are to be interpreted as described in

RFC 2119.

The following are global requirements that apply to all methods:

Any method MUST return CODE_OK on a succesful operation.

Any method MAY return NOT_IMPLEMENTED.

Any method MAY return INTERNAL.

Any method MAY return UNKNOWN.

Any method MAY return UNAUTHENTICATED.

- - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
CreateOCMCoreShareCreateOCMCoreShareRequestCreateOCMCoreShareResponse

Creates a new ocm share.

- - - - -
-

cs3/ocm/core/v1beta1/resources.proto

Top -
-

- - -

Protocol

-

The protocol which is used to establish synchronisation.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
namestring

REQUIRED. -The name of the protocol to use.

opaquecs3.types.v1beta1.Opaque

REQUIRED. -JSON object with protocol specific options, -e.g. uri, access_token, password, permissions etc.

- - - - - - - - - - - - - -
-

cs3/ocm/invite/v1beta1/invite_api.proto

Top -
-

- - -

AcceptInviteRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

invite_tokenInviteToken

REQUIRED. -The token to authenticate with.

remote_usercs3.identity.user.v1beta1.User

REQUIRED. -The user who accepted the invite.

- - - - - -

AcceptInviteResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

FindAcceptedUsersRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

filterstring

REQUIRED. -The filter to apply.

- - - - - -

FindAcceptedUsersResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

accepted_userscs3.identity.user.v1beta1.Userrepeated

REQUIRED. -The accepted users matching the specified filter.

- - - - - -

ForwardInviteRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

invite_tokenInviteToken

REQUIRED. -The token to authenticate with.

origin_system_providercs3.ocm.provider.v1beta1.ProviderInfo

REQUIRED. -The details of the sync'n'share system provider of the user who sent the invite.

- - - - - -

ForwardInviteResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

GenerateInviteTokenRequest

-

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

GenerateInviteTokenResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

invite_tokenInviteToken

REQUIRED. -The generated token.

- - - - - -

GetAcceptedUserRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

remote_user_idcs3.identity.user.v1beta1.UserId

REQUIRED. -The id of the user.

- - - - - -

GetAcceptedUserResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

remote_usercs3.identity.user.v1beta1.User

REQUIRED. -The user information.

- - - - - - - - - - - -

InviteAPI

-

Invite API

The Invite API is meant to invite users and groups belonging to other

sync'n'share systems, so that collaboration of resources can be enabled.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL

NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and

"OPTIONAL" in this document are to be interpreted as described in

RFC 2119.

The following are global requirements that apply to all methods:

Any method MUST return CODE_OK on a succesful operation.

Any method MAY return NOT_IMPLEMENTED.

Any method MAY return INTERNAL.

Any method MAY return UNKNOWN.

Any method MAY return UNAUTHENTICATED.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
GenerateInviteTokenGenerateInviteTokenRequestGenerateInviteTokenResponse

Generates a new token for the user with a validity of 24 hours.

ForwardInviteForwardInviteRequestForwardInviteResponse

Forwards a received invite to the sync'n'share system provider.

AcceptInviteAcceptInviteRequestAcceptInviteResponse

Completes an invitation acceptance.

GetAcceptedUserGetAcceptedUserRequestGetAcceptedUserResponse

Retrieves details about a remote user who has accepted an invite to share.

FindAcceptedUsersFindAcceptedUsersRequestFindAcceptedUsersResponse

Finds users who accepted invite tokens by their attributes.

- - - - -
-

cs3/ocm/invite/v1beta1/resources.proto

Top -
-

- - -

InviteToken

-

InviteToken is used to invite users and groups from other sync'n'share

systems to collaborate on resources.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
tokenstring

REQUIRED. -Unique ID associated with an InviteToken.

user_idcs3.identity.user.v1beta1.UserId

REQUIRED. -The user who created the token.

expirationcs3.types.v1beta1.Timestamp

OPTIONAL. -The time when the token will expire.

descriptionstring

OPTIONAL. -User-defined description to be forwarded to the invitees.

- - - - - - - - - - - - - -
-

cs3/ocm/provider/v1beta1/provider_api.proto

Top -
-

- - -

GetInfoByDomainRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

domainstring

REQUIRED. -The domain of the system provider.

- - - - - -

GetInfoByDomainResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

provider_infoProviderInfo

REQUIRED. -The info of the provider

- - - - - -

IsProviderAllowedRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

providerProviderInfo

REQUIRED. -The provider that we need to check against the list of verified mesh providers.

- - - - - -

IsProviderAllowedResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

ListAllProvidersRequest

-

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

ListAllProvidersResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

providersProviderInforepeated

REQUIRED. -The share.

- - - - - - - - - - - -

ProviderAPI

-

OCM Auth Provider API

The Auth Provider API is meant to authenticate a sync'n'share provider regsistered in the mesh.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL

NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and

"OPTIONAL" in this document are to be interpreted as described in

RFC 2119.

The following are global requirements that apply to all methods:

Any method MUST return CODE_OK on a succesful operation.

Any method MAY return NOT_IMPLEMENTED.

Any method MAY return INTERNAL.

Any method MAY return UNKNOWN.

Any method MAY return UNAUTHENTICATED.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
IsProviderAllowedIsProviderAllowedRequestIsProviderAllowedResponse

Check if a given system provider is registered in the mesh or not. -MUST return CODE_UNAUTHENTICATED if the system is not registered

GetInfoByDomainGetInfoByDomainRequestGetInfoByDomainResponse

Get the information of the provider identified by a specific domain. -MUST return CODE_NOT_FOUND if the sync'n'share system provider does not exist.

ListAllProvidersListAllProvidersRequestListAllProvidersResponse

Get the information of all the providers registered in the mesh.

- - - - -
-

cs3/ocm/provider/v1beta1/resources.proto

Top -
-

- - -

ProviderInfo

-

Details of the sync'n'share system provider.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
namestring

REQUIRED. -The name of the provider.

full_namestring

REQUIRED. -The full name of the provider.

descriptionstring

REQUIRED. -A description of the provider.

organizationstring

REQUIRED. -The organization to which the provider belongs.

domainstring

REQUIRED. -The domain of the sync'n'share provider.

homepagestring

REQUIRED. -The homepage of the provider.

emailstring

REQUIRED. -The email at which the provider can be reached.

servicesServicerepeated

REQUIRED. -The list of services provided by the provider.

propertiesProviderInfo.PropertiesEntryrepeated

OPTIONAL. -Additional properties about the service.

- - - - - -

ProviderInfo.PropertiesEntry

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
keystring

valuestring

- - - - - -

Service

-

The services offered by sync'n'share system providers.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
hoststring

REQUIRED. -The URL at which the service is hosted.

endpointServiceEndpoint

REQUIRED. -The primary endpoint of the service.

api_versionstring

REQUIRED. -The API version of the provided service.

additional_endpointsServiceEndpointrepeated

OPTIONAL. -Additional endpoints at which the service is exposed.

- - - - - -

ServiceEndpoint

-

The endpoints exposed by particular services.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
typeServiceType

REQUIRED. -The type of service.

namestring

REQUIRED. -The name of the service.

pathstring

REQUIRED. -The path at which the service is hosted.

is_monitoredbool

OPTIONAL. -Whether the service is monitored.

propertiesServiceEndpoint.PropertiesEntryrepeated

OPTIONAL. -Additional properties about the service.

- - - - - -

ServiceEndpoint.PropertiesEntry

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
keystring

valuestring

- - - - - -

ServiceType

-

Identifier for various types of services offered by sync'n'share system providers.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
namestring

REQUIRED -The name of the service type.

descriptionstring

REQUIRED -The description of the service type.

- - - - - - - - - - - - - -
-

cs3/sharing/collaboration/v1beta1/collaboration_api.proto

Top -
-

- - -

CreateShareRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

resource_infocs3.storage.provider.v1beta1.ResourceInfo

REQUIRED. -The information of the resource to be shared.

grantShareGrant

REQUIRED. -The share grant for the share.

- - - - - -

CreateShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

shareShare

REQUIRED. -The created share.

- - - - - -

GetReceivedShareRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refShareReference

REQUIRED. -The reference of the received share.

- - - - - -

GetReceivedShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

shareReceivedShare

REQUIRED. -The share.

- - - - - -

GetShareRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refShareReference

REQUIRED. -The reference to which the action should be performed.

- - - - - -

GetShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

shareShare

REQUIRED. -The share.

- - - - - -

ListReceivedSharesRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

filtersFilterrepeated

OPTIONAL. -The list of filters to apply if any.

- - - - - -

ListReceivedSharesResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

sharesReceivedSharerepeated

REQUIRED. -The list of received shares.

- - - - - -

ListSharesRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

filtersFilterrepeated

OPTIONAL. -The list of filters to apply if any.

- - - - - -

ListSharesResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

sharesSharerepeated

REQUIRED. -The list of shares.

- - - - - -

RemoveShareRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refShareReference

REQUIRED. -The reference to which the action should be performed.

- - - - - -

RemoveShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

UpdateReceivedShareRequest

-

TODO(labkode): clean up display_name ? we'll use storage links for that.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refShareReference

REQUIRED.

fieldUpdateReceivedShareRequest.UpdateField

- - - - - -

UpdateReceivedShareRequest.UpdateField

-

REQUIRED.

The field to update.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
display_namestring

Update the display name.

stateShareState

Update the share state

- - - - - -

UpdateReceivedShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

shareReceivedShare

REQUIRED. -The updated share.

- - - - - -

UpdateShareRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information. - -REQUIRED.

refShareReference

fieldUpdateShareRequest.UpdateField

REQUIRED.

- - - - - -

UpdateShareRequest.UpdateField

-

REQUIRED.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
permissionsSharePermissions

Update the permissions.

display_namestring

Update the display name.

- - - - - -

UpdateShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

shareShare

REQUIRED. -The updated share.

- - - - - - - - - - - -

CollaborationAPI

-

User Share Provider API

The User Share Provider API is meant to manipulate share

resources for a specific share type (user, group, ocm, ...)

from the perspective of the creator or the share and

from the perspective of the receiver of the share.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL

NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and

"OPTIONAL" in this document are to be interpreted as described in

RFC 2119.

The following are global requirements that apply to all methods:

Any method MUST return CODE_OK on a succesful operation.

Any method MAY return NOT_IMPLEMENTED.

Any method MAY return INTERNAL.

Any method MAY return UNKNOWN.

Any method MAY return UNAUTHENTICATED.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
CreateShareCreateShareRequestCreateShareResponse

Creates a new share. -MUST return CODE_NOT_FOUND if the resource reference does not exist. -MUST return CODE_ALREADY_EXISTS if the share already exists for the 4-tuple consisting of -(owner, shared_resource, grantee). -New shares MUST be created in the state SHARE_STATE_PENDING.

RemoveShareRemoveShareRequestRemoveShareResponse

Removes a share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

GetShareGetShareRequestGetShareResponse

Gets share information for a single share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

ListSharesListSharesRequestListSharesResponse

List the shares the authenticated principal has created, -both as owner and creator. If a filter is specified, only -shares satisfying the filter MUST be returned.

UpdateShareUpdateShareRequestUpdateShareResponse

Updates a share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

ListReceivedSharesListReceivedSharesRequestListReceivedSharesResponse

List all shares the authenticated principal has received.

UpdateReceivedShareUpdateReceivedShareRequestUpdateReceivedShareResponse

Update the received share to change the share state or the display name. -MUST return CODE_NOT_FOUND if the share reference does not exist.

GetReceivedShareGetReceivedShareRequestGetReceivedShareResponse

Get the information for the given received share reference. -MUST return CODE_NOT_FOUND if the received share reference does not exist.

- - - - -
-

cs3/sharing/collaboration/v1beta1/resources.proto

Top -
-

- - -

Filter

-

Represents a filter to apply to the request.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
typeFilter.Type

REQUIRED.

resource_idcs3.storage.provider.v1beta1.ResourceId

ownercs3.identity.user.v1beta1.UserId

creatorcs3.identity.user.v1beta1.UserId

grantee_typecs3.storage.provider.v1beta1.GranteeType

- - - - - -

ReceivedShare

-

A received share is the share that a grantee will receive.

It expands the original share by adding state to the share,

a display name from the perspective of the grantee and a

resource mount path in case the share will be mounted

in a path in a storage provider.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
shareShare

REQUIRED.

stateShareState

REQUIRED. -The state of the share.

- - - - - -

Share

-

Shares are relationships between a resource owner

(usually the authenticated user) who grants permissions to a recipient (grantee)

on a specified resource (resource_id). UserShares represents both user and groups.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
idShareId

REQUIRED. -Opaque unique identifier of the share.

resource_idcs3.storage.provider.v1beta1.ResourceId

REQUIRED. -Unique identifier of the shared resource.

permissionsSharePermissions

REQUIRED. -Permissions for the grantee to use -the resource.

granteecs3.storage.provider.v1beta1.Grantee

REQUIRED. -The receiver of the share, like a user, group ...

ownercs3.identity.user.v1beta1.UserId

REQUIRED. -Uniquely identifies the owner of the share -(the resource owner at the time of creating the share). -In case the ownership of the underlying resource changes -the share owner field MAY change to reflect the change of ownsership.

creatorcs3.identity.user.v1beta1.UserId

REQUIRED. -Uniquely identifies a principal who initiates the share creation. -A creator can create shares on behalf of the owner (because of re-sharing, -because belonging to special groups, ...). -Creator and owner often result in being the same principal.

ctimecs3.types.v1beta1.Timestamp

REQUIRED. -Creation time of the share.

mtimecs3.types.v1beta1.Timestamp

REQUIRED. -Last modification time of the share.

- - - - - -

ShareGrant

-

A share grant specifies the share permissions

for a grantee.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
granteecs3.storage.provider.v1beta1.Grantee

REQUIRED. -The grantee of the grant.

permissionsSharePermissions

REQUIRED. -The share permissions for the grant.

- - - - - -

ShareId

-

A share id identifies uniquely a // share in the share provider namespace.

A ShareId MUST be unique inside the share provider.

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaque_idstring

REQUIRED. -The internal id used by service implementor to -uniquely Collaboration the share in the internal -implementation of the service.

- - - - - -

ShareKey

-

Uniquely identifies a share in the share provider.

A share MUST be uniquely identify by four (4) elements:

1) The share provider id

2) The owner of the share

3) The resource id

4) The grantee for the share

This 4-tuple MUST be unique.

For example, owner Alice shares the resource /home/docs with id

home:1234 to an user named Bob. The 4-tuple will consist of

1) The share provider id = "user"

2) The owner of the share = "Alice"

3) The resource id = "home:1234"

4) The grantee for the share = Grantee("type" = "user", "" => "Bob")

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
ownercs3.identity.user.v1beta1.UserId

REQUIRED.

resource_idcs3.storage.provider.v1beta1.ResourceId

REQUIRED.

granteecs3.storage.provider.v1beta1.Grantee

REQUIRED.

- - - - - -

SharePermissions

-

The permissions for a share.

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
permissionscs3.storage.provider.v1beta1.ResourcePermissions

TODO(labkode): additional permissions for shares like re-sharing

- - - - - -

ShareReference

-

The mechanism to identify a share

in the share provider namespace.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
idShareId

The id of the share.

keyShareKey

The combination of fields that -make the share unique.

- - - - - - - -

Filter.Type

-

The filter to apply.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
TYPE_INVALID0

TYPE_NO1

TYPE_RESOURCE_ID2

TYPE_OWNER3

TYPE_CREATOR4

TYPE_GRANTEE_TYPE5

- -

ShareState

-

The state of the share.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
SHARE_STATE_INVALID0

The share is no longer valid, for example, the share expired.

SHARE_STATE_PENDING1

New shares MUST be created in the SHARE_STATE_PENDING state. -This state means the share is pending to be accepted or rejected -by the recipient of the share.

SHARE_STATE_ACCEPTED2

The recipient of the share has accepted the share.

SHARE_STATE_REJECTED3

The recipient of the share has rejected the share. -Do not means the share is removed, the recipient MAY -change the state to accepted or pending.

- - - - - - - -
- Top -
-

- - -

CreatePublicShareRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

resource_infocs3.storage.provider.v1beta1.ResourceInfo

REQUIRED. -The unique identifier for the shared storage resource.

grantGrant

REQUIRED. -The restrictions to apply to the share.

- - - - - -

CreatePublicShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

sharePublicShare

REQUIRED. -The created share.

- - - - - -

GetPublicShareByTokenRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

tokenstring

REQUIRED. -The unlisted token to identify the public share.

authenticationPublicShareAuthentication

OPTIONAL. -The public link can require authentication.

signbool

OPTIONAL. -If a signature should be included in the share.

- - - - - -

GetPublicShareByTokenResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

sharePublicShare

REQUIRED. -The share.

password_hashstring

OPTIONAL. -The share password hash.

- - - - -

Fields with deprecated option

- - - - - - - - - - - - - - - -
NameOption
password_hash

true

- - - - - -

GetPublicShareRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refPublicShareReference

REQUIRED. -The reference to which the action should be performed.

signbool

OPTIONAL. -If a signature should be included in the share.

- - - - - -

GetPublicShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

sharePublicShare

REQUIRED. -The share.

- - - - - -

ListPublicSharesRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

filtersListPublicSharesRequest.Filterrepeated

OPTIONAL. -The list of filters to apply if any.

signbool

OPTIONAL. -If a signature should be included in the share.

- - - - - -

ListPublicSharesRequest.Filter

-

REQUIRED.

represents a filter to apply to the request.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
typeListPublicSharesRequest.Filter.Type

resource_idcs3.storage.provider.v1beta1.ResourceId

ownercs3.identity.user.v1beta1.UserId

creatorcs3.identity.user.v1beta1.UserId

- - - - - -

ListPublicSharesResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

sharePublicSharerepeated

REQUIRED. -The list of shares.

- - - - - -

RemovePublicShareRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refPublicShareReference

REQUIRED. -The reference to which the action should be performed.

- - - - - -

RemovePublicShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

UpdatePublicShareRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information. - -REQUIRED.

refPublicShareReference

REQUIRED. -The reference to the public share. - -Available fields to update.

updateUpdatePublicShareRequest.Update

- - - - - -

UpdatePublicShareRequest.Update

-

REQUIRED.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
typeUpdatePublicShareRequest.Update.Type

REQUIRED. -Defines the field to update.

grantGrant

REQUIRED. -Contains the field that will be updated.

display_namestring

OPTIONAL -Defines the public link display name.

- - - - - -

UpdatePublicShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

sharePublicShare

REQUIRED. -The updated public share.

- - - - - - - -

ListPublicSharesRequest.Filter.Type

-

REQUIRED.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
TYPE_INVALID0

TYPE_RESOURCE_ID1

TYPE_OWNER2

TYPE_CREATOR3

- -

UpdatePublicShareRequest.Update.Type

-

REQUIRED.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
TYPE_INVALID0

TYPE_PERMISSIONS1

TYPE_PASSWORD2

TYPE_EXPIRATION3

TYPE_DISPLAYNAME4

- - - - - -

LinkAPI

-

PublicShare Provider API

The Public Share Provider API is meant to manipulate public shares

also called public links.

Access to public shares can be limitted by a password. The share

provider must store this password in a secure manner e.g. hashed

with the bcrypt algorithm.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL

NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and

"OPTIONAL" in this document are to be interpreted as described in

RFC 2119.

The following are global requirements that apply to all methods:

Any method MUST return CODE_OK on a succesful operation.

Any method MAY return NOT_IMPLEMENTED.

Any method MAY return INTERNAL.

Any method MAY return UNKNOWN.

Any method MAY return UNAUTHENTICATED.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
CreatePublicShareCreatePublicShareRequestCreatePublicShareResponse

Creates a new share. -MUST return CODE_NOT_FOUND if the resource reference does not exist. -MUST return CODE_ALREADY_EXISTS if the share already exists for the 4-tuple consisting of -(owner, shared_resource, grantee). -New shares MUST be created in the state SHARE_STATE_PENDING.

RemovePublicShareRemovePublicShareRequestRemovePublicShareResponse

Removes a share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

GetPublicShareGetPublicShareRequestGetPublicShareResponse

Gets share information for a single share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

GetPublicShareByTokenGetPublicShareByTokenRequestGetPublicShareByTokenResponse

Gets share information for a single share by its unlisted token. -MUST return CODE_NOT_FOUND if the share does not exist.

ListPublicSharesListPublicSharesRequestListPublicSharesResponse

List the shares the authenticated principal has created, -both as owner and creator. If a filter is specified, only -shares satisfying the filter MUST be returned.

UpdatePublicShareUpdatePublicShareRequestUpdatePublicShareResponse

Updates a share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

- - - - -
-

cs3/sharing/link/v1beta1/resources.proto

Top -
-

- - -

Grant

-

Defines the restrictions for the public share.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
permissionsPublicSharePermissions

REQUIRED. -The permissions for the share.

passwordstring

OPTIONAL. -A password to protect the access to the public share.

expirationcs3.types.v1beta1.Timestamp

OPTIONAL. -An expiration date to protect the access to the public share.

- - - - - -

PublicShare

-

Public share are relationships between a resource owner

(usually the authenticated user) who grants permissions to a recipient (grantee)

on a specified resource (resource_id). UserShares represents both user and groups.

TODO(labkode): do we need to have resource_type stored on the share?

This is not needed if when getting the shares a stat operation is launched against the

the storage provider.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
idPublicShareId

REQUIRED. -Opaque unique identifier of the share.

tokenstring

REQUIRED. -The unlisted token to give public access -to the public share.

resource_idcs3.storage.provider.v1beta1.ResourceId

REQUIRED. -Unique identifier of the shared resource.

permissionsPublicSharePermissions

REQUIRED. -Permissions for the grantee to use -the resource.

ownercs3.identity.user.v1beta1.UserId

REQUIRED. -Uniquely identifies the owner of the share -(the resource owner at the time of creating the share). -In case the ownership of the underlying resource changes -the share owner field MAY change to reflect the change of ownsership.

creatorcs3.identity.user.v1beta1.UserId

REQUIRED. -Uniquely identifies a principal who initiates the share creation. -A creator can create shares on behalf of the owner (because of re-sharing, -because belonging to special groups, ...). -Creator and owner often result in being the same principal.

ctimecs3.types.v1beta1.Timestamp

REQUIRED. -Creation time of the share.

mtimecs3.types.v1beta1.Timestamp

REQUIRED. -Last modification time of the share.

password_protectedbool

REQUIRED. -Determines if the public share is password protected or not.

expirationcs3.types.v1beta1.Timestamp

OPTIONAL. -The expiration time for the public share.

display_namestring

OPTIONAL. -Display name for the shared resource (such as file, directory basename or any -user defined name). -The display name MAY be different than the actual resource basename. -This field is only useful for informational purposes, like for example, -setting the window title in a public share HTML page.

signatureShareSignature

OPTIONAL. -A time constrained token with which -GetPublicSharebyToken requests can be -authenticated.

- - - - - -

PublicShareAuthentication

-

The mechanism to authenticate a request to

GetPublicShareByToken.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
passwordstring

The password of the share.

signatureShareSignature

The signature issued by GetPublicShareByToken.

- - - - - -

PublicShareId

-

A share id identifies uniquely a // share in the share provider namespace.

A ShareId MUST be unique inside the share provider.

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaque_idstring

REQUIRED. -The internal id used by service implementor to -uniquely identity the share in the internal -implementation of the service.

- - - - - -

PublicSharePermissions

-

The permissions for a share.

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
permissionscs3.storage.provider.v1beta1.ResourcePermissions

TODO(labkode): additional permissions for shares like re-sharing

- - - - - -

PublicShareReference

-

The mechanism to identify a share

in the share provider namespace.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
idPublicShareId

The id of the share.

tokenstring

The token to identify the public share.

- - - - - -

ShareSignature

-

A time constrained token which can be used to

authenticate link share requests.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
signaturestring

REQUIRED. -The signature value.

signature_expirationcs3.types.v1beta1.Timestamp

REQUIRED. -The time until the signature becomes invalid.

- - - - - - - - - - - - - -
-

cs3/sharing/ocm/v1beta1/ocm_api.proto

Top -
-

- - -

CreateOCMShareRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

resource_idcs3.storage.provider.v1beta1.ResourceId

REQUIRED. -The unique identifier for the shared storage resource.

grantShareGrant

REQUIRED. -The share grant for the share.

recipient_mesh_providercs3.ocm.provider.v1beta1.ProviderInfo

REQUIRED. -The details of the recipient user's mesh provider.

- - - - - -

CreateOCMShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

shareShare

REQUIRED. -The created share.

- - - - - -

GetOCMShareRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refShareReference

REQUIRED. -The reference to which the action should be performed.

- - - - - -

GetOCMShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

shareShare

REQUIRED. -The share.

- - - - - -

GetReceivedOCMShareRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refShareReference

REQUIRED. -The reference of the received share.

- - - - - -

GetReceivedOCMShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

shareReceivedShare

REQUIRED. -The share.

- - - - - -

ListOCMSharesRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

filtersListOCMSharesRequest.Filterrepeated

OPTIONAL. -The list of filters to apply if any.

- - - - - -

ListOCMSharesRequest.Filter

-

REQUIRED.

represents a filter to apply to the request.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
typeListOCMSharesRequest.Filter.Type

REQUIRED.

resource_idcs3.storage.provider.v1beta1.ResourceId

ownercs3.identity.user.v1beta1.UserId

creatorcs3.identity.user.v1beta1.UserId

- - - - - -

ListOCMSharesResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

sharesSharerepeated

REQUIRED. -The list of shares.

- - - - - -

ListReceivedOCMSharesRequest

-

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

ListReceivedOCMSharesResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

sharesReceivedSharerepeated

REQUIRED. -The list of received shares.

- - - - - -

RemoveOCMShareRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refShareReference

REQUIRED. -The reference to which the action should be performed.

- - - - - -

RemoveOCMShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

UpdateOCMShareRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information. - -REQUIRED.

refShareReference

REQUIRED.

fieldUpdateOCMShareRequest.UpdateField

- - - - - -

UpdateOCMShareRequest.UpdateField

-

REQUIRED.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
permissionsSharePermissions

Update the permissions.

display_namestring

Update the display name.

- - - - - -

UpdateOCMShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

UpdateReceivedOCMShareRequest

-

TODO(labkode): clean up display_name ? we'll use storage links for that.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refShareReference

REQUIRED.

fieldUpdateReceivedOCMShareRequest.UpdateField

- - - - - -

UpdateReceivedOCMShareRequest.UpdateField

-

REQUIRED.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
display_namestring

Update the display name.

stateShareState

Update the share state

- - - - - -

UpdateReceivedOCMShareResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - - - -

ListOCMSharesRequest.Filter.Type

-

REQUIRED.

The filter to apply.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
TYPE_INVALID0

TYPE_NO1

TYPE_RESOURCE_ID2

TYPE_OWNER3

TYPE_CREATOR4

TYPE_OWNER_PROVIDER5

TYPE_CREATOR_PROVIDER6

- - - - - -

OcmAPI

-

OCM Share Provider API

The OCM Share Provider API is meant to manipulate share

resources from the perspective of the creator or the share and

from the perspective of the receiver of the share.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL

NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and

"OPTIONAL" in this document are to be interpreted as described in

RFC 2119.

The following are global requirements that apply to all methods:

Any method MUST return CODE_OK on a succesful operation.

Any method MAY return NOT_IMPLEMENTED.

Any method MAY return INTERNAL.

Any method MAY return UNKNOWN.

Any method MAY return UNAUTHENTICATED.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
CreateOCMShareCreateOCMShareRequestCreateOCMShareResponse

Creates a new ocm share. -MUST return CODE_NOT_FOUND if the resource reference does not exist. -MUST return CODE_ALREADY_EXISTS if the share already exists for the 4-tuple consisting of -(owner, shared_resource, grantee). -New shares MUST be created in the state SHARE_STATE_PENDING.

RemoveOCMShareRemoveOCMShareRequestRemoveOCMShareResponse

Removes a share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

GetOCMShareGetOCMShareRequestGetOCMShareResponse

Gets share information for a single share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

ListOCMSharesListOCMSharesRequestListOCMSharesResponse

List the shares the authenticated principal has created, -both as owner and creator. If a filter is specified, only -shares satisfying the filter MUST be returned.

UpdateOCMShareUpdateOCMShareRequestUpdateOCMShareResponse

Updates a share. -MUST return CODE_NOT_FOUND if the share reference does not exist.

ListReceivedOCMSharesListReceivedOCMSharesRequestListReceivedOCMSharesResponse

List all shares the authenticated principal has received.

UpdateReceivedOCMShareUpdateReceivedOCMShareRequestUpdateReceivedOCMShareResponse

Update the received share to change the share state or the display name. -MUST return CODE_NOT_FOUND if the share reference does not exist.

GetReceivedOCMShareGetReceivedOCMShareRequestGetReceivedOCMShareResponse

Get the information for the given received share reference. -MUST return CODE_NOT_FOUND if the received share reference does not exist.

- - - - -
-

cs3/sharing/ocm/v1beta1/resources.proto

Top -
-

- - -

ReceivedShare

-

A received share is the share that a grantee will receive.

It expands the original share by adding state to the share,

a display name from the perspective of the grantee and a

resource mount path in case the share will be mounted

in a path in a storage provider.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
shareShare

REQUIRED.

stateShareState

REQUIRED. -The state of the share.

- - - - - -

Share

-

Shares are relationships between a resource owner

(usually the authenticated user) who grants permissions to a recipient (grantee)

on a specified resource (resource_id). UserShares represents both user and groups.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
idShareId

REQUIRED. -Opaque unique identifier of the share.

resource_idcs3.storage.provider.v1beta1.ResourceId

REQUIRED. -Unique identifier of the shared resource.

namestring

REQUIRED. -Name of the shared resource.

permissionsSharePermissions

REQUIRED. -Permissions for the grantee to use -the resource.

granteecs3.storage.provider.v1beta1.Grantee

REQUIRED. -The receiver of the share, like a user, group ...

ownercs3.identity.user.v1beta1.UserId

REQUIRED. -Uniquely identifies the owner of the share -(the resource owner at the time of creating the share). -In case the ownership of the underlying resource changes -the share owner field MAY change to reflect the change of ownsership.

creatorcs3.identity.user.v1beta1.UserId

REQUIRED. -Uniquely identifies a principal who initiates the share creation. -A creator can create shares on behalf of the owner (because of re-sharing, -because belonging to special groups, ...). -Creator and owner often result in being the same principal.

ctimecs3.types.v1beta1.Timestamp

REQUIRED. -Creation time of the share.

mtimecs3.types.v1beta1.Timestamp

REQUIRED. -Last modification time of the share.

share_typeShare.ShareType

Specifies the type of the share.

- - - - - -

ShareGrant

-

A share grant specifies the share permissions

for a grantee.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
granteecs3.storage.provider.v1beta1.Grantee

REQUIRED. -The grantee of the grant.

permissionsSharePermissions

REQUIRED. -The share permissions for the grant.

- - - - - -

ShareId

-

A share id identifies uniquely a // share in the share provider namespace.

A ShareId MUST be unique inside the share provider.

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaque_idstring

REQUIRED. -The internal id used by service implementor to -uniquely identity the share in the internal -implementation of the service.

- - - - - -

ShareKey

-

Uniquely identifies a share in the share provider.

A share MUST be uniquely identify by four (4) elements:

1) The share provider id

2) The owner of the share

3) The resource id

4) The grantee for the share

This 4-tuple MUST be unique.

For example, owner Alice shares the resource /home/docs with id

home:1234 to an user named Bob. The 4-tuple will consist of

1) The share provider id = "user"

2) The owner of the share = "Alice"

3) The resource id = "home:1234"

4) The grantee for the share = Grantee("type" = "user", "" => "Bob")

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
ownercs3.identity.user.v1beta1.UserId

REQUIRED.

resource_idcs3.storage.provider.v1beta1.ResourceId

REQUIRED.

granteecs3.storage.provider.v1beta1.Grantee

REQUIRED.

- - - - - -

SharePermissions

-

The permissions for a share.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
permissionscs3.storage.provider.v1beta1.ResourcePermissions

resharebool

- - - - - -

ShareReference

-

The mechanism to identify a share

in the share provider namespace.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
idShareId

The id of the share.

keyShareKey

The combination of fields that -make the share unique.

- - - - - - - -

Share.ShareType

-

Defines the type of share based on its origin.

- - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
SHARE_TYPE_INVALID0

SHARE_TYPE_REGULAR1

A regular file or folder share.

SHARE_TYPE_TRANSFER2

A file or folder transfer.

- -

ShareState

-

The state of the share.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
SHARE_STATE_INVALID0

The share is no longer valid, for example, the share expired.

SHARE_STATE_PENDING1

New shares MUST be created in the SHARE_STATE_PENDING state. -This state means the share is pending to be accepted or rejected -by the recipient of the share.

SHARE_STATE_ACCEPTED2

The recipient of the share has accepted the share.

SHARE_STATE_REJECTED3

The recipient of the share has rejected the share. -Do not means the share is removed, the recipient MAY -change the state to accepted or pending.

- - - - - - - -
-

cs3/storage/provider/v1beta1/provider_api.proto

Top -
-

- - -

AddGrantRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

grantGrant

REQUIRED. -The grant to be added.

- - - - - -

AddGrantResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

CreateContainerRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

- - - - - -

CreateContainerResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

CreateHomeRequest

-

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

CreateHomeResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

CreateReferenceRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The location where to store the reference.

target_uristring

REQUIRED. -The reference resource by RFC3986.

- - - - - -

CreateReferenceResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

CreateStorageSpaceRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL.

ownercs3.identity.user.v1beta1.User

REQUIRED.

typestring

OPTIONAL. -Could be 'home', 'share', 'project', 'space'...

namestring

OPTIONAL. -User readable name of the storage space.

quotaQuota

OPTIONAL.

- - - - - -

CreateStorageSpaceResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

storage_spaceStorageSpace

REQUIRED. -The created storage space.

- - - - - -

CreateSymlinkRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The location where to store the symlink.

targetstring

REQUIRED. -The link target can hold arbitrary text; if later resolved, -a relative link is interpreted in relation to its parent directory

- - - - - -

CreateSymlinkResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

DeleteRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

- - - - - -

DeleteResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

DeleteStorageSpaceRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

idStorageSpaceId

REQUIRED.

- - - - - -

DeleteStorageSpaceResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

- - - - - -

DenyGrantRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

granteeGrantee

REQUIRED. -The grantee to remove permission.

- - - - - -

DenyGrantResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

GetHomeRequest

-

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

GetHomeResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

pathstring

REQUIRED. -The path to the home in a storage provider. -For example /eos/user/h/hugo in the storage provider with root path /eos/user/.

- - - - - -

GetPathRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

resource_idResourceId

REQUIRED. -The resource id of the resource.

- - - - - -

GetPathResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

pathstring

REQUIRED. -The path of the resource.

- - - - - -

GetQuotaRequest

-

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

GetQuotaResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

total_bytesuint64

REQUIRED. -The total available bytes.

used_bytesuint64

REQUIRED. -The number of used bytes.

- - - - - -

InitiateFileDownloadRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

- - - - - -

InitiateFileDownloadResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

protocolsFileDownloadProtocolrepeated

REQUIRED. -The protocols through which data can be downloaded.

- - - - - -

InitiateFileUploadRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

if_not_existbool

OPTIONAL. -Whether the file is to be uploaded in exclusive mode. Defaults to false. -If true, the request SHALL be processed such that only one of multiple concurrent uploads -to the same target reference MAY succeed, whereas all others MUST fail with CODE_FAILED_PRECONDITION. -The semantic is similar to the O_CREAT|O_EXCL POSIX flags. -The request MUST return CODE_NOT_IMPLEMENTED if the provider does not support this mode.

if_matchstring

OPTIONAL. -Whether the file is to be uploaded if the given etag matches. Default to always upload. -If the storage provider has a more recent etag for the target file, the request MUST -return CODE_FAILED_PRECONDITION.

- - - - - -

InitiateFileUploadResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

protocolsFileUploadProtocolrepeated

REQUIRED. -The protocols through which data can be uploaded.

- - - - - -

ListContainerRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

arbitrary_metadata_keysstringrepeated

OPTIONAL. -Arbitrary metadata be included with the resource. -A key with the name '*' means to return all available arbitrary metadata.

- - - - - -

ListContainerResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

infosResourceInforepeated

REQUIRED. -The list of resource informations.

- - - - - -

ListContainerStreamRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

arbitrary_metadata_keysstringrepeated

OPTIONAL. -Arbitrary metadata be included with the resource. -A key with the name '*' means to return all available arbitrary metadata.

- - - - - -

ListContainerStreamResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

infoResourceInfo

REQUIRED. -The resource information.

- - - - - -

ListFileVersionsRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

- - - - - -

ListFileVersionsResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

versionsFileVersionrepeated

REQUIRED. -The list of file versions.

- - - - - -

ListGrantsRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

- - - - - -

ListGrantsResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

grantsGrantrepeated

REQUIRED. -The grants.

- - - - - -

ListRecycleRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

from_tscs3.types.v1beta1.Timestamp

OPTIONAL. -SHOULD be specified. -The start time range to query for recycle items. -The value is the Unix Epoch timestamp in seconds.

to_tscs3.types.v1beta1.Timestamp

OPTIONAL. -SHOULD be specified. -The end time range to query for recycle items. -The value is Unix Epoch timestamp in seconds.

refReference

OPTIONAL. -The reference to which the action should be performed.

- - - - - -

ListRecycleResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

recycle_itemsRecycleItemrepeated

REQUIRED. -The list of recycle items.

- - - - - -

ListRecycleStreamRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

from_tscs3.types.v1beta1.Timestamp

OPTIONAL. -SHOULD be specified. -The start time range to query for recycle items. -The value is the Unix Epoch timestamp in seconds.

to_tscs3.types.v1beta1.Timestamp

OPTIONAL. -SHOULD be specified. -The end time range to query for recycle items. -The value is Unix Epoch timestamp in seconds.

refReference

OPTIONAL. -The reference to which the action should be performed.

- - - - - -

ListRecycleStreamResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

recycle_itemRecycleItem

REQUIRED. -The recycle items.

- - - - - -

ListStorageSpacesRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

filtersListStorageSpacesRequest.Filterrepeated

OPTIONAL. -The list of filters to apply if any.

- - - - - -

ListStorageSpacesRequest.Filter

-

Represents a filter to apply to the request.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
typeListStorageSpacesRequest.Filter.Type

REQUIRED.

idStorageSpaceId

ownercs3.identity.user.v1beta1.UserId

space_typestring

- - - - - -

ListStorageSpacesResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

storage_spacesStorageSpacerepeated

REQUIRED.

- - - - - -

MoveRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

sourceReference

REQUIRED. -The source reference the resource is moved from.

destinationReference

REQUIRED. -The destination reference the resource is moved to.

- - - - - -

MoveResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

PurgeRecycleRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

- - - - - -

PurgeRecycleResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

RemoveGrantRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

grantGrant

REQUIRED. -The grant to remove.

- - - - - -

RemoveGrantResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

RestoreFileVersionRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

keystring

REQUIRED. -The key to restore a specific file version.

- - - - - -

RestoreFileVersionResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

RestoreRecycleItemRequest

-

TODO: restore to original location if not specified as OPTIONAL?

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

keystring

REQUIRED. -The key for the recycle item to be restored.

restore_refReference

OPTIONAL. -An optional restore path for the deleted resource. -It can be useful to restore to another location rather than -the original. -If empty, service implementors MUST restore -to original location if possible.

- - - - - -

RestoreRecycleItemResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

SetArbitraryMetadataRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

arbitrary_metadataArbitraryMetadata

REQUIRED. -The arbitrary metadata to add to the resource.

- - - - - -

SetArbitraryMetadataResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

StatRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

arbitrary_metadata_keysstringrepeated

OPTIONAL. -Arbitrary metadata be included with the resource. -A key with the name '*' means to return all available arbitrary metadata.

- - - - - -

StatResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

infoResourceInfo

REQUIRED. -The resource information.

- - - - - -

UnsetArbitraryMetadataRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

arbitrary_metadata_keysstringrepeated

REQUIRED. -The arbitrary metadata to delete.

- - - - - -

UnsetArbitraryMetadataResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

UpdateGrantRequest

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refReference

REQUIRED. -The reference to which the action should be performed.

grantGrant

REQUIRED. -The grant to be updated.

- - - - - -

UpdateGrantResponse

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

UpdateStorageSpaceRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

storage_spaceStorageSpace

REQUIRED.

- - - - - -

UpdateStorageSpaceResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

storage_spaceStorageSpace

REQUIRED. -The updated storage space.

- - - - - - - -

ListStorageSpacesRequest.Filter.Type

-

The filter to apply.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
TYPE_INVALID0

TYPE_NO1

TYPE_ID2

TYPE_OWNER3

TYPE_SPACE_TYPE4

- - - - - -

ProviderAPI

-

Storage Provider API

The Storage Provider API is meant to manipulate storage

resources in the underlying storage system behind the service.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL

NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and

"OPTIONAL" in this document are to be interpreted as described in

RFC 2119.

The following are global requirements that apply to all methods:

Any method MUST return CODE_OK on a succesful operation.

Any method MAY return NOT_IMPLEMENTED.

Any method MAY return INTERNAL.

Any method MAY return UNKNOWN.

Any method MAY return UNAUTHENTICATED.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
AddGrantAddGrantRequestAddGrantResponse

Adds a new grant for the provided reference. -MUST return CODE_NOT_FOUND if the reference does not exist

CreateContainerCreateContainerRequestCreateContainerResponse

Creates a new resource of type container. -MUST return CODE_PRECONDITION_FAILED if the container -cannot be created at the specified reference.

DeleteDeleteRequestDeleteResponse

Deletes a resource. -If a resource specifies the non-empty container (directory, ...), -then the entire directory is deleted recursively. -If a resource specifies a reference or symlink type, only the reference is removed (not the target). -MUST return CODE_NOT_FOUND if the reference does not exist.

DenyGrantDenyGrantRequestDenyGrantResponse

Denies access to the provided reference. -MUST return CODE_NOT_FOUND if the reference does not exist

GetPathGetPathRequestGetPathResponse

Returns the path reference for -the provided resource id reference. -MUST return CODE_NOT_FOUND if the reference does not exist

GetQuotaGetQuotaRequestGetQuotaResponse

Returns the quota available under the provided -reference. -MUST return CODE_NOT_FOUND if the reference does not exist -MUST return CODE_RESOURCE_EXHAUSTED on exceeded quota limits.

InitiateFileDownloadInitiateFileDownloadRequestInitiateFileDownloadResponse

Initiates the download of a file using an -out-of-band data transfer mechanism.

InitiateFileUploadInitiateFileUploadRequestInitiateFileUploadResponse

Initiates the upload of a file using an -out-of-band data transfer mechanism.

ListGrantsListGrantsRequestListGrantsResponse

Returns the list of grants for the provided reference. -MUST return CODE_NOT_FOUND if the reference does not exists.

ListContainerStreamListContainerStreamRequestListContainerStreamResponse stream

Returns a stream of resource informations -for the provided reference. -MUST return CODE_NOT_FOUND if the reference does not exists.

ListContainerListContainerRequestListContainerResponse

Returns a list of resource information -for the provided reference. -MUST return CODE_NOT_FOUND if the reference does not exists.

ListFileVersionsListFileVersionsRequestListFileVersionsResponse

Returns a list of the versions for a resource of -type file at the provided reference. -MUST return CODE_NOT_FOUND if the reference does not exist. -MUST return CODE_OK and MUST return an empty list if no versions are available. -TODO: What code if resource not of type file?

ListRecycleStreamListRecycleStreamRequestListRecycleStreamResponse stream

Returns a stream of recycle items for this storage provider.

ListRecycleListRecycleRequestListRecycleResponse

Returns a list of recycle items for this storage provider. -MUST return CODE_OK and MUST return an empty list if no recycle items are available.

MoveMoveRequestMoveResponse

Moves a resource from one reference to another. -MUST return CODE_NOT_FOUND if any of the references do not exist. -MUST return CODE_PRECONDITION_FAILED if the source reference -cannot be moved to the destination reference.

RemoveGrantRemoveGrantRequestRemoveGrantResponse

Removes a grant for the provided reference. -This is recursive and atomic for directories. Does not follow references. -MUST return CODE_NOT_FOUND if the reference does not exist. -MUST return CODE_NOT_FOUND if grant does not exist.

PurgeRecyclePurgeRecycleRequestPurgeRecycleResponse

Permanently removes a recycle item from the recycle. -This operation is irrevocable. -MUST return CODE_NOT_FOUND if the recycle item id does not exist.

RestoreFileVersionRestoreFileVersionRequestRestoreFileVersionResponse

Restores a file version for the provided reference. -MUST return CODE_NOT_FOUND if the reference does not exist. -MUST return CODE_NOT_FOUND if the version does not exist.

RestoreRecycleItemRestoreRecycleItemRequestRestoreRecycleItemResponse

Restores a recycle item from the recycle. -MUST return CODE_NOT_FOUND if the recycle item id does not exist. -MUST return CODE_PRECONDITION_FAILED if the restore_path is non-empty -and the recycle item cannot be restored to the restore_path.

StatStatRequestStatResponse

Returns the resource information at the provided reference. -MUST return CODE_NOT_FOUND if the reference does not exist.

UpdateGrantUpdateGrantRequestUpdateGrantResponse

Updates an ACL for the provided reference. -MUST return CODE_NOT_FOUND if the reference does not exist. -MUST return CODE_PRECONDITION_FAILED if the acl does not exist.

CreateSymlinkCreateSymlinkRequestCreateSymlinkResponse

Creates a symlink to another resource.

CreateReferenceCreateReferenceRequestCreateReferenceResponse

Creates a reference to another resource in the same cluster or another domain (OCM shares). -The references resource can be accessed by the protocol specificied in the request message.

SetArbitraryMetadataSetArbitraryMetadataRequestSetArbitraryMetadataResponse

Sets arbitrary metadata into a storage resource. -Arbitrary metadata is returned in a cs3.storageprovider.v1beta1.ResourceInfo.

UnsetArbitraryMetadataUnsetArbitraryMetadataRequestUnsetArbitraryMetadataResponse

Unsets arbitrary metdata into a storage resource. -Arbitrary metadata is returned in a cs3.storageprovider.v1beta1.ResourceInfo.

CreateHomeCreateHomeRequestCreateHomeResponse

Creates the home directory for a user.

GetHomeGetHomeRequestGetHomeResponse

Gets the home path for the user.

CreateStorageSpaceCreateStorageSpaceRequestCreateStorageSpaceResponse

Creates a storage space.

ListStorageSpacesListStorageSpacesRequestListStorageSpacesResponse

Lists storage spaces.

UpdateStorageSpaceUpdateStorageSpaceRequestUpdateStorageSpaceResponse

Updates a storage space.

DeleteStorageSpaceDeleteStorageSpaceRequestDeleteStorageSpaceResponse

Deletes a storage space.

- - - - -
-

cs3/storage/provider/v1beta1/resources.proto

Top -
-

- - -

ArbitraryMetadata

-

Arbitrary metadata than can be set to the resource.

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
metadataArbitraryMetadata.MetadataEntryrepeated

- - - - - -

ArbitraryMetadata.MetadataEntry

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
keystring

valuestring

- - - - - -

CanonicalMetadata

-

CanonicalMetadata contains extra metadata

attached to a resource. This message and the Opaque

message differ in that Opaque allows service implementors

to include any extra metadata in any format and most clients

will ignore it. However, the CanonicalMetadata message

contains well defined fileds that clients MUST understand if

they are specified.

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
targetReference

REQUIRED if resource type is RESOURCE_TYPE_REFERENCE. -The target reference the resource points to. - -TODO(moscicki): what fields can fit here? executable bit? -bool executable = 2; -TODO(labkode): at some points maybe we could add here -acls and other well-known metadata.

- - - - - -

FileDownloadProtocol

-

A file download protocol object stores information about

downloading resources using a specific protocol.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

protocolstring

REQUIRED. -The protocol to be followed.

download_endpointstring

REQUIRED. -The endpoint where to download the data. -The value MUST be a Uniform Resource Identifier (URI) -as specified in RFC 3986.

exposebool

REQUIRED. -Tells to the gateway if the client should be exposed directly to the download_endpoint.

- - - - - -

FileUploadProtocol

-

A file upload protocol object stores information about

uploading resources using a specific protocol.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

protocolstring

REQUIRED. -The protocol to be followed.

upload_endpointstring

REQUIRED. -The endpoint where to upload the data. -The value MUST be a Uniform Resource Identifier (URI) -as specified in RFC 3986.

available_checksumsResourceChecksumPriorityrepeated

REQUIRED. -List of available checksums -the client can use when sending -the file.

exposebool

REQUIRED. -Tells to the gateway if the client should be exposed directly to the upload_endpoint.

- - - - - -

FileVersion

-

The information for a file version.

TODO(labkode): make size and mtime OPTIONAL?

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

keystring

MUST the specified. -The key to identify the version.

sizeuint64

REQUIRED. -The size in bytes of the file version.

mtimeuint64

REQUIRED. -The Unix Epoch timestamp in seconds.

etagstring

REQUIRED. -As decribed in https://tools.ietf.org/html/rfc7232#section-2.3 -For a file version, the etag does not change because a version is immutable.

- - - - - -

Grant

-

A grant grants permissions

to a resource to a grantee.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
granteeGrantee

REQUIRED. -The grantee of the grant.

permissionsResourcePermissions

REQUIRED. -The permissions for the grant.

- - - - - -

Grantee

-

A grantee is the receiver of a grant.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
typeGranteeType

REQUIRED. -The type of the grantee.

user_idcs3.identity.user.v1beta1.UserId

The user id.

group_idcs3.identity.group.v1beta1.GroupId

The group id.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information such as UID or GID.

- - - - - -

Quota

-

Represents a quota for a storage space.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

quota_max_bytesuint64

OPTIONAL. -The bytes quota for the user.

quota_max_filesuint64

OPTIONAL. -The files quota for the user.

- - - - - -

RecycleItem

-

A recycle item represents the information

of a deleted resource.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

typeResourceType

REQUIRED. -The type of the resource.

keystring

REQUIRED. -The key to identify the deleted resource.

refReference

REQUIRED. -The original reference of the deleted resource.

sizeuint64

OPTIONAL. -The size of the deleted resource.

deletion_timecs3.types.v1beta1.Timestamp

REQUIRED. -The deletion time of the resource -in Unix Epoch timestamp in seconds.

- - - - - -

Reference

-

The mechanism to identify a resource in the CS3 namespace.

It can represent path based, id based and combined references:

The storage registry uses the storage_id to determine the responsible storage provider.

When the storage_id is not available it will use the path.

In a URL the different components can be represented in a string using the following layout:

!:

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
resource_idResourceId

OPTIONAL

pathstring

OPTIONAL. -When starting with `/` represents an absolute path. In this case the resource_id MUST be empty. -When starting with `.` represents a path relative to the resource_id. The resource_id MUST be given. -When path is empty the resource_id must be set. Used to look up the path for a resource_id.

- - - - - -

ResourceChecksum

-

The checksum to verify

the integrity of a resource.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
typeResourceChecksumType

REQUIRED. -The type of checksum to use. -If no checksum is provided, -type MUST be RESOURCE_CHECKSUM_TYPE_UNSET.

sumstring

MUST be specified if type is not -RESOURCE_CHECKSUM_TYPE_UNSET or type is not -RESOURCE_CHECKSUM_TYPE_INVALID. -MUST be the hexadecimal representation of the cheksum. -The value is case-insensitive, so -"1E603A8", "1e603a8" or "1e603A8" are the same.

- - - - - -

ResourceChecksumPriority

-

When negotiating the user of checksum types

between client and server, this structure

defines the priority of the checksum.

Priority 0 means highest priority.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
typeResourceChecksumType

priorityuint32

- - - - - -

ResourceId

-

A resource id uniquely identifies a

resource in the storage provider namespace.

A ResourceId MUST be unique in the storage provider.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
storage_idstring

REQUIRED. -The logical id of a storage. Used by the storage -registry to determine the responsible storage provider.

opaque_idstring

REQUIRED. -The internal id used by service implementor to -uniquely identity the resource in the internal -implementation of the service.

- - - - - -

ResourceInfo

-

Represents the information (metadata) about

a storage resource organized in a hierarchical namespace (file, directory/container, reference, symlink, ...).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

typeResourceType

REQUIRED. -The type of the resource (container, file, ...) -See the enum ResourceType for all possible types.

idResourceId

REQUIRED. -Opaque unique identifier of the resource.

checksumResourceChecksum

REQUIRED. -The data checksum for the file resource. -For all other resources, the checksum is unset.

etagstring

REQUIRED. -As decribed in https://tools.ietf.org/html/rfc7232#section-2.3 -For file resources, the etag must change if data or metadata changes. -For container types, the etag must change if etag of any of the (indirectly) contained resources change. -For reference types, the etag must change if etag of the target changes and the target is on the same storage provider. -In all other cases the etag does not change.

mime_typestring

REQUIRED. -As described in [RFC 2015](https://tools.ietf.org/html/rfc2045#page-7)

mtimecs3.types.v1beta1.Timestamp

REQUIRED. -Last modification time (mtime) of file or directory contents. -For reference types this is NOT the mtime of the target.

pathstring

REQUIRED. -The path for the resource: -MUST start with `/` when the reference had no resource_id, indicating an absolute path. -MUST start with `.` when the reference had a resource_id, indicating a relative path.

permission_setResourcePermissions

REQUIRED. -The set of permissions for the resource effective for the authenticated user.

sizeuint64

REQUIRED. -The size of the resource in bytes (file size) -TODO(moscicki): This is undefined for container type. -Is the accounting recursive?, could it be set to 0 for directories if recursive not supported? use another field? -TODO(moscicki): This needs to be defined also for other types (such as a symlink to a directory or file)

ownercs3.identity.user.v1beta1.UserId

REQUIRED: -Identifier of the owner of the resource.

targetstring

REQUIRED if ResourceType is either RESOURCE_TYPE_SYMLINK or RESOURCE_TYPE_REFERENCE

canonical_metadataCanonicalMetadata

OPTIONAL. -Additional metadata attached to the resource. -If resource type is RESOURCE_TYPE_REFERENCE it MUST -be specified.

arbitrary_metadataArbitraryMetadata

OPTIONAL. -Arbitrary metadata attached to a resource.

- - - - - -

ResourcePermissions

-

The representation of permissions attached to a resource.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
add_grantbool

create_containerbool

deletebool

get_pathbool

get_quotabool

initiate_file_downloadbool

initiate_file_uploadbool

list_grantsbool

list_containerbool

list_file_versionsbool

list_recyclebool

movebool

remove_grantbool

purge_recyclebool

restore_file_versionbool

restore_recycle_itembool

statbool

update_grantbool

deny_grantbool

- - - - - -

StorageSpace

-

Represents a storage space which could be a 'home', 'share' etc...

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

idStorageSpaceId

REQUIRED.

ownercs3.identity.user.v1beta1.User

OPTIONAL.

rootResourceId

OPTIONAL. -The root resource id of the storage space.

namestring

OPTIONAL.

quotaQuota

OPTIONAL.

space_typestring

OPTIONAL. -Could be 'home', 'share', 'project', 'space'...

mtimecs3.types.v1beta1.Timestamp

OPTIONAL. -Last modification time (mtime) of the root resource of this storage space.

- - - - - -

StorageSpaceId

-

The id of a storage space.

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaque_idstring

REQUIRED. -The internal storage space id.

- - - - - - - -

GranteeType

-

The type of the grantee.

- - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
GRANTEE_TYPE_INVALID0

GRANTEE_TYPE_USER1

This type represents an individual.

GRANTEE_TYPE_GROUP2

This type represents a group of individuals.

- -

ResourceChecksumType

-

The type of checksum to use.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
RESOURCE_CHECKSUM_TYPE_INVALID0

RESOURCE_CHECKSUM_TYPE_UNSET1

unset means no checksum is set.

RESOURCE_CHECKSUM_TYPE_ADLER322

Use Adler32 checksum.

RESOURCE_CHECKSUM_TYPE_MD53

Use MD5 checksum.

RESOURCE_CHECKSUM_TYPE_SHA14

Use SHA-1 checksum.

- -

ResourceType

-

The available types of resources.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameNumberDescription
RESOURCE_TYPE_INVALID0

RESOURCE_TYPE_FILE1

The file type represents a type -that holds arbitrary data. -Service implementors usually map this type -to files (local filesystem) or objects -(Amazon S3).

RESOURCE_TYPE_CONTAINER2

The container type represents a type -that can contain another types. -Service implementors usually map this type -to folders (local filesystem) or buckets -(Amazon S3).

RESOURCE_TYPE_REFERENCE3

This represents a reference type which points -to another resource where client MAY be redirected. -Client SHOULD use the ResourceInfo.target -reference for a subsequent call.

RESOURCE_TYPE_SYMLINK4

This represents a symbolic link type if the underlying -storage system supports it. -Symlink target SHOULD NOT be interpreted by the clients.

RESOURCE_TYPE_INTERNAL5

Internal resource type for some specific resources inside -a storage implementation. -For example, this type could be used to represent -a device file on a Linux filesystem. -Another example could be to represent an ongoing upload, -where an hypothetically user interface could show a loading icon -on this type of resources until the upload operation is completed. -Internal resources SHOULD NOT be moved to a different storage -provider.

- - - - - - - -
-

cs3/storage/registry/v1beta1/registry_api.proto

Top -
-

- - -

GetHomeRequest

-

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

- - - - - -

GetHomeResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

providerProviderInfo

REQUIRED. -The storage provider for the user home.

- - - - - -

GetStorageProvidersRequest

-

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

refcs3.storage.provider.v1beta1.Reference

REQUIRED. -The reference for the resource.

- - - - - -

GetStorageProvidersResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

providersProviderInforepeated

REQUIRED. -The storage providers handling the requested storage resource.

- - - - - -

ListStorageProvidersRequest

-

- - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information. - -TODO(labkode): maybe add some filter?

- - - - - -

ListStorageProvidersResponse

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
statuscs3.rpc.v1beta1.Status

REQUIRED. -The response status.

opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information.

providersProviderInforepeated

REQUIRED. -The list of storage providers this registry knows about.

- - - - - - - - - - - -

RegistryAPI

-

Storage Registry API

The Storage Registry API is meant to as registry to obtain

information of available storage providers.

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL

NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and

"OPTIONAL" in this document are to be interpreted as described in

RFC 2119.

The following are global requirements that apply to all methods:

Any method MUST return CODE_OK on a succesful operation.

Any method MAY return NOT_IMPLEMENTED.

Any method MAY return INTERNAL.

Any method MAY return UNKNOWN.

Any method MAY return UNAUTHENTICATED.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Method NameRequest TypeResponse TypeDescription
GetStorageProvidersGetStorageProvidersRequestGetStorageProvidersResponse

Returns the storage provider that is reponsible for the given -resource reference. -MUST return CODE_NOT_FOUND if the reference does not exist.

ListStorageProvidersListStorageProvidersRequestListStorageProvidersResponse

Returns a list of the available storage providers known by this registry.

GetHomeGetHomeRequestGetHomeResponse

Gets the user home storage provider. - -TODO(labkode): missing methods for adding and removing a storage provider -with different visibility levels (system-wide, user-wide, group-wide)...

- - - - -
-

cs3/storage/registry/v1beta1/resources.proto

Top -
-

- - -

ProviderInfo

-

The information for the storage provider.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
opaquecs3.types.v1beta1.Opaque

OPTIONAL. -Opaque information (containing storage-specific information). -For example, additional metadata attached to the resource.

provider_idstring

REQUIRED. -The storage provider id that will become part of the -resource id. -For example, if the provider_id is "home", resources obtained -from this storage provider will have a resource id like "home:1234".

provider_pathstring

REQUIRED. -The public path prefix this storage provider handles. -In Unix literature, the mount path. -For example, if the provider_path is "/home", resources obtained -from this storage provier will have a resource path lik "/home/docs".

addressstring

REQUIRED. -The address where the storage provider can be reached. -For example, tcp://localhost:1099.

descriptionstring

OPTIONAL. -Information to describe the functionalities -offered by the storage provider. Meant to be read -by humans.

featuresProviderInfo.Features

REQUIRED. -List of available methods.

- - - - - -

ProviderInfo.Features

-

REQUIRED.

Represents the list of features available

on this storage provider. If the feature is not supported,

the related service methods MUST return CODE_UNIMPLEMENTED.

- - - - - - - - - - - - - - - - - - - - - - - -
FieldTypeLabelDescription
recyclebool

file_versionsbool

- - - - - - - - - - - - - -

Scalar Value Types

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.proto TypeNotesC++ TypeJava TypePython Type
doubledoubledoublefloat
floatfloatfloatfloat
int32Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.int32intint
int64Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.int64longint/long
uint32Uses variable-length encoding.uint32intint/long
uint64Uses variable-length encoding.uint64longint/long
sint32Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.int32intint
sint64Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.int64longint/long
fixed32Always four bytes. More efficient than uint32 if values are often greater than 2^28.uint32intint
fixed64Always eight bytes. More efficient than uint64 if values are often greater than 2^56.uint64longint/long
sfixed32Always four bytes.int32intint
sfixed64Always eight bytes.int64longint/long
boolboolbooleanboolean
stringA string must always contain UTF-8 encoded or 7-bit ASCII text.stringStringstr/unicode
bytesMay contain any arbitrary sequence of bytes.stringByteStringstr
- - - diff --git a/proto.lock b/proto.lock index 9dffa863..62751af3 100644 --- a/proto.lock +++ b/proto.lock @@ -4781,30 +4781,13 @@ }, { "id": 2, - "name": "ref", - "type": "ShareReference" + "name": "share", + "type": "Share" }, { "id": 3, - "name": "field", - "type": "UpdateField" - } - ], - "messages": [ - { - "name": "UpdateField", - "fields": [ - { - "id": 1, - "name": "display_name", - "type": "string" - }, - { - "id": 2, - "name": "state", - "type": "ShareState" - } - ] + "name": "update_mask", + "type": "google.protobuf.FieldMask" } ] }, @@ -4923,6 +4906,9 @@ }, { "path": "cs3/types/v1beta1/types.proto" + }, + { + "path": "google/protobuf/field_mask.proto" } ], "package": { @@ -5081,6 +5067,11 @@ "id": 2, "name": "state", "type": "ShareState" + }, + { + "id": 3, + "name": "mount_point", + "type": "storage.provider.v1beta1.Reference" } ] }, @@ -6164,30 +6155,13 @@ }, { "id": 2, - "name": "ref", - "type": "ShareReference" + "name": "share", + "type": "Share" }, { "id": 3, - "name": "field", - "type": "UpdateField" - } - ], - "messages": [ - { - "name": "UpdateField", - "fields": [ - { - "id": 1, - "name": "display_name", - "type": "string" - }, - { - "id": 2, - "name": "state", - "type": "ShareState" - } - ] + "name": "update_mask", + "type": "google.protobuf.FieldMask" } ] }, @@ -6307,6 +6281,9 @@ }, { "path": "cs3/types/v1beta1/types.proto" + }, + { + "path": "google/protobuf/field_mask.proto" } ], "package": { @@ -6468,6 +6445,11 @@ "id": 2, "name": "state", "type": "ShareState" + }, + { + "id": 3, + "name": "mount_point", + "type": "storage.provider.v1beta1.Reference" } ] }, @@ -9280,6 +9262,57 @@ } ] } + }, + { + "protopath": "third_party:/:google:/:protobuf:/:field_mask.proto", + "def": { + "messages": [ + { + "name": "FieldMask", + "fields": [ + { + "id": 1, + "name": "paths", + "type": "string", + "is_repeated": true + } + ] + } + ], + "package": { + "name": "google.protobuf" + }, + "options": [ + { + "name": "cc_enable_arenas", + "value": "true" + }, + { + "name": "csharp_namespace", + "value": "Google.Protobuf.WellKnownTypes" + }, + { + "name": "go_package", + "value": "google.golang.org/protobuf/types/known/fieldmaskpb" + }, + { + "name": "java_multiple_files", + "value": "true" + }, + { + "name": "java_outer_classname", + "value": "FieldMaskProto" + }, + { + "name": "java_package", + "value": "com.google.protobuf" + }, + { + "name": "objc_class_prefix", + "value": "GPB" + } + ] + } } ] } \ No newline at end of file diff --git a/prototool.yaml b/prototool.yaml index e6150164..55709699 100644 --- a/prototool.yaml +++ b/prototool.yaml @@ -1,3 +1,18 @@ +# Paths to exclude when searching for Protobuf files. +# These can either be file or directory names. +# If there is a directory name, that directory and all sub-directories will be excluded. +excludes: + - docs + - tools + +# Protoc directives. +protoc: + # Additional paths to include with -I to protoc. + # By default, the directory of the config file is included, + # or the current directory if there is no config file. + includes: + - third_party + lint: group: uber2 ignores: @@ -16,6 +31,26 @@ lint: - id: REQUEST_RESPONSE_NAMES_MATCH_RPC files: - cs3/gateway/v1beta1/gateway_api.proto + # the external google field mask + - id: FILE_OPTIONS_EQUAL_CSHARP_NAMESPACE_CAPITALIZED + files: + - third_party/google/protobuf/field_mask.proto + - id: FILE_OPTIONS_EQUAL_GO_PACKAGE_V2_SUFFIX + files: + - third_party/google/protobuf/field_mask.proto + - id: FILE_OPTIONS_EQUAL_OBJC_CLASS_PREFIX_ABBR + files: + - third_party/google/protobuf/field_mask.proto + - id: FILE_OPTIONS_REQUIRE_PHP_NAMESPACE + files: + - third_party/google/protobuf/field_mask.proto + - id: MESSAGES_HAVE_SENTENCE_COMMENTS_EXCEPT_REQUEST_RESPONSE_TYPES + files: + - third_party/google/protobuf/field_mask.proto + - id: PACKAGE_MAJOR_BETA_VERSIONED + files: + - third_party/google/protobuf/field_mask.proto + diff --git a/third_party/google/protobuf/field_mask.proto b/third_party/google/protobuf/field_mask.proto new file mode 100644 index 00000000..858e94da --- /dev/null +++ b/third_party/google/protobuf/field_mask.proto @@ -0,0 +1,245 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +syntax = "proto3"; + +package google.protobuf; + +option cc_enable_arenas = true; +option csharp_namespace = "Google.Protobuf.WellKnownTypes"; +option go_package = "google.golang.org/protobuf/types/known/fieldmaskpb"; +option java_multiple_files = true; +option java_outer_classname = "FieldMaskProto"; +option java_package = "com.google.protobuf"; +option objc_class_prefix = "GPB"; + +// `FieldMask` represents a set of symbolic field paths, for example: +// +// paths: "f.a" +// paths: "f.b.d" +// +// Here `f` represents a field in some root message, `a` and `b` +// fields in the message found in `f`, and `d` a field found in the +// message in `f.b`. +// +// Field masks are used to specify a subset of fields that should be +// returned by a get operation or modified by an update operation. +// Field masks also have a custom JSON encoding (see below). +// +// # Field Masks in Projections +// +// When used in the context of a projection, a response message or +// sub-message is filtered by the API to only contain those fields as +// specified in the mask. For example, if the mask in the previous +// example is applied to a response message as follows: +// +// f { +// a : 22 +// b { +// d : 1 +// x : 2 +// } +// y : 13 +// } +// z: 8 +// +// The result will not contain specific values for fields x,y and z +// (their value will be set to the default, and omitted in proto text +// output): +// +// +// f { +// a : 22 +// b { +// d : 1 +// } +// } +// +// A repeated field is not allowed except at the last position of a +// paths string. +// +// If a FieldMask object is not present in a get operation, the +// operation applies to all fields (as if a FieldMask of all fields +// had been specified). +// +// Note that a field mask does not necessarily apply to the +// top-level response message. In case of a REST get operation, the +// field mask applies directly to the response, but in case of a REST +// list operation, the mask instead applies to each individual message +// in the returned resource list. In case of a REST custom method, +// other definitions may be used. Where the mask applies will be +// clearly documented together with its declaration in the API. In +// any case, the effect on the returned resource/resources is required +// behavior for APIs. +// +// # Field Masks in Update Operations +// +// A field mask in update operations specifies which fields of the +// targeted resource are going to be updated. The API is required +// to only change the values of the fields as specified in the mask +// and leave the others untouched. If a resource is passed in to +// describe the updated values, the API ignores the values of all +// fields not covered by the mask. +// +// If a repeated field is specified for an update operation, new values will +// be appended to the existing repeated field in the target resource. Note that +// a repeated field is only allowed in the last position of a `paths` string. +// +// If a sub-message is specified in the last position of the field mask for an +// update operation, then new value will be merged into the existing sub-message +// in the target resource. +// +// For example, given the target message: +// +// f { +// b { +// d: 1 +// x: 2 +// } +// c: [1] +// } +// +// And an update message: +// +// f { +// b { +// d: 10 +// } +// c: [2] +// } +// +// then if the field mask is: +// +// paths: ["f.b", "f.c"] +// +// then the result will be: +// +// f { +// b { +// d: 10 +// x: 2 +// } +// c: [1, 2] +// } +// +// An implementation may provide options to override this default behavior for +// repeated and message fields. +// +// In order to reset a field's value to the default, the field must +// be in the mask and set to the default value in the provided resource. +// Hence, in order to reset all fields of a resource, provide a default +// instance of the resource and set all fields in the mask, or do +// not provide a mask as described below. +// +// If a field mask is not present on update, the operation applies to +// all fields (as if a field mask of all fields has been specified). +// Note that in the presence of schema evolution, this may mean that +// fields the client does not know and has therefore not filled into +// the request will be reset to their default. If this is unwanted +// behavior, a specific service may require a client to always specify +// a field mask, producing an error if not. +// +// As with get operations, the location of the resource which +// describes the updated values in the request message depends on the +// operation kind. In any case, the effect of the field mask is +// required to be honored by the API. +// +// ## Considerations for HTTP REST +// +// The HTTP kind of an update operation which uses a field mask must +// be set to PATCH instead of PUT in order to satisfy HTTP semantics +// (PUT must only be used for full updates). +// +// # JSON Encoding of Field Masks +// +// In JSON, a field mask is encoded as a single string where paths are +// separated by a comma. Fields name in each path are converted +// to/from lower-camel naming conventions. +// +// As an example, consider the following message declarations: +// +// message Profile { +// User user = 1; +// Photo photo = 2; +// } +// message User { +// string display_name = 1; +// string address = 2; +// } +// +// In proto a field mask for `Profile` may look as such: +// +// mask { +// paths: "user.display_name" +// paths: "photo" +// } +// +// In JSON, the same mask is represented as below: +// +// { +// mask: "user.displayName,photo" +// } +// +// # Field Masks and Oneof Fields +// +// Field masks treat fields in oneofs just as regular fields. Consider the +// following message: +// +// message SampleMessage { +// oneof test_oneof { +// string name = 4; +// SubMessage sub_message = 9; +// } +// } +// +// The field mask can be: +// +// mask { +// paths: "name" +// } +// +// Or: +// +// mask { +// paths: "sub_message" +// } +// +// Note that oneof type names ("test_oneof" in this case) cannot be used in +// paths. +// +// ## Field Mask Verification +// +// The implementation of any API method which has a FieldMask type field in the +// request should verify the included field paths, and return an +// `INVALID_ARGUMENT` error if any path is unmappable. +message FieldMask { + // The set of field mask paths. + repeated string paths = 1; +} diff --git a/tools/check-license/check-license.go b/tools/check-license/check-license.go index ed0dc84f..d4ac267d 100644 --- a/tools/check-license/check-license.go +++ b/tools/check-license/check-license.go @@ -58,7 +58,7 @@ var skip = map[string]bool{} func main() { flag.Parse() - err := filepath.Walk(".", func(path string, fi os.FileInfo, err error) error { + err := filepath.Walk("cs3", func(path string, fi os.FileInfo, err error) error { if skip[path] { return nil }