Create webhook code examples

Bash:

# You can also use wget
curl -X POST https://app.staging.shippit.com/api/3/merchants/webhooks \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: API_KEY' \
  -d '{
    "webhook_url": "https://example.com/shippit-webhook",
    "enabled_states": ["ready_for_pickup", "in_transit", "completed"],
    "hide_delivery_address": false,
    "hide_receiver_details": false,
    "enabled": true,
    "headers": [
      { "key": "X-Custom-Token", "value": "abc123" }
    ]
  }'

HTTP:

POST https://app.staging.shippit.com/api/3/merchants/webhooks HTTP/1.1
Host: app.staging.shippit.com
Content-Type: application/json
Accept: application/json
Authorization: API_KEY

{
  "webhook_url": "https://example.com/shippit-webhook",
  "enabled_states": ["ready_for_pickup", "in_transit", "completed"],
  "hide_delivery_address": false,
  "hide_receiver_details": false,
  "enabled": true,
  "headers": [
    { "key": "X-Custom-Token", "value": "abc123" }
  ]
}

Javascript:

const inputBody = '{
  "webhook_url": "https://example.com/shippit-webhook",
  "enabled_states": ["ready_for_pickup", "in_transit", "completed"],
  "hide_delivery_address": false,
  "hide_receiver_details": false,
  "enabled": true,
  "headers": [
    { "key": "X-Custom-Token", "value": "abc123" }
  ]
}';
const headers = {
  'Content-Type':'application/json',
  'Accept':'application/json',
  'Authorization':'API_KEY'
};

fetch('https://app.staging.shippit.com/api/3/merchants/webhooks',
{
  method: 'POST',
  body: inputBody,
  headers: headers
})
.then(function(res) {
    return res.json();
}).then(function(body) {
    console.log(body);
});

Ruby:

require 'rest-client'
require 'json'

headers = {
  'Content-Type' => 'application/json',
  'Accept' => 'application/json',
  'Authorization' => 'API_KEY'
}

body = {
  webhook_url: 'https://example.com/shippit-webhook',
  enabled_states: ['ready_for_pickup', 'in_transit', 'completed'],
  hide_delivery_address: false,
  hide_receiver_details: false,
  enabled: true,
  headers: [{ key: 'X-Custom-Token', value: 'abc123' }]
}

result = RestClient.post 'https://app.staging.shippit.com/api/3/merchants/webhooks',
  body.to_json, headers

p JSON.parse(result)

Python:

import requests
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json',
  'Authorization': 'API_KEY'
}

payload = {
  'webhook_url': 'https://example.com/shippit-webhook',
  'enabled_states': ['ready_for_pickup', 'in_transit', 'completed'],
  'hide_delivery_address': False,
  'hide_receiver_details': False,
  'enabled': True,
  'headers': [{'key': 'X-Custom-Token', 'value': 'abc123'}]
}

r = requests.post('https://app.staging.shippit.com/api/3/merchants/webhooks',
  json=payload, headers=headers)

print(r.json())

PHP:

<?php

require 'vendor/autoload.php';

$headers = array(
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'Authorization' => 'API_KEY',
);

$client = new \GuzzleHttp\Client();

$request_body = array(
    'webhook_url' => 'https://example.com/shippit-webhook',
    'enabled_states' => ['ready_for_pickup', 'in_transit', 'completed'],
    'enabled' => true,
);

try {
    $response = $client->request('POST','https://app.staging.shippit.com/api/3/merchants/webhooks', array(
        'headers' => $headers,
        'json' => $request_body,
       )
    );
    print_r($response->getBody()->getContents());
 }
 catch (\GuzzleHttp\Exception\BadResponseException $e) {
    // handle exception or api errors.
    print_r($e->getMessage());
 }

 // ...

Java:

URL obj = new URL("https://app.staging.shippit.com/api/3/merchants/webhooks");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();
System.out.println(response.toString());

Golang:

package main

import (
       "bytes"
       "net/http"
)

func main() {

    headers := map[string][]string{
        "Content-Type": []string{"application/json"},
        "Accept": []string{"application/json"},
        "Authorization": []string{"API_KEY"},
    }

    jsonBody := []byte(`{
        "webhook_url": "https://example.com/shippit-webhook",
        "enabled_states": ["ready_for_pickup", "in_transit", "completed"],
        "hide_delivery_address": false,
        "hide_receiver_details": false,
        "enabled": true,
        "headers": [
            { "key": "X-Custom-Token", "value": "abc123" }
        ]
    }`)
    data := bytes.NewBuffer(jsonBody)
    req, err := http.NewRequest("POST", "https://app.staging.shippit.com/api/3/merchants/webhooks", data)
    req.Header = headers

    client := &http.Client{}
    resp, err := client.Do(req)
    // ...
}