curl --request POST \
--url https://api.example.com/v0/subscriptions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"idempotency_key": "<string>",
"name": "<string>",
"saved_query_id": "<string>",
"saved_query_version_id": "<string>",
"evaluator": {
"plugin_id": "<string>",
"version": "<string>",
"configuration": {}
},
"destination_id": "<string>",
"owner": "<string>"
}
'import requests
url = "https://api.example.com/v0/subscriptions"
payload = {
"idempotency_key": "<string>",
"name": "<string>",
"saved_query_id": "<string>",
"saved_query_version_id": "<string>",
"evaluator": {
"plugin_id": "<string>",
"version": "<string>",
"configuration": {}
},
"destination_id": "<string>",
"owner": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
idempotency_key: '<string>',
name: '<string>',
saved_query_id: '<string>',
saved_query_version_id: '<string>',
evaluator: {plugin_id: '<string>', version: '<string>', configuration: {}},
destination_id: '<string>',
owner: '<string>'
})
};
fetch('https://api.example.com/v0/subscriptions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v0/subscriptions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'idempotency_key' => '<string>',
'name' => '<string>',
'saved_query_id' => '<string>',
'saved_query_version_id' => '<string>',
'evaluator' => [
'plugin_id' => '<string>',
'version' => '<string>',
'configuration' => [
]
],
'destination_id' => '<string>',
'owner' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v0/subscriptions"
payload := strings.NewReader("{\n \"idempotency_key\": \"<string>\",\n \"name\": \"<string>\",\n \"saved_query_id\": \"<string>\",\n \"saved_query_version_id\": \"<string>\",\n \"evaluator\": {\n \"plugin_id\": \"<string>\",\n \"version\": \"<string>\",\n \"configuration\": {}\n },\n \"destination_id\": \"<string>\",\n \"owner\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/v0/subscriptions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"idempotency_key\": \"<string>\",\n \"name\": \"<string>\",\n \"saved_query_id\": \"<string>\",\n \"saved_query_version_id\": \"<string>\",\n \"evaluator\": {\n \"plugin_id\": \"<string>\",\n \"version\": \"<string>\",\n \"configuration\": {}\n },\n \"destination_id\": \"<string>\",\n \"owner\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v0/subscriptions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"idempotency_key\": \"<string>\",\n \"name\": \"<string>\",\n \"saved_query_id\": \"<string>\",\n \"saved_query_version_id\": \"<string>\",\n \"evaluator\": {\n \"plugin_id\": \"<string>\",\n \"version\": \"<string>\",\n \"configuration\": {}\n },\n \"destination_id\": \"<string>\",\n \"owner\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"subscription_id": "<string>",
"name": "<string>",
"enabled": true,
"deleted": true,
"current_version": {
"subscription_id": "<string>",
"version_id": "<string>",
"saved_query_id": "<string>",
"saved_query_version_id": "<string>",
"evaluator": {
"plugin_id": "<string>",
"version": "<string>",
"configuration": {}
},
"destination_id": "<string>",
"owner": "<string>"
},
"owner": "<string>"
}{
"code": "<string>",
"message": "<string>",
"retryable": true,
"request_id": "<string>",
"trace_id": "<string>",
"span_id": "<string>",
"field": "<string>",
"resync_url": "<string>"
}Create subscription
Atomically create enabled Subscription/Version and activation boundary in the durable journal. Evaluate future eligible transitions, not existing history. Replay same key/request returns same identity and does not reactivate a disabled Subscription. The evaluator must be installed (422 unsupported_evaluator); the pinned Saved Query Version expression and the evaluator configuration must satisfy the evaluator’s declared schemas (422 invalid_expression with field /saved_query_version_id, or invalid_subscription_configuration with field /evaluator/configuration/…; message names the first schema issue).
curl --request POST \
--url https://api.example.com/v0/subscriptions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"idempotency_key": "<string>",
"name": "<string>",
"saved_query_id": "<string>",
"saved_query_version_id": "<string>",
"evaluator": {
"plugin_id": "<string>",
"version": "<string>",
"configuration": {}
},
"destination_id": "<string>",
"owner": "<string>"
}
'import requests
url = "https://api.example.com/v0/subscriptions"
payload = {
"idempotency_key": "<string>",
"name": "<string>",
"saved_query_id": "<string>",
"saved_query_version_id": "<string>",
"evaluator": {
"plugin_id": "<string>",
"version": "<string>",
"configuration": {}
},
"destination_id": "<string>",
"owner": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
idempotency_key: '<string>',
name: '<string>',
saved_query_id: '<string>',
saved_query_version_id: '<string>',
evaluator: {plugin_id: '<string>', version: '<string>', configuration: {}},
destination_id: '<string>',
owner: '<string>'
})
};
fetch('https://api.example.com/v0/subscriptions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v0/subscriptions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'idempotency_key' => '<string>',
'name' => '<string>',
'saved_query_id' => '<string>',
'saved_query_version_id' => '<string>',
'evaluator' => [
'plugin_id' => '<string>',
'version' => '<string>',
'configuration' => [
]
],
'destination_id' => '<string>',
'owner' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v0/subscriptions"
payload := strings.NewReader("{\n \"idempotency_key\": \"<string>\",\n \"name\": \"<string>\",\n \"saved_query_id\": \"<string>\",\n \"saved_query_version_id\": \"<string>\",\n \"evaluator\": {\n \"plugin_id\": \"<string>\",\n \"version\": \"<string>\",\n \"configuration\": {}\n },\n \"destination_id\": \"<string>\",\n \"owner\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/v0/subscriptions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"idempotency_key\": \"<string>\",\n \"name\": \"<string>\",\n \"saved_query_id\": \"<string>\",\n \"saved_query_version_id\": \"<string>\",\n \"evaluator\": {\n \"plugin_id\": \"<string>\",\n \"version\": \"<string>\",\n \"configuration\": {}\n },\n \"destination_id\": \"<string>\",\n \"owner\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v0/subscriptions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"idempotency_key\": \"<string>\",\n \"name\": \"<string>\",\n \"saved_query_id\": \"<string>\",\n \"saved_query_version_id\": \"<string>\",\n \"evaluator\": {\n \"plugin_id\": \"<string>\",\n \"version\": \"<string>\",\n \"configuration\": {}\n },\n \"destination_id\": \"<string>\",\n \"owner\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"subscription_id": "<string>",
"name": "<string>",
"enabled": true,
"deleted": true,
"current_version": {
"subscription_id": "<string>",
"version_id": "<string>",
"saved_query_id": "<string>",
"saved_query_version_id": "<string>",
"evaluator": {
"plugin_id": "<string>",
"version": "<string>",
"configuration": {}
},
"destination_id": "<string>",
"owner": "<string>"
},
"owner": "<string>"
}{
"code": "<string>",
"message": "<string>",
"retryable": true,
"request_id": "<string>",
"trace_id": "<string>",
"span_id": "<string>",
"field": "<string>",
"resync_url": "<string>"
}Authorizations
Body
Create enabled from-now Subscription. An optional owner makes it the Subscription of one end user of the client application; without one it is global to the Organization. The owner is fixed for the Subscription's life and part of the idempotent request. An optional deployment-configured destination per version belongs to this Organization. Omit destination_id to record Matches and change-feed notices without creating Deliveries or sending webhooks. URL and signing key are provisioned outside this API and not returned. No inline secret or dynamic destination registry in the tracer.
Subscription Owner, an opaque end-user reference defined by the client application (for example user-123). Quivr stores, filters and echoes it without interpreting it. At most 128 characters without control characters; none is reserved for the listing filter. A refused owner is 422 invalid_owner, in a creation body as in the listing filter.
1 - 128Response
Successful response
Absent owner means a global, organization-wide Subscription.
Subscription Owner, an opaque end-user reference defined by the client application (for example user-123). Quivr stores, filters and echoes it without interpreting it. At most 128 characters without control characters; none is reserved for the listing filter. A refused owner is 422 invalid_owner, in a creation body as in the listing filter.
1 - 128