myPOS REST API provides all CRUD (Create, Read, Update, Delete) functionalities for webhooks. The Content-Type of the requests should be set to application/x-www-form-urlencoded and the generated oAuth Token must be included in an Authorization header for every HTTP request to the REST API.

 

 

Creating a webhook

The required parameters in order to create a webhook are payload URL and a secret, which will be used to sign the callback to your server.

curl -X POST \
  https://webhook-api.mypos.com/v1/webhooks \
  -H 'Authorization: Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'payload_url=https%3A%2F%2Fmywebsite.com%2Fwebhook-callback&secret=myrandomgeneratedsecret'
import requests

requests.post(
    url='https://webhook-api.mypos.com/v1/webhooks',
    headers={
        'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP',
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    data=dict(
        payload_url='https://mywebsite.com/webhook-callback',
        secret='myrandomgeneratedsecret'
    )
)
const request = require("request");

const options = {
    method: 'POST',
    url: 'https://webhook-api.mypos.com/v1/webhooks',
    headers: {
        'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP',
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    form: {
        payload_url: 'https://mywebsite.com/webhook-callback',
        secret: 'myrandomgeneratedsecret'
    }
};

request(options, (error, response, body) => {

});
<?php

$request = new HttpRequest();
$request->setUrl('https://webhook-api.mypos.com/v1/webhooks');
$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(
  'payload_url' => 'https://mywebsite.com/webhook-callback',
  'secret' => 'myrandomgeneratedsecret'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

{
    "webhook": {
        "created_on": "Mon, 15 Apr 2019 07:50:54 GMT",
        "id": "647f091e-b4b5-423e-9dd2-58c832ebb793",
        "is_active": true,
        "payload_url": "https://mywebsite.com/webhook-callback",
        "secret": "myrandomgeneratedsecret"
    }
}

 

 

List webhooks

Fetching a single webhook or all webhooks is fairly straightforward. All you need to do send an HTTP GET request to the corresponding endpoint:

curl -X GET \
  https://webhook-api.mypos.com/v1/webhooks \
  -H 'Authorization: Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP'
import requests

requests.get(
    url='https://webhook-api.mypos.com/v1/webhooks',
    headers={
        'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP'
    }
)
const request = require("request");

const options = {
    method: 'GET',
    url: 'https://webhook-api.mypos.com/v1/webhooks',
    headers: {
        'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP'
    }
};

request(options, (error, response, body) => {

});
<?php

$request = new HttpRequest();
$request->setUrl('https://webhook-api.mypos.com/v1/webhooks');
$request->setMethod(HTTP_METH_GET);

$request->setHeaders(array(
  'Authorization' => 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

{
    "webhooks": [
        {
            "created_on": "Thu, 11 Apr 2019 07:07:58 GMT",
            "id": "6217960c-2a2e-4188-9025-af11abf47d5e",
            "is_active": true,
            "payload_url": "https://mywebsite.com/webhook-callback",
            "secret": "myrandomgeneratedsecret"
        }
    ],
    "pagination": {
        "page": 1,
        "size": 20,
        "total": 1
    }
}

 

More detailed information about a webhook can be requested by passing the webhook’s ID as an URL parameter

curl -X GET \
  https://webhook-api.mypos.com/v1/webhooks/6217960c-2a2e-4188-9025-af11abf47d5e \
  -H 'Authorization: Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP'
import requests

requests.get(
    url='https://webhook-api.mypos.com/v1/webhooks/6217960c-2a2e-4188-9025-af11abf47d5e',
    headers={
        'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP'
    }
)
const request = require("request");

const options = {
    method: 'GET',
    url: 'https://webhook-api.mypos.com/v1/webhooks/6217960c-2a2e-4188-9025-af11abf47d5e',
    headers: {
        'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP'
    }
};

request(options, (error, response, body) => {

});
<?php

$request = new HttpRequest();
$request->setUrl('https://webhook-api.mypos.com/v1/webhooks/6217960c-2a2e-4188-9025-af11abf47d5e');
$request->setMethod(HTTP_METH_GET);

$request->setHeaders(array(
  'Authorization' => 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}

{
    "webhook": {
        "created_on": "Thu, 11 Apr 2019 07:07:58 GMT",
        "events": [
            {
                "id": "7db45365-2478-480e-bf34-f6f315f0c0bd",
                "name": "pos.payment.completed"
            }
        ],
        "is_active": true,
        "payload_url": "https://google.com",
        "secret": "Um6OcCJkN6tOXzUOOmcCyvOcKNFkuNpz"
    }
}

 

 

Updating a webhook

At any time, a client can update any created webhook by sending an HTTP PATCH request to /hooks/:id. For instance, to disable a webhook but not delete it, we can update its active flag.

 

curl -X PATCH \
  https://webhook-api.mypos.com/v1/webhooks/6217960c-2a2e-4188-9025-af11abf47d5e \
  -H 'Authorization: Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'payload_url=https%3A%2F%2Fmywebsite.com%2Fwebhook-callback&secret=myrandomgeneratedsecret'
import requests

requests.patch(
    url='https://webhook-api.mypos.com/v1/webhooks/6217960c-2a2e-4188-9025-af11abf47d5e',
    headers={
        'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP',
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    data=dict(
        payload_url='https://mywebsite.com/webhook-callback',
        secret='myrandomgeneratedsecret'
    )
)
const request = require("request");

const options = {
    method: 'PATCH',
    url: 'https://webhook-api.mypos.com/v1/webhooks',
    headers: {
        'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP',
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    form: {
        payload_url: 'https://mywebsite.com/webhook-callback',
        secret: 'myrandomgeneratedsecret'
    }
};

request(options, (error, response, body) => {

});
<?php

$request = new HttpRequest();
$request->setUrl('https://webhook-api.mypos.com/v1/webhooks/6217960c-2a2e-4188-9025-af11abf47d5e');
$request->setMethod(HTTP_METH_PATCH);

$request->setHeaders(array(
  'Authorization' => 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP',
  'Content-Type' => 'application/x-www-form-urlencoded'
));

$request->setContentType('application/x-www-form-urlencoded');
$request->setPostFields(array(
  'payload_url' => 'https://mywebsite.com/webhook-callback',
  'secret' => 'myrandomgeneratedsecret'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
 

{
    "webhook": {
        "created_on": "Mon, 15 Apr 2019 07:50:54 GMT",
        "id": "647f091e-b4b5-423e-9dd2-58c832ebb793",
        "is_active": true,
        "payload_url": "https://mywebsite.com/webhook-callback",
        "secret": "myrandomgeneratedsecret"
    }
}

 

 

Deleting a webhook

Deleting a webhook is no more difficult than fetching details for one. The only difference is the HTTP Method:

curl -X DELETE \
  https://webhook-api.mypos.com/v1/webhooks/6217960c-2a2e-4188-9025-af11abf47d5e \
  -H 'Authorization: Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP'
import requests

requests.delete(
    url='https://webhook-api.mypos.com/v1/webhooks/6217960c-2a2e-4188-9025-af11abf47d5e',
    headers={
        'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP'
    }
)
const request = require("request");

const options = {
    method: 'DELETE',
    url: 'https://webhook-api.mypos.com/v1/webhooks/6217960c-2a2e-4188-9025-af11abf47d5e',
    headers: {
        'Authorization': 'Bearer PLpC1CqVE9CYXolbGNBPqz0NYy8asFzG95XcToDsMP'
    }
};

request(options, (error, response, body) => {

});
<?php

$request = new HttpRequest();
$request->setUrl('https://webhook-api.mypos.com/v1/webhooks/6217960c-2a2e-4188-9025-af11abf47d5e');
$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.