A Python wrapper for the Permutive API.
Project description
PermutiveAPI
PermutiveAPI is a Python module to interact with the Permutive API. It provides a set of classes and methods to manage users, imports, cohorts, and workspaces within the Permutive ecosystem.
Table of Contents
Installation
You can install the PermutiveAPI module using pip:
pip install PermutiveAPI --upgrade
Configuration
Before using the library, you need to configure your credentials.
- Copy the environment file:
cp _env .env
- Set your credentials path:
Edit the
.envfile and set thePERMUTIVE_APPLICATION_CREDENTIALSenvironment variable to the absolute path of your workspace JSON file.PERMUTIVE_APPLICATION_CREDENTIALS="/absolute/path/to/your/workspace.json"
The workspace credentials JSON can be downloaded from the Permutive dashboard under Settings → API keys. Save the file somewhere secure. The apiKey inside this JSON is used to authenticate API calls.
Usage
Importing the Module
To use the PermutiveAPI module, import the necessary classes. The main classes are exposed at the top level of the PermutiveAPI package:
from PermutiveAPI import (
Alias,
Cohort,
Identity,
Import,
Segment,
Source,
Workspace,
)
Managing Workspaces
The Workspace class is the main entry point for interacting with your Permutive workspace.
# Create a workspace instance
# You can pass credentials explicitly or let the client find them in your .env file
workspace = Workspace(workspace_id="your-workspace-id", api_key="your-api-key")
# List all cohorts in a workspace
all_cohorts = workspace.list_cohorts(include_child_workspaces=True)
for cohort in all_cohorts:
print(f"Cohort ID: {cohort.id}, Name: {cohort.name}")
# List all imports in a workspace
all_imports = workspace.imports
for imp in all_imports:
print(f"Import ID: {imp.id}, Status: {imp.status}")
# List segments for a specific import
segments_in_import = workspace.list_segments(import_id="your-import-id")
for segment in segments_in_import:
print(f"Segment ID: {segment.id}, Name: {segment.name}")
Managing Cohorts
You can create, retrieve, and list cohorts using the Cohort class.
# List all cohorts
all_cohorts = Cohort.list(api_key="your_api_key")
print(f"Found {len(all_cohorts)} cohorts.")
# Get a specific cohort by ID
cohort_id = "your-cohort-id"
cohort = Cohort.get_by_id(id=cohort_id, api_key="your_api_key")
print(f"Retrieved cohort: {cohort.name}")
# Create a new cohort
new_cohort = Cohort(
name="High-Value Customers",
query={"type": "segment", "id": "segment-id-for-high-value-customers"}
)
created_cohort = new_cohort.create(api_key="your_api_key")
print(f"Created cohort with ID: {created_cohort.id}")
Managing Segments
The Segment class allows you to interact with audience segments.
# List all segments for a given import
import_id = "your-import-id"
segments = Segment.list(api_key="your_api_key", import_id=import_id)
print(f"Found {len(segments)} segments in import {import_id}.")
# Get a specific segment by ID
segment_id = "your-segment-id"
segment = Segment.get_by_id(id=segment_id, api_key="your_api_key")
print(f"Retrieved segment: {segment.name}")
Managing Imports
You can list and retrieve imports using the Import class.
# List all imports
all_imports = Import.list(api_key="your_api_key")
for imp in all_imports:
print(f"Import ID: {imp.id}, Status: {imp.status}, Source: {imp.source.name}")
# Get a specific import by ID
import_id = "your-import-id"
import_instance = Import.get_by_id(id=import_id, api_key="your_api_key")
print(f"Retrieved import: {import_instance.id}, Source: {import_instance.source.name}")
Managing Users
The Identity and Alias classes are used to manage user profiles.
# Create an alias for a user
alias = Alias(id="user@example.com", tag="email", priority=1)
# Create an identity for the user
identity = Identity(user_id="internal-user-id-123", aliases=[alias])
# Send the identity information to Permutive
# The private_key is different from the api_key and is used for this specific endpoint
try:
identity.identify(private_key="your-private-key")
print("Successfully identified user.")
except Exception as e:
print(f"Error identifying user: {e}")
Development
To set up a development environment, install the required dependencies:
pip install -r requirements-dev.txt
Running Tests
Before committing any changes, please run the following checks to ensure code quality and correctness.
Style Checks:
pydocstyle PermutiveAPI
black --check .
Static Type Analysis:
pyright PermutiveAPI
Unit Tests and Coverage:
pytest -q --cov=PermutiveAPI --cov-report=term-missing --cov-fail-under=70
All checks must pass before a pull request can be merged.
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for development setup and pull request guidelines.
License
This project is licensed under the MIT License. See the LICENSE file for details.
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 permutiveapi-5.2.5.tar.gz.
File metadata
- Download URL: permutiveapi-5.2.5.tar.gz
- Upload date:
- Size: 29.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
499ac42725251e3d429e8f4b3637a64fc865178abb2e187ab8e703b6e5313c56
|
|
| MD5 |
7c8ad6c853a4dc5c5fb6887346928500
|
|
| BLAKE2b-256 |
720ea7976ea789fd54797c67c7c85b232336ed9352c5e5f139bf36cfd2bd1f02
|
File details
Details for the file permutiveapi-5.2.5-py3-none-any.whl.
File metadata
- Download URL: permutiveapi-5.2.5-py3-none-any.whl
- Upload date:
- Size: 25.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b3efd830b1c109091971d88fe4247a4d5b9774b9e9eb0a4f584ccc9d904fa3b
|
|
| MD5 |
141541060719dfbf63397061ad06ea6b
|
|
| BLAKE2b-256 |
cd62faf4730a083d2561f7d05783dd7513d12142b5c4a7d54995234570004d54
|