Official FlexPrice Python SDK
Project description
FlexPrice Python SDK
This is the Python client library for the FlexPrice API.
Installation
pip install flexprice
Usage
"""
FlexPrice Python SDK Example
This example demonstrates how to use the FlexPrice Python SDK
to interact with the FlexPrice API.
"""
import os
import time
import datetime
from pprint import pprint
# Import the FlexPrice SDK
import flexprice
from flexprice.api import customers_api, events_api
from flexprice.models.dto_create_customer_request import DtoCreateCustomerRequest
from flexprice.models.dto_ingest_event_request import DtoIngestEventRequest
# Optional: Load environment variables from .env file
from dotenv import load_dotenv
load_dotenv()
def run_example():
"""Main example function demonstrating FlexPrice SDK usage."""
print("Starting FlexPrice Python SDK example...")
try:
# Configure the API client
api_key = os.getenv("FLEXPRICE_API_KEY")
api_host = os.getenv("FLEXPRICE_API_HOST", "api-dev.cloud.flexprice.io")
if not api_key:
raise ValueError("FLEXPRICE_API_KEY environment variable is required")
print("Using API Key:", api_key[:4] + "..." + api_key[-4:]) # Show just the start and end for security
# Configure API key authorization
configuration = flexprice.Configuration(
host=f"https://{api_host}/v1"
)
configuration.api_key['x-api-key'] = api_key
# Create API client
with flexprice.ApiClient(configuration) as api_client:
# Set the API key header
api_client.default_headers['x-api-key'] = api_key
# Add User-Agent header
configuration.user_agent = "FlexPricePythonSDK/1.0.0 Example"
# Print actual headers for debugging
# Create API instances
events_api_instance = events_api.EventsApi(api_client)
# Generate a unique customer ID for this example
customer_id = f"sample-customer-{int(time.time())}"
print(f"Creating customer with ID: {customer_id}...")
# Step 1: Create an event
print("Creating event...")
event_request = DtoIngestEventRequest(
event_name="Sample Event",
external_customer_id=customer_id,
properties={
"source": "python_sample_app",
"environment": "test",
"timestamp": datetime.datetime.now().isoformat()
},
source="python_sample_app"
)
event_result = events_api_instance.events_post(event=event_request)
print(f"Event created successfully! ID: {event_result.event_id if hasattr(event_result, 'event_id') else 'unknown'}")
# Step 2: Retrieve events for this customer
print(f"Retrieving events for customer {customer_id}...")
events_response = events_api_instance.events_get(external_customer_id=customer_id)
# Check if events are available in the response
if hasattr(events_response, 'events') and events_response.events:
print(f"Found {len(events_response.events)} events:")
for i, event in enumerate(events_response.events):
print(f"Event {i+1}: {event.id if hasattr(event, 'id') else 'unknown'} - {event.event_name if hasattr(event, 'event_name') else 'unknown'}")
print(f"Properties: {event.properties if hasattr(event, 'properties') else {}}")
else:
print("No events found or events not available in response.")
print("Example completed successfully!")
except flexprice.ApiException as e:
print(f"\n=== API Exception ===")
print(f"Status code: {e.status}")
print(f"Reason: {e.reason}")
print(f"HTTP response headers: {e.headers}")
print(f"HTTP response body: {e.body}")
except ValueError as e:
print(f"Value error: {e}")
except Exception as e:
print(f"Unexpected error: {e}")
Running the Example
To run the provided example:
-
Clone the repository:
git clone https://github.com/flexprice/python-sdk.git cd python-sdk/examples
-
Create a virtual environment and install dependencies:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt
-
Create a
.envfile with your API credentials:cp .env.sample .env # Edit .env with your API key
-
Run the example:
python example.py
Features
- Complete API coverage
- Strong type hints
- Detailed documentation
- Error handling
- Asynchronous support
Documentation
For detailed API documentation, refer to the code comments and the official FlexPrice API documentation.
Advanced Usage
Handling Errors
The SDK provides detailed error information through exceptions:
try:
# API call
result = client.some_api_call()
except flexprice.ApiException as e:
print(f"API exception: {e}")
print(f"Status code: {e.status}")
print(f"Response body: {e.body}")
except Exception as e:
print(f"General exception: {e}")
Asynchronous Usage
The SDK can be used asynchronously with libraries like asyncio:
import asyncio
import flexprice
from flexprice.api import customers_api
async def get_customer(customer_id):
configuration = flexprice.Configuration(
host="https://api.flexprice.io"
)
configuration.api_key['x-api-key'] = "your-api-key"
async with flexprice.ApiClient(configuration) as api_client:
api = customers_api.CustomersApi(api_client)
return await api.customers_id_get(id=customer_id)
# Run with asyncio
customer = asyncio.run(get_customer("customer-123"))
print(customer)
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 flexprice-1.0.1.tar.gz.
File metadata
- Download URL: flexprice-1.0.1.tar.gz
- Upload date:
- Size: 98.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a8562837888c5b6090dea1cf620f281530075b53c86d9f1a43d175a71a8d325
|
|
| MD5 |
da243d3d8b66af2bff3ba63401cd1a73
|
|
| BLAKE2b-256 |
34fecb0e4ff255410eae399793e16d1904894bd1852d299c19c53cb7df4fb418
|
File details
Details for the file flexprice-1.0.1-py3-none-any.whl.
File metadata
- Download URL: flexprice-1.0.1-py3-none-any.whl
- Upload date:
- Size: 267.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
847e18dbbe8b22d3c2c97d0fbf61942609058e83da09cb4e637ddf0ac1619dfc
|
|
| MD5 |
f89ba9b3a39b0bd43130b4aa06b94b15
|
|
| BLAKE2b-256 |
ef80014fdf3d0a3485e75c3331a98dfaae90093e358f4c704745e7e9883418dd
|