Delighted API Python Client.
Project description
[![Build Status](https://img.shields.io/travis/delighted/delighted-python.svg)](https://travis-ci.org/delighted/delighted-python)
Delighted API Python Client (Beta)
Official Python client for the [Delighted API](https://delighted.com/docs/api).
Installation
pip install --upgrade delighted
or
easy_install --upgrade delighted
Upgrading from delighted-python
If you previously used the python package named delighted-python, please note that the package name is now just delighted.
Configuration
To get started, you need to configure the client with your secret API key.
import delighted delighted.api_key = 'YOUR_API_KEY'
For further options, read the [advanced configuration section](#advanced-configuration).
Note: Your API key is secret, and you should treat it like a password. You can find your API key in your Delighted account, under Settings > API.
Usage
Adding/updating people and scheduling surveys:
# Add a new person, and schedule a survey immediately person1 = delighted.Person.create(email='foo+test1@delighted.com') # Add a new person, and schedule a survey after 1 minute (60 seconds) person2 = delighted.Person.create(email='foo+test2@delighted.com', delay=60) # Add a new person, but do not schedule a survey person3 = delighted.Person.create(email='foo+test3@delighted.com', send=False) # Add a new person with full set of attributes, including a custom question # product name, and schedule a survey with a 30 second delay person4 = delighted.Person.create( email='foo+test4@delighted.com', name='Joe Bloggs', properties={'customer_id': 123, 'country': 'USA', 'question_product_name': 'The London Trench'}, delay=30) # Update an existing person (identified by email), adding a name, without # scheduling a survey updated_person1 = delighted.Person.create(email='foo+test1@delighted.com', name='James Scott', send=False)
Unsubscribing people:
# Unsubscribe an existing person delighted.Unsubscribe.create(person_email='foo+test1@delighted.com')
Listing people who have unsubscribed:
# List all people who have unsubscribed, 20 per page, first 2 pages delighted.Unsubscribe.all delighted.Unsubscribe.all(page=2)
Listing people whose emails have bounced:
# List all people whose emails have bounced, 20 per page, first 2 pages delighted.Bounce.all delighted.Bounce.all(page=2)
Deleting pending survey requests
# Delete all pending (scheduled but unsent) survey requests for a person, by email. delighted.SurveyRequest.delete_pending(person_email='foo+test1@delighted.com')
Adding survey responses:
# Add a survey response, score only survey_response1 = delighted.SurveyResponse.create(person=person1.id, score=10) # Add *another* survey response (for the same person), score and comment survey_response2 = delighted.SurveyResponse.create(person=person1.id, score=5, comment='Really nice.')
Retrieving a survey response:
# Retrieve an existing survey response survey_response3 = delighted.SurveyResponse.retrieve('123')
Updating survey responses:
# Update a survey response score survey_response4 = delighted.SurveyResponse.retrieve('234') survey_response4.score = 10 survey_response4.save # <delighted.SurveyResponse object at 0xabc123> # Update (or add) survey response properties survey_response4.person_properties = {'segment': 'Online'} survey_response4.save # <delighted.SurveyResponse object at 0xabc123> # Update person who recorded the survey response survey_response4.person = '321' survey_response4.save # <delighted.SurveyResponse object at 0xabc123>
Listing survey responses:
# List all survey responses, 20 per page, first 2 pages survey_responses_page1 = delighted.SurveyResponse.all survey_responses_page2 = delighted.SurveyResponse.all(page=2) # List all survey responses, 20 per page, expanding person object survey_responses_page1_expanded = delighted.SurveyResponse.all(expand=['person']) survey_responses_page1_expanded[0].person # <delighted.Person object at 0xabc123> # List all survey responses, 20 per page, for a specific trend (ID: 123) survey_responses_page1_trend = delighted.SurveyResponse.all(trend='123') # List all survey responses, 20 per page, in reverse chronological order (newest first) survey_responses_page1_desc = delighted.SurveyResponse.all(order='desc') # List all survey responses, 100 per page, page 5, with a time range filtered_survey_responses = delighted.SurveyResponse.all(page=5, per_page=100, since=datetime.datetime(2014, 03, 01), until=datetime.datetime(2014, 04, 30))
Retrieving metrics:
# Get current metrics, 30-day simple moving average, from most recent response metrics = delighted.Metrics.retrieve # Get current metrics, 30-day simple moving average, from most recent response, # for a specific trend (ID: 123) metrics = delighted.Metrics.retrieve(trend='123') # Get metrics, for given range metrics = delighted.Metrics.retrieve(since=datetime.date(2013, 10, 01), until=datetime.date(2013, 11, 01))
Advanced configuration & testing
The following options are configurable for the client:
delighted.api_key delighted.api_base_url # default: 'https://api.delighted.com/v1' delighted.http_adapter # default: delighted.HTTPAdapter
By default, a shared instance of delighted.Client is created lazily in delighted.get_shared_client(). If you want to create your own client, perhaps for test or if you have multiple API keys, you can:
# Create an custom client instance, and pass as last argument to resource actions import delighted from delighted import Client client = Client(api_key='API_KEY', api_base_url='https://api.delighted.com/v1', http_adapter=HTTPAdapter()) metrics_from_custom_client = delighted.Metrics.retrieve(client=client) # Or, you can set Delighted.shared_client yourself delighted.shared_client = delighted.Client( api_key='API_KEY', api_base_url='https://api.delighted.com/v1', http_adapter=delighted.HTTPAdapter() ) metrics_from_custom_shared_client = delighted.Metrics.retrieve()
Supported versions
2.6, 2.7, 3.2, 3.3, 3.4
pypy, pypy3
Contributing
Fork it
Create your feature branch (git checkout -b my-new-feature)
Run the tests (python -W always setup.py test)
Commit your changes (git commit -am ‘Add some feature’)
Push to the branch (git push origin my-new-feature)
Create new Pull Request
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
Hashes for delighted-1.1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e01191f228ac067a57316074d1bf5e56e484d80d37ec97b9d6c1524849e04640 |
|
MD5 | 3ea939a9c64b96d7cf1f1dba098e7dde |
|
BLAKE2b-256 | 7b4767dd425fae8d0398806479a5c354d9831096f9ba996bb0d907d4474aa495 |