Skip to content

Commit de6995d

Browse files
committed
Revert "Update README"
This reverts commit dce79fc.
1 parent dce79fc commit de6995d

File tree

1 file changed

+334
-18
lines changed

1 file changed

+334
-18
lines changed

README.md

Lines changed: 334 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,344 @@
1-
# MessageMedia Webhooks Python SDK
2-
[![Build Status](https://travis-ci.com/messagemedia/webhooks-python-sdk.svg?token=RShVNCNfErA4z78eSXc6&branch=master)](https://travis-ci.com/messagemedia/webhooks-python-sdk)
1+
# Getting started
32

4-
Webhooks allows you to subscribe to one or several events and when one of those events is triggered, an HTTP request is sent to the URL of your choice along with the message or payload. In simpler terms, it allows applications to "speak" to one another and get notified automatically when something new happens.
3+
TODO: Add a description
54

6-
## ⭐️ Installing via pip
5+
## How to Build
76

87

9-
## 🎬 Get Started
10-
It's easy to get started. Simply enter the API Key and secret you obtained from the [MessageMedia Developers Portal](https://developers.messagemedia.com) into the code snippet below.
8+
You must have Python ```2 >=2.7.9``` or Python ```3 >=3.4``` installed on your system to install and run this SDK. This SDK package depends on other Python packages like nose, jsonpickle etc.
9+
These dependencies are defined in the ```requirements.txt``` file that comes with the SDK.
10+
To resolve these dependencies, you can use the PIP Dependency manager. Install it by following steps at [https://pip.pypa.io/en/stable/installing/](https://pip.pypa.io/en/stable/installing/).
1111

12-
### Create a Webhook
13-
TODO: Add Section
12+
Python and PIP executables should be defined in your PATH. Open command prompt and type ```pip --version```.
13+
This should display the version of the PIP Dependency Manager installed if your installation was successful and the paths are properly defined.
1414

15-
### Update a Webhook
16-
TODO: Add Section
15+
* Using command line, navigate to the directory containing the generated files (including ```requirements.txt```) for the SDK.
16+
* Run the command ```pip install -r requirements.txt```. This should install all the required dependencies.
1717

18-
### Delete a Webhook
19-
TODO: Add Section
18+
![Building SDK - Step 1](https://apidocs.io/illustration/python?step=installDependencies&workspaceFolder=MessageMediaWebhooks-Python)
19+
20+
21+
## How to Use
22+
23+
The following section explains how to use the MessageMediaWebhooks SDK package in a new project.
24+
25+
### 1. Open Project in an IDE
26+
27+
Open up a Python IDE like PyCharm. The basic workflow presented here is also applicable if you prefer using a different editor or IDE.
28+
29+
![Open project in PyCharm - Step 1](https://apidocs.io/illustration/python?step=pyCharm)
30+
31+
Click on ```Open``` in PyCharm to browse to your generated SDK directory and then click ```OK```.
32+
33+
![Open project in PyCharm - Step 2](https://apidocs.io/illustration/python?step=openProject0&workspaceFolder=MessageMediaWebhooks-Python)
34+
35+
The project files will be displayed in the side bar as follows:
36+
37+
![Open project in PyCharm - Step 3](https://apidocs.io/illustration/python?step=openProject1&workspaceFolder=MessageMediaWebhooks-Python&projectName=message_media_webhooks)
38+
39+
### 2. Add a new Test Project
40+
41+
Create a new directory by right clicking on the solution name as shown below:
42+
43+
![Add a new project in PyCharm - Step 1](https://apidocs.io/illustration/python?step=createDirectory&workspaceFolder=MessageMediaWebhooks-Python&projectName=message_media_webhooks)
44+
45+
Name the directory as "test"
46+
47+
![Add a new project in PyCharm - Step 2](https://apidocs.io/illustration/python?step=nameDirectory)
48+
49+
Add a python file to this project with the name "testsdk"
50+
51+
![Add a new project in PyCharm - Step 3](https://apidocs.io/illustration/python?step=createFile&workspaceFolder=MessageMediaWebhooks-Python&projectName=message_media_webhooks)
52+
53+
Name it "testsdk"
54+
55+
![Add a new project in PyCharm - Step 4](https://apidocs.io/illustration/python?step=nameFile)
56+
57+
In your python file you will be required to import the generated python library using the following code lines
58+
59+
```Python
60+
from message_media_webhooks.message_media_webhooks_client import MessageMediaWebhooksClient
61+
```
62+
63+
![Add a new project in PyCharm - Step 4](https://apidocs.io/illustration/python?step=projectFiles&workspaceFolder=MessageMediaWebhooks-Python&libraryName=message_media_webhooks.message_media_webhooks_client&projectName=message_media_webhooks&className=MessageMediaWebhooksClient)
64+
65+
After this you can write code to instantiate an API client object, get a controller object and make API calls. Sample code is given in the subsequent sections.
66+
67+
### 3. Run the Test Project
68+
69+
To run the file within your test project, right click on your Python file inside your Test project and click on ```Run```
70+
71+
![Run Test Project - Step 1](https://apidocs.io/illustration/python?step=runProject&workspaceFolder=MessageMediaWebhooks-Python&libraryName=message_media_webhooks.message_media_webhooks_client&projectName=message_media_webhooks&className=MessageMediaWebhooksClient)
72+
73+
74+
## How to Test
75+
76+
You can test the generated SDK and the server with automatically generated test
77+
cases. unittest is used as the testing framework and nose is used as the test
78+
runner. You can run the tests as follows:
79+
80+
1. From terminal/cmd navigate to the root directory of the SDK.
81+
2. Invoke ```pip install -r test-requirements.txt```
82+
3. Invoke ```nosetests```
83+
84+
## Initialization
85+
86+
### Authentication
87+
In order to setup authentication and initialization of the API client, you need the following information.
88+
89+
| Parameter | Description |
90+
|-----------|-------------|
91+
| basic_auth_user_name | The username to use with basic authentication |
92+
| basic_auth_password | The password to use with basic authentication |
93+
94+
95+
96+
API client can be initialized as following.
97+
98+
```python
99+
# Configuration parameters and credentials
100+
basic_auth_user_name = 'basic_auth_user_name' # The username to use with basic authentication
101+
basic_auth_password = 'basic_auth_password' # The password to use with basic authentication
102+
103+
client = MessageMediaWebhooksClient(basic_auth_user_name, basic_auth_password)
104+
```
105+
106+
107+
108+
# Class Reference
109+
110+
## <a name="list_of_controllers"></a>List of Controllers
111+
112+
* [APIController](#api_controller)
113+
114+
## <a name="api_controller"></a>![Class: ](https://apidocs.io/img/class.png ".APIController") APIController
115+
116+
### Get controller instance
117+
118+
An instance of the ``` APIController ``` class can be accessed from the API Client.
119+
120+
```python
121+
client_controller = client.client
122+
```
123+
124+
### <a name="create"></a>![Method: ](https://apidocs.io/img/method.png ".APIController.create") create
125+
126+
> This will create a webhook for the specified `events`
127+
> ### Parameters
128+
> **list of supported parameters in `template` according to the message type :**
129+
> you must escape the json for the template parameter. see example .
130+
> | Data | parameter name | DR| MO | MO MMS | Comment |
131+
> |:--|--|--|--|--|--|
132+
> | **service type** | $type| ``OK`` |`OK`| `OK`| |
133+
> | **Message ID** | $mtId, $messageId| `OK` |`OK`| `OK`| |
134+
> | **Delivery report ID** |$drId, $reportId | `OK` || | |
135+
> | **Reply ID**| $moId, $replyId| |`OK`| `OK`||
136+
> | **Account ID** | $accountId| `OK` |`OK`| `OK`||
137+
> | **Message Timestamp** | $submittedTimestamp| `OK` |`OK`| `OK`||
138+
> | **Provider Timestamp** | $receivedTimestamp| `OK` |`OK`| `OK`||
139+
> | **Message status** | $status| `OK` ||||
140+
> | **Status code** | $statusCode| `OK` ||||
141+
> | **External metadata** | $metadata.get('key')| `OK` |`OK`| `OK`||
142+
> | **Source address**| $sourceAddress| `OK` |`OK`| `OK`||
143+
> | **Destination address**| $destinationAddress| |`OK`| `OK`||
144+
> | **Message content**| $mtContent, $messageContent| `OK` |`OK`| `OK`||
145+
> | **Reply Content**| $moContent, $replyContent| |`OK`| `OK`||
146+
> | **Retry Count**| $retryCount| `OK` |`OK`| `OK`||
147+
> **list of allowed `events` :**
148+
> you can combine all the events whatever the message type.(at least one Event set otherwise the webhook won't be created)
149+
> + **events for SMS**
150+
> + `RECEIVED_SMS`
151+
> + `OPT_OUT_SMS`
152+
> + **events for MMS**
153+
> + `RECEIVED_MMS`
154+
> + **events for DR**
155+
> + `ENROUTE_DR`
156+
> + `EXPIRED_DR`
157+
> + `REJECTED_DR`
158+
> + `FAILED_DR`
159+
> + `DELIVERED_DR`
160+
> + `SUBMITTED_DR`
161+
> a **Response 400 is returned when** :
162+
> <ul>
163+
> <li>the `url` is not valid </li>
164+
> <li>the `events` is null/empty </li>
165+
> <li>the `encoding` is null </li>
166+
> <li>the `method` is null </li>
167+
> <li>the `headers` has a `ContentType` attribute </li>
168+
> </ul>
169+
170+
```python
171+
def create(self,
172+
content_type,
173+
body)
174+
```
175+
176+
#### Parameters
177+
178+
| Parameter | Tags | Description |
179+
|-----------|------|-------------|
180+
| contentType | ``` Required ``` | TODO: Add a parameter description |
181+
| body | ``` Required ``` | TODO: Add a parameter description |
182+
183+
184+
185+
#### Example Usage
186+
187+
```python
188+
content_type = 'Content-Type'
189+
body = CreateRequest()
190+
191+
result = client_controller.create(content_type, body)
192+
193+
```
194+
195+
#### Errors
196+
197+
| Error Code | Error Description |
198+
|------------|-------------------|
199+
| 400 | TODO: Add an error description |
200+
201+
202+
203+
204+
### <a name="delete_delete_and_update_webhook"></a>![Method: ](https://apidocs.io/img/method.png ".APIController.delete_delete_and_update_webhook") delete_delete_and_update_webhook
205+
206+
> This will delete the webhook wuth the give id.
207+
> a **Response 404 is returned when** :
208+
> <ul>
209+
> <li>there is no webhook with this `webhookId` </li>
210+
> </ul>
211+
212+
```python
213+
def delete_delete_and_update_webhook(self,
214+
webhook_id)
215+
```
216+
217+
#### Parameters
218+
219+
| Parameter | Tags | Description |
220+
|-----------|------|-------------|
221+
| webhookId | ``` Required ``` | TODO: Add a parameter description |
222+
223+
224+
225+
#### Example Usage
226+
227+
```python
228+
webhook_id = a7f11bb0-f299-4861-a5ca-9b29d04bc5ad
229+
230+
client_controller.delete_delete_and_update_webhook(webhook_id)
231+
232+
```
233+
234+
#### Errors
235+
236+
| Error Code | Error Description |
237+
|------------|-------------------|
238+
| 404 | TODO: Add an error description |
239+
240+
241+
242+
243+
### <a name="retrieve"></a>![Method: ](https://apidocs.io/img/method.png ".APIController.retrieve") retrieve
244+
245+
> This will retrieve all webhooks for the account we're connected with.
246+
> a **Response 400 is returned when** :
247+
> <ul>
248+
> <li>the `page` query parameter is not valid </li>
249+
> <li>the `pageSize` query parameter is not valid </li>
250+
> </ul>
251+
252+
```python
253+
def retrieve(self,
254+
page=None,
255+
page_size=None)
256+
```
257+
258+
#### Parameters
259+
260+
| Parameter | Tags | Description |
261+
|-----------|------|-------------|
262+
| page | ``` Optional ``` | TODO: Add a parameter description |
263+
| pageSize | ``` Optional ``` | TODO: Add a parameter description |
264+
265+
266+
267+
#### Example Usage
268+
269+
```python
270+
page = '1'
271+
page_size = '10'
272+
273+
result = client_controller.retrieve(page, page_size)
274+
275+
```
276+
277+
#### Errors
278+
279+
| Error Code | Error Description |
280+
|------------|-------------------|
281+
| 400 | TODO: Add an error description |
282+
283+
284+
285+
286+
### <a name="update"></a>![Method: ](https://apidocs.io/img/method.png ".APIController.update") update
287+
288+
> This will update a webhook and returned the updated Webhook.
289+
> you can update all the attributes individually or together.
290+
> PS : the new value will override the previous one.
291+
> ### Parameters
292+
> + same parameters rules as create webhook apply
293+
> a **Response 404 is returned when** :
294+
> <ul>
295+
> <li>there is no webhook with this `webhookId` </li>
296+
> </ul>
297+
> a **Response 400 is returned when** :
298+
> <ul>
299+
> <li>all attributes are null </li>
300+
> <li>events array is empty </li>
301+
> <li>content-Type is set in the headers instead of using the `encoding` attribute </li>
302+
> </ul>
303+
304+
```python
305+
def update(self,
306+
webhook_id,
307+
content_type,
308+
body)
309+
```
310+
311+
#### Parameters
312+
313+
| Parameter | Tags | Description |
314+
|-----------|------|-------------|
315+
| webhookId | ``` Required ``` | TODO: Add a parameter description |
316+
| contentType | ``` Required ``` | TODO: Add a parameter description |
317+
| body | ``` Required ``` | TODO: Add a parameter description |
318+
319+
320+
321+
#### Example Usage
322+
323+
```python
324+
webhook_id = uuid.uuid4()
325+
content_type = 'Content-Type'
326+
body = UpdateRequest()
327+
328+
client_controller.update(webhook_id, content_type, body)
329+
330+
```
331+
332+
#### Errors
333+
334+
| Error Code | Error Description |
335+
|------------|-------------------|
336+
| 404 | TODO: Add an error description |
337+
338+
339+
340+
341+
[Back to List of Controllers](#list_of_controllers)
20342

21-
### List Webhooks
22-
TODO: Add Section
23343

24-
## 📕 Documentation
25-
The Python SDK Documentation can be viewed [here](DOCUMENTATION.md)
26344

27-
## 😕 Need help?
28-
Please contact developer support at [email protected] or check out the developer portal at [developers.messagemedia.com](https://developers.messagemedia.com/)

0 commit comments

Comments
 (0)