Webhooks
Endpoints for webhooks. Every example sets SOOQUNA_TOKEN from the environment; see authentication. Responses are from a test store, cut to two items per list.
| Endpoint | Method | Path |
|---|---|---|
| Subscribe to a webhook topic | POST | /webhooks |
| List webhook subscriptions | GET | /webhooks |
| Get a webhook subscription | GET | /webhooks/{id} |
| Update a webhook subscription | PUT | /webhooks/{id} |
| Send a test delivery | POST | /webhooks/{id}/test |
| List recent deliveries | GET | /webhooks/{id}/deliveries |
| Resend a delivery | POST | /webhooks/{id}/deliveries/{webhook_id}/resend |
| Pause a subscription | POST | /webhooks/{id}/disable |
| Resume a subscription | POST | /webhooks/{id}/enable |
| Delete a subscription | DELETE | /webhooks/{id} |
Subscribe to a webhook topic
Section titled “Subscribe to a webhook topic”POST /webhooks · Any token
curl -X POST "https://api.sooquna.com/admin/api/2026-10/webhooks" \ -H "X-Sooquna-Access-Token: $SOOQUNA_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "topic": "orders/create", "endpoint": "https://erp.example.com/sooquna/orders", "api_version": "2026-10"}'const res = await fetch("https://api.sooquna.com/admin/api/2026-10/webhooks", { method: "POST", headers: { "X-Sooquna-Access-Token": process.env.SOOQUNA_TOKEN, "Content-Type": "application/json", }, body: JSON.stringify({ "topic": "orders/create", "endpoint": "https://erp.example.com/sooquna/orders", "api_version": "2026-10" }),});if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);const data = await res.json();console.log(data);import osimport requests
res = requests.post( "https://api.sooquna.com/admin/api/2026-10/webhooks", headers={ "X-Sooquna-Access-Token": os.environ["SOOQUNA_TOKEN"], }, json={ "topic": "orders/create", "endpoint": "https://erp.example.com/sooquna/orders", "api_version": "2026-10", },)res.raise_for_status()print(res.json())<?php$ch = curl_init('https://api.sooquna.com/admin/api/2026-10/webhooks');curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_HTTPHEADER => [ 'X-Sooquna-Access-Token: ' . getenv('SOOQUNA_TOKEN'), 'Content-Type: application/json', ], CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => json_encode([ 'topic' => 'orders/create', 'endpoint' => 'https://erp.example.com/sooquna/orders', 'api_version' => '2026-10', ], JSON_UNESCAPED_UNICODE),]);$response = curl_exec($ch);$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);if ($status >= 300) { throw new RuntimeException("$status: $response");}$data = json_decode($response, true);print_r($data);package main
import ( "fmt" "io" "net/http" "os" "strings")
func main() { body := `{ "topic": "orders/create", "endpoint": "https://erp.example.com/sooquna/orders", "api_version": "2026-10"}` req, err := http.NewRequest("POST", "https://api.sooquna.com/admin/api/2026-10/webhooks", strings.NewReader(body)) if err != nil { panic(err) } req.Header.Set("X-Sooquna-Access-Token", os.Getenv("SOOQUNA_TOKEN")) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() if res.StatusCode >= 300 { data, _ := io.ReadAll(res.Body) panic(fmt.Sprintf("%d: %s", res.StatusCode, data)) } data, _ := io.ReadAll(res.Body) fmt.Println(string(data))}using System.Text;
using var client = new HttpClient();var req = new HttpRequestMessage(HttpMethod.Post, "https://api.sooquna.com/admin/api/2026-10/webhooks");req.Headers.Add("X-Sooquna-Access-Token", Environment.GetEnvironmentVariable("SOOQUNA_TOKEN"));req.Content = new StringContent("""{ "topic": "orders/create", "endpoint": "https://erp.example.com/sooquna/orders", "api_version": "2026-10"}""", Encoding.UTF8, "application/json");var res = await client.SendAsync(req);if (!res.IsSuccessStatusCode) throw new Exception($"{(int)res.StatusCode}: {await res.Content.ReadAsStringAsync()}");Console.WriteLine(await res.Content.ReadAsStringAsync());Response 201
{ "api_version": "2026-10", "app_id": "0193a1b2-c3d4-7e5f-8a6b-000000000047", "app_name": "Docs", "created_at": "2026-10-18T09:30:00Z", "disabled_at": null, "endpoint": "https://erp.example.com/sooquna/orders", "failure_since": null, "fields": [], "id": "0193a1b2-c3d4-7e5f-8a6b-000000000048", "metafield_namespaces": [], "status": "active", "topic": "orders/create", "updated_at": "2026-10-18T09:30:00Z", "version": 1}List webhook subscriptions
Section titled “List webhook subscriptions”GET /webhooks · Any token
curl -X GET "https://api.sooquna.com/admin/api/2026-10/webhooks" \ -H "X-Sooquna-Access-Token: $SOOQUNA_TOKEN"const res = await fetch("https://api.sooquna.com/admin/api/2026-10/webhooks", { method: "GET", headers: { "X-Sooquna-Access-Token": process.env.SOOQUNA_TOKEN, },});if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);const data = await res.json();console.log(data);import osimport requests
res = requests.get( "https://api.sooquna.com/admin/api/2026-10/webhooks", headers={ "X-Sooquna-Access-Token": os.environ["SOOQUNA_TOKEN"], },)res.raise_for_status()print(res.json())<?php$ch = curl_init('https://api.sooquna.com/admin/api/2026-10/webhooks');curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => [ 'X-Sooquna-Access-Token: ' . getenv('SOOQUNA_TOKEN'), ], CURLOPT_RETURNTRANSFER => true,]);$response = curl_exec($ch);$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);if ($status >= 300) { throw new RuntimeException("$status: $response");}$data = json_decode($response, true);print_r($data);package main
import ( "fmt" "io" "net/http" "os")
func main() { req, err := http.NewRequest("GET", "https://api.sooquna.com/admin/api/2026-10/webhooks", nil) if err != nil { panic(err) } req.Header.Set("X-Sooquna-Access-Token", os.Getenv("SOOQUNA_TOKEN")) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() if res.StatusCode >= 300 { data, _ := io.ReadAll(res.Body) panic(fmt.Sprintf("%d: %s", res.StatusCode, data)) } data, _ := io.ReadAll(res.Body) fmt.Println(string(data))}using System.Text;
using var client = new HttpClient();var req = new HttpRequestMessage(HttpMethod.Get, "https://api.sooquna.com/admin/api/2026-10/webhooks");req.Headers.Add("X-Sooquna-Access-Token", Environment.GetEnvironmentVariable("SOOQUNA_TOKEN"));var res = await client.SendAsync(req);if (!res.IsSuccessStatusCode) throw new Exception($"{(int)res.StatusCode}: {await res.Content.ReadAsStringAsync()}");Console.WriteLine(await res.Content.ReadAsStringAsync());Response 200
{ "data": [ { "api_version": "2026-10", "app_id": "0193a1b2-c3d4-7e5f-8a6b-000000000047", "app_name": "Docs", "created_at": "2026-10-18T09:30:00Z", "disabled_at": null, "endpoint": "https://erp.example.com/sooquna/orders", "failure_since": null, "fields": [], "id": "0193a1b2-c3d4-7e5f-8a6b-000000000048", "metafield_namespaces": [], "status": "active", "topic": "orders/create", "updated_at": "2026-10-18T09:30:00Z", "version": 1 } ]}Get a webhook subscription
Section titled “Get a webhook subscription”GET /webhooks/{id} · Any token
| Parameter | In | Description |
|---|---|---|
id |
path | The resource’s ID. |
curl -X GET "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048" \ -H "X-Sooquna-Access-Token: $SOOQUNA_TOKEN"const res = await fetch("https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048", { method: "GET", headers: { "X-Sooquna-Access-Token": process.env.SOOQUNA_TOKEN, },});if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);const data = await res.json();console.log(data);import osimport requests
res = requests.get( "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048", headers={ "X-Sooquna-Access-Token": os.environ["SOOQUNA_TOKEN"], },)res.raise_for_status()print(res.json())<?php$ch = curl_init('https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048');curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => [ 'X-Sooquna-Access-Token: ' . getenv('SOOQUNA_TOKEN'), ], CURLOPT_RETURNTRANSFER => true,]);$response = curl_exec($ch);$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);if ($status >= 300) { throw new RuntimeException("$status: $response");}$data = json_decode($response, true);print_r($data);package main
import ( "fmt" "io" "net/http" "os")
func main() { req, err := http.NewRequest("GET", "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048", nil) if err != nil { panic(err) } req.Header.Set("X-Sooquna-Access-Token", os.Getenv("SOOQUNA_TOKEN")) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() if res.StatusCode >= 300 { data, _ := io.ReadAll(res.Body) panic(fmt.Sprintf("%d: %s", res.StatusCode, data)) } data, _ := io.ReadAll(res.Body) fmt.Println(string(data))}using System.Text;
using var client = new HttpClient();var req = new HttpRequestMessage(HttpMethod.Get, "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048");req.Headers.Add("X-Sooquna-Access-Token", Environment.GetEnvironmentVariable("SOOQUNA_TOKEN"));var res = await client.SendAsync(req);if (!res.IsSuccessStatusCode) throw new Exception($"{(int)res.StatusCode}: {await res.Content.ReadAsStringAsync()}");Console.WriteLine(await res.Content.ReadAsStringAsync());Response 200
{ "api_version": "2026-10", "app_id": "0193a1b2-c3d4-7e5f-8a6b-000000000047", "app_name": "Docs", "created_at": "2026-10-18T09:30:00Z", "disabled_at": null, "endpoint": "https://erp.example.com/sooquna/orders", "failure_since": null, "fields": [], "id": "0193a1b2-c3d4-7e5f-8a6b-000000000048", "metafield_namespaces": [], "status": "active", "topic": "orders/create", "updated_at": "2026-10-18T09:30:00Z", "version": 1}Update a webhook subscription
Section titled “Update a webhook subscription”PUT /webhooks/{id} · Any token
| Parameter | In | Description |
|---|---|---|
id |
path | The resource’s ID. |
curl -X PUT "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048" \ -H "X-Sooquna-Access-Token: $SOOQUNA_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "topic": "orders/create", "endpoint": "https://erp.example.com/sooquna/orders", "fields": ["id", "name", "total_price", "financial_status"], "version": 1}'const res = await fetch("https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048", { method: "PUT", headers: { "X-Sooquna-Access-Token": process.env.SOOQUNA_TOKEN, "Content-Type": "application/json", }, body: JSON.stringify({ "topic": "orders/create", "endpoint": "https://erp.example.com/sooquna/orders", "fields": ["id", "name", "total_price", "financial_status"], "version": 1 }),});if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);const data = await res.json();console.log(data);import osimport requests
res = requests.put( "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048", headers={ "X-Sooquna-Access-Token": os.environ["SOOQUNA_TOKEN"], }, json={ "topic": "orders/create", "endpoint": "https://erp.example.com/sooquna/orders", "fields": ["id", "name", "total_price", "financial_status"], "version": 1, },)res.raise_for_status()print(res.json())<?php$ch = curl_init('https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048');curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'PUT', CURLOPT_HTTPHEADER => [ 'X-Sooquna-Access-Token: ' . getenv('SOOQUNA_TOKEN'), 'Content-Type: application/json', ], CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => json_encode([ 'topic' => 'orders/create', 'endpoint' => 'https://erp.example.com/sooquna/orders', 'fields' => ['id', 'name', 'total_price', 'financial_status'], 'version' => 1, ], JSON_UNESCAPED_UNICODE),]);$response = curl_exec($ch);$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);if ($status >= 300) { throw new RuntimeException("$status: $response");}$data = json_decode($response, true);print_r($data);package main
import ( "fmt" "io" "net/http" "os" "strings")
func main() { body := `{ "topic": "orders/create", "endpoint": "https://erp.example.com/sooquna/orders", "fields": ["id", "name", "total_price", "financial_status"], "version": 1}` req, err := http.NewRequest("PUT", "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048", strings.NewReader(body)) if err != nil { panic(err) } req.Header.Set("X-Sooquna-Access-Token", os.Getenv("SOOQUNA_TOKEN")) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() if res.StatusCode >= 300 { data, _ := io.ReadAll(res.Body) panic(fmt.Sprintf("%d: %s", res.StatusCode, data)) } data, _ := io.ReadAll(res.Body) fmt.Println(string(data))}using System.Text;
using var client = new HttpClient();var req = new HttpRequestMessage(HttpMethod.Put, "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048");req.Headers.Add("X-Sooquna-Access-Token", Environment.GetEnvironmentVariable("SOOQUNA_TOKEN"));req.Content = new StringContent("""{ "topic": "orders/create", "endpoint": "https://erp.example.com/sooquna/orders", "fields": ["id", "name", "total_price", "financial_status"], "version": 1}""", Encoding.UTF8, "application/json");var res = await client.SendAsync(req);if (!res.IsSuccessStatusCode) throw new Exception($"{(int)res.StatusCode}: {await res.Content.ReadAsStringAsync()}");Console.WriteLine(await res.Content.ReadAsStringAsync());Response 200
{ "api_version": "2026-10", "app_id": "0193a1b2-c3d4-7e5f-8a6b-000000000047", "app_name": "Docs", "created_at": "2026-10-18T09:30:00Z", "disabled_at": null, "endpoint": "https://erp.example.com/sooquna/orders", "failure_since": null, "fields": ["id", "name"], "id": "0193a1b2-c3d4-7e5f-8a6b-000000000048", "metafield_namespaces": [], "status": "active", "topic": "orders/create", "updated_at": "2026-10-18T09:30:00Z", "version": 2}Send a test delivery
Section titled “Send a test delivery”POST /webhooks/{id}/test · Any token
| Parameter | In | Description |
|---|---|---|
id |
path | The resource’s ID. |
curl -X POST "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/test" \ -H "X-Sooquna-Access-Token: $SOOQUNA_TOKEN"const res = await fetch("https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/test", { method: "POST", headers: { "X-Sooquna-Access-Token": process.env.SOOQUNA_TOKEN, },});if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);const data = await res.json();console.log(data);import osimport requests
res = requests.post( "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/test", headers={ "X-Sooquna-Access-Token": os.environ["SOOQUNA_TOKEN"], },)res.raise_for_status()print(res.json())<?php$ch = curl_init('https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/test');curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_HTTPHEADER => [ 'X-Sooquna-Access-Token: ' . getenv('SOOQUNA_TOKEN'), ], CURLOPT_RETURNTRANSFER => true,]);$response = curl_exec($ch);$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);if ($status >= 300) { throw new RuntimeException("$status: $response");}$data = json_decode($response, true);print_r($data);package main
import ( "fmt" "io" "net/http" "os")
func main() { req, err := http.NewRequest("POST", "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/test", nil) if err != nil { panic(err) } req.Header.Set("X-Sooquna-Access-Token", os.Getenv("SOOQUNA_TOKEN")) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() if res.StatusCode >= 300 { data, _ := io.ReadAll(res.Body) panic(fmt.Sprintf("%d: %s", res.StatusCode, data)) } data, _ := io.ReadAll(res.Body) fmt.Println(string(data))}using System.Text;
using var client = new HttpClient();var req = new HttpRequestMessage(HttpMethod.Post, "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/test");req.Headers.Add("X-Sooquna-Access-Token", Environment.GetEnvironmentVariable("SOOQUNA_TOKEN"));var res = await client.SendAsync(req);if (!res.IsSuccessStatusCode) throw new Exception($"{(int)res.StatusCode}: {await res.Content.ReadAsStringAsync()}");Console.WriteLine(await res.Content.ReadAsStringAsync());List recent deliveries
Section titled “List recent deliveries”GET /webhooks/{id}/deliveries · Any token
| Parameter | In | Description |
|---|---|---|
id |
path | The resource’s ID. |
limit |
query | For example 20. |
curl -X GET "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/deliveries?limit=20" \ -H "X-Sooquna-Access-Token: $SOOQUNA_TOKEN"const res = await fetch("https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/deliveries?limit=20", { method: "GET", headers: { "X-Sooquna-Access-Token": process.env.SOOQUNA_TOKEN, },});if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);const data = await res.json();console.log(data);import osimport requests
res = requests.get( "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/deliveries?limit=20", headers={ "X-Sooquna-Access-Token": os.environ["SOOQUNA_TOKEN"], },)res.raise_for_status()print(res.json())<?php$ch = curl_init('https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/deliveries?limit=20');curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => [ 'X-Sooquna-Access-Token: ' . getenv('SOOQUNA_TOKEN'), ], CURLOPT_RETURNTRANSFER => true,]);$response = curl_exec($ch);$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);if ($status >= 300) { throw new RuntimeException("$status: $response");}$data = json_decode($response, true);print_r($data);package main
import ( "fmt" "io" "net/http" "os")
func main() { req, err := http.NewRequest("GET", "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/deliveries?limit=20", nil) if err != nil { panic(err) } req.Header.Set("X-Sooquna-Access-Token", os.Getenv("SOOQUNA_TOKEN")) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() if res.StatusCode >= 300 { data, _ := io.ReadAll(res.Body) panic(fmt.Sprintf("%d: %s", res.StatusCode, data)) } data, _ := io.ReadAll(res.Body) fmt.Println(string(data))}using System.Text;
using var client = new HttpClient();var req = new HttpRequestMessage(HttpMethod.Get, "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/deliveries?limit=20");req.Headers.Add("X-Sooquna-Access-Token", Environment.GetEnvironmentVariable("SOOQUNA_TOKEN"));var res = await client.SendAsync(req);if (!res.IsSuccessStatusCode) throw new Exception($"{(int)res.StatusCode}: {await res.Content.ReadAsStringAsync()}");Console.WriteLine(await res.Content.ReadAsStringAsync());Response 200
{"data": []}Resend a delivery
Section titled “Resend a delivery”POST /webhooks/{id}/deliveries/{webhook_id}/resend · Any token
| Parameter | In | Description |
|---|---|---|
id |
path | The resource’s ID. |
webhook_id |
path | The webhook ID. |
curl -X POST "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/deliveries/0193a1b2-0d08-78d5-8cf4-7748fc34dca0/resend" \ -H "X-Sooquna-Access-Token: $SOOQUNA_TOKEN"const res = await fetch("https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/deliveries/0193a1b2-0d08-78d5-8cf4-7748fc34dca0/resend", { method: "POST", headers: { "X-Sooquna-Access-Token": process.env.SOOQUNA_TOKEN, },});if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);const data = await res.json();console.log(data);import osimport requests
res = requests.post( "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/deliveries/0193a1b2-0d08-78d5-8cf4-7748fc34dca0/resend", headers={ "X-Sooquna-Access-Token": os.environ["SOOQUNA_TOKEN"], },)res.raise_for_status()print(res.json())<?php$ch = curl_init('https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/deliveries/0193a1b2-0d08-78d5-8cf4-7748fc34dca0/resend');curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_HTTPHEADER => [ 'X-Sooquna-Access-Token: ' . getenv('SOOQUNA_TOKEN'), ], CURLOPT_RETURNTRANSFER => true,]);$response = curl_exec($ch);$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);if ($status >= 300) { throw new RuntimeException("$status: $response");}$data = json_decode($response, true);print_r($data);package main
import ( "fmt" "io" "net/http" "os")
func main() { req, err := http.NewRequest("POST", "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/deliveries/0193a1b2-0d08-78d5-8cf4-7748fc34dca0/resend", nil) if err != nil { panic(err) } req.Header.Set("X-Sooquna-Access-Token", os.Getenv("SOOQUNA_TOKEN")) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() if res.StatusCode >= 300 { data, _ := io.ReadAll(res.Body) panic(fmt.Sprintf("%d: %s", res.StatusCode, data)) } data, _ := io.ReadAll(res.Body) fmt.Println(string(data))}using System.Text;
using var client = new HttpClient();var req = new HttpRequestMessage(HttpMethod.Post, "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/deliveries/0193a1b2-0d08-78d5-8cf4-7748fc34dca0/resend");req.Headers.Add("X-Sooquna-Access-Token", Environment.GetEnvironmentVariable("SOOQUNA_TOKEN"));var res = await client.SendAsync(req);if (!res.IsSuccessStatusCode) throw new Exception($"{(int)res.StatusCode}: {await res.Content.ReadAsStringAsync()}");Console.WriteLine(await res.Content.ReadAsStringAsync());Pause a subscription
Section titled “Pause a subscription”POST /webhooks/{id}/disable · Any token
| Parameter | In | Description |
|---|---|---|
id |
path | The resource’s ID. |
curl -X POST "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/disable" \ -H "X-Sooquna-Access-Token: $SOOQUNA_TOKEN"const res = await fetch("https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/disable", { method: "POST", headers: { "X-Sooquna-Access-Token": process.env.SOOQUNA_TOKEN, },});if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);const data = await res.json();console.log(data);import osimport requests
res = requests.post( "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/disable", headers={ "X-Sooquna-Access-Token": os.environ["SOOQUNA_TOKEN"], },)res.raise_for_status()print(res.json())<?php$ch = curl_init('https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/disable');curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_HTTPHEADER => [ 'X-Sooquna-Access-Token: ' . getenv('SOOQUNA_TOKEN'), ], CURLOPT_RETURNTRANSFER => true,]);$response = curl_exec($ch);$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);if ($status >= 300) { throw new RuntimeException("$status: $response");}$data = json_decode($response, true);print_r($data);package main
import ( "fmt" "io" "net/http" "os")
func main() { req, err := http.NewRequest("POST", "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/disable", nil) if err != nil { panic(err) } req.Header.Set("X-Sooquna-Access-Token", os.Getenv("SOOQUNA_TOKEN")) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() if res.StatusCode >= 300 { data, _ := io.ReadAll(res.Body) panic(fmt.Sprintf("%d: %s", res.StatusCode, data)) } data, _ := io.ReadAll(res.Body) fmt.Println(string(data))}using System.Text;
using var client = new HttpClient();var req = new HttpRequestMessage(HttpMethod.Post, "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/disable");req.Headers.Add("X-Sooquna-Access-Token", Environment.GetEnvironmentVariable("SOOQUNA_TOKEN"));var res = await client.SendAsync(req);if (!res.IsSuccessStatusCode) throw new Exception($"{(int)res.StatusCode}: {await res.Content.ReadAsStringAsync()}");Console.WriteLine(await res.Content.ReadAsStringAsync());Response 200
{ "api_version": "2026-10", "app_id": "0193a1b2-c3d4-7e5f-8a6b-000000000047", "app_name": "Docs", "created_at": "2026-10-18T09:30:00Z", "disabled_at": "2026-10-18T09:30:00Z", "endpoint": "https://erp.example.com/sooquna/orders", "failure_since": null, "fields": ["id", "name"], "id": "0193a1b2-c3d4-7e5f-8a6b-000000000048", "metafield_namespaces": [], "status": "disabled", "topic": "orders/create", "updated_at": "2026-10-18T09:30:00Z", "version": 3}Resume a subscription
Section titled “Resume a subscription”POST /webhooks/{id}/enable · Any token
| Parameter | In | Description |
|---|---|---|
id |
path | The resource’s ID. |
curl -X POST "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/enable" \ -H "X-Sooquna-Access-Token: $SOOQUNA_TOKEN"const res = await fetch("https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/enable", { method: "POST", headers: { "X-Sooquna-Access-Token": process.env.SOOQUNA_TOKEN, },});if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);const data = await res.json();console.log(data);import osimport requests
res = requests.post( "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/enable", headers={ "X-Sooquna-Access-Token": os.environ["SOOQUNA_TOKEN"], },)res.raise_for_status()print(res.json())<?php$ch = curl_init('https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/enable');curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_HTTPHEADER => [ 'X-Sooquna-Access-Token: ' . getenv('SOOQUNA_TOKEN'), ], CURLOPT_RETURNTRANSFER => true,]);$response = curl_exec($ch);$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);if ($status >= 300) { throw new RuntimeException("$status: $response");}$data = json_decode($response, true);print_r($data);package main
import ( "fmt" "io" "net/http" "os")
func main() { req, err := http.NewRequest("POST", "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/enable", nil) if err != nil { panic(err) } req.Header.Set("X-Sooquna-Access-Token", os.Getenv("SOOQUNA_TOKEN")) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() if res.StatusCode >= 300 { data, _ := io.ReadAll(res.Body) panic(fmt.Sprintf("%d: %s", res.StatusCode, data)) } data, _ := io.ReadAll(res.Body) fmt.Println(string(data))}using System.Text;
using var client = new HttpClient();var req = new HttpRequestMessage(HttpMethod.Post, "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048/enable");req.Headers.Add("X-Sooquna-Access-Token", Environment.GetEnvironmentVariable("SOOQUNA_TOKEN"));var res = await client.SendAsync(req);if (!res.IsSuccessStatusCode) throw new Exception($"{(int)res.StatusCode}: {await res.Content.ReadAsStringAsync()}");Console.WriteLine(await res.Content.ReadAsStringAsync());Response 200
{ "api_version": "2026-10", "app_id": "0193a1b2-c3d4-7e5f-8a6b-000000000047", "app_name": "Docs", "created_at": "2026-10-18T09:30:00Z", "disabled_at": null, "endpoint": "https://erp.example.com/sooquna/orders", "failure_since": null, "fields": ["id", "name"], "id": "0193a1b2-c3d4-7e5f-8a6b-000000000048", "metafield_namespaces": [], "status": "active", "topic": "orders/create", "updated_at": "2026-10-18T09:30:00Z", "version": 4}Delete a subscription
Section titled “Delete a subscription”DELETE /webhooks/{id} · Any token
| Parameter | In | Description |
|---|---|---|
id |
path | The resource’s ID. |
curl -X DELETE "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048" \ -H "X-Sooquna-Access-Token: $SOOQUNA_TOKEN"const res = await fetch("https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048", { method: "DELETE", headers: { "X-Sooquna-Access-Token": process.env.SOOQUNA_TOKEN, },});if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`);const data = await res.json();console.log(data);import osimport requests
res = requests.delete( "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048", headers={ "X-Sooquna-Access-Token": os.environ["SOOQUNA_TOKEN"], },)res.raise_for_status()print(res.json())<?php$ch = curl_init('https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048');curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'DELETE', CURLOPT_HTTPHEADER => [ 'X-Sooquna-Access-Token: ' . getenv('SOOQUNA_TOKEN'), ], CURLOPT_RETURNTRANSFER => true,]);$response = curl_exec($ch);$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);if ($status >= 300) { throw new RuntimeException("$status: $response");}$data = json_decode($response, true);print_r($data);package main
import ( "fmt" "io" "net/http" "os")
func main() { req, err := http.NewRequest("DELETE", "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048", nil) if err != nil { panic(err) } req.Header.Set("X-Sooquna-Access-Token", os.Getenv("SOOQUNA_TOKEN")) res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() if res.StatusCode >= 300 { data, _ := io.ReadAll(res.Body) panic(fmt.Sprintf("%d: %s", res.StatusCode, data)) } data, _ := io.ReadAll(res.Body) fmt.Println(string(data))}using System.Text;
using var client = new HttpClient();var req = new HttpRequestMessage(HttpMethod.Delete, "https://api.sooquna.com/admin/api/2026-10/webhooks/0193a1b2-c3d4-7e5f-8a6b-000000000048");req.Headers.Add("X-Sooquna-Access-Token", Environment.GetEnvironmentVariable("SOOQUNA_TOKEN"));var res = await client.SendAsync(req);if (!res.IsSuccessStatusCode) throw new Exception($"{(int)res.StatusCode}: {await res.Content.ReadAsStringAsync()}");Console.WriteLine(await res.Content.ReadAsStringAsync());Response 204
{}Was this page helpful?

