openapi: 3.0.1 info: title: Tara - Payment Sanction Screening (PSS) description: >- Transaction Screening or Payment Sanction Screening (PSS) Alert Disposition is the skill of the Digital Worker Tara. Tara is designed to identify real-time transactions or payments to or from sanctioned individuals, entities, or jurisdictions during on-boarding and throughout the customer relationship lifecycle that may pose a risk to financial institutions. contact: name: WorkFusion Inc url: >- https://www.workfusion.com/digital-workers/tara-transaction-screening-analyst/ version: 1.2.15 x-package: com.workfusion.sanctions.api.tara servers: - url: https://example-workfusion.workfusion.io description: Production server security: - oauth: [] paths: /input-connector-rest/start-record-raw/{signalId}: post: tags: - Tara summary: Submit payment message with screening alerts for Tara review description: >- Submit a record for processing asynchronously. Acknowledge that the message was added to processing queue will be returned immediately. Asynchronous execution is the most efficient way for processing batches of records or high volume of records. operationId: start-record-raw parameters: - name: signalId in: path description: signal ID for the BP where the record is to be sent required: true schema: type: string requestBody: description: Alerts to be screened. All fields besides type and hits are optional. content: application/json: schema: $ref: '#/components/schemas/Message' required: true responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/StatusProcessingResponse' /input-connector-rest/check-record-status/{requestId}: get: tags: - Tara summary: Check record processing status description: >- Checks a record status based on the specified `requestId`. Returns the record processing status. operationId: check-record-status parameters: - name: requestId in: path description: >- Request UUID to track a request. Returned in start-record-raw response. required: true schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/StatusProcessingResponse' /input-connector-rest/get-record-result/{requestId}: get: tags: - Tara summary: Get screening decision description: >- Gets a screening decision based on the specified `requestId`. Returns the record results. operationId: get-record-result parameters: - name: requestId in: path description: >- Request UUID to track a request. Returned in start-record-raw response. required: true schema: type: string responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/MessageProcessingResponse' /input-connector-rest/execute-record-raw/{signalId}: post: tags: - Tara summary: Process payment message with screening alerts description: >- Process a record synchronously. This method returns completed processing result. Response time of this method may deteriorate under high load, please use asynchronous version for higher volumes. operationId: execute-record-raw parameters: - name: signalId in: path description: signal ID for the BP where the record is to be sent required: true schema: type: string requestBody: description: Alerts to be screened. All fields besides type are optional. content: application/json: schema: $ref: '#/components/schemas/Message' required: true responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/MessageProcessingResponse' components: schemas: StatusProcessingResponse: required: - requestId - status type: object properties: requestId: type: string description: Unique identifier assigned to the request. status: type: string description: >- Processing status of the request. Status could be different depending on processing outcome. enum: - COMPLETED - IN_PROGRESS - FAILED - NOT_AUTHORIZED - NOT_FOUND - INVALID_REQUEST statusDetails: type: string description: >- Status details for {@link RecordProcessingStatus#FAILED}, {@link RecordProcessingStatus#NOT_FOUND}, {@link RecordProcessingStatus#INVALID_REQUEST} statuses. Empty for {@link RecordProcessingStatus#COMPLETED} status. example: 'Malformed request : Missing required fields' format: type: string description: Contains format of the data that was sent as a request. enum: - RAW - JSON error: type: string description: >- Error returned when API is not reachable or problems with Authentication HitDecision: required: - comment - hitId - reasons - suggestedAction type: object properties: hitId: type: string description: Hit identification number. suggestedAction: type: string description: | Hit level suggested action. enum: - RESOLVE - NO_DECISION comment: type: string description: Explanation of the decision, all reasons combined. reasons: type: array description: List of reasons that support decision. Required at least one reason. items: $ref: '#/components/schemas/Reason' tags: type: array description: List of optional tags generated for the reasons. items: type: string description: List of optional tags generated for the reasons. additionalInfo: type: string description: Decision details listing the output of every decision objects status: type: string description: >- Custom decision status: Client may define custom statuses like PASS, HALF_PASS, L1, L2 description: >- Collection of all decisions per hit. Required when request processing status is {@link RecordProcessingStatus#COMPLETED} Optional if message invalid or can't be processed. MessageDecision: required: - suggestedAction type: object properties: messageId: type: string description: >- Message identification number. Required when request processing status is {@link RecordProcessingStatus#COMPLETED} Optional if message invalid or can't be processed. suggestedAction: type: string description: >- Message level suggested action. Will be set to {@link SuggestedAction#RESOLVE} only if each {@link HitDecision} suggestedAction. will have action {@link SuggestedAction#RESOLVE}. Otherwise, will be {@link SuggestedAction#NO_DECISION}. enum: - RESOLVE - NO_DECISION hitDecisions: type: array description: >- Collection of all decisions per hit. Required when request processing status is {@link RecordProcessingStatus#COMPLETED} Optional if message invalid or can't be processed. items: $ref: '#/components/schemas/HitDecision' comment: type: string description: Message level comment regarding the suggested decision. status: type: string description: >- Custom decision status: Client may define custom statuses like PASS, HALF_PASS, L1, L2 description: >- Contains request adjudication decision. Decision object will have all the data only when status is {@link RecordProcessingStatus#COMPLETED} MessageProcessingResponse: required: - decision - status type: object properties: requestId: type: string description: >- Unique identifier assigned to the request. Optional if request invalid or can't be processed. status: type: string description: >- Processing status of the request. Status could be different depending on processing outcome. enum: - COMPLETED - IN_PROGRESS - FAILED - NOT_AUTHORIZED - NOT_FOUND - INVALID_REQUEST statusDetails: type: string description: >- Status details for {@link RecordProcessingStatus#FAILED}, {@link RecordProcessingStatus#NOT_FOUND}, {@link RecordProcessingStatus#INVALID_REQUEST} statuses. Empty for {@link RecordProcessingStatus#COMPLETED} status. example: 'Malformed request : Missing required fields' decision: $ref: '#/components/schemas/MessageDecision' html_report_link: type: string description: Link to HTML report. Optional, empty if report is disabled. Reason: required: - code - description type: object properties: code: type: string description: >- Reason codes. Varies. Reflect decision matrix. For Example: "Name mismatch", "Type mismatch", "Blacklisted country" etc. description: type: string description: Detailed, human-readable explanation. score: type: number description: Confidence score behind reasoning. format: double description: List of reasons that support decision. Required at least one reason. AliasInfo: required: - name - type type: object properties: name: type: string description: 'Alias name, relative to sanctioned entity/individual ' type: type: string description: 'Alias type, If unknown, use {@link AliasType#NOT_AVAILABLE} ' enum: - STRONG - WEAK - NOT_AVAILABLE description: May contain other known names (A.K.A.) for the entity. CLDSInfo: type: object properties: hashId: type: string hashCounter: type: integer format: int32 isHashEnabled: type: boolean isAutoDisabled: type: boolean hashEnabledDate: type: string hashUpdateDate: type: string isAllReleased: type: boolean analystNames: type: string analystComment: type: string hashOperator: type: string minimumAlertCounter: type: integer format: int32 minimumAnalystCounter: type: integer format: int32 cldsDecisionReason: type: string EnrichmentInfo: type: object properties: lookUpSource: type: string lookupAddress: type: string lookupDataList: type: array items: $ref: '#/components/schemas/LookupData' securityData: $ref: '#/components/schemas/SecurityInfo' EntityEnrichment: type: object properties: securityData: $ref: '#/components/schemas/SecurityInfo' sourceType: type: string bvdID: type: string entityName: type: string country: type: string city: type: string state: type: string region: type: string address: type: string fullAddress: type: string postalCode: type: string timestamp: type: string EntityInfo: type: object properties: type: type: string description: Type of the entity if known. enum: - INDIVIDUAL - ORGANIZATION - COUNTRY - LOCATION - VESSEL - AIRCRAFT - ID - NAME - ACCOUNT - NONENTITY name: type: string description: Contains value if hit was on name. dob: type: string description: >- Date Of Birth. Preferred format "MM/dd/yyyy". May contain value if hit was of type {@link EntityType#INDIVIDUAL}. address: type: string description: >- May contain value if hit was of type {@link EntityType#LOCATION} or information relevant to screened entity. country: type: string description: >- May contain value if hit was of type {@link EntityType#COUNTRY} or information relevant to screened entity. city: type: string description: May contain value relevant to screened entity. state: type: string description: May contain value relevant to screened entity. postal: type: string description: May contain value relevant to screened entity. locations: type: array description: >- May contain value if hit was of type {@link EntityType#LOCATION} or information relevant to screened entity. items: $ref: '#/components/schemas/Location' id: type: string description: >- May contain value if a hit was on some form of identification number. codeMap: type: object additionalProperties: type: string description: >- Map containing any kind of codes or identification numbers like Passport number, IBAN, BIC, etc. description: >- Map containing any kind of codes or identification numbers like Passport number, IBAN, BIC, etc. description: Information about screened entity. ExtendedHit: required: - id - sanctionData type: object allOf: - $ref: '#/components/schemas/Hit' - type: object properties: nerData: $ref: '#/components/schemas/NEREntityInfo' nameMatchOutput: $ref: '#/components/schemas/NameMatchOutput' locationEnrichments: type: array items: $ref: '#/components/schemas/LocationEnrichment' entityEnrichments: type: array items: $ref: '#/components/schemas/EntityEnrichment' cldsInfo: $ref: '#/components/schemas/CLDSInfo' enrichmentData: type: array writeOnly: true items: $ref: '#/components/schemas/EnrichmentInfo' Hit: required: - id - sanctionData type: object properties: id: type: string description: Hit identification number. tagContent: type: string description: >- Text that holds the hit. If message have tags this should be the tag content.Required for processing. Must be provided directly or populated by parser during processing. tagName: type: string description: >- Tag that contains matched text (Message content contain multiple tags). Required if message content need to be parsed. Tag can be used to find tagType and related information in the {@link Message} content. tagType: type: string description: >- Indicates what type of data contains in the tag. If unknown, use {@link TagType#FREETEXT} default: FREETEXT enum: - NAME - NAMEADDRESS - ADDRESS - FREETEXT hitStartIndex: type: integer description: >- Start position of the hit text in the {@link #tagContent}. Important if hit text appears multiple times in the content. For example, hit on "Smith" in the text "John Smith from 123 Smith Street". format: int32 example: 5 hitEndIndex: type: integer description: >- End position of the hit text in the {@link #tagContent}. Important if hit text appears multiple times in the content. For example, hit on "Smith" in the text "John Smith from 123 Smith Street". format: int32 example: 10 hitText: type: string description: >- For better adjudication, need to know exactly which part of the text was hit. This is a part of the {@link #tagContent} that triggered sanction alert. Related to hit indexes.If missing, will try to predict it using sanctioned name. hitType: type: string description: >- Hit type from screening system. For example, hit on name|COD|Passport|Bic etc. example: name screenedData: $ref: '#/components/schemas/EntityInfo' sanctionData: $ref: '#/components/schemas/MatchedSanctionData' description: Message hits. Message without hits will not be adjudicated. Location: type: object properties: country: type: string description: May contain country code or country name. state: type: string description: May contain state/province name. city: type: string description: May contain city name. address: type: string description: May contain street address. type: type: string description: May contain type/source of location information provided. LocationEnrichment: type: object properties: lookUpSource: type: string lookupAddress: type: string lookupDataList: type: array items: $ref: '#/components/schemas/LookupData' LocationLookup: type: object properties: inputSource: type: string enum: - SCREENED - NER - WLE isCountryValid: type: boolean isAddressValid: type: boolean latitude: type: string longitude: type: string placeId: type: string locationType: type: string isPartialMatch: type: boolean LookupData: type: object properties: location: $ref: '#/components/schemas/Location' locationLookup: $ref: '#/components/schemas/LocationLookup' MatchedSanctionData: required: - name type: object properties: name: type: string description: Sanctioned name that match content. primaryName: type: string description: Primary name of sanctioned entity. type: type: string description: Type of sanctioned entity. enum: - INDIVIDUAL - ORGANIZATION - COUNTRY - LOCATION - VESSEL - AIRCRAFT - ID - NAME - ACCOUNT - NONENTITY dob: type: string description: >- Date Of Birth. Preferred format "MM/dd/yyyy". May contain value if hit was of type {@link EntityType#INDIVIDUAL}. city: type: string description: May contain value relevant to sanctioned entity. country: type: string description: May contain value relevant to sanctioned entity. state: type: string description: May contain value relevant to sanctioned entity. address: type: string description: May contain value relevant to sanctioned entity. locations: type: array description: May contain value relevant to sanctioned entity. items: $ref: '#/components/schemas/Location' sourceEntryId: type: string description: May contain value relevant to sanctioned entity. source: type: string description: May contain value relevant to sanctioned entity. sourceKeywords: type: string description: >- May contain pipe separated source keywords relevant to sanctioned entity listType: type: string description: May contain value relevant to sanctioned entity. additionalInfo: type: string description: May contain value relevant to sanctioned entity. alsoKnownAs: type: array description: May contain other known names (A.K.A.) for the entity. items: $ref: '#/components/schemas/AliasInfo' codeMap: type: object additionalProperties: type: string description: >- Map containing any kind of codes or identification numbers like Passport number, IBAN, BIC, etc. description: >- Map containing any kind of codes or identification numbers like Passport number, IBAN, BIC, etc. customAttributes: type: object additionalProperties: type: string description: Any additional information, fields/values not specified elsewhere. description: Any additional information, fields/values not specified elsewhere. description: Best matched sanctioned entity information. Message: required: - hits - id type: object properties: sourceSystemId: type: string description: ' Source system number.' id: type: string description: Message identification number. type: type: string description: Payment message type. example: SWF default: PAYMENT_TRANSFER subtype: type: string description: Payment message subtype. example: '103' content: type: string description: >- Optional if content already parsed and {@link Hit} tagContent and tagType provided for each hit. Otherwise, required for parsing. contentFormat: type: string description: >- Required when {@link #content} field is provided. Specifies format of the {@link #content}. Otherwise Optional enum: - FUF - NATIVE - SWIFT_MT - SWIFT_MX - SWIFT_NPP - SWIFT_ADK hits: type: array description: Message hits. Message without hits will not be adjudicated. items: $ref: '#/components/schemas/Hit' payment: $ref: '#/components/schemas/PaymentInfo' customAttributes: type: object additionalProperties: type: string description: Any additional information, fields/values not specified elsewhere. description: Any additional information, fields/values not specified elsewhere. NEREntityInfo: type: object properties: type: type: string description: Type of the entity if known. enum: - INDIVIDUAL - ORGANIZATION - COUNTRY - LOCATION - VESSEL - AIRCRAFT - ID - NAME - ACCOUNT - NONENTITY name: type: string description: Contains value if hit was on name. dob: type: string description: >- Date Of Birth. Preferred format "MM/dd/yyyy". May contain value if hit was of type {@link EntityType#INDIVIDUAL}. address: type: string description: >- May contain value if hit was of type {@link EntityType#LOCATION} or information relevant to screened entity. country: type: string description: >- May contain value if hit was of type {@link EntityType#COUNTRY} or information relevant to screened entity. city: type: string description: May contain value relevant to screened entity. state: type: string description: May contain value relevant to screened entity. postal: type: string description: May contain value relevant to screened entity. locations: type: array description: >- May contain value if hit was of type {@link EntityType#LOCATION} or information relevant to screened entity. items: $ref: '#/components/schemas/Location' id: type: string description: >- May contain value if a hit was on some form of identification number. codeMap: type: object additionalProperties: type: string description: >- Map containing any kind of codes or identification numbers like Passport number, IBAN, BIC, etc. description: >- Map containing any kind of codes or identification numbers like Passport number, IBAN, BIC, etc. nerNameScore: type: number format: double nerAddressScore: type: number format: double nerIDScore: type: number format: double nerCountryScore: type: number format: double originalNERType: type: string alternateNERTypes: type: array items: type: string enum: - INDIVIDUAL - ORGANIZATION - COUNTRY - LOCATION - VESSEL - AIRCRAFT - ID - NAME - ACCOUNT - NONENTITY NameMatchOutput: type: object properties: score: type: number format: double nameMatcherSource: type: string inputHasLegalEnding: type: boolean wleHasLegalEnding: type: boolean legalEndingsAreDifferent: type: boolean matchedWLEEntity: type: string enum: - PRIMARY_NAME - WLE_NAME - ALIAS match: type: boolean threshold: type: number format: double input: type: string inputProcessed: type: string wle: type: string wleProcessed: type: string source: type: string screenedToWleNameScore: type: number format: double screenedToWleAliasScore: type: number format: double screenedToWlePrimaryNameScore: type: number format: double processedWleName: type: string processedWlePrimaryName: type: string processedWleAlias: type: string PaymentInfo: type: object properties: direction: type: string description: Payment direction enum: - INCOMING - OUTGOING receiver: $ref: '#/components/schemas/PaymentOrigin' sender: $ref: '#/components/schemas/PaymentOrigin' amount: type: number description: Payment amount Information format: double currency: type: string description: Payment currency Information description: Payment details. PaymentOrigin: type: object properties: name: type: string description: May contain name relevant to origin entity. type: type: string description: May contain type (IND|ORG) of relevant to origin entity. enum: - INDIVIDUAL - ORGANIZATION - COUNTRY - LOCATION - VESSEL - AIRCRAFT - ID - NAME - ACCOUNT - NONENTITY bic: type: string description: >- May contain BIC number relevant to origin entity. Used in Agents and Banks. accountNumber: type: string description: >- May contain IBAN or domestic account number relevant to origin entity. Used in Creditor(receiver) & Debtor(sender) otherIdentifications: type: object additionalProperties: type: string description: >- May contain BIC, LEI, national ID, clearing system ID values relevant to origin entity. Use id type as key. description: >- May contain BIC, LEI, national ID, clearing system ID values relevant to origin entity. Use id type as key. address: type: string description: May contain address value relevant to origin entity. country: type: string description: May contain country value relevant to origin entity. description: Payment sender Information SecurityInfo: type: object properties: securityID: type: string securityType: type: string shareHolderHighRiskIndicator: type: boolean highRiskIndicator: type: boolean totalShareholderOwnership: type: number format: double sourceType: type: string bvdID: type: string entityName: type: string country: type: string city: type: string state: type: string region: type: string address: type: string fullAddress: type: string postalCode: type: string timestamp: type: string securitySchemes: bearer: type: http description: >- Bearer API token to authorize requests. This scheme may be useful for testing, when bearer token has been already generated and available to use. scheme: bearer bearerFormat: JWT oauth: type: oauth2 description: >- This API uses OAuth 2 with password grant flow. This is default and recommended authentication mechanism. flows: password: tokenUrl: >- https://example-keycloak.workfusion.io/auth/realms/WorkfusionRealm/protocol/openid-connect/token scopes: openid: ''