io.cozy.sharings
This doctype describes a sharing, ie an action made by some user to share some documents and files from her cozy instance to other people.
- An identifier (the same for all members of the sharing)
- A list of
members
. The first one is the owner. For each member, we have the URL of the cozy, a public name, an email, a status and some credentials to authorize the transfer of data between the owner and the recipients. The status can be:owner
for the member that has created the sharingmail-not-sent
for a member that has been added, but its invitation has not yet been sent (often, this status is used only for a few seconds)pending
for a member with an invitation sent, but who has not clicked on the linkseen
for a member that has clicked on the invitation link, but has not setup the Cozy to Cozy replication for the sharingready
for a member where the Cozy to Cozy replication has been set uprevoked
for a member who is on longer in the sharing
- A list of
groups
, with for each one:id
, the identifier of the io.cozy.contacts.groupsname
, the name of the groupaddedBy
, the index of the member that has added the groupread_only
, a flag to tell if the group is restricted to read-only moderevoked
, a flag set to true when the group is revoked from the sharing
- A
description
(one sentence that will help people understand what is shared and why) - a flag
active
that says if the sharing is currently active for at least one member - a flag
owner
, true for the document on the cozy of the sharer, and absent on the other cozy instance - a flag
open_sharing
:true
if any member of the sharing can add a new recipientfalse
if only the owner can add a new recipient
- Some technical data (
created_at
,updated_at
,app_slug
,preview_path
,triggers
,credentials
) - A flag
initial_sync
present only when the initial replication is still running - A number of files to synchronize for the initial sync,
initial_number_of_files_to_sync
(if there is no file to sync or the initial replication has finished, the field won’t be here) - A
shortcut_id
with the identifier of the shortcut file (when the recipient doesn’t want to synchronize the documents on their Cozy instance) - A list of sharing
rules
, each rule being composed of:- a
title
, that will be displayed to the recipients before they accept the sharing - the
doctype
- a
selector
(by default, it’s theid
) andvalues
(one identifier, a list of identifiers, files and folders inside a folder, files that are referenced by the same document, documents bound to a previous sharing rule) local
: by defaultfalse
, but it can falsetrue
for documents that are useful for the preview page but doesn’t need to be send to the recipients (e.g. a setting document of the application)add
: What to do when a new document matches this rule (the document is created, or it was a document that didn’t match the rule and is modified and the new version matches the rule). Can be:none
: the updates are never propagated (the default)push
: the updates made on the owner are sent to the recipientssync
: the updates on any member are propagated to the other members
update
: What to do when a document matched by this rule is modified. Can be:none
: the updates are never propagated (the default)push
: the updates made on the owner are sent to the recipientssync
: the updates on any member are propagated to the other members
remove
: What to do when a document no longer matches this rule (the document is deleted, or it was a document that matched the rule, and is modified and the new version doesn’t match the rule):none
: the updates are never propagated (the default)push
: the updates made on the owner are sent to the recipientssync
: the updates on any member are propagated to the other membersrevoke
: the sharing is revoked.
- a
Example
{
"_id": "fffe04ebbec335405161f19133a0cd5c",
"_rev": "7-bb721ae29e74ff2d776d8cbabf1a0bf5",
"triggers": {
"track_id": "fffe04ebbec335405161f19133a0fab5",
"replicate_id": "fffe04ebbec335405161f19133a1172a",
"upload_id": "fffe04ebbec335405161f19133a133bd"
},
"active": true,
"owner": true,
"description": "Let's work together!",
"app_slug": "",
"created_at": "2018-06-01T16:54:32.677789079+02:00",
"updated_at": "2018-06-01T16:54:32.677789079+02:00",
"rules": [
{
"title": "labore_adipisci",
"doctype": "io.cozy.files",
"values": [
"fffe04ebbec335405161f19133a0b7b1"
],
"add": "sync",
"update": "sync",
"remove": "sync"
}
],
"members": [
{
"status": "owner",
"name": "Alice",
"email": "alice+test@cozy.tools",
"instance": "http://alice.test.cozy.tools:8081"
},
{
"status": "ready",
"name": "Benjamin Denis",
"email": "denis@borer.org",
"instance": "http://bob.test.cozy.tools:8082"
}
],
"credentials": [
{
"state": "OyPayIajZQUUX_KsZY2yaQ",
"client": {
"client_id": "fffe04ebbec335405161f19133a0e286",
"client_secret": "JeOuBosC329bnz1rFK3Yenw8_8TleOa2",
"client_secret_expires_at": 0,
"registration_access_token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJyZWdpc3RyYXRpb24iLCJpYXQiOjE1Mjc4NjQ4ODQsImlzcyI6ImJvYi50ZXN0LmNvenkudG9vbHM6ODA4MiIsInN1YiI6ImZmZmUwNGViYmVjMzM1NDA1MTYxZjE5MTMzYTBlMjg2In0.WsNnnFnnf_vgf2OQyGSaj9XyK2elkaGHyl2vFpjzlCxEfj7ZoE7B2b6_GtRIdmhh42VSawoyGLAXsPh-ml10GQ",
"redirect_uris": [
"http://alice.test.cozy.tools:8081/sharings/answer"
],
"client_name": "Sharing Alice",
"client_kind": "sharing",
"client_uri": "http://alice.test.cozy.tools:8081/",
"software_id": "github.com/cozy/cozy-stack"
},
"access_token": {
"token_type": "bearer",
"access_token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJhY2Nlc3MiLCJpYXQiOjE1Mjc4NjQ4ODQsImlzcyI6ImJvYi50ZXN0LmNvenkudG9vbHM6ODA4MiIsInN1YiI6ImZmZmUwNGViYmVjMzM1NDA1MTYxZjE5MTMzYTBlMjg2Iiwic2NvcGUiOiJpby5jb3p5LnNoYXJpbmdzOkFMTDpmZmZlMDRlYmJlYzMzNTQwNTE2MWYxOTEzM2EwY2Q1YyJ9.ZS0r9KpjrctckigRIELJQryzHrFGo-1dQvRplSNj8N0jyJE1LPgnYuiDedQ8EQN5-1ffeLUf3h_Rygz2ozQvPA",
"refresh_token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJyZWZyZXNoIiwiaWF0IjoxNTI3ODY0ODg0LCJpc3MiOiJib2IudGVzdC5jb3p5LnRvb2xzOjgwODIiLCJzdWIiOiJmZmZlMDRlYmJlYzMzNTQwNTE2MWYxOTEzM2EwZTI4NiIsInNjb3BlIjoiaW8uY296eS5zaGFyaW5nczpBTEw6ZmZmZTA0ZWJiZWMzMzU0MDUxNjFmMTkxMzNhMGNkNWMifQ.cnH-COVwBIY8zOK51BBkLhb8vRbA96mRJ_W-i3Gg_qZoAISUjmzM3IH69DPQzD99OFnyeGWPhuIkCyWZX7ULQA",
"scope": "io.cozy.sharings:ALL:fffe04ebbec335405161f19133a0cd5c"
},
"xor_key": "CAMHBgkAAgEMCAkMAgsIAw==",
"inbound_client_id": "fffe04ebbec335405161f19133a0ecc2"
}
]
}
io.cozy.shared
This doctype is an internal one for the stack. It is used to track what documents are shared, and to replicate changes from one Cozy to the others.
_id
: its identifier is the doctype and id of the referenced objet, separated by a/
(e.g.io.cozy.contacts/c1f5dae4-0d87-11e8-b91b-1f41c005768b
)_rev
: the CouchDB default revision for this document (not very meaningful, it’s here to avoid concurrency issues)revisions
: a tree with the last known_rev
s of the referenced objectinfos
, a map of sharing ids →{rule, removed, binary}
rule
says which rule from the sharing must be applied for this documentremoved
will be true for a deleted document, a trashed file, or if the document does no longer match the sharing rulebinary
is a boolean flag that is true only for files (and not even folders) withremoved: false
Example
{
"_id": "io.cozy.files/becbd072f742f5444f5d7837b2f4e323",
"_rev": "1-af3192a67f2bf69e011aa1bda39e6c72",
"revisions": {
"rev": "4-4135d4994981c0041e3c89a681542307"
},
"infos": {
"fffe04ebbec335405161f19133a0cd5c": {
"rule": 0,
"binary": true
}
}
}