Subscribe To Notifications
- bodyobject
- endpointstringrequiredDescription
- WebhookSubscriptionResponse
- endpointstringDescription
- messagestringExampleDescription
- object
- status_codeintegerrequiredDescription
- contentobjectrequiredDescription
- detailsErrorResponseDetailsDescription
- error_messagestringrequiredDescriptionDefaultThe request is malformed.
- exceptionstring<TripleBadRequestError>requiredDescription
- object
- status_codeintegerrequiredDescription
- contentobjectrequiredDescription
- detailsErrorResponseDetailsDescription
- error_messagestringrequiredDescriptionDefaultClient authentication failed.
- exceptionstring<TripleNotAuthenticatedError>requiredDescription
- object
- status_codeintegerrequiredDescription
- contentobjectrequiredDescription
- detailsErrorResponseDetailsDescription
- error_messagestringrequiredDescriptionDefaultThe url path or path parameter is invalid.
- exceptionstring<TripleInvalidPathError>requiredDescription
- object
- status_codeintegerrequiredDescription
- contentobjectrequiredDescription
- detailsErrorResponseDetailsDescription
- error_messagestringrequiredDescriptionDefaultThe request was well-formed but violated entity integrity constraints.
- exceptionstring<TripleIntegrityError>requiredDescription
- object
- status_codeintegerrequiredDescription
- contentobjectrequiredDescription
- detailsErrorResponseDetailsDescription
- error_messagestringrequiredDescriptionDefaultThe request defined an unsupported media type.
- exceptionstring<TripleUnsupportedMediaType>requiredDescription
- object
- status_codeintegerrequiredDescription
- contentobjectrequiredDescription
- detailsErrorResponseDetailsDescription
- error_messagestringrequiredDescriptionDefaultThe request was well-formed but could not be processed.
- exceptionstring<TripleUnprocessableEntity>requiredDescription
- object
- status_codeintegerrequiredDescription
- contentobjectrequiredDescription
- detailsErrorResponseDetailsDescription
- error_messagestringrequiredDescriptionDefaultTriple was unable to process the request due to an internal error.
- exceptionstring<TripleInternalServerError>requiredDescription
- object
- status_codeintegerrequiredDescription
- contentobjectrequiredDescription
- detailsErrorResponseDetailsDescription
- error_messagestringrequiredDescriptionDefaultThe request failed because it requires a feature that is not yet implemented.
- exceptionstring<TripleNotImplementedError>requiredDescription
- object
- status_codeintegerrequiredDescription
- contentobjectrequiredDescription
- detailsErrorResponseDetailsDescription
- error_messagestringrequiredDescriptionDefaultThe request failed due to a triple service interruption.
- exceptionstring<TripleServiceUnavailable>requiredDescription
curl --request POST \
--url https://api.sandbox.tripleup.dev/partner/notifications \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '{
"endpoint": ""
}'var myHeaders = new Headers();
myHeaders.append("accept", "application/json");
myHeaders.append("content-type", "application/json");
var raw = JSON.stringify({
"endpoint": ""
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api.sandbox.tripleup.dev/partner/notifications", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));require "uri"
require "json"
require "net/http"
url = URI("https://api.sandbox.tripleup.dev/partner/notifications")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["accept"] = "application/json"
request["content-type"] = "application/json"
request.body = JSON.dump({
"endpoint": ""
})
response = https.request(request)
puts response.read_body
import requests
import json
url = "https://api.sandbox.tripleup.dev/partner/notifications"
payload = json.dumps({
"endpoint": ""
})
headers = {
'accept': 'application/json',
'content-type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
// Subscription Result
{
"endpoint": "",
"message": "Subscription to https://my.webhook.numo.com successfully added"
}// TripleBadRequestError
{
"status_code": 0,
"content": {
"details": [
""
],
"error_message": "",
"exception": ""
}
}// TripleNotAuthenticatedError
{
"status_code": 0,
"content": {
"details": [
""
],
"error_message": "",
"exception": ""
}
}// TripleInvalidPathError
{
"status_code": 0,
"content": {
"details": [
""
],
"error_message": "",
"exception": ""
}
}// TripleIntegrityError
{
"status_code": 0,
"content": {
"details": [
""
],
"error_message": "",
"exception": ""
}
}// TripleUnsupportedMediaType
{
"status_code": 0,
"content": {
"details": [
""
],
"error_message": "",
"exception": ""
}
}// TripleUnprocessableEntity
{
"status_code": 0,
"content": {
"details": [
""
],
"error_message": "",
"exception": ""
}
}// TripleInternalServerError
{
"status_code": 0,
"content": {
"details": [
""
],
"error_message": "",
"exception": ""
}
}// TripleNotImplementedError
{
"status_code": 0,
"content": {
"details": [
""
],
"error_message": "",
"exception": ""
}
}// TripleServiceUnavailable
{
"status_code": 0,
"content": {
"details": [
""
],
"error_message": "",
"exception": ""
}
}Subscribe to notifications using a user-supplied webhook. After receiving a successful response from this endpoint, you will receive a confirmation POST to the supplied webhook similar to the following to validate your subscription:
{
"Type": "SubscriptionConfirmation",
"MessageId": "...",
"TopicArn": "arn:aws:sns:region:account-id:sns-topic-arn",
"Message": "You have chosen to subscribe to the topic arn:aws:sns:region:account-id:sns-topic-arn.\n
To confirm the subscription, visit the SubscribeURL included in this message.",
"SubscribeURL": "https://sns.region.amazonaws.com/?Action=ConfirmSubscription&TopicArn=...",
"Timestamp" :"2022-01-01T00:00:00.000Z",
"SignatureVersion": "1",
"Signature": "...",
"SigningCertURL": "..."
}After issuing a GET request for the SubscribeURL you will receive a response like the following:
<ConfirmSubscriptionResponse xmlns="http://sns.amazonaws.com/doc/2010-03-31/">
<ConfirmSubscriptionResult>
<SubscriptionArn>...</SubscriptionArn>
</ConfirmSubscriptionResult>
<ResponseMetadata>
<RequestId>...</RequestId>
</ResponseMetadata>
</ConfirmSubscriptionResponse>The SubscriptionArn in the response can be used to unsubscribe from the topic by hitting the DELETE /notifications/$SubscriptionArn link in the API. Alternatively for received messages they also contain an UnsubscribeURL which will do the same.
For several reward statuses you'll get an SNS message from AWS for example:
{
"Type": "Notification",
"MessageId": "...",
"TopicArn": "...",
"Subject": "Reward Pending Merchant Approval",
"Message": "{\"publisher_external_id\": null, \"card_program_external_id\": null, \"card_account_external_id\": null, \"transaction_external_id\": \"tx-1\", \"merchant_name\": \"L'Osteria\", \"reward_status\": \"PENDING_MERCHANT_APPROVAL\", \"reward_amount\": \"0.00\", \"currency_code\": \"USD\", \"transaction_timestamp\": \"2022-08-03T01:00:00Z\", \"transaction_amount\": \"20\", \"transaction_currency_code\": \"USD\"}",
"Timestamp": "2022-01-01T00:00:00.000Z",
"SignatureVersion": "1",
"Signature": "...",
"SigningCertURL": "...",
"UnsubscribeURL": "...",
"MessageAttributes": {
"publisher_id": {
"Type": "String",
"Value": "2"
}
}
}If you subscribe with a publisher account, you will receive any applicable statuses for that publisher that occur.
When you subscribe with a portfolio manager account you will receive notifications on statuses for all publishers in a single subscription.