---
title: Subscribe To Notifications
slug: mihai-tests/subscribe-to-notifications
createdAt: 2025-05-02T10:16:35.476Z
---

{
  "id": "Yf3gKr8L5vg8XErIM8kBr",
  "type": "api-oas-v2",
  "data": {
    "method": "POST",
    "url": "https://api.sandbox.tripleup.dev/partner/notifications",
    "servers": [
      {
        "url": "https://api.sandbox.tripleup.dev/partner/notifications",
        "description": "triple Sandbox"
      }
    ],
    "name": "Subscribe To Notifications",
    "description": "<p>Subscribe to notifications using a user-supplied webhook.\nAfter 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:</p>\n<pre><code>{\n  \"Type\": \"SubscriptionConfirmation\",\n  \"MessageId\": \"...\",\n  \"TopicArn\": \"arn:aws:sns:region:account-id:sns-topic-arn\",\n  \"Message\": \"You have chosen to subscribe to the topic arn:aws:sns:region:account-id:sns-topic-arn.\\n\n  To confirm the subscription, visit the SubscribeURL included in this message.\",\n  \"SubscribeURL\": \"https://sns.region.amazonaws.com/?Action=ConfirmSubscription&#x26;TopicArn=...\",\n  \"Timestamp\" :\"2022-01-01T00:00:00.000Z\",\n  \"SignatureVersion\": \"1\",\n  \"Signature\": \"...\",\n  \"SigningCertURL\": \"...\"\n}\n</code></pre>\n<p>After issuing a GET request for the <code>SubscribeURL</code> you will receive a response like the following:</p>\n<pre><code>&#x3C;ConfirmSubscriptionResponse xmlns=\"http://sns.amazonaws.com/doc/2010-03-31/\">\n  &#x3C;ConfirmSubscriptionResult>\n    &#x3C;SubscriptionArn>...&#x3C;/SubscriptionArn>\n  &#x3C;/ConfirmSubscriptionResult>\n  &#x3C;ResponseMetadata>\n    &#x3C;RequestId>...&#x3C;/RequestId>\n  &#x3C;/ResponseMetadata>\n&#x3C;/ConfirmSubscriptionResponse>\n</code></pre>\n<p>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 <code>UnsubscribeURL</code> which will do the same.</p>\n<p>For several reward statuses you'll get an SNS message from AWS for example:</p>\n<pre><code>{\n  \"Type\": \"Notification\",\n  \"MessageId\": \"...\",\n  \"TopicArn\": \"...\",\n  \"Subject\": \"Reward Pending Merchant Approval\",\n  \"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\\\"}\",\n  \"Timestamp\": \"2022-01-01T00:00:00.000Z\",\n  \"SignatureVersion\": \"1\",\n  \"Signature\": \"...\",\n  \"SigningCertURL\": \"...\",\n  \"UnsubscribeURL\": \"...\",\n  \"MessageAttributes\": {\n    \"publisher_id\": {\n      \"Type\": \"String\",\n      \"Value\": \"2\"\n    }\n  }\n}\n</code></pre>\n<p>If you subscribe with a publisher account, you will receive any applicable statuses for that publisher that occur.</p>\n<p>When you subscribe with a portfolio manager account you will receive notifications on statuses for all publishers in a single subscription.</p>",
    "contentType": "application/json",
    "request": {
      "pathParameters": [],
      "headerParameters": [],
      "queryParameters": [],
      "bodyDataParameters": [
        {
          "kind": "optional",
          "name": "body",
          "type": "object",
          "description": "",
          "schema": [
            {
              "name": "endpoint",
              "kind": "required",
              "type": "string",
              "description": "The webhook endpoint you'd like subscriptions to go to",
              "example": ""
            }
          ],
          "isExpanded": true
        }
      ],
      "formDataParameters": [],
      "oAuthParameters": []
    },
    "responses": [
      {
        "statusCode": "200",
        "description": "Subscription Result",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "customType": "WebhookSubscriptionResponse",
            "schema": [
              {
                "name": "endpoint",
                "kind": "optional",
                "type": "string",
                "description": "The endpoint that was subscribed",
                "example": ""
              },
              {
                "name": "message",
                "kind": "optional",
                "type": "string",
                "description": "A successful response to subscription",
                "example": "Subscription to https://my.webhook.numo.com successfully added"
              }
            ],
            "modelRef": "#/components/schemas/WebhookSubscriptionResponse",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "400",
        "description": "TripleBadRequestError",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "schema": [
              {
                "name": "status_code",
                "kind": "required",
                "type": "integer",
                "description": "The 3-digit HTTP Response Status code",
                "example": 0
              },
              {
                "name": "content",
                "kind": "required",
                "type": "object",
                "description": "The error response content.",
                "example": "",
                "schema": [
                  {
                    "name": "details",
                    "kind": "optional",
                    "type": "array",
                    "description": "An array of error detail",
                    "modelRef": "#/components/schemas/ErrorResponseDetails",
                    "customType": "ErrorResponseDetails",
                    "schema": []
                  },
                  {
                    "name": "error_message",
                    "kind": "required",
                    "type": "string",
                    "description": "Short description of what went wrong.",
                    "example": "",
                    "default": "The request is malformed."
                  },
                  {
                    "name": "exception",
                    "kind": "required",
                    "type": "string<TripleBadRequestError>",
                    "description": "The exception type.",
                    "example": ""
                  }
                ]
              }
            ],
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "403",
        "description": "TripleNotAuthenticatedError",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "schema": [
              {
                "name": "status_code",
                "kind": "required",
                "type": "integer",
                "description": "The 3-digit HTTP Response Status code",
                "example": 0
              },
              {
                "name": "content",
                "kind": "required",
                "type": "object",
                "description": "The error response content.",
                "example": "",
                "schema": [
                  {
                    "name": "details",
                    "kind": "optional",
                    "type": "array",
                    "description": "An array of error detail",
                    "modelRef": "#/components/schemas/ErrorResponseDetails",
                    "customType": "ErrorResponseDetails",
                    "schema": []
                  },
                  {
                    "name": "error_message",
                    "kind": "required",
                    "type": "string",
                    "description": "Short description of what went wrong.",
                    "example": "",
                    "default": "Client authentication failed."
                  },
                  {
                    "name": "exception",
                    "kind": "required",
                    "type": "string<TripleNotAuthenticatedError>",
                    "description": "The exception type.",
                    "example": ""
                  }
                ]
              }
            ],
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "404",
        "description": "TripleInvalidPathError",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "schema": [
              {
                "name": "status_code",
                "kind": "required",
                "type": "integer",
                "description": "The 3-digit HTTP Response Status code",
                "example": 0
              },
              {
                "name": "content",
                "kind": "required",
                "type": "object",
                "description": "The error response content.",
                "example": "",
                "schema": [
                  {
                    "name": "details",
                    "kind": "optional",
                    "type": "array",
                    "description": "An array of error detail",
                    "modelRef": "#/components/schemas/ErrorResponseDetails",
                    "customType": "ErrorResponseDetails",
                    "schema": []
                  },
                  {
                    "name": "error_message",
                    "kind": "required",
                    "type": "string",
                    "description": "Short description of what went wrong.",
                    "example": "",
                    "default": "The url path or path parameter is invalid."
                  },
                  {
                    "name": "exception",
                    "kind": "required",
                    "type": "string<TripleInvalidPathError>",
                    "description": "The exception type.",
                    "example": ""
                  }
                ]
              }
            ],
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "409",
        "description": "TripleIntegrityError",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "schema": [
              {
                "name": "status_code",
                "kind": "required",
                "type": "integer",
                "description": "The 3-digit HTTP Response Status code",
                "example": 0
              },
              {
                "name": "content",
                "kind": "required",
                "type": "object",
                "description": "The error response content.",
                "example": "",
                "schema": [
                  {
                    "name": "details",
                    "kind": "optional",
                    "type": "array",
                    "description": "An array of error detail",
                    "modelRef": "#/components/schemas/ErrorResponseDetails",
                    "customType": "ErrorResponseDetails",
                    "schema": []
                  },
                  {
                    "name": "error_message",
                    "kind": "required",
                    "type": "string",
                    "description": "Short description of what went wrong.",
                    "example": "",
                    "default": "The request was well-formed but violated entity integrity constraints."
                  },
                  {
                    "name": "exception",
                    "kind": "required",
                    "type": "string<TripleIntegrityError>",
                    "description": "The exception type.",
                    "example": ""
                  }
                ]
              }
            ],
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "415",
        "description": "TripleUnsupportedMediaType",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "schema": [
              {
                "name": "status_code",
                "kind": "required",
                "type": "integer",
                "description": "The 3-digit HTTP Response Status code",
                "example": 0
              },
              {
                "name": "content",
                "kind": "required",
                "type": "object",
                "description": "The error response content.",
                "example": "",
                "schema": [
                  {
                    "name": "details",
                    "kind": "optional",
                    "type": "array",
                    "description": "An array of error detail",
                    "modelRef": "#/components/schemas/ErrorResponseDetails",
                    "customType": "ErrorResponseDetails",
                    "schema": []
                  },
                  {
                    "name": "error_message",
                    "kind": "required",
                    "type": "string",
                    "description": "Short description of what went wrong.",
                    "example": "",
                    "default": "The request defined an unsupported media type."
                  },
                  {
                    "name": "exception",
                    "kind": "required",
                    "type": "string<TripleUnsupportedMediaType>",
                    "description": "The exception type.",
                    "example": ""
                  }
                ]
              }
            ],
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "422",
        "description": "TripleUnprocessableEntity",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "schema": [
              {
                "name": "status_code",
                "kind": "required",
                "type": "integer",
                "description": "The 3-digit HTTP Response Status code",
                "example": 0
              },
              {
                "name": "content",
                "kind": "required",
                "type": "object",
                "description": "The error response content.",
                "example": "",
                "schema": [
                  {
                    "name": "details",
                    "kind": "optional",
                    "type": "array",
                    "description": "An array of error detail",
                    "modelRef": "#/components/schemas/ErrorResponseDetails",
                    "customType": "ErrorResponseDetails",
                    "schema": []
                  },
                  {
                    "name": "error_message",
                    "kind": "required",
                    "type": "string",
                    "description": "Short description of what went wrong.",
                    "example": "",
                    "default": "The request was well-formed but could not be processed."
                  },
                  {
                    "name": "exception",
                    "kind": "required",
                    "type": "string<TripleUnprocessableEntity>",
                    "description": "The exception type.",
                    "example": ""
                  }
                ]
              }
            ],
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "500",
        "description": "TripleInternalServerError",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "schema": [
              {
                "name": "status_code",
                "kind": "required",
                "type": "integer",
                "description": "The 3-digit HTTP Response Status code",
                "example": 0
              },
              {
                "name": "content",
                "kind": "required",
                "type": "object",
                "description": "The error response content.",
                "example": "",
                "schema": [
                  {
                    "name": "details",
                    "kind": "optional",
                    "type": "array",
                    "description": "An array of error detail",
                    "modelRef": "#/components/schemas/ErrorResponseDetails",
                    "customType": "ErrorResponseDetails",
                    "schema": []
                  },
                  {
                    "name": "error_message",
                    "kind": "required",
                    "type": "string",
                    "description": "Short description of what went wrong.",
                    "example": "",
                    "default": "Triple was unable to process the request due to an internal error."
                  },
                  {
                    "name": "exception",
                    "kind": "required",
                    "type": "string<TripleInternalServerError>",
                    "description": "The exception type.",
                    "example": ""
                  }
                ]
              }
            ],
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "501",
        "description": "TripleNotImplementedError",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "schema": [
              {
                "name": "status_code",
                "kind": "required",
                "type": "integer",
                "description": "The 3-digit HTTP Response Status code",
                "example": 0
              },
              {
                "name": "content",
                "kind": "required",
                "type": "object",
                "description": "The error response content.",
                "example": "",
                "schema": [
                  {
                    "name": "details",
                    "kind": "optional",
                    "type": "array",
                    "description": "An array of error detail",
                    "modelRef": "#/components/schemas/ErrorResponseDetails",
                    "customType": "ErrorResponseDetails",
                    "schema": []
                  },
                  {
                    "name": "error_message",
                    "kind": "required",
                    "type": "string",
                    "description": "Short description of what went wrong.",
                    "example": "",
                    "default": "The request failed because it requires a feature that is not yet implemented."
                  },
                  {
                    "name": "exception",
                    "kind": "required",
                    "type": "string<TripleNotImplementedError>",
                    "description": "The exception type.",
                    "example": ""
                  }
                ]
              }
            ],
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "503",
        "description": "TripleServiceUnavailable",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "description": "",
            "schema": [
              {
                "name": "status_code",
                "kind": "required",
                "type": "integer",
                "description": "The 3-digit HTTP Response Status code",
                "example": 0
              },
              {
                "name": "content",
                "kind": "required",
                "type": "object",
                "description": "The error response content.",
                "example": "",
                "schema": [
                  {
                    "name": "details",
                    "kind": "optional",
                    "type": "array",
                    "description": "An array of error detail",
                    "modelRef": "#/components/schemas/ErrorResponseDetails",
                    "customType": "ErrorResponseDetails",
                    "schema": []
                  },
                  {
                    "name": "error_message",
                    "kind": "required",
                    "type": "string",
                    "description": "Short description of what went wrong.",
                    "example": "",
                    "default": "The request failed due to a triple service interruption."
                  },
                  {
                    "name": "exception",
                    "kind": "required",
                    "type": "string<TripleServiceUnavailable>",
                    "description": "The exception type.",
                    "example": ""
                  }
                ]
              }
            ],
            "isExpanded": true
          }
        ]
      }
    ],
    "hasXCodeSamples": false,
    "examples": {
      "languages": [
        {
          "id": "example-0-curl",
          "language": "curl",
          "label": "cURL",
          "code": "curl --request POST \\\n     --url https://api.sandbox.tripleup.dev/partner/notifications \\\n     --header 'accept: application/json' \\\n     --header 'content-type: application/json' \\\n     --data '{\n     \"endpoint\": \"\"\n     }'"
        },
        {
          "id": "example-1-javascript",
          "language": "javascript",
          "label": "javascript",
          "code": "var myHeaders = new Headers();\nmyHeaders.append(\"accept\", \"application/json\");\nmyHeaders.append(\"content-type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"endpoint\": \"\"\n});\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.sandbox.tripleup.dev/partner/notifications\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));"
        },
        {
          "id": "example-2-ruby",
          "language": "ruby",
          "label": "Ruby",
          "code": "require \"uri\"\nrequire \"json\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.sandbox.tripleup.dev/partner/notifications\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"accept\"] = \"application/json\"\nrequest[\"content-type\"] = \"application/json\"\nrequest.body = JSON.dump({\n   \"endpoint\": \"\"\n})\n\nresponse = https.request(request)\nputs response.read_body\n"
        },
        {
          "id": "example-3-python",
          "language": "python",
          "label": "Python",
          "code": "import requests\nimport json\n\nurl = \"https://api.sandbox.tripleup.dev/partner/notifications\"\n\npayload = json.dumps({\n   \"endpoint\": \"\"\n})\nheaders = {\n   'accept': 'application/json',\n   'content-type': 'application/json'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
        }
      ],
      "selectedLanguageId": "example-0-curl"
    },
    "results": {
      "languages": [
        {
          "id": "response-0-200",
          "language": "200",
          "code": "// Subscription Result\n{\n  \"endpoint\": \"\",\n  \"message\": \"Subscription to https://my.webhook.numo.com successfully added\"\n}"
        },
        {
          "id": "response-1-400",
          "language": "400",
          "code": "// TripleBadRequestError\n{\n  \"status_code\": 0,\n  \"content\": {\n    \"details\": [\n      \"\"\n    ],\n    \"error_message\": \"\",\n    \"exception\": \"\"\n  }\n}"
        },
        {
          "id": "response-2-403",
          "language": "403",
          "code": "// TripleNotAuthenticatedError\n{\n  \"status_code\": 0,\n  \"content\": {\n    \"details\": [\n      \"\"\n    ],\n    \"error_message\": \"\",\n    \"exception\": \"\"\n  }\n}"
        },
        {
          "id": "response-3-404",
          "language": "404",
          "code": "// TripleInvalidPathError\n{\n  \"status_code\": 0,\n  \"content\": {\n    \"details\": [\n      \"\"\n    ],\n    \"error_message\": \"\",\n    \"exception\": \"\"\n  }\n}"
        },
        {
          "id": "response-4-409",
          "language": "409",
          "code": "// TripleIntegrityError\n{\n  \"status_code\": 0,\n  \"content\": {\n    \"details\": [\n      \"\"\n    ],\n    \"error_message\": \"\",\n    \"exception\": \"\"\n  }\n}"
        },
        {
          "id": "response-5-415",
          "language": "415",
          "code": "// TripleUnsupportedMediaType\n{\n  \"status_code\": 0,\n  \"content\": {\n    \"details\": [\n      \"\"\n    ],\n    \"error_message\": \"\",\n    \"exception\": \"\"\n  }\n}"
        },
        {
          "id": "response-6-422",
          "language": "422",
          "code": "// TripleUnprocessableEntity\n{\n  \"status_code\": 0,\n  \"content\": {\n    \"details\": [\n      \"\"\n    ],\n    \"error_message\": \"\",\n    \"exception\": \"\"\n  }\n}"
        },
        {
          "id": "response-7-500",
          "language": "500",
          "code": "// TripleInternalServerError\n{\n  \"status_code\": 0,\n  \"content\": {\n    \"details\": [\n      \"\"\n    ],\n    \"error_message\": \"\",\n    \"exception\": \"\"\n  }\n}"
        },
        {
          "id": "response-8-501",
          "language": "501",
          "code": "// TripleNotImplementedError\n{\n  \"status_code\": 0,\n  \"content\": {\n    \"details\": [\n      \"\"\n    ],\n    \"error_message\": \"\",\n    \"exception\": \"\"\n  }\n}"
        },
        {
          "id": "response-9-503",
          "language": "503",
          "code": "// TripleServiceUnavailable\n{\n  \"status_code\": 0,\n  \"content\": {\n    \"details\": [\n      \"\"\n    ],\n    \"error_message\": \"\",\n    \"exception\": \"\"\n  }\n}"
        }
      ],
      "selectedLanguageId": "response-0-200"
    }
  },
  "children": [
    {
      "id": "PGSR-p_edi2I_RDxMkVUg",
      "type": "paragraph",
      "children": [
        {
          "text": "Subscribe to notifications using a user-supplied webhook.\nAfter 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:"
        }
      ]
    },
    {
      "id": "kPp120Pi0arAVmha0GwD0",
      "type": "code-editor-v2",
      "data": {
        "languages": [
          {
            "id": "WhFgckkRtOmXoy3tfzl7w",
            "language": "Text",
            "code": "{\n  \"Type\": \"SubscriptionConfirmation\",\n  \"MessageId\": \"...\",\n  \"TopicArn\": \"arn:aws:sns:region:account-id:sns-topic-arn\",\n  \"Message\": \"You have chosen to subscribe to the topic arn:aws:sns:region:account-id:sns-topic-arn.\\n\n  To confirm the subscription, visit the SubscribeURL included in this message.\",\n  \"SubscribeURL\": \"https://sns.region.amazonaws.com/?Action=ConfirmSubscription&TopicArn=...\",\n  \"Timestamp\" :\"2022-01-01T00:00:00.000Z\",\n  \"SignatureVersion\": \"1\",\n  \"Signature\": \"...\",\n  \"SigningCertURL\": \"...\"\n}"
          }
        ],
        "selectedLanguageId": "WhFgckkRtOmXoy3tfzl7w"
      },
      "children": [
        {
          "text": ""
        }
      ]
    },
    {
      "id": "VD5r0kLt2C3-wK9VOllfq",
      "type": "paragraph",
      "children": [
        {
          "text": "After issuing a GET request for the "
        },
        {
          "text": "SubscribeURL",
          "highlight": true
        },
        {
          "text": " you will receive a response like the following:"
        }
      ]
    },
    {
      "id": "Em-JjkQRvjhFl9ShpyVh1",
      "type": "code-editor-v2",
      "data": {
        "languages": [
          {
            "id": "ZCEnes62M7UVw3_Pvo5dG",
            "language": "Text",
            "code": "<ConfirmSubscriptionResponse xmlns=\"http://sns.amazonaws.com/doc/2010-03-31/\">\n  <ConfirmSubscriptionResult>\n    <SubscriptionArn>...</SubscriptionArn>\n  </ConfirmSubscriptionResult>\n  <ResponseMetadata>\n    <RequestId>...</RequestId>\n  </ResponseMetadata>\n</ConfirmSubscriptionResponse>"
          }
        ],
        "selectedLanguageId": "ZCEnes62M7UVw3_Pvo5dG"
      },
      "children": [
        {
          "text": ""
        }
      ]
    },
    {
      "id": "uhupt2XdaYLiDTPRVxdmP",
      "type": "paragraph",
      "children": [
        {
          "text": "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 "
        },
        {
          "text": "UnsubscribeURL",
          "highlight": true
        },
        {
          "text": " which will do the same."
        }
      ]
    },
    {
      "id": "85rhBOyr3G8nibaK08j0x",
      "type": "paragraph",
      "children": [
        {
          "text": "For several reward statuses you'll get an SNS message from AWS for example:"
        }
      ]
    },
    {
      "id": "mvlX4xxmvNIXLiZCYQpW3",
      "type": "code-editor-v2",
      "data": {
        "languages": [
          {
            "id": "Ft8sMsqink-Yi2epkj8tD",
            "language": "Text",
            "code": "{\n  \"Type\": \"Notification\",\n  \"MessageId\": \"...\",\n  \"TopicArn\": \"...\",\n  \"Subject\": \"Reward Pending Merchant Approval\",\n  \"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\\\"}\",\n  \"Timestamp\": \"2022-01-01T00:00:00.000Z\",\n  \"SignatureVersion\": \"1\",\n  \"Signature\": \"...\",\n  \"SigningCertURL\": \"...\",\n  \"UnsubscribeURL\": \"...\",\n  \"MessageAttributes\": {\n    \"publisher_id\": {\n      \"Type\": \"String\",\n      \"Value\": \"2\"\n    }\n  }\n}"
          }
        ],
        "selectedLanguageId": "Ft8sMsqink-Yi2epkj8tD"
      },
      "children": [
        {
          "text": ""
        }
      ]
    },
    {
      "id": "-jTb3Q0DPznqVLJfVAEbp",
      "type": "paragraph",
      "children": [
        {
          "text": "If you subscribe with a publisher account, you will receive any applicable statuses for that publisher that occur."
        }
      ]
    },
    {
      "id": "Oz82HDsF8Ue5ek63OP40o",
      "type": "paragraph",
      "children": [
        {
          "text": "When you subscribe with a portfolio manager account you will receive notifications on statuses for all publishers in a single subscription."
        }
      ]
    }
  ]
}