View this page in the latest version of Appian. Appian Adapter for Swift API Reference Share Share via LinkedIn Reddit Email Copy Link Print On This Page This content applies solely to Appian Adapter for Swift, which must be purchased separately from the Appian base platform. This content was written for Appian 26.3 and may not reflect the interfaces or functionality of other Appian versions. The Appian adapter for Swift exposes four web APIs for integrating with upstream and downstream systems. Authentication: All requests require the appian-api-key header with a valid Appian API key. Base URL: https://<ENVIRONMENT>.appiancloud.com/suite API Contract: Download the OpenAPI specification for use with Swagger or similar tools. Inbound Messages POST /webapi/inbound-messages Receive an inbound Swift message for processing ▼ Receives a raw Swift MT or MX message, validates it, parses it into a structured Appian data object, and routes it to the configured downstream system. The structured Appian data object that the adapter produces from an inbound message uses the same data structure catalogued in message-type-schemas.yaml. For each supported MT and MX message type, this file defines the fields and nesting of the parsed object that the adapter sends to your downstream system. Use it as the reference for the inbound data your downstream application receives. FieldTypeRequiredDescription contentstringYesRaw Swift message (MT blocks 1-5 or MX XML). timestampstring (ISO 8601)YesTimestamp from source system. sourcestringYesSource system identifier. sourceFieldsarray of objectsYesAdditional metadata key-value pairs. validateBicbooleanNoValidate BIC codes. Default: false. swiftVersionstringNo"2025" or "2026". Default: "2025". Example request: { "content": "{1:F01BANKUS33XXXX...}{4:\n:20:REF123\n:23B:CRED\n...-}{5:{CHK:ABC}}", "timestamp": "2026-05-22T22:51:00.000Z", "source": "upstream-system", "sourceFields": { "caseId": "CASE-12345" }, "validateBic": true, "swiftVersion": "2025" } Responses: CodeDescriptionBody 200Message received successfully.{ "messageId": "<UUID>", "status": "INBD_STTS_RCVD" } 400Request body is empty.{ "messageId": "", "Status": "INBD_STTS_ERR-004", "error": "Error - request body cannot be empty." } 401Invalid or missing API key.— 500Error persisting message or starting processing.{ "messageId": "<UUID or empty>", "status": "INBD_STTS_ERR-001", "error": "<error detail>" } Outbound Messages POST /webapi/outbound-messages Convert structured data to a Swift message and send outbound ▼ Receives a structured Appian data object, converts it to the specified Swift message type, validates it, and sends it through the configured upstream channel. FieldTypeRequiredDescription content.messageTypestringYesSwift message type (e.g., pacs.008.001.08, MT103). content.contentobjectYesMessage-type-specific payload. See message-type-schemas.yaml for the full structure of each supported message type. swiftVersionstringNo"2025" or "2026". Default: "2025". sourcestringNoCalling system identifier. destinationstringNoTarget system or channel. destinationFieldsarray of objectsNoAdditional metadata key-value pairs for the destination. ignoreValidationbooleanNoSkip validation. Default: false. validateBicbooleanNoValidate BIC codes. Default: false. Example request (camt.057): { "content": { "messageType": "camt.057.001.06", "content": { "groupHeader": { "messageId": "CAMT057-MSG-001", "creationDateTime": "2026-01-29T09:00:00Z", "messageSender": { "agent": { "bic": "BANKUS33XXX" } } }, "notification": { "id": "NTFCTN-2026-001", "totalAmount": { "currency": "USD", "amount": "25000.00" } } } }, "swiftVersion": "2025", "source": "payment-investigation-app", "validateBic": true } Responses: CodeDescriptionBody 200Message received successfully.{ "messageId": "<UUID>", "status": "RCVD", "error": null, "content": null } 400Request payload is empty.{ "messageId": null, "status": "ERR-001", "error": "Error (ERR-001) - The request payload cannot be empty.", "content": null } 401Invalid or missing API key.— 500Error processing outbound payload.{ "messageId": "<UUID or null>", "status": "ERR-002", "error": "Internal Server Error (ERR-002) - The system was unable to process the outbound data payload.", "content": null } POST /webapi/transform-and-validate Transform and validate a Swift message without sending ▼ Works like the Outbound Messages API, but instead of sending the message to a destination, it transforms the structured data into a Swift message, validates it, and returns the result. Use this endpoint to verify whether a payload produces a valid Swift message before sending. FieldTypeRequiredDescription contentobjectYesSame structure as the Outbound Messages API content field. See message-type-schemas.yaml for the full structure of each supported message type. sourcestringNoCalling system identifier. swiftVersionstringNo"2025" or "2026". Default: "2025". validateBicbooleanNoValidate BIC codes. Default: false. Responses: CodeDescriptionBody 200Message is valid.{ "errorOccurred": false, "isValid": true, "error": null, "transformationResult": { "Result": "<Swift message>", "errorOccurred": false }, "validationResult": { "isValid": true, "errorOccurred": false }, "swiftMessage": "<Swift message>" } 400Content field is empty.{ "errorOccurred": true, "isValid": false, "error": "The request body and the attribute \"content\" cannot be empty.", "swiftMessage": null } 401Invalid or missing API key.— 422Transformation error, validation error, or message is invalid.{ "errorOccurred": true/false, "isValid": false, "error": "<error detail or null>", "transformationResult": { ... }, "validationResult": { ... }, "swiftMessage": null } 422 response detail: The 422 response is returned in three scenarios: ScenarioKey fields Transformation errorerrorOccurred: true, transformationResult.errorOccurred: true, transformationResult.Result: null. Validation errorerrorOccurred: true, transformationResult.errorOccurred: false, validationResult.errorOccurred: true, validationResult.Error: "<message>". Message invalid (no errors)errorOccurred: false, validationResult.isValid: false, validationResult.validationProblems: [{ errorKey, Message, jsonField }]. Swift Case Management POST /webapi/case-manager-requests Create, update, or query Swift Case Management investigations ▼ Submits a case action to Swift Case Management. Supports two usage patterns: Flat mode: Provide caseType, caseAction, and content separately. MX mode: Provide mxContent with the normalized MX message structure. The adapter determines the case type and action automatically from the message type. When using mxContent, the content, caseType, and caseAction fields can be empty or omitted. FieldTypeRequiredDescription sourcestringYesSource system identifier. caseTypestringFlat mode onlyCCNR, UTAP, GSRP, RQFI, or INV_ACTION. Omit when using mxContent. caseActionstringFlat mode onlyCREATE, UPDATE, QUERY, CANCELLATION_STATUS, CHANGED_CANCELLATIONS, PARTIES, or CANCELLATION. Omit when using mxContent. contentobjectFlat mode onlyCase-type-specific payload. See scm-content-schemas.yaml for the full structure of each caseType/caseAction combination. Set to null when using mxContent. mxContentobjectMX mode onlyNormalized MX message structure. Contains messageType (camt.110.001.01, camt.111.001.02, camt.029.001.09, or camt.056.001.08) and content (the message body). See scm-content-schemas.yaml for the ScmRequest_* schemas. validateBicbooleanNoValidate BIC codes. Default: false. validateOnlybooleanNoValidate the request without submitting it to Swift Case Management. When true, the adapter transforms and validates the request and returns the result without sending. Default: false. Validation-only mode: Set validateOnly to true to check a Swift Case Management request for errors before submitting it. The adapter returns isValid to indicate whether the request is valid, the transformed request that would be sent to Swift Case Management (caseApiRequestBody for case creates and updates, or caseApiRequestQueryParameters for queries), the target serviceUrl, and a validationProblems list when the request is invalid. The caseApiRequestBody, caseApiRequestQueryParameters, and serviceUrl fields give your calling system the data to troubleshoot Swift Case Management connectivity. External code-set validation: Fields tied to an external ISO 20022 code set, such as the investigation reason and transaction status, are validated against the applicable code set. The adapter rejects any value that is not a member of the code set rather than accepting free text. Use the enumerated codes defined for each field in scm-content-schemas.yaml, which reflect the ISO external code sets that Swift publishes. Case types: TypeDescription CCNRClaim Non-Receipt — creditor claims funds not received. This code should also be used for Confirmation of Non-Receipt (CONR). UTAPUnable to Apply — funds received but cannot be applied. GSRPGPI Stop and Recall. RQFIRequest for Information (sub-type: UTEX). INV_ACTIONRequest Action — escalate or close an investigation. Example - Flat mode (CCNR CREATE): { "source": "EPI", "caseType": "CCNR", "caseAction": "CREATE", "content": { "from": "BANKUS33", "sendersReference": "MessageID1", "requestorInvestigationId": "ReqInvID1", "investigationType": "CCNR", "underlyingInstrument": "XBCT", "underlying": { "interbank": { "originalMessageId": "OrigMessageID1", "originalMessageNameId": "pacs.008.001.08", "originalUETR": "20ebf92f-4e95-4359-9bc0-3bb9f9507605", "originalSettlementAmount": { "currency": "USD", "amount": "100000" }, "originalSettlementDate": "2024-01-21" } }, "requestor": "BANKUS33", "responder": "BANKFRPP", "investigationReason": "CCNR" }, "validateBic": false } Example - MX mode (CCNR CREATE via camt.110): { "source": "APPIAN TEST", "content": null, "mxContent": { "messageType": "camt.110.001.01", "content": { "investigationRequest": { "messageId": "INVREQ-2024-1201-001", "requesterInvestigationId": "REQ-INV-001", "eir": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d", "investigationType": { "code": "CCNR" }, "underlyingInstrument": { "code": "SWFT" }, "underlying": { "interBank": { "originalGroupInfo": { "originalMessageId": "ORIG-MSG-001", "originalMessageNameId": "pacs.008.001.08", "originalCreationDateTime": "2024-11-28T10:00:00Z" }, "originalUETR": "b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e", "originalSettlementAmount": { "currency": "USD", "amount": "50000.00" }, "originalSettlementDate": "2024-11-29Z" } }, "requester": { "agent": { "bic": "AAAAUS30" } }, "responder": { "agent": { "bic": "BBBBUS30" } } }, "investigationData": [{ "reason": { "code": "CCNR" } }] } }, "caseType": "", "caseAction": "", "validateBic": false } Responses: CodeDescriptionBody 200Case Management request processed successfully.{ "messageId": "<UUID>", "status": "SUCCESS", "error": null, "content": { ... }, "caseApiResponseBody": { ... } } 401Invalid or missing API key.— 500Missing required fields or processing error.{ "messageId": "<UUID or null>", "status": "ERR-002", "error": "Error - There was an error while retrieving data from Swift Case Management. <detail>", "content": null or { ... } } The caseApiResponseBody field contains the raw JSON response received from the Swift Case Management API. It complements the request payload returned in the validation-only response, giving downstream systems full visibility into both sides of the system-to-system exchange for troubleshooting. This field is populated when the request is submitted to Swift Case Management; it is empty for validation-only requests, which are not sent. Validation-only response fields: When validateOnly is true, the response includes the following fields: FieldTypeDescription isValidbooleantrue if the request is valid for submission to Swift Case Management, false if the request contains validation problems. errorOccurredbooleantrue if a processing error occurred during validation. errorstringError detail when errorOccurred is true. Empty when no error occurred. caseApiRequestBodyobjectThe transformed request body that would be sent to Swift Case Management for a POST or PUT request. Empty for query requests. caseApiRequestQueryParametersobjectThe transformed query parameters that would be sent to Swift Case Management for a query request. Empty for POST and PUT requests. serviceUrlstringThe Swift Case Management endpoint the request targets. validationProblemsarray of objectsPresent when isValid is false. Each object contains message (the validation error detail) and jsonField (the field that failed validation). messageIdstringUUID for the request in the adapter. Example - Validation-only request (CCNR CREATE): { "source": "EPI", "caseType": "CCNR", "caseAction": "CREATE", "validateOnly": true, "content": { "from": "BANKUS33", "sendersReference": "MessageID1", "requestorInvestigationId": "ReqInvID1", "investigationType": "CCNR", "underlyingInstrument": "XBCT", "underlying": { "interbank": { "originalMessageId": "OrigMessageID1", "originalMessageNameId": "pacs.008.001.08", "originalUETR": "20ebf92f-4e95-4359-9bc0-3bb9f9507605", "originalSettlementAmount": { "currency": "USD", "amount": "100000" }, "originalSettlementDate": "2024-01-21" } }, "requestor": "BANKUS33", "responder": "BANKFRPP", "investigationReason": "CCNR" } } Example - Valid response: { "isValid": true, "errorOccurred": false, "error": "", "caseApiRequestBody": { "from": "BANKUS33XXX", "message_identification": "MessageID1", "requestor_investigation_identification": "ReqInvID1", "investigation_type": "CCNR", "underlying_instrument": "XBCT", "requestor": "BANKUS33XXX", "responder": "BANKFRPPXXX", "investigation_reason": "CCNR" }, "serviceUrl": "https://sandbox.swift.com/swift-casemanagement-ClaimNonReceipt/v7/claim-nonreceipt-investigations-requests", "messageId": "88cf68cf-45cd-4489-a498-e371a0019acf" } Example - Invalid response: When the request is invalid, isValid is false and the validationProblems list contains the validation errors. { "isValid": false, "errorOccurred": false, "error": "", "caseApiRequestBody": { "from": "BANKU3", "message_identification": "MessageID1", "requestor": "BANKUS33XXX", "responder": "BANKFRPPXXX", "investigation_reason": "CCNR" }, "serviceUrl": "https://sandbox.swift.com/swift-casemanagement-ClaimNonReceipt/v7/claim-nonreceipt-investigations-requests", "validationProblems": [ { "message": "Field 'from' with value 'BANKU3' is not a valid BIC: The BIC code must contain at least 8 characters with the institution (4), country (2) and location code (2)", "jsonField": "from" }, { "message": "Field 'requestor' contains unknown BIC 'BANKUS33XXX'", "jsonField": "requestor" }, { "message": "Field 'responder' contains unknown BIC 'BANKFRPPXXX'", "jsonField": "responder" } ], "messageId": "136d33c9-0e73-4609-bdb2-a6fccf62330a" } Example - Valid response for a query request: For a query request, the transformed parameters are returned in caseApiRequestQueryParameters instead of caseApiRequestBody. { "isValid": true, "errorOccurred": false, "error": "", "caseApiRequestBody": {}, "caseApiRequestQueryParameters": { "uetr": "d36c572e-867d-4816-b948-a27b6a218127", "eir": "d36c572e-867d-4816-b948-a27b6a218127", "eir_status": "PNDG", "from_date_time": "2024-01-21T15:00:00Z", "to_date_time": "2024-03-21T15:00:00Z", "maximum_number": 100, "next": "20240121132213436" }, "serviceUrl": "https://sandbox.swift.com/swift-casemanagement-ClaimNonReceipt/v7/claim-nonreceipt-investigations", "messageId": "3317959e-5f6f-4696-b343-77147ca757a6" } Swift gpi Tracker POST /webapi/gpi-requests Submit a request to a Swift gpi Tracker service ▼ Submits a request to one of the seven Swift gpi Tracker services. The adapter receives a structured Appian JSON payload, converts it into a Swift-compliant gpi request, and returns the standardized gpi Tracker JSON response. The service to call is selected with the service field. The adapter builds and parses the gpi Tracker payloads. The Appian integration performs the HTTP call to the Swift gpi Tracker API, so the method and path differ per service. See the service routing table below. FieldTypeRequiredDescription servicestringYesThe gpi Tracker service to call. See the service list below. swiftVersionstringNo"2025" or "2026". Default: "2025". sourcestringNoCalling system identifier. contentobjectYesService-specific payload. Contains messageType (the versioned gpi message type, such as 6.0.0/CCT-STATUS-UPDATE-REQUEST) and the service fields. See gpi-tracker-schemas.yaml for the full structure of each service. gpi Tracker services: serviceDescription CCT-STATUS-UPDATECustomer Credit Transfer status update. COV-STATUS-UPDATECover payment status update. FIT-STATUS-UPDATEFinancial Institution Transfer status update. UC-STATUS-UPDATEUniversal Confirmation status update. PMI-STATUS-UPDATEPayment Modification status update. TRANSACTIONS-GETRetrieve transaction details for a payment. CHANGED-TRANSACTIONS-GETRetrieve transactions that changed within a date range. Service routing: Each service maps to a Swift gpi Tracker API call with its own HTTP method and path. The Appian integration performs this call. {uetr} is the payment's UETR. serviceMethodSwift gpi Tracker path CCT-STATUS-UPDATEPUT/swift-apitracker-gcct/v6/payments/{uetr}/status COV-STATUS-UPDATEPUT/swift-apitracker-gcov/v6/payments/{uetr}/status FIT-STATUS-UPDATEPUT/swift-apitracker-gfit/v6/payments/{uetr}/status UC-STATUS-UPDATEPUT/swift-apitracker-uc-cct/v6/payments/{uetr}/status PMI-STATUS-UPDATEPUT/swift-apitracker-pmi/v5/payments/{uetr}/status TRANSACTIONS-GETGET/swift-apitracker/v6/payments/{uetr}/transactions CHANGED-TRANSACTIONS-GETGET/swift-apitracker/v6/payments/changed/transactions The production host is https://api.swiftnet.sipn.swift.com. For pilot, use https://api-test.swiftnet.sipn.swift.com and append -pilot to the first path segment, for example /swift-apitracker-gcct-pilot/v6/.... For CHANGED-TRANSACTIONS-GET, the filters are sent as query-string parameters. The adapter transforms the Appian JSON payload into the gpi-compliant request before the integration sends it, converting field names to the gpi format and normalizing identifiers such as BIC codes. Example request - Customer Credit Transfer status update (CCT-STATUS-UPDATE): { "source": "downstream-system", "swiftVersion": "2025", "service": "CCT-STATUS-UPDATE", "content": { "messageType": "6.0.0/CCT-STATUS-UPDATE-REQUEST", "from": "BICAXXXX", "transactionStatus": "ACSP", "transactionStatusDate": "2021-11-25T14:33:00.000Z", "transactionStatusReason": "G000", "trackerInformingParty": "BICAXXXX", "instructionIdentification": "123", "serviceLevel": "G001", "paymentScenario": "CCTR", "settlementMethod": "INDA", "instructedAgent": { "bicfi": "SWHQBEBB" }, "interbankSettlementAmount": { "currency": "EUR", "amount": "990" }, "chargeBearer": "CRED", "chargesInformation": [ { "amount": { "currency": "EUR", "amount": "10" }, "agent": { "bicfi": "BICAXXXX" } } ] } } Example request - Transaction details (TRANSACTIONS-GET): This service is a GET keyed on the payment's UETR, so content carries only the uetr. { "source": "downstream-system", "swiftVersion": "2025", "service": "TRANSACTIONS-GET", "content": { "messageType": "6.0.1/TRANSACTIONS-GET-REQUEST", "uetr": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" } } Example request - Changed transactions (CHANGED-TRANSACTIONS-GET): This service is a GET whose filters are sent as query-string parameters. Provide the filters in content. { "source": "downstream-system", "swiftVersion": "2025", "service": "CHANGED-TRANSACTIONS-GET", "content": { "messageType": "6.0.1/CHANGED-TRANSACTIONS-GET-REQUEST", "from_date_time": "2024-06-01T00:00:00.000Z", "to_date_time": "2024-06-02T00:00:00.000Z", "payment_scenario": "CCTR", "maximum_number": "100" } } Responses: The adapter returns the standardized gpi Tracker JSON response body for the requested service. Each status-update service returns its matching status-update response, TRANSACTIONS-GET and CHANGED-TRANSACTIONS-GET return the transaction details, and any service can return the shared error body on a 4xx or 5xx response. See gpi-tracker-schemas.yaml for the GpiResponse_* schemas, including GpiResponse_ERROR for error responses. Customer-Built APIs The following APIs are not provided by the adapter. They must be built by your team so that the adapter can send processed messages to your downstream and upstream systems. POST /your-endpoint/inbound-messages Accept a transformed inbound message from the adapter ▼ Your system must expose this API to accept the structured inbound message after the adapter has validated, converted, and transformed it. The adapter calls this endpoint to deliver the processed message to your downstream system. Authentication: Must accept an API key in the request header. FieldTypeDescription ssmUuidstringUUID for the message in the adapter. issueOccuredbooleantrue if there were any issues in validation or transformation. issueCountintegerThe number of issues encountered. issuesarray of objectsList of issues. Each object contains: type ("ERROR" or "PROBLEM"), category ("VALIDATION", "CONVERSION", or "TRANSFORMATION"), and message (detailed error message). messageTypestringThe MT or MX message type. messageVersionstringThe version of the Swift message. contentobjectThe structured message. sourcestringThe source system. sourceFieldsarray of objectsAdditional metadata key-value pairs. swiftMessagestringThe original Swift message. Expected response: Return HTTP 200 on success. Any status code 400 or greater is treated as a failure. POST /your-endpoint/outbound-messages Accept a converted outbound Swift message from the adapter ▼ Your system must expose this API to accept the generated Swift message after the adapter has converted and validated it. The adapter calls this endpoint to deliver the outbound Swift message to your upstream channel. Authentication: Must accept an API key in the request header. FieldTypeDescription ssmUuidstringUUID for the message in the adapter. contentstringThe generated Swift message. destinationstringTarget system or channel. destinationMetadataarray of objectsAdditional metadata key-value pairs. Expected response: Return HTTP 200 on success with the following body: FieldTypeDescription confirmationUuidstringUUID from the upstream system to confirm the message was received. errorMessagestringIf there was an error, return the error message in this field. Feedback Was this page helpful? SHARE FEEDBACK Loading...