diff --git a/cs3/gateway/v1beta1/gateway_api.proto b/cs3/gateway/v1beta1/gateway_api.proto index ed53a8c..ea62f1d 100644 --- a/cs3/gateway/v1beta1/gateway_api.proto +++ b/cs3/gateway/v1beta1/gateway_api.proto @@ -384,6 +384,8 @@ service GatewayAPI { rpc GetAcceptedUser(cs3.ocm.invite.v1beta1.GetAcceptedUserRequest) returns (cs3.ocm.invite.v1beta1.GetAcceptedUserResponse); // Finds users who accepted invite tokens by their attributes. rpc FindAcceptedUsers(cs3.ocm.invite.v1beta1.FindAcceptedUsersRequest) returns (cs3.ocm.invite.v1beta1.FindAcceptedUsersResponse); + // Delete a previously accepted remote user, that is unfriend that user. + rpc DeleteAcceptedUser(cs3.ocm.invite.v1beta1.DeleteAcceptedUserRequest) returns (cs3.ocm.invite.v1beta1.DeleteAcceptedUserResponse); // *****************************************************************/ // ******************** OCM PROVIDER AUTHORIZER ********************/ // *****************************************************************/ @@ -400,8 +402,12 @@ service GatewayAPI { // **************************** OCM CORE ***************************/ // *****************************************************************/ - // Creates a new ocm share. + // Creates a new OCM share. rpc CreateOCMCoreShare(cs3.ocm.core.v1beta1.CreateOCMCoreShareRequest) returns (cs3.ocm.core.v1beta1.CreateOCMCoreShareResponse); + // Updates an OCM share. + rpc UpdateOCMCoreShare(cs3.ocm.core.v1beta1.UpdateOCMCoreShareRequest) returns (cs3.ocm.core.v1beta1.UpdateOCMCoreShareResponse); + // Deletes an OCM share. + rpc DeleteOCMCoreShare(cs3.ocm.core.v1beta1.DeleteOCMCoreShareRequest) returns (cs3.ocm.core.v1beta1.DeleteOCMCoreShareResponse); // *****************************************************************/ // ************************** FILE TRANSFER ************************/ // *****************************************************************/ diff --git a/cs3/ocm/core/v1beta1/ocm_core_api.proto b/cs3/ocm/core/v1beta1/ocm_core_api.proto index 258fbfd..a843777 100644 --- a/cs3/ocm/core/v1beta1/ocm_core_api.proto +++ b/cs3/ocm/core/v1beta1/ocm_core_api.proto @@ -36,7 +36,10 @@ import "cs3/types/v1beta1/types.proto"; // OCM Core API // -// The OCM Core API is the mapping in GRPC of the OCM core protocol. +// the OCM Core API is the mapping for the local system of the OCM protocol, +// including multi-protocol shares. Implementations are expected to expose +// the `/ocm` endpoints according to the OCM API, and in response to those +// endpoints implement the following API. // // The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL // NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and @@ -50,11 +53,17 @@ import "cs3/types/v1beta1/types.proto"; // Any method MAY return UNKNOWN. // Any method MAY return UNAUTHENTICATED. service OcmCoreAPI { - // Creates a new ocm share. + // Creates a new OCM share, in response to a call from remote to: + // https://cs3org.github.io/OCM-API/docs.html?branch=v1.1.0&repo=OCM-API&user=cs3org#/paths/~1shares/post rpc CreateOCMCoreShare(CreateOCMCoreShareRequest) returns (CreateOCMCoreShareResponse); + // Updates an OCM share, in response to a notification from the remote system to: + // https://cs3org.github.io/OCM-API/docs.html?branch=v1.1.0&repo=OCM-API&user=cs3org#/paths/~1notifications/post + rpc UpdateOCMCoreShare(UpdateOCMCoreShareRequest) returns (UpdateOCMCoreShareResponse); + // Deletes an OCM share, in response to a notification from the remote system to: + // https://cs3org.github.io/OCM-API/docs.html?branch=v1.1.0&repo=OCM-API&user=cs3org#/paths/~1notifications/post + rpc DeleteOCMCoreShare(DeleteOCMCoreShareRequest) returns (DeleteOCMCoreShareResponse); } -// https://rawgit.com/GEANT/OCM-API/v1/docs.html#null%2Fpaths%2F~1shares%2Fpost message CreateOCMCoreShareRequest { // OPTIONAL. // Opaque information. @@ -87,10 +96,11 @@ message CreateOCMCoreShareRequest { // Recipient share type. cs3.sharing.ocm.v1beta1.ShareType share_type = 9; // OPTIONAL. - // The expiration time for the ocm share. + // The expiration time for the OCM share. cs3.types.v1beta1.Timestamp expiration = 10; // REQUIRED. - // The protocols which are used to establish synchronisation. + // The protocols which are used to establish synchronisation, + // with their access rights. // See also cs3/sharing/ocm/v1beta1/resources.proto for how to map // this to the OCM share payload. repeated cs3.sharing.ocm.v1beta1.Protocol protocols = 11; @@ -109,3 +119,52 @@ message CreateOCMCoreShareResponse { // REQUIRED. cs3.types.v1beta1.Timestamp created = 4; } + +message UpdateOCMCoreShareRequest { + // OPTIONAL. + // Opaque information. + cs3.types.v1beta1.Opaque opaque = 1; + // REQUIRED. + // Unique ID to identify the share at the consumer side. + string ocm_share_id = 2; + // OPTIONAL. + // Description for the share. + string description = 3; + // OPTIONAL. + // Recipient share type. + cs3.sharing.ocm.v1beta1.ShareType share_type = 5; + // OPTIONAL. + // The expiration time for the OCM share. + cs3.types.v1beta1.Timestamp expiration = 6; + // OPTIONAL. + // The protocols which are used to establish synchronisation, + // with their access rights. + repeated cs3.sharing.ocm.v1beta1.Protocol protocols = 7; +} + +message UpdateOCMCoreShareResponse { + // REQUIRED. + // The response status. + cs3.rpc.v1beta1.Status status = 1; + // OPTIONAL. + // Opaque information. + cs3.types.v1beta1.Opaque opaque = 2; +} + +message DeleteOCMCoreShareRequest { + // REQUIRED. + // Unique ID to identify the share at the consumer side. + string id = 1; + // OPTIONAL. + // Opaque information. + cs3.types.v1beta1.Opaque opaque = 2; +} + +message DeleteOCMCoreShareResponse { + // REQUIRED. + // The response status. + cs3.rpc.v1beta1.Status status = 1; + // OPTIONAL. + // Opaque information. + cs3.types.v1beta1.Opaque opaque = 2; +} diff --git a/cs3/ocm/invite/v1beta1/invite_api.proto b/cs3/ocm/invite/v1beta1/invite_api.proto index e0d6c2b..0d2d815 100644 --- a/cs3/ocm/invite/v1beta1/invite_api.proto +++ b/cs3/ocm/invite/v1beta1/invite_api.proto @@ -39,6 +39,8 @@ import "cs3/types/v1beta1/types.proto"; // 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 following APIs match the OCM v1.1 spec for the /invite-accepted endpoint. +// // 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 @@ -55,7 +57,9 @@ service InviteAPI { rpc GenerateInviteToken(GenerateInviteTokenRequest) returns (GenerateInviteTokenResponse); // Lists the valid tokens generated by the user. rpc ListInviteTokens(ListInviteTokensRequest) returns (ListInviteTokensResponse); - // Forwards a received invite to the sync'n'share system provider. + // Forwards a received invite to the remote sync'n'share system provider. The remote + // system SHALL get an `invite-accepted` call as follows: + // https://cs3org.github.io/OCM-API/docs.html?branch=v1.1.0&repo=OCM-API&user=cs3org#/paths/~1invite-accepted/post // MUST return CODE_NOT_FOUND if the token does not exist. // MUST return CODE_INVALID_ARGUMENT if the token expired. // MUST return CODE_ALREADY_EXISTS if the user already accepted an invite. @@ -71,6 +75,9 @@ service InviteAPI { rpc GetAcceptedUser(GetAcceptedUserRequest) returns (GetAcceptedUserResponse); // Finds users who accepted invite tokens by their attributes. rpc FindAcceptedUsers(FindAcceptedUsersRequest) returns (FindAcceptedUsersResponse); + // Delete a previously accepted remote user, that is unfriend that user. + // MUST return CODE_NOT_FOUND if the user does not exist. + rpc DeleteAcceptedUser(DeleteAcceptedUserRequest) returns (DeleteAcceptedUserResponse); } message GenerateInviteTokenRequest { @@ -206,3 +213,21 @@ message FindAcceptedUsersResponse { // The accepted users matching the specified filter. repeated cs3.identity.user.v1beta1.User accepted_users = 3; } + +message DeleteAcceptedUserRequest { + // OPTIONAL. + // Opaque information. + cs3.types.v1beta1.Opaque opaque = 1; + // REQUIRED. + // The id of the user. + cs3.identity.user.v1beta1.UserId remote_user_id = 2; +} + +message DeleteAcceptedUserResponse { + // REQUIRED. + // The response status. + cs3.rpc.v1beta1.Status status = 1; + // OPTIONAL. + // Opaque information. + cs3.types.v1beta1.Opaque opaque = 2; +} diff --git a/cs3/sharing/ocm/v1beta1/ocm_api.proto b/cs3/sharing/ocm/v1beta1/ocm_api.proto index 0132740..ab00767 100644 --- a/cs3/sharing/ocm/v1beta1/ocm_api.proto +++ b/cs3/sharing/ocm/v1beta1/ocm_api.proto @@ -42,8 +42,7 @@ import "google/protobuf/field_mask.proto"; // resources from the perspective of the creator or the share and // from the perspective of the receiver of the share. // -// The following APIs match the OCM v1.1 spec, including the invitation -// workflow and multi-protocol shares. +// The following APIs match the OCM v1.1 spec including multi-protocol shares. // // The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL // NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and @@ -61,10 +60,15 @@ service OcmAPI { // 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. + // New shares MUST be created in the state SHARE_STATE_PENDING, and MUST be sent + // to the remote system using the OCM API at: + // https://cs3org.github.io/OCM-API/docs.html?branch=v1.1.0&repo=OCM-API&user=cs3org#/paths/~1shares/post rpc CreateOCMShare(CreateOCMShareRequest) returns (CreateOCMShareResponse); // Removes a share. // MUST return CODE_NOT_FOUND if the share reference does not exist. + // This action SHALL be notified to the remote system + // using the OCM API at: + // https://cs3org.github.io/OCM-API/docs.html?branch=v1.1.0&repo=OCM-API&user=cs3org#/paths/~1notifications/post rpc RemoveOCMShare(RemoveOCMShareRequest) returns (RemoveOCMShareResponse); // Gets share information for a single share. // MUST return CODE_NOT_FOUND if the share reference does not exist. @@ -78,6 +82,9 @@ service OcmAPI { rpc ListOCMShares(ListOCMSharesRequest) returns (ListOCMSharesResponse); // Updates a share. // MUST return CODE_NOT_FOUND if the share reference does not exist. + // This action SHALL be notified to the remote system + // using the OCM API at: + // https://cs3org.github.io/OCM-API/docs.html?branch=v1.1.0&repo=OCM-API&user=cs3org#/paths/~1notifications/post rpc UpdateOCMShare(UpdateOCMShareRequest) returns (UpdateOCMShareResponse); // List all shares the authenticated principal has received. rpc ListReceivedOCMShares(ListReceivedOCMSharesRequest) returns (ListReceivedOCMSharesResponse); @@ -128,21 +135,19 @@ message UpdateOCMShareRequest { // OPTIONAL. // Opaque information. cs3.types.v1beta1.Opaque opaque = 1; - // REQUIRED. - // REQUIRED. ShareReference ref = 2; // REQUIRED. message UpdateField { // One of the update fields MUST be specified. oneof field { - // Update the permissions. - SharePermissions permissions = 2; - // Update the display name. - string display_name = 3; + // Update the expiration. + cs3.types.v1beta1.Timestamp expiration = 1; + // Update access methods. + AccessMethod access_methods = 2; } } - UpdateField field = 3; + repeated UpdateField field = 3; } message UpdateOCMShareResponse { diff --git a/cs3/sharing/ocm/v1beta1/resources.proto b/cs3/sharing/ocm/v1beta1/resources.proto index cad5dc9..0e364ee 100644 --- a/cs3/sharing/ocm/v1beta1/resources.proto +++ b/cs3/sharing/ocm/v1beta1/resources.proto @@ -224,7 +224,7 @@ message ShareGrant { SharePermissions permissions = 2; } -// The protocol which is used to establish synchronisation. +// The protocol which is used to give access to a remote OCM user. message Protocol { // REQUIRED. // One of the protocols MUST be specified. @@ -287,7 +287,7 @@ enum ShareType { SHARE_TYPE_GROUP = 2; } -// Defines how the recipient accesses the share. +// Defines how the recipient accesses an incoming remote OCM share. message AccessMethod { // REQUIRED. // One of the access method MUST be specified. @@ -308,15 +308,19 @@ message AccessMethod { message WebDAVAccessMethod { // REQUIRED. // The permissions for the share. - storage.provider.v1beta1.ResourcePermissions permissions = 2; + storage.provider.v1beta1.ResourcePermissions permissions = 1; } // Defines the options for the Webapp access method. message WebappAccessMethod { // REQUIRED. // The view mode for the share. - cs3.app.provider.v1beta1.ViewMode view_mode = 2; + cs3.app.provider.v1beta1.ViewMode view_mode = 1; } // Defines the options for the Transfer access method. -message TransferAccessMethod {} +message TransferAccessMethod { + // REQUIRED. + // The destination path of the data transfer. + storage.provider.v1beta1.Reference destination = 1; +} diff --git a/docs/index.html b/docs/index.html index acea9bd..a3b6ce8 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1007,6 +1007,22 @@

Table of Contents

MCreateOCMCoreShareResponse +
  • + MDeleteOCMCoreShareRequest +
  • + +
  • + MDeleteOCMCoreShareResponse +
  • + +
  • + MUpdateOCMCoreShareRequest +
  • + +
  • + MUpdateOCMCoreShareResponse +
  • + @@ -1030,6 +1046,14 @@

    Table of Contents

    MAcceptInviteResponse +
  • + MDeleteAcceptedUserRequest +
  • + +
  • + MDeleteAcceptedUserResponse +
  • +
  • MFindAcceptedUsersRequest
  • @@ -3264,7 +3288,14 @@

    GatewayAPI

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

    Finds users who accepted invite tokens by their attributes. +

    Finds users who accepted invite tokens by their attributes.

    + + + + DeleteAcceptedUser + .cs3.ocm.invite.v1beta1.DeleteAcceptedUserRequest + .cs3.ocm.invite.v1beta1.DeleteAcceptedUserResponse +

    Delete a previously accepted remote user, that is unfriend that user. *****************************************************************/ ******************** OCM PROVIDER AUTHORIZER ********************/ @@ -3302,7 +3333,21 @@

    GatewayAPI

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

    Creates a new ocm share. +

    Creates a new OCM share.

    + + + + UpdateOCMCoreShare + .cs3.ocm.core.v1beta1.UpdateOCMCoreShareRequest + .cs3.ocm.core.v1beta1.UpdateOCMCoreShareResponse +

    Updates an OCM share.

    + + + + DeleteOCMCoreShare + .cs3.ocm.core.v1beta1.DeleteOCMCoreShareRequest + .cs3.ocm.core.v1beta1.DeleteOCMCoreShareResponse +

    Deletes an OCM share. *****************************************************************/ ************************** FILE TRANSFER ************************/ @@ -8768,7 +8813,7 @@

    cs3/ocm/core/v1beta1/ocm_core_a

    CreateOCMCoreShareRequest

    -

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

    +

    @@ -8857,7 +8902,7 @@

    CreateOCMCoreShareReques

    +The expiration time for the OCM share.

    @@ -8865,7 +8910,8 @@

    CreateOCMCoreShareReques

    @@ -8925,6 +8971,171 @@

    CreateOCMCoreShareRespo +

    DeleteOCMCoreShareRequest

    +

    + + +
    cs3.types.v1beta1.Timestamp

    OPTIONAL. -The expiration time for the ocm share.

    cs3.sharing.ocm.v1beta1.Protocol repeated

    REQUIRED. -The protocols which are used to establish synchronisation. +The protocols which are used to establish synchronisation, +with their access rights. See also cs3/sharing/ocm/v1beta1/resources.proto for how to map this to the OCM share payload.

    + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    idstring

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

    opaquecs3.types.v1beta1.Opaque

    OPTIONAL. +Opaque information.

    + + + + + +

    DeleteOCMCoreShareResponse

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    statuscs3.rpc.v1beta1.Status

    REQUIRED. +The response status.

    opaquecs3.types.v1beta1.Opaque

    OPTIONAL. +Opaque information.

    + + + + + +

    UpdateOCMCoreShareRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    opaquecs3.types.v1beta1.Opaque

    OPTIONAL. +Opaque information.

    ocm_share_idstring

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

    descriptionstring

    OPTIONAL. +Description for the share.

    share_typecs3.sharing.ocm.v1beta1.ShareType

    OPTIONAL. +Recipient share type.

    expirationcs3.types.v1beta1.Timestamp

    OPTIONAL. +The expiration time for the OCM share.

    protocolscs3.sharing.ocm.v1beta1.Protocolrepeated

    OPTIONAL. +The protocols which are used to establish synchronisation, +with their access rights.

    + + + + + +

    UpdateOCMCoreShareResponse

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    statuscs3.rpc.v1beta1.Status

    REQUIRED. +The response status.

    opaquecs3.types.v1beta1.Opaque

    OPTIONAL. +Opaque information.

    + + + + + @@ -8932,7 +9143,7 @@

    CreateOCMCoreShareRespo

    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.

    +

    OCM Core API

    the OCM Core API is the mapping for the local system of the OCM protocol,

    including multi-protocol shares. Implementations are expected to expose

    the `/ocm` endpoints according to the OCM API, and in response to those

    endpoints implement the following API.

    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.

    @@ -8943,7 +9154,24 @@

    OcmCoreAPI

    - + + + + + + + + + + + + + + + @@ -9056,6 +9284,72 @@

    AcceptInviteResponse

    +

    DeleteAcceptedUserRequest

    +

    + + +
    Method NameRequest TypeResponse TypeDescription
    CreateOCMCoreShare CreateOCMCoreShareRequest CreateOCMCoreShareResponse

    Creates a new ocm share.

    Creates a new OCM share, in response to a call from remote to: +https://cs3org.github.io/OCM-API/docs.html?branch=v1.1.0&repo=OCM-API&user=cs3org#/paths/~1shares/post

    UpdateOCMCoreShareUpdateOCMCoreShareRequestUpdateOCMCoreShareResponse

    Updates an OCM share, in response to a notification from the remote system to: +https://cs3org.github.io/OCM-API/docs.html?branch=v1.1.0&repo=OCM-API&user=cs3org#/paths/~1notifications/post

    DeleteOCMCoreShareDeleteOCMCoreShareRequestDeleteOCMCoreShareResponse

    Deletes an OCM share, in response to a notification from the remote system to: +https://cs3org.github.io/OCM-API/docs.html?branch=v1.1.0&repo=OCM-API&user=cs3org#/paths/~1notifications/post

    + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    opaquecs3.types.v1beta1.Opaque

    OPTIONAL. +Opaque information.

    remote_user_idcs3.identity.user.v1beta1.UserId

    REQUIRED. +The id of the user.

    + + + + + +

    DeleteAcceptedUserResponse

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    statuscs3.rpc.v1beta1.Status

    REQUIRED. +The response status.

    opaquecs3.types.v1beta1.Opaque

    OPTIONAL. +Opaque information.

    + + + + +

    FindAcceptedUsersRequest

    @@ -9423,7 +9717,7 @@

    ListInviteTokensRespons

    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.

    +

    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 following APIs match the OCM v1.1 spec for the /invite-accepted endpoint.

    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.

    @@ -9448,7 +9742,9 @@

    InviteAPI

    - + + + + + + +
    Method NameRequest TypeResponse TypeDescription
    ForwardInvite ForwardInviteRequest ForwardInviteResponse

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

    Forwards a received invite to the remote sync'n'share system provider. The remote +system SHALL get an `invite-accepted` call as follows: +https://cs3org.github.io/OCM-API/docs.html?branch=v1.1.0&repo=OCM-API&user=cs3org#/paths/~1invite-accepted/post MUST return CODE_NOT_FOUND if the token does not exist. MUST return CODE_INVALID_ARGUMENT if the token expired. MUST return CODE_ALREADY_EXISTS if the user already accepted an invite. @@ -9480,6 +9776,14 @@

    InviteAPI

    Finds users who accepted invite tokens by their attributes.

    DeleteAcceptedUserDeleteAcceptedUserRequestDeleteAcceptedUserResponse

    Delete a previously accepted remote user, that is unfriend that user. +MUST return CODE_NOT_FOUND if the user does not exist.

    @@ -13270,9 +13574,7 @@

    UpdateOCMShareRequest

    cs3.types.v1beta1.Opaque

    OPTIONAL. -Opaque information. - -REQUIRED.

    +Opaque information.

    @@ -13285,7 +13587,7 @@

    UpdateOCMShareRequest

    field UpdateOCMShareRequest.UpdateField - + repeated

    @@ -13307,17 +13609,17 @@

    UpdateOCMShar - permissions - SharePermissions + expiration + cs3.types.v1beta1.Timestamp -

    Update the permissions.

    +

    Update the expiration.

    - display_name - string + access_methods + AccessMethod -

    Update the display name.

    +

    Update access methods.

    @@ -13494,7 +13796,7 @@

    ListOCMSharesR

    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 following APIs match the OCM v1.1 spec, including the invitation

    workflow and multi-protocol shares.

    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.

    +

    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 following APIs match the OCM v1.1 spec including multi-protocol shares.

    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.

    @@ -13509,7 +13811,9 @@

    OcmAPI

    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.

    +New shares MUST be created in the state SHARE_STATE_PENDING, and MUST be sent +to the remote system using the OCM API at: +https://cs3org.github.io/OCM-API/docs.html?branch=v1.1.0&repo=OCM-API&user=cs3org#/paths/~1shares/post

    @@ -13517,7 +13821,10 @@

    OcmAPI

    +MUST return CODE_NOT_FOUND if the share reference does not exist. +This action SHALL be notified to the remote system +using the OCM API at: +https://cs3org.github.io/OCM-API/docs.html?branch=v1.1.0&repo=OCM-API&user=cs3org#/paths/~1notifications/post

    @@ -13550,7 +13857,10 @@

    OcmAPI

    +MUST return CODE_NOT_FOUND if the share reference does not exist. +This action SHALL be notified to the remote system +using the OCM API at: +https://cs3org.github.io/OCM-API/docs.html?branch=v1.1.0&repo=OCM-API&user=cs3org#/paths/~1notifications/post

    @@ -13589,7 +13899,7 @@

    cs3/sharing/ocm/v1beta1/resourc

    AccessMethod

    -

    Defines how the recipient accesses the share.

    +

    Defines how the recipient accesses an incoming remote OCM share.

    Method NameRequest TypeResponse TypeDescription
    RemoveOCMShareRequest RemoveOCMShareResponse

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

    UpdateOCMShareRequest UpdateOCMShareResponse

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

    @@ -13635,7 +13945,7 @@

    AccessMethod

    Protocol

    -

    The protocol which is used to establish synchronisation.

    +

    The protocol which is used to give access to a remote OCM user.

    @@ -14121,6 +14431,24 @@

    TransferAccessMethod

    Defines the options for the Transfer access method.

    +
    + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    destinationcs3.storage.provider.v1beta1.Reference

    REQUIRED. +The destination path of the data transfer.

    + + diff --git a/proto.lock b/proto.lock index a322648..480a351 100644 --- a/proto.lock +++ b/proto.lock @@ -2403,6 +2403,11 @@ "in_type": "cs3.ocm.invite.v1beta1.FindAcceptedUsersRequest", "out_type": "cs3.ocm.invite.v1beta1.FindAcceptedUsersResponse" }, + { + "name": "DeleteAcceptedUser", + "in_type": "cs3.ocm.invite.v1beta1.DeleteAcceptedUserRequest", + "out_type": "cs3.ocm.invite.v1beta1.DeleteAcceptedUserResponse" + }, { "name": "IsProviderAllowed", "in_type": "cs3.ocm.provider.v1beta1.IsProviderAllowedRequest", @@ -2423,6 +2428,16 @@ "in_type": "cs3.ocm.core.v1beta1.CreateOCMCoreShareRequest", "out_type": "cs3.ocm.core.v1beta1.CreateOCMCoreShareResponse" }, + { + "name": "UpdateOCMCoreShare", + "in_type": "cs3.ocm.core.v1beta1.UpdateOCMCoreShareRequest", + "out_type": "cs3.ocm.core.v1beta1.UpdateOCMCoreShareResponse" + }, + { + "name": "DeleteOCMCoreShare", + "in_type": "cs3.ocm.core.v1beta1.DeleteOCMCoreShareRequest", + "out_type": "cs3.ocm.core.v1beta1.DeleteOCMCoreShareResponse" + }, { "name": "CreateTransfer", "in_type": "cs3.tx.v1beta1.CreateTransferRequest", @@ -3544,6 +3559,87 @@ "type": "cs3.types.v1beta1.Timestamp" } ] + }, + { + "name": "UpdateOCMCoreShareRequest", + "fields": [ + { + "id": 1, + "name": "opaque", + "type": "cs3.types.v1beta1.Opaque" + }, + { + "id": 2, + "name": "ocm_share_id", + "type": "string" + }, + { + "id": 3, + "name": "description", + "type": "string" + }, + { + "id": 5, + "name": "share_type", + "type": "cs3.sharing.ocm.v1beta1.ShareType" + }, + { + "id": 6, + "name": "expiration", + "type": "cs3.types.v1beta1.Timestamp" + }, + { + "id": 7, + "name": "protocols", + "type": "cs3.sharing.ocm.v1beta1.Protocol", + "is_repeated": true + } + ] + }, + { + "name": "UpdateOCMCoreShareResponse", + "fields": [ + { + "id": 1, + "name": "status", + "type": "cs3.rpc.v1beta1.Status" + }, + { + "id": 2, + "name": "opaque", + "type": "cs3.types.v1beta1.Opaque" + } + ] + }, + { + "name": "DeleteOCMCoreShareRequest", + "fields": [ + { + "id": 1, + "name": "id", + "type": "string" + }, + { + "id": 2, + "name": "opaque", + "type": "cs3.types.v1beta1.Opaque" + } + ] + }, + { + "name": "DeleteOCMCoreShareResponse", + "fields": [ + { + "id": 1, + "name": "status", + "type": "cs3.rpc.v1beta1.Status" + }, + { + "id": 2, + "name": "opaque", + "type": "cs3.types.v1beta1.Opaque" + } + ] } ], "services": [ @@ -3554,6 +3650,16 @@ "name": "CreateOCMCoreShare", "in_type": "CreateOCMCoreShareRequest", "out_type": "CreateOCMCoreShareResponse" + }, + { + "name": "UpdateOCMCoreShare", + "in_type": "UpdateOCMCoreShareRequest", + "out_type": "UpdateOCMCoreShareResponse" + }, + { + "name": "DeleteOCMCoreShare", + "in_type": "DeleteOCMCoreShareRequest", + "out_type": "DeleteOCMCoreShareResponse" } ] } @@ -3838,6 +3944,36 @@ "is_repeated": true } ] + }, + { + "name": "DeleteAcceptedUserRequest", + "fields": [ + { + "id": 1, + "name": "opaque", + "type": "cs3.types.v1beta1.Opaque" + }, + { + "id": 2, + "name": "remote_user_id", + "type": "cs3.identity.user.v1beta1.UserId" + } + ] + }, + { + "name": "DeleteAcceptedUserResponse", + "fields": [ + { + "id": 1, + "name": "status", + "type": "cs3.rpc.v1beta1.Status" + }, + { + "id": 2, + "name": "opaque", + "type": "cs3.types.v1beta1.Opaque" + } + ] } ], "services": [ @@ -3873,6 +4009,11 @@ "name": "FindAcceptedUsers", "in_type": "FindAcceptedUsersRequest", "out_type": "FindAcceptedUsersResponse" + }, + { + "name": "DeleteAcceptedUser", + "in_type": "DeleteAcceptedUserRequest", + "out_type": "DeleteAcceptedUserResponse" } ] } @@ -4754,6 +4895,10 @@ { "name": "CODE_INSUFFICIENT_STORAGE", "integer": 19 + }, + { + "name": "CODE_LOCKED", + "integer": 20 } ] } @@ -6451,7 +6596,8 @@ { "id": 3, "name": "field", - "type": "UpdateField" + "type": "UpdateField", + "is_repeated": true } ], "messages": [ @@ -6459,14 +6605,14 @@ "name": "UpdateField", "fields": [ { - "id": 2, - "name": "permissions", - "type": "SharePermissions" + "id": 1, + "name": "expiration", + "type": "cs3.types.v1beta1.Timestamp" }, { - "id": 3, - "name": "display_name", - "type": "string" + "id": 2, + "name": "access_methods", + "type": "AccessMethod" } ] } @@ -7261,7 +7407,7 @@ "name": "WebDAVAccessMethod", "fields": [ { - "id": 2, + "id": 1, "name": "permissions", "type": "storage.provider.v1beta1.ResourcePermissions" } @@ -7271,14 +7417,21 @@ "name": "WebappAccessMethod", "fields": [ { - "id": 2, + "id": 1, "name": "view_mode", "type": "cs3.app.provider.v1beta1.ViewMode" } ] }, { - "name": "TransferAccessMethod" + "name": "TransferAccessMethod", + "fields": [ + { + "id": 1, + "name": "destination", + "type": "storage.provider.v1beta1.Reference" + } + ] } ], "imports": [