Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

# onesignal-python
Python client for OneSignal push notification service

[![Build Status](https://travis-ci.org/joaobarbosa/onesignal-python.png?branch=master)](https://travis-ci.org/joaobarbosa/onesignal-python)

## Installing

- ```pip install onesignal-python```
- ```pip install git+https://github.com/joaobarbosa/onesignal-python.git```

## Usage

Example, sending push to specific devices (currently, only way supported).

```python
from requests.exceptions import HTTPError
from onesignalclient.app_client import OneSignalAppClient
from onesignalclient.notification import Notification

player_id = 'sample00-play-er00-id00-000000000000'
os_app_id = 'sample00-app0-id00-0000-000000000000'
os_apikey = 'your-rest-api-key-goes-here'

# Init the client
client = OneSignalAppClient(app_id=os_app_id, app_api_key=os_apikey)

# Creates a new notification
notification = Notification(app_id, Notification.DEVICES_MODE)
notification.include_player_ids = [player_id] # Must be a list!

try:
# Sends it!
result = client.create_notification(notification)
except HTTPError as e:
result = e.response.json()

print(result)
# Success: {'id': '1d63fa3a-2205-314f-a734-a1de7e27cc2a', 'recipients': 1}
# Error: {'errors': ['Invalid app_id format']} - or any other message
```

## Requirements

- Python 3.3+
- ```requirements.txt``` or ```requirements-test.txt```

## Running tests

Using **make**:

```make run_tests```

Using **pytest**:

```py.test --pep8 --cov=. --cov-report=term-missing --cov-config=.coveragerc -r a -v -s```

## Todo

### API Methods

List of API methods to be covered by our client.

**[U]** - requires User Auth | **[A]** - requires App API Key

- [A] Create notification
- Segments mode settings & params
- ~~Devices mode settings & params~~
- Improve tests as new params are added
- Filters mode settings & params
- Common Parameters
- App
- ~~```app_id```~~
- ```app_ids```
- Content
- ~~```contents```~~
- Improve validation
- Behaviour when using ```template_id```
- ~~```headings```~~
- Improve validation
- ```subtitle```
- ```template_id```
- ```content_available```
- ```mutable_content```
- Attachments
- ~~```data```~~
- ```url```
- ```ios_attachments```
- ```big_picture```
- ```adm_big_picture```
- ```chrome_big_picture```
- Appearance
- ~~```ios_badgeType```~~
- ~~```ios_badgeCount```~~
- ~~```small_icon```~~
- ~~```large_icon```~~
- _Others coming soon_
- Export data for request
- [A] Cancel notification
- ~~[U] View apps~~
- ~~[U] View an app~~
- [U] Create an app
- [U] Update an app
- [A] View devices
- View device
- [U] Add a device
- Edit device
- [U] New session
- New purchase
- Increment session length
- [A] CSV export
- ~~Regular export~~
- Extra fields
- Make it available in the user client
- [U] View notification
- [A] View notifications
- Track open

Release files for onesignal-python 0.1.0.dev1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for onesignal-python 0.1.0.dev1
File Size Uploaded
onesignal-python-0.1.0.dev1.tar.gz 6.5 kB Details

Release files / onesignal-python-0.1.0.dev1.tar.gz

Download URL onesignal-python-0.1.0.dev1.tar.gz
Size 6.5 kB
Tags Source
SHA-256 checksum
How to use checksums
c373a3edb99df15fd43447c743426180717005f02f5602293b4c203174dd162a
BLAKE2b-256 checksum
How to use checksums
d53e263800fe9492fe5db03a2ca7256c34e2fd064f3003baa8abbc982d6f455e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.0.dev1 This release

1 release file

0.0.1.dev1

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page