Python SDK for integrating Velt comments, reactions, attachments, and user management into Django applications
Project description
Velt Python SDK
A Python SDK for integrating Velt comments, reactions, attachments, and user management into Django applications with MongoDB backend.
Installation
pip install velt-py
Requirements
- Python 3.8+
- Django 4.2.26+
- MongoDB (Percona Server or MongoDB Atlas)
- PyMongo 4.6.3
- MongoEngine 0.27.0
Quick Start
1. Initialize the SDK
from velt_py import VeltSDK
# Initialize SDK with your MongoDB configuration
sdk = VeltSDK.initialize(config={
'database': {
'host': 'localhost:27017',
'username': 'your-username',
'password': 'your-password',
'auth_database': 'admin',
'database_name': 'velt-integration' # Your database name
},
'apiKey': 'your-velt-api-key', # Optional: can use VELT_API_KEY env var
'authToken': 'your-velt-auth-token' # Optional: can use VELT_AUTH_TOKEN env var
})
2. Use Services
The SDK supports different backends. For self-hosted installations, use the selfHosting backend:
# Comments
result = sdk.selfHosting.comments.getComments(
organizationId='org-123',
commentAnnotationIds=['ann-1', 'ann-2'],
documentIds=['doc-1']
)
sdk.selfHosting.comments.saveComments(
organizationId='org-123',
commentAnnotation={
'ann-1': {
'comments': {'comment-1': {'commentId': 'comment-1', 'commentText': 'Hello'}},
'metadata': {}
}
},
documentId='doc-1'
)
sdk.selfHosting.comments.deleteComment(
organizationId='org-123',
commentAnnotationId='ann-1'
)
# Reactions
result = sdk.selfHosting.reactions.getReactions(
organizationId='org-123',
reactionAnnotationIds=['reaction-1'],
documentIds=['doc-1']
)
sdk.selfHosting.reactions.saveReactions(
organizationId='org-123',
reactionAnnotation={
'reaction-1': {
'icon': '👍',
'metadata': {}
}
},
documentId='doc-1'
)
# Attachments
result = sdk.selfHosting.attachments.getAttachment(
organizationId='org-123',
attachmentId=12345
)
sdk.selfHosting.attachments.saveAttachment(
organizationId='org-123',
attachment={
'attachmentId': 12345,
'name': 'document.pdf',
'mimeType': 'application/pdf',
'base64Data': '...',
'size': 1024
},
documentId='doc-1'
)
# Users
result = sdk.selfHosting.users.getUsers(
organizationId='org-123',
userIds=['user-1', 'user-2']
)
sdk.selfHosting.users.saveUser(
organizationId='org-123',
user={
'userId': 'user-1',
'name': 'John Doe',
'email': 'john@example.com',
'photoUrl': 'https://example.com/photo.jpg'
}
)
# Token
result = sdk.selfHosting.token.getToken(
organizationId='org-123',
userId='user-1',
email='john@example.com',
isAdmin=False
)
token = result['data']['token']
Response Format
All service methods return a standardized response format:
Success Response
{
'success': True,
'data': {
# Service-specific data
}
}
Error Response
{
'success': False,
'error': 'Human-readable error message',
'errorCode': 'ERROR_CODE' # Optional
}
Data Isolation
All methods require organizationId as the first parameter to ensure data isolation between organizations. The SDK automatically filters all queries by organizationId.
API Reference
CommentService
getComments(organizationId, commentAnnotationIds=None, documentIds=None)- Get commentssaveComments(organizationId, commentAnnotation, documentId=None)- Save commentsdeleteComment(organizationId, commentAnnotationId)- Delete a comment
ReactionService
getReactions(organizationId, reactionAnnotationIds=None, documentIds=None)- Get reactionssaveReactions(organizationId, reactionAnnotation, documentId=None)- Save reactionsdeleteReaction(organizationId, reactionAnnotationId)- Delete a reaction
AttachmentService
getAttachment(organizationId, attachmentId)- Get an attachmentsaveAttachment(organizationId, attachment, documentId=None)- Save an attachmentdeleteAttachment(organizationId, attachmentId)- Delete an attachment
UserService
getUsers(organizationId, userIds)- Get users by IDssaveUser(organizationId, user)- Save a user
TokenService
getToken(organizationId, userId, email=None, isAdmin=None)- Get authentication token
Configuration
Database Configuration
The SDK accepts database configuration in the following format:
config = {
'database': {
'host': 'localhost:27017', # or 'mongodb://...' connection string
'username': 'your-username',
'password': 'your-password',
'auth_database': 'admin',
'database_name': 'velt-integration' # Your database name,
# Optional: override with full connection string
# 'connection_string': 'mongodb://...'
}
}
Environment Variables
You can also use environment variables for API credentials:
VELT_API_KEY- Velt API keyVELT_AUTH_TOKEN- Velt auth token
Error Handling
The SDK uses custom exceptions:
VeltSDKError- Base exceptionVeltDatabaseError- Database-related errorsVeltValidationError- Validation errorsVeltTokenError- Token-related errors
from velt_py import VeltSDKError, VeltDatabaseError
try:
result = sdk.selfHosting.comments.getComments(organizationId='org-123')
except VeltDatabaseError as e:
print(f"Database error: {e}")
except VeltSDKError as e:
print(f"SDK error: {e}")
Testing
Install development dependencies:
pip install velt-py[dev]
Run tests:
pytest tests/
License
MIT
Support
For issues and questions, please contact support@velt.dev or visit https://docs.velt.dev
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file velt_py-0.1.6.tar.gz.
File metadata
- Download URL: velt_py-0.1.6.tar.gz
- Upload date:
- Size: 36.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8310bfb1d3b64210ee536ea34e7e50b4439a6a7b2a83e102180439581d7eed4d
|
|
| MD5 |
757b82ea0d255fa03789ff3e2b7593a9
|
|
| BLAKE2b-256 |
a8dd8d92a308877b4dd06ac676ac33d1fa09a54698fb3d33ba5c01d01a7c54d6
|
File details
Details for the file velt_py-0.1.6-py3-none-any.whl.
File metadata
- Download URL: velt_py-0.1.6-py3-none-any.whl
- Upload date:
- Size: 54.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba76e9e46d915602d2a794549cdf6c04d2d585809f02e3b7a82b03df2a5ee5d3
|
|
| MD5 |
bab9c14bdfc1821697e2853dcaf17750
|
|
| BLAKE2b-256 |
09e05893b42b47dcd82756c1b16c350046b650e132379b38e1811d76be6efa67
|