{
  "openapi" : "3.0.4",
  "info" : {
    "title" : "Tracker Front End",
    "description" : "The tracker front-end API facilitates tracking of cross border transaction status enabling financial institutions to conveniently access tracking data directly over the internet. This simplifies integration of tracking data into the financial institution's front-end applications which are used to serve the end-customer directly thus creating an enriched payment experience.\n\n**v1.0.2-swift-api Release Notes**\n* In the transaction_routing, the 'To' element became optional to support use cases where the 'To' element will remain absent, e.g. for an ACCC/RJCT status.\n",
    "contact" : {
      "name" : "Developer Hub",
      "url" : "https://developer.swift.com",
      "email" : "developer-support@swift.com"
    },
    "license" : {
      "name" : "API Restricted License",
      "url" : "https://developer.swift.com/api-license"
    },
    "version" : "1.0.2"
  },
  "servers" : [ {
    "description" : "Sandbox environment",
    "url" : "https://sandbox.swift.com/swift-apitracker-frontend/v1"
  }, {
    "description" : "Test environment",
    "url" : "https://api-pilot.swift.com/swift-apitracker-frontend/v1"
  }, {
    "description" : "Production environment",
    "url" : "https://api.swift.com/swift-apitracker-frontend/v1"
  } ],
  "tags" : [ {
    "name" : "Tracker Front End",
    "description" : "Financial institutions can access tracking data over the internet through this API. \n"
  } ],
  "paths" : {
    "/payment-transactions/{UETR}" : {
      "get" : {
        "tags" : [ "Tracker Front End" ],
        "summary" : "Tracker Front End",
        "description" : "This allows financial institutions to get tracking data over the internet.",
        "operationId" : "getPaymentTransactionInfo",
        "parameters" : [ {
          "$ref" : "#/components/parameters/UETR"
        } ],
        "responses" : {
          "200" : {
            "description" : "Provides status and details about the payment transaction.",
            "headers" : {
              "X-Request-ID" : {
                "$ref" : "#/components/headers/X-Request-ID"
              }
            },
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaymentTransaction166"
                },
                "examples" : {
                  "payment_transaction_1" : {
                    "$ref" : "#/components/examples/payment_transaction_1"
                  },
                  "payment_transaction_2" : {
                    "$ref" : "#/components/examples/payment_transaction_2"
                  },
                  "payment_transaction_3" : {
                    "$ref" : "#/components/examples/payment_transaction_3"
                  },
                  "payment_transaction_4" : {
                    "$ref" : "#/components/examples/payment_transaction_4"
                  },
                  "payment_transaction_5" : {
                    "$ref" : "#/components/examples/payment_transaction_5"
                  }
                }
              }
            }
          },
          "400" : {
            "$ref" : "#/components/responses/400-BadRequest"
          },
          "401" : {
            "$ref" : "#/components/responses/401-Unauthorized"
          },
          "403" : {
            "$ref" : "#/components/responses/403-Forbidden"
          },
          "404" : {
            "$ref" : "#/components/responses/404-NotFound"
          },
          "406" : {
            "$ref" : "#/components/responses/406-NotAcceptable"
          },
          "429" : {
            "$ref" : "#/components/responses/429-TooManyRequests"
          },
          "500" : {
            "$ref" : "#/components/responses/500-InternalServerError"
          },
          "503" : {
            "$ref" : "#/components/responses/503-ServerUnavailable"
          },
          "504" : {
            "$ref" : "#/components/responses/504-GatewayTimeout"
          },
          "default" : {
            "$ref" : "#/components/responses/500-InternalServerError"
          }
        }
      }
    }
  },
  "components" : {
    "schemas" : {
      "ErrorMessage" : {
        "type" : "object",
        "required" : [ "code", "severity", "text" ],
        "properties" : {
          "severity" : {
            "type" : "string",
            "enum" : [ "Fatal", "Transient", "Logic" ]
          },
          "code" : {
            "type" : "string"
          },
          "text" : {
            "type" : "string"
          },
          "user_message" : {
            "type" : "string"
          },
          "more_info" : {
            "type" : "string",
            "format" : "uri"
          }
        }
      },
      "PaymentTransaction166" : {
        "x-MXComponent" : "PaymentTransaction166",
        "type" : "object",
        "description" : "Provides status and some details about the payment transaction.",
        "additionalProperties" : false,
        "properties" : {
          "UETR" : {
            "x-MXComponent" : "UUIDv4Identifier",
            "description" : "Universally Unique IDentifier (UUID) version 4, as described in IETC RFC 4122 \"Universally Unique IDentifier (UUID) URN Namespace\".\n\nBased on datatype UUIDv4Identifier: Universally Unique IDentifier (UUID) version 4, as described in IETC RFC 4122 \"Universally Unique IDentifier (UUID) URN Namespace\".\n",
            "type" : "string",
            "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$"
          },
          "transaction_status" : {
            "x-MXComponent" : "Max4Text",
            "description" : "Specifies the status of a single payment transaction.\n\nBased on datatype Max4Text: Specifies a character string with a maximum length of 4 characters.\n",
            "type" : "string",
            "minLength" : 1,
            "maxLength" : 4
          },
          "transaction_status_description" : {
            "x-MXComponent" : "Max50Text",
            "description" : "Description of the transaction status.\n\nBased on datatype Max50Text: Specifies a character string with a maximum length of 50 characters.\n",
            "type" : "string",
            "minLength" : 1,
            "maxLength" : 50
          },
          "transaction_status_reason" : {
            "x-MXComponent" : "Max4Text",
            "description" : "Provides the reason code for the transaction status.\n\nTransaction Status Reasons can be \"G009\" and \"G010\". More values could be added in the future. \"G009\": Payment in progress. \"G010\": Payment arrived at beneficiary bank.\n\nBased on datatype Max4Text: Specifies a character string with a maximum length of 4 characters.\n",
            "type" : "string",
            "minLength" : 1,
            "maxLength" : 4
          },
          "transaction_initiation_date_time" : {
            "x-MXComponent" : "ISONormalisedDateTime",
            "description" : "Specifies the date and time of first valid message which starts the UETR transaction.\n\nBased on datatype ISONormalisedDateTime: an ISODateTime whereby all timezoned dateTime values are UTC.\n",
            "type" : "string",
            "pattern" : "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.[0-9]+)?(?:Z)$"
          },
          "transaction_last_update_date_time" : {
            "x-MXComponent" : "ISONormalisedDateTime",
            "description" : "Last date and time reflects the date time when the last update happens for a given UETR.\n\n\nBased on datatype ISONormalisedDateTime: an ISODateTime whereby all timezoned dateTime values are UTC.\n",
            "type" : "string",
            "pattern" : "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.[0-9]+)?(?:Z)$"
          },
          "transaction_completion_date_time" : {
            "x-MXComponent" : "ISONormalisedDateTime",
            "description" : "Specifies the time at which the instructed bank reports that the transaction has been completed (ACCC status).\n\nBased on datatype ISONormalisedDateTime: an ISODateTime whereby all timezoned dateTime values are UTC.\n",
            "type" : "string",
            "pattern" : "^(?:[1-9]\\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.[0-9]+)?(?:Z)$"
          },
          "transaction_routing" : {
            "type" : "array",
            "description" : "Information providing the movement within the transaction.",
            "items" : {
              "$ref" : "#/components/schemas/TransactionRouting1"
            }
          },
          "transaction_instructed_amount" : {
            "x-MXComponent" : "ActiveCurrencyAndAmount",
            "description" : "Amount provided in the first leg of the transaction.\n\n\nBased on datatype ActiveCurrencyAndAmount: A number of monetary units specified in an active currency where the unit of currency is explicit and compliant with ISO 4217.\n",
            "type" : "object",
            "additionalProperties" : false,
            "properties" : {
              "currency" : {
                "x-MXComponent" : "ActiveCurrencyCode",
                "type" : "string",
                "pattern" : "^[A-Z]{3,3}$"
              },
              "amount" : {
                "type" : "string",
                "maxLength" : 19,
                "pattern" : "^0*(([0-9]{0,13}\\.[0-9]{1,5})|([0-9]{0,14}\\.[0-9]{1,4})|([0-9]{0,15}\\.[0-9]{1,3})|([0-9]{0,16}\\.[0-9]{1,2})|([0-9]{0,17}\\.[0-9]{1,1})|([0-9]{0,18}\\.)|0*|([0-9]{0,18}))$"
              }
            },
            "required" : [ "currency", "amount" ]
          },
          "transaction_confirmed_amount" : {
            "x-MXComponent" : "ActiveCurrencyAndAmount",
            "description" : "Amount of money effectively credited to the creditor and confirmed to the tracker by the agent.\n\nBased on datatype ActiveCurrencyAndAmount: A number of monetary units specified in an active currency where the unit of currency is explicit and compliant with ISO 4217.\n",
            "type" : "object",
            "additionalProperties" : false,
            "properties" : {
              "currency" : {
                "x-MXComponent" : "ActiveCurrencyCode",
                "type" : "string",
                "pattern" : "^[A-Z]{3,3}$"
              },
              "amount" : {
                "type" : "string",
                "maxLength" : 19,
                "pattern" : "^0*(([0-9]{0,13}\\.[0-9]{1,5})|([0-9]{0,14}\\.[0-9]{1,4})|([0-9]{0,15}\\.[0-9]{1,3})|([0-9]{0,16}\\.[0-9]{1,2})|([0-9]{0,17}\\.[0-9]{1,1})|([0-9]{0,18}\\.)|0*|([0-9]{0,18}))$"
              }
            },
            "required" : [ "currency", "amount" ]
          }
        },
        "required" : [ "UETR", "transaction_status", "transaction_status_description", "transaction_initiation_date_time", "transaction_last_update_date_time", "transaction_routing", "transaction_instructed_amount" ]
      },
      "TransactionRouting1" : {
        "x-MXComponent" : "TransactionRouting1",
        "type" : "object",
        "description" : "Contains the transaction routing information.",
        "additionalProperties" : false,
        "properties" : {
          "from" : {
            "x-MXComponent" : "BICFIDec2014Identifier",
            "description" : "Sender identification\n\nBased on datatype BICFIDec2014Identifier: Code allocated to a financial institution by the ISO 9362 Registration Authority as described in ISO 9362: 2014 - \"Banking - Banking telecommunication messages - Business identifier code (BIC)\".\n",
            "type" : "string",
            "pattern" : "^[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}$"
          },
          "to" : {
            "x-MXComponent" : "BICFIDec2014Identifier",
            "description" : "Receiver identification\n\nBased on datatype BICFIDec2014Identifier: Code allocated to a financial institution by the ISO 9362 Registration Authority as described in ISO 9362: 2014 - \"Banking - Banking telecommunication messages - Business identifier code (BIC)\".\n",
            "type" : "string",
            "pattern" : "^[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}$"
          }
        },
        "required" : [ "from" ]
      },
      "UUIDv4Identifier" : {
        "type" : "string",
        "description" : "Universally Unique IDentifier (UUID) version 4, as described in IETC RFC 4122 \"Universally Unique IDentifier (UUID) URN Namespace\".",
        "pattern" : "^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$"
      }
    },
    "headers" : {
      "X-Request-ID" : {
        "required" : true,
        "schema" : {
          "type" : "string",
          "format" : "uuid"
        },
        "examples" : {
          "XRequestIdResponseHeader" : {
            "value" : "ce480d68-2612-4aef-867a-e91566a1e012"
          }
        },
        "description" : "A Universally Unique Identifier (UUID) generated by the API Gateway for tracking and support purposes.\nThe value received by a Service Provider in the X-Request-ID request header must be copied untouched in the X-Request-ID response header.\nThis X-Request-ID response header must always be returned to the API consumer, even when the response is an error message."
      }
    },
    "parameters" : {
      "UETR" : {
        "in" : "path",
        "name" : "UETR",
        "description" : "Identifies the payment transaction resource, events linked to this UETR will be retrieved",
        "schema" : {
          "$ref" : "#/components/schemas/UUIDv4Identifier"
        },
        "required" : true,
        "example" : "97ed4827-7b6f-4491-a06f-b548d5a7512d"
      }
    },
    "responses" : {
      "400-BadRequest" : {
        "description" : "Bad Request",
        "headers" : {
          "X-Request-ID" : {
            "$ref" : "#/components/headers/X-Request-ID"
          }
        },
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ErrorMessage"
            },
            "examples" : {
              "invalid_request" : {
                "value" : {
                  "severity" : "Fatal",
                  "code" : "Sw.gpi.InvalidRequest",
                  "text" : "Invalid request"
                }
              },
              "missing_mandatory_field" : {
                "value" : {
                  "severity" : "Fatal",
                  "code" : "Sw.gpi.MandatoryFieldMissing",
                  "text" : "Mandatory field %field missing"
                }
              },
              "invalid_rbac" : {
                "value" : {
                  "severity" : "Fatal",
                  "code" : "Sw.gpi.InvalidRBACRole",
                  "text" : "RBAC Role"
                }
              },
              "request_malformed" : {
                "value" : {
                  "severity" : "Fatal",
                  "code" : "SwAP501",
                  "text" : "API request is malformed"
                }
              }
            }
          }
        }
      },
      "401-Unauthorized" : {
        "description" : "Unauthorized",
        "headers" : {
          "X-Request-ID" : {
            "$ref" : "#/components/headers/X-Request-ID"
          }
        },
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ErrorMessage"
            },
            "examples" : {
              "from_authorization_failure" : {
                "value" : {
                  "severity" : "Fatal",
                  "code" : "Sw.gpi.FromAuthorizationFailure",
                  "text" : "From %From does not have the appropriate RBAC role"
                }
              }
            }
          }
        }
      },
      "403-Forbidden" : {
        "description" : "Forbidden",
        "headers" : {
          "X-Request-ID" : {
            "$ref" : "#/components/headers/X-Request-ID"
          }
        },
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ErrorMessage"
            }
          }
        }
      },
      "404-NotFound" : {
        "description" : "Not Found",
        "headers" : {
          "X-Request-ID" : {
            "$ref" : "#/components/headers/X-Request-ID"
          }
        },
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ErrorMessage"
            },
            "examples" : {
              "no_result_found" : {
                "value" : {
                  "severity" : "Transient",
                  "code" : "Sw.gpi.NoResultFound",
                  "text" : "No result found"
                }
              },
              "resource_not_exist" : {
                "value" : {
                  "severity" : "Fatal",
                  "code" : "SwAP506",
                  "text" : "Resource does not exist."
                }
              }
            }
          }
        }
      },
      "406-NotAcceptable" : {
        "description" : "Not Acceptable",
        "headers" : {
          "X-Request-ID" : {
            "$ref" : "#/components/headers/X-Request-ID"
          }
        },
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ErrorMessage"
            }
          }
        }
      },
      "429-TooManyRequests" : {
        "description" : "Too Many Requests",
        "headers" : {
          "X-Request-ID" : {
            "$ref" : "#/components/headers/X-Request-ID"
          }
        },
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ErrorMessage"
            },
            "examples" : {
              "too_many_requests" : {
                "value" : {
                  "severity" : "Transient",
                  "code" : "SwAP507",
                  "text" : "Request cannot be processed at this time. Please try later. (header Retry-After indicates how long to wait before making a follow-up request)."
                }
              }
            }
          }
        }
      },
      "500-InternalServerError" : {
        "description" : "Internal Server Error",
        "headers" : {
          "X-Request-ID" : {
            "$ref" : "#/components/headers/X-Request-ID"
          }
        },
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ErrorMessage"
            },
            "examples" : {
              "service_internal_error" : {
                "value" : {
                  "severity" : "Transient",
                  "code" : "Sw.gpi.InternalError",
                  "text" : "Internal error"
                }
              }
            }
          }
        }
      },
      "503-ServerUnavailable" : {
        "description" : "ServerUnavailable",
        "headers" : {
          "X-Request-ID" : {
            "$ref" : "#/components/headers/X-Request-ID"
          }
        },
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ErrorMessage"
            }
          }
        }
      },
      "504-GatewayTimeout" : {
        "description" : "GatewayTimeout",
        "headers" : {
          "X-Request-ID" : {
            "$ref" : "#/components/headers/X-Request-ID"
          }
        },
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ErrorMessage"
            }
          }
        }
      },
      "default" : {
        "description" : "Internal Server Error",
        "headers" : {
          "X-Request-ID" : {
            "$ref" : "#/components/headers/X-Request-ID"
          }
        },
        "content" : {
          "application/json" : {
            "schema" : {
              "$ref" : "#/components/schemas/ErrorMessage"
            },
            "examples" : {
              "service_internal_error" : {
                "value" : {
                  "severity" : "Transient",
                  "code" : "Sw.gpi.InternalError",
                  "text" : "Internal error"
                }
              }
            }
          }
        }
      }
    },
    "examples" : {
      "payment_transaction_1" : {
        "summary" : "transaction returned with status ACCC",
        "value" : {
          "UETR" : "00f4be35-76f2-45c8-b4b3-565bbac5e86b",
          "transaction_status" : "ACCC",
          "transaction_status_description" : "Payment credited to beneficiary bank",
          "transaction_initiation_date_time" : "2025-05-23T10:00:40Z",
          "transaction_last_update_date_time" : "2025-05-23T10:05:40Z",
          "transaction_completion_date_time" : "2025-05-23T10:05:40Z",
          "transaction_routing" : [ {
            "from" : "BANKBEBICXX",
            "to" : "BANKUSBICXX"
          }, {
            "from" : "BANKUSBICXX",
            "to" : "BANKFRBICXX"
          } ],
          "transaction_instructed_amount" : {
            "currency" : "USD",
            "amount" : "100000"
          },
          "transaction_confirmed_amount" : {
            "currency" : "USD",
            "amount" : "99550"
          }
        }
      },
      "payment_transaction_2" : {
        "summary" : "transaction returned with status RJCT",
        "value" : {
          "UETR" : "01f5be56-76f2-45c8-b4b3-565bbac5e87b",
          "transaction_status" : "RJCT",
          "transaction_status_description" : "Payment rejected",
          "transaction_initiation_date_time" : "2025-05-22T11:00:40Z",
          "transaction_last_update_date_time" : "2025-05-22T11:00:40Z",
          "transaction_routing" : [ {
            "from" : "BANKUSBICXX",
            "to" : "BANKDEBICXX"
          } ],
          "transaction_instructed_amount" : {
            "currency" : "EUR",
            "amount" : "500000"
          }
        }
      },
      "payment_transaction_3" : {
        "summary" : "transaction returned with status PDNG",
        "value" : {
          "UETR" : "eb3a88b0-3231-41f0-af8e-e5b86012efef",
          "transaction_status" : "PDNG",
          "transaction_status_description" : "Payment on hold",
          "transaction_initiation_date_time" : "2025-05-21T09:00:40Z",
          "transaction_last_update_date_time" : "2025-05-22T11:00:40Z",
          "transaction_routing" : [ {
            "from" : "BANKFRBICXX",
            "to" : "BANKUSBICXX"
          }, {
            "from" : "BANKUSBICXX",
            "to" : "BANKDEBICXX"
          }, {
            "from" : "BANKDEBICXX",
            "to" : "BANKBEBICXX"
          } ],
          "transaction_instructed_amount" : {
            "currency" : "JPY",
            "amount" : "1000450"
          }
        }
      },
      "payment_transaction_4" : {
        "summary" : "transaction returned with status ACSP (payment in progress)",
        "value" : {
          "UETR" : "0b84e2ee-0ba4-4abe-974d-6b32be179e1d",
          "transaction_status" : "ACSP",
          "transaction_status_description" : "Payment in progress",
          "transaction_status_reason" : "G009",
          "transaction_initiation_date_time" : "2025-05-20T08:00:40Z",
          "transaction_last_update_date_time" : "2025-05-22T12:00:40Z",
          "transaction_routing" : [ {
            "from" : "BANKITBICXX",
            "to" : "BANKUSBICXX"
          }, {
            "from" : "BANKUSBICXX",
            "to" : "BANKFRBICXX"
          }, {
            "from" : "BANKFRBICXX",
            "to" : "BANKBEBICXX"
          } ],
          "transaction_instructed_amount" : {
            "currency" : "GBP",
            "amount" : "86000"
          }
        }
      },
      "payment_transaction_5" : {
        "summary" : "transaction returned with status ACSP (Payment arrived at beneficiary bank)",
        "value" : {
          "UETR" : "44d4be35-76f2-45c8-b4b3-565bbac5e99f",
          "transaction_status" : "ACSP",
          "transaction_status_description" : "Payment arrived at beneficiary bank",
          "transaction_status_reason" : "G010",
          "transaction_initiation_date_time" : "2025-05-20T07:00:40Z",
          "transaction_last_update_date_time" : "2025-05-22T11:00:40Z",
          "transaction_routing" : [ {
            "from" : "BANKUSBICXX",
            "to" : "BANKNLBICXX"
          }, {
            "from" : "BANKNLBICXX",
            "to" : "BANKDEBICXX"
          } ],
          "transaction_instructed_amount" : {
            "currency" : "SEK",
            "amount" : "1898000"
          }
        }
      }
    },
    "securitySchemes" : {
      "oauthBearerToken" : {
        "type" : "http",
        "scheme" : "bearer",
        "bearerFormat" : "opaque OAuth 2.0",
        "description" : "\nThe access token obtained as a result of OAuth 2.0 flows. SWIFT supports two OAuth grant types depending on the API service.\n* JWT-Bearer grant type [RFC 7523](https://tools.ietf.org/html/rfc7523)\n* Password grant type\n\nThis API uses password grant type.\n\nPlease visit [SWIFT OAuth Token API](https://developer.swift.com/swift-oauth-token-api) page for more information and examples on how to generate an OAuth token.\n  \nIn this declaration only the basic security element to transport the bearer token of an OAuth2 process is declared."
      }
    }
  },
  "security" : [ {
    "oauthBearerToken" : [ ]
  } ]
}