openmeter / api /client /python /examples /sync /subscription.py
Leon4gr45's picture
Upload folder using huggingface_hub
048b1e8 verified
Raw
History Blame Contribute Delete
2.74 kB
from os import environ
from typing import Optional
from openmeter import Client
from openmeter.models import (
Metadata,
PlanSubscriptionCreate,
PlanReferenceInput,
SubscriptionStatus,
)
from corehttp.exceptions import HttpResponseError
ENDPOINT: str = environ.get("OPENMETER_ENDPOINT") or "https://openmeter.cloud"
token: Optional[str] = environ.get("OPENMETER_TOKEN")
customer_key: str = environ.get("OPENMETER_CUSTOMER_KEY") or "acme-corp-1"
plan_key: str = environ.get("OPENMETER_PLAN_KEY") or "free"
client = Client(
endpoint=ENDPOINT,
token=token,
)
def main() -> None:
try:
# Create a subscription for the customer using the free plan
print(f"Creating subscription for customer '{customer_key}' with plan '{plan_key}'...")
subscription_create = PlanSubscriptionCreate(
plan=PlanReferenceInput(
key=plan_key,
),
name="Free Plan Subscription",
description="Subscription to the free plan for Acme Corporation",
customer_key=customer_key,
metadata=Metadata(
{
"source": "example",
"environment": "development",
}
),
)
subscription = client.subscriptions.create(subscription_create)
print(f"Subscription created successfully with ID: {subscription.id}")
print(f"Subscription name: {subscription.name}")
print(f"Subscription status: {subscription.status}")
print(f"Customer ID: {subscription.customer_id}")
print(f"Active from: {subscription.active_from}")
print(f"Active to: {subscription.active_to}")
print(f"Currency: {subscription.currency}")
print(f"Billing cadence: {subscription.billing_cadence}")
# Retrieve the subscription to verify
retrieved_subscription = client.subscriptions.get_expanded(subscription.id)
print(f"\nRetrieved subscription: {retrieved_subscription.name}")
print(f"Status: {retrieved_subscription.status}")
if retrieved_subscription.plan:
print(f"Plan key: {retrieved_subscription.plan.key}")
print(f"Plan version: {retrieved_subscription.plan.version}")
# List subscriptions for the customer
print(f"\nListing subscriptions for customer '{customer_key}'...")
subscriptions_response = client.customers.list_customer_subscriptions(
customer_key, status=[SubscriptionStatus.ACTIVE]
)
for sub in subscriptions_response.items_property:
print(f"\t{sub.name} (ID: {sub.id}, Status: {sub.status})")
except HttpResponseError as e:
print(f"Error: {e}")
main()