API¶
api API¶
-
class
pyspreedly.api.Client(token, site_name)[source]¶ -
class
Client(token, site_name)¶
Create an object to manage queries for a Client on a given site.
Parameters: - token – API access token for authorization.
- site_name – the site_name registered with spreedly.
-
Client.add_fee(subscriber_id, name, description, group, amount)[source]¶ -
add_fee(subscriber_id, name, description, group, amount)[source]
Add a fee to a user with subscriber_id :param subscriber_id: the id of the subscriber :param name: the name of the fee (eg - Excess Bandwidth Charge) :param description: a description of the charge :param group: a group to add this charge too :param amount: the amount the charge is for :returns: the response object
-
-
Client.allow_free_trial(subscriber_id)[source]¶ -
allow_free_trial(subscriber_id)[source]
programatically allow for a new free trial :param subscriber_id: the id of the subscriber :returns: subscriber data as dictionary if all good, :raises: HTTPError if not so good (non-200)
-
-
Client.cleanup()[source]¶ -
cleanup()[source]
Removes ALL subscribers. NEVER USE IN PRODUCTION! (should only Remove test users...) :returns: status code
-
-
Client.complimentary_time_extensions(subscriber_id, duration, duration_units)[source]¶ -
complimentary_time_extension(subscriber_id, duration, duration_units)¶
corrisponds to adding complimentary time extension to a subscriber
-
-
Client.create_complimentary_subscription(subscriber_id, duration, duration_units, feature_level, start_time=None, amount=None)[source]¶ -
create_complimentary_subscription(subscriber_id, duration, duration_units, feature_level[, start_time=None, amount=None])[source]
corrisponds to adding corrisponding subscription to a subscriber :param subscriber_id: Subscriber ID :param duration: Duration (unitless) :param duration_units: Unit for above (days, weeks, months i think) :param feature_level string: what feature level this is at :param start_time: If assgining a value for pro-rating purpose, you need this start datetime :type start_time: datetime.datetime or None :param amount: How much this comp is worth :type amount: float or None
-
-
Client.create_subscriber(customer_id, screen_name)[source]¶ Creates a subscription :param customer_id: Customer ID :param screen_name: Customer’s screen name :returns: Data for created customer :raises: HTTPError if response code isn’t 201
-
Client.delete_subscriber(id)[source]¶ -
delete_subscriber(id)[source]
delete a test subscriber :param id: user id :returns: status code
-
-
Client.get_info(subscriber_id)[source]¶ -
get_info(subscriber_id)[source]
Parameters: subscriber_id – Id of subscriber to fetch Returns: Data as dictionary Raises: HTTPError if not 200 -
-
Client.get_or_create_subscriber(subscriber_id, screen_name)[source]¶ -
get_or_create_subscriber(subscriber_id, screen_name)[source]
Tries to get info for a subscriber, else creates a new subscriber
-
-
Client.get_plans()[source]¶ get subscription plans for the configured site :returns: data as dict :raises:
HTTPErrorif response is not 200
-
Client.get_signup_url(subscriber_id, plan_id, screen_name, token=None)[source]¶ -
get_signup_url(subscriber_id, plan_id, screen_name)[source]
Subscribe a user to the site plan on a free trial
subscribe a user to a plan, either trial or not :param subscriber_id: ID of the subscriber :param plan_id: subscription plan ID :param screen_name: user screen name :param token: customer token or None - if passed use the token version
of the urlReturns: url for subscription -
-
Client.query(url, data=None, action='get')[source]¶ -
query(url[, data=None, put='get'])[source]
which has the problem that it doesn’t check if there is data for PUT, and is hard to read.
status_codes are not checked here, and should be handled by the caller.
Delete is only supported on test users
Parameters: - url – the api url you wish to reach (not incuding site/version)
- data (UTF-8 encoded XML or None) – the data to send in the request. Default to None
- action – one of ‘get’, ‘post’, ‘put’ and ‘delete’. Case insensitive, Default ‘get’
Returns: response object
Return type: requestsresponse object-
-
Client.set_info(subscriber_id, **kw)[source]¶ this corrisponds to the update-subscriber action. passed kw args are placed into the xml data (not sure how the -/_ are dealt with though)
There is a design flaw atm where sclient.set_info(sclient.get_info(123)) will not work at all as the keys are all different
-
Client.subscribe(subscriber_id, plan_id=None)[source]¶ -
subscribe(subscriber_id, plan_id)[source]
Subscribe a user to the site plan on a free trial
subscribe a user to a free trial plan. :param subscriber_id: ID of the subscriber :parma plan_id: subscription plan ID :returns: dictionary with xml data if all is good :raises: HTTPError if response status not 200
-
-
class