Skip to main content

Operations

Models and methods for fetching and deciding on security operations (transactions).

TFOperation

Represents a security operation pending or already decided for a profile.

public struct TFOperation {
public typealias RawIdentifier = Identifier<Self, String>
public typealias ID = RawIdentifier

public let id: ID
public var applicationProfileID: TFApplicationProfile.ID?
public let type: OperationType
public let status: Status
public let action: String
public let text: String?
public let risk: Risk
public let params: [Param]?
public let riskModules: [String: RiskModule]?
public let decisionData: DecisionData?
public var data: [String: AnyDecodable]? { get }
public var creationDate: Date { get }
/// Only available for non-pending operations.
public var decicionDate: Date? { get }
/// Not set if operation details are incomplete.
public var requiredAuthentications: [TFAuthenticationMechanism]? { get }
}

TFOperation.Status

The decision status of an operation.

public enum TFOperation.Status: Int64, Codable, CaseIterable {
case accepted
case declined
case expired
case pending
case failed
case noAnswer
case nonDecidable
case notPending
case unknown
}

TFOperation.Risk

The risk level associated with an operation.

public enum TFOperation.Risk: String, Decodable {
case low
case medium
case high
case noRisk
}

TFOperation.OperationType

The type of an operation.

public enum TFOperation.OperationType: Codable, Equatable {
case normal
case actionable
case generic
case sibs3ds
case sibs3dsV2
case unknown(String)
}

TFOperation.Param

A key-value parameter attached to an operation, optionally carrying auxiliary and risk metadata.

public struct TFOperation.Param: Decodable {
public struct Aux: Decodable {
public let currency: String?
public init(currency: String?)
}

public struct Risk: Decodable {
public let level: TFOperation.Risk
public let message: String?
public init(level: TFOperation.Risk, message: String?)
}

public let name: String
public let value: AnyDecodable
public let aux: Aux?
public let risk: Risk?

public init(name: String, value: AnyDecodable, aux: Aux?, risk: Risk?)
}

TFOperation.RiskModule

Contains risk analysis output from an agent module, including interactive action hints.

public struct TFOperation.RiskModule: Decodable {
public struct AgentModuleOutput: Decodable {
public struct Action: Decodable {
public struct Params: Codable {
public let title: String?
public let coordinates: [String: Float]?
public let pinpoint: [String: String]?
public let url: String?
}

public let type: String
public let params: Params?
}

public let risk: TFOperation.Risk
public let message: String?
public let onTap: Action?
public let onSwipeLeft: Action?
public let onSwipeRight: Action?
public let onForceTouch: Action?
public let onLongPress: Action?
}

public let agentModuleOutput: AgentModuleOutput
}

TFOperation.DecisionData

Data available on already-decided operations.

public struct TFOperation.DecisionData {
public let authentications: [String]?
public let device_info: TFApplicationProfileDevice?
}

TFOperationDecisionResult

The result of approving or rejecting an operation.

public struct TFOperationDecisionResult {}