A collection in R2R is a logical grouping of users and documents that allows for efficient access control and organization. Collections enable you to manage permissions and access to documents at a collection level, rather than individually.

R2R provides a comprehensive set of collection features, allowing you to implement efficient access control and organization of users and documents in your applications.

Collection permissioning in R2R is still under development and as a result the API will likely evolve.

Collection creation and Management

Create a Collection

Create a new collection with a name and optional description:

create_collection_response = client.create_collection("Marketing Team", "Collection for marketing department")

Get Collection details

Retrieve details about a specific collection:

collection_details = client.get_collection('123e4567-e89b-12d3-a456-426614174000')

Update a Collection

Update a collection’s name or description:

update_result = client.update_collection('123e4567-e89b-12d3-a456-426614174000',
                                    name="Updated Marketing Team",
                                    description="New description for marketing team")

List Collections

Get a list of all collections:

collections_list = client.list_collections()

User Management in Collections

Add User to Collection

Add a user to a collection:

add_user_result = client.add_user_to_collection('456e789f-g01h-34i5-j678-901234567890', '123e4567-e89b-12d3-a456-426614174000')

Remove User from Collection

Remove a user from a collection:

remove_user_result = client.remove_user_from_collection('456e789f-g01h-34i5-j678-901234567890', '123e4567-e89b-12d3-a456-426614174000')

List Users in Collection

Get a list of all users in a specific collection:

users_in_collection = client.get_users_in_collection('123e4567-e89b-12d3-a456-426614174000')

Get User’s Collections

Get all collections that a user is a member of:

user_collections = client.user_collections('456e789f-g01h-34i5-j678-901234567890')

Document Management in Collections

Assign Document to Collection

Assign a document to a collection:

assign_doc_result = client.assign_document_to_collection('789g012j-k34l-56m7-n890-123456789012', '123e4567-e89b-12d3-a456-426614174000')

Remove Document from Collection

Remove a document from a collection:

remove_doc_result = client.remove_document_from_collection('789g012j-k34l-56m7-n890-123456789012', '123e4567-e89b-12d3-a456-426614174000')

List Documents in Collection

Get a list of all documents in a specific collection:

docs_in_collection = client.documents_in_collection('123e4567-e89b-12d3-a456-426614174000')

Get Document’s Collections

Get all collections that a document is assigned to:

document_collections = client.document_collections('789g012j-k34l-56m7-n890-123456789012')

Advanced Collection Management

Collection Overview

Get an overview of collections, including user and document counts:

collections_overview = client.collections_overview()

Delete a Collection

Delete a collection:

delete_result = client.delete_collection('123e4567-e89b-12d3-a456-426614174000')

Pagination and Filtering

Many collection-related methods support pagination and filtering:

# List collections with pagination
paginated_collection = client.list_collections(offset=10, limit=20)

# Get users in a collection with pagination
paginated_users = client.get_users_in_collection('123e4567-e89b-12d3-a456-426614174000', offset=5, limit=10)

# Get documents in a collection with pagination
paginated_docs = client.documents_in_collection('123e4567-e89b-12d3-a456-426614174000', offset=0, limit=50)

# Get collections overview with specific collection IDs
specific_collections_overview = client.collections_overview(collection_ids=['id1', 'id2', 'id3'])

Security Considerations

When implementing collection permissions, consider the following security best practices:

  1. Always use HTTPS in production to encrypt data in transit.
  2. Implement the principle of least privilege by assigning the minimum necessary permissions to users and collections.
  3. Regularly audit collection memberships and document assignments.
  4. Ensure that only authorized users (e.g., admins) can perform collection management operations.
  5. Implement comprehensive logging for all collection-related actions.
  6. Consider implementing additional access controls or custom roles within your application logic for more fine-grained permissions.

For more advanced use cases or custom implementations, refer to the R2R documentation or reach out to the community for support.