curl --request GET \
--url https://api.staging.payrails.io/dispute/disputes/alert-enrollments \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.staging.payrails.io/dispute/disputes/alert-enrollments"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.staging.payrails.io/dispute/disputes/alert-enrollments', 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.staging.payrails.io/dispute/disputes/alert-enrollments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.staging.payrails.io/dispute/disputes/alert-enrollments"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.staging.payrails.io/dispute/disputes/alert-enrollments")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.staging.payrails.io/dispute/disputes/alert-enrollments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"links": {
"self": "<string>",
"prev": "<string>",
"next": "<string>",
"first": "<string>",
"last": "<string>"
},
"results": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"providerId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"providerConfigId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"program": "Ethoca",
"activeDescriptorCount": 123,
"totalDescriptorCount": 123,
"ruleset": "<string>",
"externalReference": "<string>",
"descriptorDetails": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"enrollmentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"descriptor": "<string>",
"type": "Ethoca",
"status": "Pending",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"bankMid": "<string>",
"externalReference": "<string>",
"unenrolRequestedAt": "2023-11-07T05:31:56Z",
"updatedBy": "<string>",
"lastSyncedAt": "2023-11-07T05:31:56Z"
}
],
"lastError": "<string>",
"lastPollAt": "2023-11-07T05:31:56Z",
"activatedAt": "2023-11-07T05:31:56Z",
"unenrollRequestedAt": "2023-11-07T05:31:56Z"
}
]
}{
"errors": [
{
"id": "a24bc325-3929-4d9d-9c08-b3aa532685b7",
"code": "request.malformed",
"detail": "The request has malformed syntax",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestmalformed"
}
]
}{
"errors": [
{
"id": "a24bc325-3929-4d9d-9c08-b3aa532685b7",
"code": "request.unauthorized",
"detail": "The request lacks necessary credentials to perform the specified action",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestunauthorized"
}
]
}{
"errors": [
{
"id": "e7db22b3-914e-4975-928e-9edfb0885bea",
"code": "request.forbidden",
"detail": "The request credentials lack the required permissions to perform the specified action",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestforbidden"
}
]
}{
"errors": [
{
"id": "a24bc325-3929-4d9d-9c08-b3aa532685b7",
"code": "request.not-found",
"detail": "The requested resource was not found",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestnot-found"
}
]
}{
"errors": [
{
"id": "a24bc325-3929-4d9d-9c08-b3aa532685b7",
"code": "request.rate-limit",
"detail": "Too many requests",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestrate-limit"
}
]
}List Dispute Alert Enrollments
List the pre-chargeback dispute alert enrollments visible in your workspace.
curl --request GET \
--url https://api.staging.payrails.io/dispute/disputes/alert-enrollments \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.staging.payrails.io/dispute/disputes/alert-enrollments"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.staging.payrails.io/dispute/disputes/alert-enrollments', 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.staging.payrails.io/dispute/disputes/alert-enrollments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.staging.payrails.io/dispute/disputes/alert-enrollments"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.staging.payrails.io/dispute/disputes/alert-enrollments")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.staging.payrails.io/dispute/disputes/alert-enrollments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"links": {
"self": "<string>",
"prev": "<string>",
"next": "<string>",
"first": "<string>",
"last": "<string>"
},
"results": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"providerId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"providerConfigId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"program": "Ethoca",
"activeDescriptorCount": 123,
"totalDescriptorCount": 123,
"ruleset": "<string>",
"externalReference": "<string>",
"descriptorDetails": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"enrollmentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"descriptor": "<string>",
"type": "Ethoca",
"status": "Pending",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"bankMid": "<string>",
"externalReference": "<string>",
"unenrolRequestedAt": "2023-11-07T05:31:56Z",
"updatedBy": "<string>",
"lastSyncedAt": "2023-11-07T05:31:56Z"
}
],
"lastError": "<string>",
"lastPollAt": "2023-11-07T05:31:56Z",
"activatedAt": "2023-11-07T05:31:56Z",
"unenrollRequestedAt": "2023-11-07T05:31:56Z"
}
]
}{
"errors": [
{
"id": "a24bc325-3929-4d9d-9c08-b3aa532685b7",
"code": "request.malformed",
"detail": "The request has malformed syntax",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestmalformed"
}
]
}{
"errors": [
{
"id": "a24bc325-3929-4d9d-9c08-b3aa532685b7",
"code": "request.unauthorized",
"detail": "The request lacks necessary credentials to perform the specified action",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestunauthorized"
}
]
}{
"errors": [
{
"id": "e7db22b3-914e-4975-928e-9edfb0885bea",
"code": "request.forbidden",
"detail": "The request credentials lack the required permissions to perform the specified action",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestforbidden"
}
]
}{
"errors": [
{
"id": "a24bc325-3929-4d9d-9c08-b3aa532685b7",
"code": "request.not-found",
"detail": "The requested resource was not found",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestnot-found"
}
]
}{
"errors": [
{
"id": "a24bc325-3929-4d9d-9c08-b3aa532685b7",
"code": "request.rate-limit",
"detail": "Too many requests",
"docUrl": "https://docs.payrails.com/docs/resources/error-codes#requestrate-limit"
}
]
}Authorizations
You can use an OAuth2 JWT bearer token in the Authorization header of your API requests for supported endpoints: Authorization: Bearer <YOUR_JWT_HERE>.
These tokens are valid for 10 minutes and can be requested via the access token endpoint endpoint.
Query Parameters
Filter for a list of enrollments by ID.
Filter for a list of enrollments by workspace ID.
Filter for a list of enrollments by provider ID.
Filter for a list of enrollments by provider config ID.
Filter enrollments by network program.
Ethoca, CDRN, RDR, VerifiINFORM, SAFE Filter for a list of enrollments by creation date. Accepts ISO 8601 date-time values or range expressions.
When true, each enrollment includes its descriptorDetails.
Response
Success.
Hide child attributes
Hide child attributes
The network program this enrollment covers. Ethoca, CDRN, and RDR are descriptor-based actionable programmes. VerifiINFORM is Visa's account-level fraud-reporting feed — one enrollment row covers all Verifi INFORM alert types (TC40, TC15, and future feeds). SAFE is Mastercard's fraud-reporting feed — implicit on Ethoca-enrolled merchants, but a merchant enrolled for fraud reports alone gets its own account-level SAFE enrollment row.
Ethoca, CDRN, RDR, VerifiINFORM, SAFE Number of descriptors on this enrollment currently in an active (Enrolled) state.
Total number of descriptors seeded on this enrollment, regardless of state.
For account-level programs (VerifiINFORM, SAFE): the provider merchant ID supplied at enrollment time. Chargeblast delivers this as merchantId on the program's alert webhooks (TC40/TC15 for VerifiINFORM, SAFE for SAFE); ingestion matches it to this row to resolve incoming alerts. For actionable programmes (Ethoca, CDRN, RDR): the provider-assigned merchant reference (e.g. a Chargeblast cb_* ID), populated after the connector call succeeds.
The per-descriptor rows for this enrollment. Only populated when the request sets includeDescriptors=true; omitted otherwise.
Hide child attributes
Hide child attributes
The merchant descriptor text, stored upper-case and trimmed.
The descriptor's network program.
"Ethoca"
The provider-reported enrollment status for this descriptor.
Pending, Processing, InReview, Enrolled, Rejected, Disabled, Surpressed The provider's identifier for this descriptor, populated by the sync.