Python SDK for ContactsManager API authentication and token generation
Project description
ContactsManager Python SDK
A Python SDK for the ContactsManager API that handles authentication and token generation.
Installation
pip install contactsmanager
Usage
from contactsmanager import ContactsManagerClient
# Initialize the client
client = ContactsManagerClient(
api_key="your_api_key",
api_secret="your_api_secret",
org_id="your_org_id"
)
# Generate a token for a user
token_response = client.generate_token(
user_id="user123",
device_info={ # Optional
"device_type": "mobile",
"os": "iOS",
"app_version": "1.0.0"
}
)
print(f"Token: {token_response['token']}")
print(f"Expires at: {token_response['expires_at']}")
Features
- Simple API for generating JWT tokens
- Type hints for better IDE support
- Comprehensive test coverage
- Support for custom token expiration
Advanced Usage
Custom Token Expiration
By default, tokens expire after 24 hours (86400 seconds). You can customize this:
# Generate a token that expires in 1 hour
token_response = client.generate_token(
user_id="user123",
expiration_seconds=3600 # 1 hour
)
Requirements
- Python 3.8+
- PyJWT>=2.0.0
Development
Setting up development environment
# Clone the repository
git clone https://github.com/arpwal/contactmanager.git
cd contactmanager/sdk/py
# Install development dependencies
pip install -e ".[dev]"
# Run tests
pytest
Running Integration Tests
Integration tests validate the SDK against real-world scenarios, including server-side API key validation.
Local Setup
-
Create a
.envfile with your test configuration:# Copy the template file cp env.template .env # Edit the .env file with your credentials # The configuration is a JSON string in the TEST_CONFIG variable TEST_CONFIG='{"api_key":"your_api_key","api_secret":"your_api_secret","org_id":"your_org_id","api_base_url":"https://api.contactsmanager.io"}'
-
Run the integration tests:
./run_integration_tests.sh
Releasing new versions
The SDK uses an automated process for releases:
-
Update the version in
contactsmanager/__init__.pyusing the provided script:./bump_version.sh 0.1.1
-
Commit and push the change to the main branch:
git add contactsmanager/__init__.py git commit -m "Bump version to 0.1.1" git push origin main
-
The GitHub Actions workflow will:
- Run all tests across multiple Python versions
- Run integration tests
- Create a new GitHub release with the version tag
- Build and publish the package to PyPI
Alternatively, you can manually create a new release by:
-
Creating and pushing a git tag:
git tag -a v0.1.1 -m "Release version 0.1.1" git push origin v0.1.1
-
The GitHub Actions workflow will handle the rest
License
MIT License
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 contactsmanager-1.2.1.tar.gz.
File metadata
- Download URL: contactsmanager-1.2.1.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c5fe3813fd185fdc4ad68c4e0f4582cb5f5cdb468d3277e1d7587de59cb4b7d
|
|
| MD5 |
1069762f54c2dc31516cb9f1f2fd251f
|
|
| BLAKE2b-256 |
05c59594a5cab0c2fc669b8d774ead3157da815b595ffb736ab7245b1a8c466e
|
File details
Details for the file contactsmanager-1.2.1-py3-none-any.whl.
File metadata
- Download URL: contactsmanager-1.2.1-py3-none-any.whl
- Upload date:
- Size: 8.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1427325995a879340bd20a564bde5a8618e9bff1c6564a640912494b509d8512
|
|
| MD5 |
7e48a90dbe99fdb07685cf1e4ca761f0
|
|
| BLAKE2b-256 |
8afd8e4d0111bd2feaeb60aed5b70d8ebd81fc8c40e311dd23b0e7ac27a4aff5
|