Strapi Client
Interact with Strapi from Python using the REST API
Install
pip install strapi-client-enhanced
Documentation
Examples
Quick start (sync version):
from strapi_client_enhanced import StrapiClient
with StrapiClient(base_url='YOUR_STRAPI_URL', token='YOUR_STRAPI_TOKEN') as client:
# await strapi.authorize(identifier='user_identifier', password='user_password') # Optional
users = client.get_documents('users', filters={'username': {'$eq': 'Pavel'}})
user_id = users.data[0]['documentId']
client.update_document('users', user_id, data={'username': 'Mark'})
# support upsert
response = await client.upsert_document(
plural_api_id="users",
data=data,
unique_value="slug"
unique_value="just"
)
Quick start (async version):
import asyncio
from strapi_client_enhanced import StrapiClientAsync
async def main():
async with StrapiClientAsync(base_url='YOUR_STRAPI_URL', token='YOUR_STRAPI_TOKEN') as client:
# await strapi.authorize(identifier='user_identifier', password='user_password') # Optional
users = await client.get_documents('users', filters={'username': {'$eq': 'Pavel'}})
user_id = users.data[0]['documentId']
await client.update_document('users', user_id, data={'username': 'Mark'})
asyncio.run(main())
Quick start with SmartDocument ORM
import asyncio
from strapi_client_enhanced import StrapiClientAsync, SmartDocument, MediaImageDocument
class User(SmartDocument):
__singular_api_id__ = 'user'
username: str
first_name: str
photo: MediaImageDocument
class Session(SmartDocument):
uid: str
user: User | None
async def main():
async with StrapiClientAsync(base_url='YOUR_STRAPI_URL', token='YOUR_STRAPI_TOKEN') as client:
# Get with relations and media by ID
user1 = await User.get_document(client, document_id='YOUR_DOCUMENT_ID')
print(user1.photo)
# List documents with automatic population
sessions = await Session.get_documents(client, sort=['created_at'])
for session in sessions:
print(session.user.photo if session.user else 'No user')
# Find one document
user1 = await User.get_first_document(client, filters={'username': 'Mark'})
if user1:
print(user1)
asyncio.run(main())
Quick start with ActiveDocument ORM (experimental)
Relations and upserts are supported in experimental mode.
import asyncio
from strapi_client_enhanced import StrapiClientAsync, ActiveDocument, DocumentField
class User(ActiveDocument):
username: str = DocumentField(unique=True)
first_name: str
class Session(ActiveDocument):
uid: str = DocumentField(unique=True)
user: User | None = DocumentField(default=None, relation=True)
async def main():
async with StrapiClientAsync(base_url='YOUR_STRAPI_URL', token='YOUR_STRAPI_TOKEN') as client:
# Update existing document
user1 = await User.get_document(client, document_id='YOUR_DOCUMENT_ID')
user1.first_name = 'Mark'
await user1.update_document(client)
# Create or update document with relation
session1 = await Session(uid='123', user=user1).upsert_document(client)
await session1.refresh(client) # populate fields from Strapi
# Create and delete document
user2 = await User(username='pavel', first_name='Pavel').create_document(client)
await user2.delete_document(client)
asyncio.run(main())
Development
Create new release
Push changes to 'main' branch following Conventional Commits.
Update documentation
docs folder is being updated automatically by GitHub Actions when source files are changed.
Metadata
Release files for strapi-client-enhanced 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| strapi_client_enhanced-1.0.2.tar.gz | 26.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| strapi_client_enhanced-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 52.5 kB
Release files / strapi_client_enhanced-1.0.2.tar.gz
| Download URL | strapi_client_enhanced-1.0.2.tar.gz |
|---|---|
| Size | 26.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5ab51b0ae2f1b5af377552cad68dbfe9529a5f8d57dd47acad36bef16b0caf6c
|
|
BLAKE2b-256 checksum How to use checksums |
c21bb51f5588d9a0e57a1efe6747938054c8509771522ed83f3d7b7e418f6cb6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|
Release files / strapi_client_enhanced-1.0.2-py3-none-any.whl
| Download URL | strapi_client_enhanced-1.0.2-py3-none-any.whl |
|---|---|
| Size | 25.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
68290160c2cd0bf9f5d13661893aebecd70dde10527da08432d36e9b6b7be9fc
|
|
BLAKE2b-256 checksum How to use checksums |
2694a54887b2e83a8b1bdbff1f5f8161c2b8739a36b57e154735c9e06ebcadb3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|