Skip to main content

Python interface for the Atomx API on https://api.atomx.com

Project description

Python Atomx Api
================

Interface for the atomx rest api.

For more information read the full
`documentation online <http://atomx-api-python.readthedocs.org/en/latest/index.html>`_,
report bugs in `github <https://github.com/atomx/atomx-api-python>`_
or see the `atomx wiki <http://wiki.atomx.com/doku.php?id=api>`_


Example Usage
-------------

.. code-block:: python

from atomx import Atomx

# create atomx session
atomx = Atomx('user@example.com', 'password')

# get 10 creatives
creatives = atomx.get('Creatives', limit=10)
# the result is a list of `atomx.models.Creative` models
# that you can easily inspect, manipulate and update
for creative in creatives:
print('Creative ID: {c.id}, state: {c.state}, '
'name: {c.name}, title: {c.title}'.format(c=creative))

# update title for the first creative in list
creative = creatives[0]
creative.title = 'shiny new title'
# the session is inherited from `atomx` that made the get request
creative.save()


# create a new profile
from atomx.models import Profile
profile = Profile(advertiser_id=23, name='test profile')
# Note that you have to pass it a valid `Atomx` session for create
# or use `atomx.create(profile)`
profile.create(atomx)

# now you could alter and update it like the creative above
profile.name = 'changed name'
profile.save()


# you can also get attributes
profiles = atomx.get('advertiser', 88, 'profiles')
# equivalent is to pass the complete resource path as string instead of arguments
profiles = atomx.get('advertiser/88/profiles') # same as above
# profiles is now a list of `atomx.models.Profile` that you can
# read, update, etc again.
profiles[0].click_frequency_cap_per = 86400
profiles[0].save()


# working with search
s = atomx.search('mini*')
# s is now a dict with lists of search results for the different models
# with the model id and name

publisher = s['publisher'][0] # get the first publisher..
publisher.reload() # .. and load all the data
print(publisher) # now all publisher data is there


# reporting example
# get a report for a specific publisher
report = atomx.report(scope='publisher', groups=['hour_formatted'], sums=['impressions', 'clicks'], where=[['publisher_id', '==', 42]], from_='2015-02-08 00:00:00', to='2015-02-09 00:00:00', timezone='America/Los_Angeles')
# check if report is ready
print(report.is_ready)
# if pandas is installed you can get the pandas dataframe with `report.pandas`
# you can also get the report csv in `report.content` without pandas
df = report.pandas
# set index to datetime
import pandas as pd
df.index = pd.to_datetime(df.pop('hour_formatted'))
# calculate mean, median, std per hour
means = df.resample('H', how=['mean', 'median', 'std'])
# and plot impression and clicks per day
means['impressions'].plot()
means['clicks'].plot()


Installation
------------

To install the python atomx api, simply:

.. code-block:: bash

$ pip install atomx

or if you want to use ipython notebook and reporting functionality:

.. code-block:: bash

$ pip install atomx[report]


1.3
---

- Add :meth:`atomx.Atomx.delete` to send a ``HTTP DELETE`` request to the api
- :meth:`atomx.Atomx.get` and :meth:`atomx.Atomx.delete` accept non-keyword arguments
that are used to compute the final resource path
- Add `emails` parameter to :meth:`atomx.Atomx.report`
- Model attributes that are dates get automatically converted to a python :mod:`datetime`
- When saving a model, dates, sets and decimals get automatically converted
to there json counterpart
- Add `save_response` parameter to :class:`atomx.Atomx` to save the response meta data
of the last api call.

1.2
---

- You can now remove model attributes with `del`
- Add :meth:`atomx.models.Report.csv` property that returns the report content as a list
- Save logged in user as `user` property to :class:`atomx.Atomx`
- Add network reports
- Try to determine report scope from user access rights if no scope was specified


1.1
---

- Fix: setup.py not working under some environments (`open` used wrong codec)
- Add SellerProfile model
- Add `offset` parameter to :meth:`atomx.models.Report.get`


1.0
---

- First release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

atomx-1.3.tar.gz (25.9 kB view details)

Uploaded Source

Built Distribution

atomx-1.3-py2.py3-none-any.whl (15.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file atomx-1.3.tar.gz.

File metadata

  • Download URL: atomx-1.3.tar.gz
  • Upload date:
  • Size: 25.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for atomx-1.3.tar.gz
Algorithm Hash digest
SHA256 1a3f8c3d73eaebd5fe9d1aadcafdec9adbdf085c7998db09eae21c54419c4591
MD5 229666fe164196849a322ed3be92915e
BLAKE2b-256 6fd10f5fa20063cfcf36b2234fd836919f0c355df8a4f7ee0f8cc86ba4e0485a

See more details on using hashes here.

File details

Details for the file atomx-1.3-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for atomx-1.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 1d97220630198b22e2928b6581335844e4fe6f63638fd2aaccd523c64d91d673
MD5 bcf516ea547558f3a698e4af948c01ed
BLAKE2b-256 198efea7d966584933223665e8bdb657c0de4dfa0554c95711149d277bc1456c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page