The myPOS events allow clients to subscribe/unsubscribe for/from events, list current subscriptions and request a history of event notifications.
List all available events
Currently, the full list is only accessible from the REST API.
| curl -X GET \ |
| https://webhook-api.mypos.com/v1/events \ |
| -H 'Authorization: Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP' |
| import requests |
| |
| requests.get( |
| url='https://webhook-api.mypos.com/v1/events', |
| headers={ |
| 'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP' |
| } |
| ) |
| const request = require("request"); |
| |
| const options = { |
| method: 'GET', |
| url: 'https://webhook-api.mypos.com/v1/events', |
| headers: { |
| 'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP' |
| } |
| }; |
| |
| request(options, (error, response, body) => { |
| |
| }); |
| <?php |
| |
| $request = new HttpRequest(); |
| $request->setUrl('https://webhook-api.mypos.com/v1/events'); |
| $request->setMethod(HTTP_METH_GET); |
| |
| $request->setHeaders(array( |
| 'Authorization' => 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP' |
| )); |
| |
| try { |
| $response = $request->send(); |
| |
| echo $response->getBody(); |
| } catch (HttpException $ex) { |
| echo $ex; |
| } |
| { |
| "events": [ |
| { |
| "id": "33bcd9a7-43e4-4c0c-a728-106210056b1a", |
| "name": "pos.payment.completed" |
| }, |
| { |
| "id": "a96b8eb8-67ca-42b5-ab5f-fdc24011ef72", |
| "name": "pos.payment.denied" |
| }, |
| { |
| "id": "31028c55-24f9-4cb6-b801-282b906647b9", |
| "name": "pos.payment.reversed" |
| }, |
| { |
| "id": "a81fd693-d897-4f66-9c7c-f92c01460dac", |
| "name": "account.out-bank-transfer.initiated" |
| }, |
| { |
| "id": "2261350a-2db1-45a3-b60d-f2fdb0225600", |
| "name": "account.out-bank-transfer.failed" |
| }, |
| { |
| "id": "f82c6caa-d052-4dd3-9044-5be41b36a466", |
| "name": "account.out-bank-transfer.approved" |
| } |
| ], |
| "pagination": { |
| "page": 1, |
| "size": 20, |
| "total": 6 |
| } |
| } |
Subscribe for an event
To subscribe for an event, it is required to provide the webhook id and the event id. If the client has a single webhook, the webhook id will not be required. The response will contain the id of the subscription.
| curl -X POST \ |
| https://webhook-api.mypos.com/v1/subscriptions \ |
| -H 'Authorization: Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP' \ |
| -H 'Content-Type: application/x-www-form-urlencoded' \ |
| -d 'webhook_id=51fb484a-4003-4e0d-9635-ce9e4b9062cf&event_id=18491b67-75fc-4702-8f63-535e0b6c475f' |
| import requests |
| |
| requests.post( |
| url='https://webhook-api.mypos.com/v1/subscriptions', |
| headers={ |
| 'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP', |
| 'Content-Type': 'application/x-www-form-urlencoded' |
| }, |
| data=dict( |
| webhook_id='51fb484a-4003-4e0d-9635-ce9e4b9062cfk', |
| event_id='18491b67-75fc-4702-8f63-535e0b6c475f' |
| ) |
| ) |
| const request = require("request"); |
| |
| const options = { |
| method: 'POST', |
| url: 'https://webhook-api.mypos.com/v1/subscriptions', |
| headers: { |
| 'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP', |
| 'Content-Type': 'application/x-www-form-urlencoded' |
| }, |
| form: { |
| webhook_id: '51fb484a-4003-4e0d-9635-ce9e4b9062cfk', |
| event_id: '18491b67-75fc-4702-8f63-535e0b6c475f' |
| } |
| }; |
| |
| request(options, (error, response, body) => { |
| |
| }); |
| <?php |
| |
| $request = new HttpRequest(); |
| $request->setUrl('https://webhook-api.mypos.com/v1/subscriptions'); |
| $request->setMethod(HTTP_METH_POST); |
| |
| $request->setHeaders(array( |
| 'Authorization' => 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP', |
| 'Content-Type' => 'application/x-www-form-urlencoded' |
| )); |
| |
| $request->setContentType('application/x-www-form-urlencoded'); |
| $request->setPostFields(array( |
| 'webhook_id' => '51fb484a-4003-4e0d-9635-ce9e4b9062cfk', |
| 'event_id' => '18491b67-75fc-4702-8f63-535e0b6c475f' |
| )); |
| |
| try { |
| $response = $request->send(); |
| |
| echo $response->getBody(); |
| } catch (HttpException $ex) { |
| echo $ex; |
| } |
| { |
| "subscription": { |
| "created_on": "Mon, 15 Apr 2019 10:20:05 GMT", |
| "event": "pos.payment.completed", |
| "filter": null, |
| "hook": { |
| "created_on": "Mon, 15 Apr 2019 10:15:55 GMT", |
| "id": "7d35a9ec-cad3-4f06-8ad7-2618c27dc64a", |
| "is_active": true, |
| "payload_url": "https://mywebsite.com/webhook-callback", |
| "secret": "myrandomgeneratedsecret" |
| }, |
| "id": "48497e81-652b-4d18-83a8-2feac3ecf9db" |
| } |
| } |
Update event subscription
You can update a subscription's filter property with either PUT or PATCH HTTP methods. Here is an example with PUT.
| curl -X PUT \ |
| https://webhook-api.mypos.com/v1/subscriptions \ |
| -H 'Authorization: Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP' \ |
| -H 'Content-Type: application/x-www-form-urlencoded' \ |
| -d 'filter=%7B%22tids%22%3A%5B%2290004889%22%5D%7D' |
| import requests |
| |
| requests.put( |
| url='https://webhook-api.mypos.com/v1/subscriptions', |
| headers={ |
| 'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP', |
| 'Content-Type': 'application/x-www-form-urlencoded' |
| }, |
| data=dict( |
| filter=dict( |
| tids=[ |
| '90004889' |
| ] |
| ) |
| ) |
| ) |
| const request = require("request"); |
| |
| const options = { |
| method: 'PUT', |
| url: 'https://webhook-api.mypos.com/v1/subscriptions', |
| headers: { |
| 'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP', |
| 'Content-Type': 'application/x-www-form-urlencoded' |
| }, |
| form: { |
| filter: { |
| tids: [ |
| '90004889' |
| ] |
| } |
| } |
| }; |
| |
| request(options, (error, response, body) => { |
| |
| }); |
| <?php |
| |
| $request = new HttpRequest(); |
| $request->setUrl('https://webhook-api.mypos.com/v1/subscriptions'); |
| $request->setMethod(HTTP_METH_PUT); |
| |
| $request->setHeaders(array( |
| 'Authorization' => 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP', |
| 'Content-Type' => 'application/x-www-form-urlencoded' |
| )); |
| |
| $request->setContentType('application/x-www-form-urlencoded'); |
| $request->setPostFields(array( |
| 'filter' => '{"tids":["90004889"]}' |
| )); |
| |
| try { |
| $response = $request->send(); |
| |
| echo $response->getBody(); |
| } catch (HttpException $ex) { |
| echo $ex; |
| } |
| { |
| "subscription": { |
| "created_on": "Thu, 11 Apr 2019 07:09:05 GMT", |
| "event": "pos.payment.completed", |
| "filter": { |
| "tids": [ |
| "90004889" |
| ] |
| }, |
| "hook": { |
| "created_on": "Thu, 11 Apr 2019 07:07:58 GMT", |
| "id": "6217960c-2a2e-4188-9025-af11abf47d5e", |
| "is_active": true, |
| "payload_url": "https://google.com", |
| "secret": "Um6OcCJkN6tOXzUOOmcCyvOcKNFkuNpz" |
| }, |
| "id": "7db45365-2478-480e-bf34-f6f315f0c0bd" |
| } |
| } |
Unsubscribe from an event
| curl -X DELETE \ |
| https://webhook-api.mypos.com/v1/subscriptions/ef082ef0-25e6-4fd5-a85b-c3855bb55577 \ |
| -H 'Authorization: Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP' |
| import requests |
| |
| requests.delete( |
| url='https://webhook-api.mypos.com/v1/subscriptions/ef082ef0-25e6-4fd5-a85b-c3855bb55577', |
| headers={ |
| 'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP' |
| } |
| ) |
| const request = require("request"); |
| |
| const options = { |
| method: 'DELETE', |
| url: 'https://webhook-api.mypos.com/v1/subscriptions/ef082ef0-25e6-4fd5-a85b-c3855bb55577', |
| headers: { |
| 'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP' |
| } |
| }; |
| |
| request(options, (error, response, body) => { |
| |
| }); |
| <?php |
| |
| $request = new HttpRequest(); |
| $request->setUrl('https://webhook-api.mypos.com/v1/subscriptions/ef082ef0-25e6-4fd5-a85b-c3855bb55577'); |
| $request->setMethod(HTTP_METH_DELETE); |
| |
| $request->setHeaders(array( |
| 'Authorization' => 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP' |
| )); |
| |
| try { |
| $response = $request->send(); |
| |
| echo $response->getBody(); |
| } catch (HttpException $ex) { |
| echo $ex; |
| } |
| Response is empty if no errors occur. |
List event notifications
To get a list of notifications sent by myPOS based on events for which you have subscribed, you can use the following example.
| curl -X GET \ |
| https://webhook-api.mypos.com/v1/notifications \ |
| -H 'Authorization: Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP' |
| import requests |
| |
| requests.get( |
| url='https://webhook-api.mypos.com/v1/notifications', |
| headers={ |
| 'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP' |
| } |
| ) |
| const request = require("request"); |
| |
| const options = { |
| method: 'GET', |
| url: 'https://webhook-api.mypos.com/v1/notifications', |
| headers: { |
| 'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP' |
| } |
| }; |
| |
| request(options, (error, response, body) => { |
| |
| }); |
| <?php |
| |
| $request = new HttpRequest(); |
| $request->setUrl('https://webhook-api.mypos.com/v1/notifications'); |
| $request->setMethod(HTTP_METH_GET); |
| |
| $request->setHeaders(array( |
| 'Authorization' => 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP' |
| )); |
| |
| try { |
| $response = $request->send(); |
| |
| echo $response->getBody(); |
| } catch (HttpException $ex) { |
| echo $ex; |
| } |
| { |
| "notifications": [ |
| { |
| "event": "pos.payment.completed", |
| "payload": { |
| "amount": 9.90, |
| "currency": "GBP", |
| "merchant_name": "myPOS Europe Ltd.", |
| "pan": "*8516", |
| "tid": 90008496, |
| "timestamp": 1554980066 |
| }, |
| "response_code": 200, |
| "retry_count": 0, |
| "sent_on": "Thu, 11 Apr 2019 10:54:02 GMT", |
| "url": "https://mypos.com" |
| } |
| ], |
| "pagination": { |
| "page": 1, |
| "size": 20, |
| "total": 3 |
| } |
| } |
The response will contain following information:
- Event’s name
- Payload
- Sent on
- Response status
- Retry count