Class: ComplyanceSDK::Models::UnifyRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/complyance_sdk/models/unify_request.rb

Overview

UnifyRequest model representing the main API request structure

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ UnifyRequest

Initialize a new UnifyRequest

Parameters:

  • options (Hash) (defaults to: {})

    Request options

Options Hash (options):

  • :source (Source)

    The source of the request

  • :document_type (Symbol, String)

    The document type

  • :country (String)

    The country code

  • :operation (Symbol, String)

    The operation type

  • :mode (Symbol, String)

    The mode

  • :purpose (Symbol, String)

    The purpose

  • :payload (Hash)

    The request payload

  • :destinations (Array)

    The destinations

  • :metadata (Hash)

    The request metadata



54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/complyance_sdk/models/unify_request.rb', line 54

def initialize(options = {})
  @source = options[:source]
  @document_type = DocumentType.normalize(options[:document_type])
  @document_type_v2 = options[:document_type_v2] || options["document_type_v2"] || options[:documentType] || options["documentType"]
  @country = options[:country]
  @operation = Operation.normalize(options[:operation])
  @mode = Mode.normalize(options[:mode])
  @purpose = Purpose.normalize(options[:purpose])
  @payload = options[:payload] || {}
  @destinations = options[:destinations] || []
  @metadata = (options[:metadata] || {})
  @source_origin = options[:source_origin] || options["source_origin"] || options[:sourceOrigin] || options["sourceOrigin"] || "SDK"
end

Instance Attribute Details

#countryObject

Country code



19
20
21
# File 'lib/complyance_sdk/models/unify_request.rb', line 19

def country
  @country
end

#destinationsObject

Destinations



34
35
36
# File 'lib/complyance_sdk/models/unify_request.rb', line 34

def destinations
  @destinations
end

#document_typeObject

Document type



13
14
15
# File 'lib/complyance_sdk/models/unify_request.rb', line 13

def document_type
  @document_type
end

#document_type_v2Object

GETS V2 document type object (modifiers?, variant?)



16
17
18
# File 'lib/complyance_sdk/models/unify_request.rb', line 16

def document_type_v2
  @document_type_v2
end

#metadataObject

Request metadata



37
38
39
# File 'lib/complyance_sdk/models/unify_request.rb', line 37

def 
  @metadata
end

#modeObject

Mode



25
26
27
# File 'lib/complyance_sdk/models/unify_request.rb', line 25

def mode
  @mode
end

#operationObject

Operation type



22
23
24
# File 'lib/complyance_sdk/models/unify_request.rb', line 22

def operation
  @operation
end

#payloadObject

Request payload



31
32
33
# File 'lib/complyance_sdk/models/unify_request.rb', line 31

def payload
  @payload
end

#purposeObject

Purpose



28
29
30
# File 'lib/complyance_sdk/models/unify_request.rb', line 28

def purpose
  @purpose
end

#sourceObject

Source of the request



10
11
12
# File 'lib/complyance_sdk/models/unify_request.rb', line 10

def source
  @source
end

#source_originObject

Origin for Integration Engine payload filtering: “SDK” | “LOCAL”



40
41
42
# File 'lib/complyance_sdk/models/unify_request.rb', line 40

def source_origin
  @source_origin
end

Class Method Details

.from_h(hash) ⇒ UnifyRequest

Create a UnifyRequest from a hash

Parameters:

  • hash (Hash)

    The hash to convert

Returns:



130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/complyance_sdk/models/unify_request.rb', line 130

def self.from_h(hash)
  return nil unless hash.is_a?(Hash)
  
  options = hash.dup
  
  # Convert source hash to Source object if needed
  if options[:source].is_a?(Hash)
    options[:source] = Source.new(options[:source])
  end
  
  new(options)
end

.from_json(json) ⇒ UnifyRequest

Create a UnifyRequest from JSON

Parameters:

  • json (String)

    The JSON string to convert

Returns:



147
148
149
150
151
152
153
154
155
# File 'lib/complyance_sdk/models/unify_request.rb', line 147

def self.from_json(json)
  hash = JSON.parse(json, symbolize_names: true)
  from_h(hash)
rescue JSON::ParserError => e
  raise ComplyanceSDK::Exceptions::ValidationError.new(
    "Invalid JSON: #{e.message}",
    context: { json: json }
  )
end

Instance Method Details

#errorsArray<String>

Get validation errors

Returns:

  • (Array<String>)

    Array of validation error messages



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/complyance_sdk/models/unify_request.rb', line 78

def errors
  errors = []
  
  errors << "Source is required" if @source.nil?
  errors << "Source must be valid" if @source && !@source.valid?
  errors << "Document type is required" if @document_type.nil?
  errors << "Document type must be valid" unless DocumentType.valid?(@document_type)
  errors << "Country is required" if @country.nil? || @country.empty?
  errors << "Operation is required" if @operation.nil?
  errors << "Operation must be valid" unless Operation.valid?(@operation)
  errors << "Mode is required" if @mode.nil?
  errors << "Mode must be valid" unless Mode.valid?(@mode)
  errors << "Purpose is required" if @purpose.nil?
  errors << "Purpose must be valid" unless Purpose.valid?(@purpose)
  errors << "Payload is required" if @payload.nil? || @payload.empty?
  
  errors
end

#to_hHash

Convert the request to a hash

Returns:

  • (Hash)

    The request as a hash



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/complyance_sdk/models/unify_request.rb', line 100

def to_h
  {
    source: @source&.to_h,
    country: @country.to_s.upcase,
    operation: @operation.to_s.upcase,
    mode: @mode.to_s.upcase,
    payload: @payload,
    apiKey: @metadata[:api_key],
    requestId: @metadata[:request_id],
    timestamp: @metadata[:timestamp],
    env: @metadata[:environment],
    destinations: format_destinations(@destinations),
    correlationId: @metadata[:correlation_id],
    documentType: (@document_type_v2 || @document_type.to_s.upcase),
    purpose: @purpose.to_s.downcase,
    sourceOrigin: @source_origin || "SDK"
  }
end

#to_json(*args) ⇒ String

Convert the request to JSON

Returns:

  • (String)

    The request as JSON



122
123
124
# File 'lib/complyance_sdk/models/unify_request.rb', line 122

def to_json(*args)
  to_h.to_json(*args)
end

#valid?Boolean

Check if the request is valid

Returns:

  • (Boolean)

    True if valid, false otherwise



71
72
73
# File 'lib/complyance_sdk/models/unify_request.rb', line 71

def valid?
  errors.empty?
end