Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions IETF-RFC.md
Original file line number Diff line number Diff line change
Expand Up @@ -454,6 +454,28 @@ The Receiving Server MAY discard the notification if any of the following hold t
* the Receiving Server is unable to act as an API client for (any of) the protocol(s) listed for accessing the resource
* an initial check shows that the resource cannot successfully be accessed through (any of) the protocol(s) listed

# Request for a share
If the Recieving Party knows of a resource that has not yet been shared, the Recieving Party MAY make a HTTP POST to request a share

* to the `/request-share` path in the Sending Server's OCM API
* using `application/json` as the `Content-Type` HTTP request header
* its request body containing a JSON document representing an object with the fields as described below
* using TLS
* using [httpsig](https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures-12)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess that should be httpsig [RFC9421]


## Fields
* REQUIRED sender (string)
OCM Address of the user who will be requested to share the resource.
* REQUIRED shareWith (string)
OCM Address of the user, group or federation that
wants to receive a share of the resource.
Example: "[email protected]"
* REQUIRED shareId (string)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here we have a problem: a receiver won't know the (opaque) ID of a remote resource, but only a path (or something "human readable"?). Shall we name this simply share, or sharePath?

A unique identifier for the resource.
Example: 1234567890abcdef

After receiving a request for a Share, the Sending Party MAY send a Share Creation Notification to the Sending Party using the OCM address in the shareWith field.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here I'd imagine the flow to be async: the server would respond HTTP 202 Accepted, signifying that the sender user was notified about the request to share. Once they accept, the normal Share Notification will take place.


# Receiving Party Notification
If the Share Creation Notification is not discarded by the Receiving Server, they MAY notify the Receiving Party passively by adding the Share to some inbox list, and MAY also notify them actively through for instance a push notification or an email message.

Expand Down
64 changes: 64 additions & 0 deletions spec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,54 @@ paths:
application/json:
schema:
$ref: "#/components/schemas/Discovery"
/request-share:
post:
summary: Request access to a share
description: >
This endpoint is used to request access to a share.
The request MUST contain the share ID and the OCM address of the party
who wants to receive the share.
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/RequestShare"
description: The JSON object to request access to a share.
required: true
responses:
"201":
description: >
Consumer successfully received request.
"400":
description: >
Bad request due to invalid parameters, e.g. when `shareId` is missing.
content:
application/json:
schema:
$ref: "#/components/schemas/400"
"501":
description: The server doesn't support requesting shares.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
"503":
description: The server is temporary unavailable (e.g. due to planned
maintenance).
headers:
Retry-After:
description: >
Indication for the client when the service could be requested
again in HTTP Date format as used by the Internet Message
Format [RFC5322] (e.g. `Wed, 21 Oct 2015 07:28:00 GMT`) or the
number of seconds (e.g. 3000 if you the service is expected to
be available again within 50 minutes).
schema:
type: string
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
/shares:
post:
summary: Create a new share
Expand Down Expand Up @@ -848,6 +896,22 @@ components:
type: string
description: Name of the Invite Sender.
example: John Doe
RequestShare:
type: object
required:
- shareWith
- shareId
properties:
shareWith:
type: string
description: >
Consumer specific identifier of the user, group or federation that
wants to recive a share of the resource.
example: [email protected]
shareId:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this the same as providerId in NewShare ?

type: string
description: A unique identifier for the resource.
example: 1234567890abcdef
TokenRequest:
type: object
properties:
Expand Down
Loading