Campaigns Service
Manage campaigns within a company, including their statistics, assets, and notes.
The Campaigns service provides full CRUD operations for campaigns, plus specialized methods for managing campaign assets, notes, and viewing dice roll statistics.
Usage
from vclient import campaigns_service
campaigns = campaigns_service(user_id="USER_ID", company_id="COMPANY_ID")
Methods
CRUD Operations
| Method |
Returns |
Description |
get(campaign_id) |
Campaign |
Get a campaign by ID |
create(CampaignCreate, **kwargs) |
Campaign |
Create a new campaign |
update(campaign_id, CampaignUpdate, **kwargs) |
Campaign |
Update a campaign |
delete(campaign_id) |
None |
Delete a campaign |
| Method |
Returns |
Description |
get_page(limit?, offset?) |
PaginatedResponse[Campaign] |
Get a page of campaigns |
list_all() |
list[Campaign] |
Get all campaigns |
iter_all(limit?) |
AsyncIterator[Campaign] |
Iterate through all campaigns |
Statistics
| Method |
Returns |
Description |
get_statistics(campaign_id, num_top_traits?) |
RollStatistics |
Get dice roll statistics |
Assets
| Method |
Returns |
Description |
get_assets_page(campaign_id, limit?, offset?) |
PaginatedResponse[Asset] |
Get a page of assets |
list_all_assets(campaign_id) |
list[Asset] |
Get all assets |
iter_all_assets(campaign_id, limit?) |
AsyncIterator[Asset] |
Iterate through assets |
get_asset(campaign_id, asset_id) |
Asset |
Get an asset |
upload_asset(campaign_id, filename, content) |
Asset |
Upload an asset |
delete_asset(campaign_id, asset_id) |
None |
Delete an asset |
Notes
| Method |
Returns |
Description |
get_notes_page(campaign_id, limit?, offset?) |
PaginatedResponse[Note] |
Get a page of notes |
list_all_notes(campaign_id) |
list[Note] |
Get all notes |
iter_all_notes(campaign_id, limit?) |
AsyncIterator[Note] |
Iterate through notes |
get_note(campaign_id, note_id) |
Note |
Get a note |
create_note(campaign_id, NoteCreate, **kwargs) |
Note |
Create a note |
update_note(campaign_id, note_id, NoteUpdate, **kwargs) |
Note |
Update a note |
delete_note(campaign_id, note_id) |
None |
Delete a note |
Examples
Create and Manage Campaigns
from vclient.models import CampaignCreate, CampaignUpdate
# Create a campaign (preferred: use model object)
request = CampaignCreate(
name="Dark Metropolis",
description="A noir vampire chronicle",
desperation=2,
danger=3
)
campaign = await campaigns.create(request)
print(f"Created campaign: {campaign.name}")
# Alternative: pass fields as kwargs
campaign = await campaigns.create(
name="Dark Metropolis",
description="A noir vampire chronicle"
)
# Update a campaign
update = CampaignUpdate(danger=4)
updated = await campaigns.update(campaign.id, update)
View Statistics
# Get dice roll statistics for a campaign
stats = await campaigns.get_statistics(campaign.id, num_top_traits=10)
print(f"Total rolls: {stats.total_rolls}")
print(f"Success rate: {stats.success_percentage}%")
for trait in stats.top_traits:
print(f" {trait.name}: {trait.count} uses")
Manage Campaign Notes
from vclient.models import NoteCreate, NoteUpdate
# Create a note
note_request = NoteCreate(title="Session 1", content="The story begins...")
note = await campaigns.create_note(campaign.id, note_request)
# List all notes
all_notes = await campaigns.list_all_notes(campaign.id)
# Update a note
update = NoteUpdate(content="Updated content")
await campaigns.update_note(campaign.id, note.id, update)
# Delete a note
await campaigns.delete_note(campaign.id, note.id)
Manage Campaign Assets
# Upload an image
with open("map.png", "rb") as f:
asset = await campaigns.upload_asset(
campaign.id,
filename="campaign_map.png",
content=f.read(),
)
print(f"Uploaded: {asset.public_url}")
# List all assets
all_assets = await campaigns.list_all_assets(campaign.id)
# Or iterate for memory efficiency
async for asset in campaigns.iter_all_assets(campaign.id):
print(asset.original_filename)
# Delete an asset
await campaigns.delete_asset(campaign.id, asset.id)
See Response Models for Campaign, RollStatistics, Asset, Note, and related types.