tesser-api-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +28 -0
  3. data/README.md +148 -0
  4. data/bin/console +15 -0
  5. data/lib/tesser_apiv1/api_helper.rb +10 -0
  6. data/lib/tesser_apiv1/client.rb +118 -0
  7. data/lib/tesser_apiv1/configuration.rb +182 -0
  8. data/lib/tesser_apiv1/controllers/accounts_controller.rb +193 -0
  9. data/lib/tesser_apiv1/controllers/base_controller.rb +60 -0
  10. data/lib/tesser_apiv1/controllers/counterparties_controller.rb +171 -0
  11. data/lib/tesser_apiv1/controllers/currencies_controller.rb +39 -0
  12. data/lib/tesser_apiv1/controllers/experimental_controller.rb +49 -0
  13. data/lib/tesser_apiv1/controllers/health_controller.rb +24 -0
  14. data/lib/tesser_apiv1/controllers/networks_controller.rb +39 -0
  15. data/lib/tesser_apiv1/controllers/payments_controller.rb +202 -0
  16. data/lib/tesser_apiv1/controllers/tenants_controller.rb +156 -0
  17. data/lib/tesser_apiv1/controllers/treasury_controller.rb +77 -0
  18. data/lib/tesser_apiv1/exceptions/api_exception.rb +21 -0
  19. data/lib/tesser_apiv1/http/auth/o_auth2.rb +53 -0
  20. data/lib/tesser_apiv1/http/http_call_back.rb +10 -0
  21. data/lib/tesser_apiv1/http/http_method_enum.rb +10 -0
  22. data/lib/tesser_apiv1/http/http_request.rb +10 -0
  23. data/lib/tesser_apiv1/http/http_response.rb +10 -0
  24. data/lib/tesser_apiv1/http/proxy_settings.rb +22 -0
  25. data/lib/tesser_apiv1/models/account.rb +230 -0
  26. data/lib/tesser_apiv1/models/account_list_item.rb +230 -0
  27. data/lib/tesser_apiv1/models/account_list_response.rb +69 -0
  28. data/lib/tesser_apiv1/models/account_response.rb +60 -0
  29. data/lib/tesser_apiv1/models/account_safe.rb +218 -0
  30. data/lib/tesser_apiv1/models/balance_status1_enum.rb +40 -0
  31. data/lib/tesser_apiv1/models/balance_status_enum.rb +40 -0
  32. data/lib/tesser_apiv1/models/base_model.rb +110 -0
  33. data/lib/tesser_apiv1/models/classification7_enum.rb +36 -0
  34. data/lib/tesser_apiv1/models/classification_enum.rb +36 -0
  35. data/lib/tesser_apiv1/models/counterparty.rb +411 -0
  36. data/lib/tesser_apiv1/models/counterparty_list_response.rb +69 -0
  37. data/lib/tesser_apiv1/models/counterparty_response.rb +60 -0
  38. data/lib/tesser_apiv1/models/create_bank_request.rb +122 -0
  39. data/lib/tesser_apiv1/models/create_bank_response.rb +60 -0
  40. data/lib/tesser_apiv1/models/create_counterparty_request.rb +350 -0
  41. data/lib/tesser_apiv1/models/create_counterparty_response.rb +60 -0
  42. data/lib/tesser_apiv1/models/create_deposit_request.rb +119 -0
  43. data/lib/tesser_apiv1/models/create_payment_request.rb +168 -0
  44. data/lib/tesser_apiv1/models/create_tenant_request.rb +183 -0
  45. data/lib/tesser_apiv1/models/create_tenant_response.rb +60 -0
  46. data/lib/tesser_apiv1/models/create_wallet_request.rb +112 -0
  47. data/lib/tesser_apiv1/models/create_wallet_response.rb +60 -0
  48. data/lib/tesser_apiv1/models/create_withdrawal_request.rb +130 -0
  49. data/lib/tesser_apiv1/models/currencies_response.rb +69 -0
  50. data/lib/tesser_apiv1/models/currency.rb +119 -0
  51. data/lib/tesser_apiv1/models/data.rb +221 -0
  52. data/lib/tesser_apiv1/models/data6.rb +242 -0
  53. data/lib/tesser_apiv1/models/data7.rb +419 -0
  54. data/lib/tesser_apiv1/models/data8.rb +200 -0
  55. data/lib/tesser_apiv1/models/direction1_enum.rb +40 -0
  56. data/lib/tesser_apiv1/models/direction_enum.rb +40 -0
  57. data/lib/tesser_apiv1/models/execute_payment_request_dto.rb +71 -0
  58. data/lib/tesser_apiv1/models/fee.rb +117 -0
  59. data/lib/tesser_apiv1/models/fee1.rb +117 -0
  60. data/lib/tesser_apiv1/models/network.rb +68 -0
  61. data/lib/tesser_apiv1/models/networks_response.rb +69 -0
  62. data/lib/tesser_apiv1/models/pagination.rb +104 -0
  63. data/lib/tesser_apiv1/models/payment.rb +421 -0
  64. data/lib/tesser_apiv1/models/payment_list_response.rb +79 -0
  65. data/lib/tesser_apiv1/models/payment_response.rb +60 -0
  66. data/lib/tesser_apiv1/models/payment_type3_enum.rb +52 -0
  67. data/lib/tesser_apiv1/models/payment_type_enum.rb +54 -0
  68. data/lib/tesser_apiv1/models/provider_key1_enum.rb +36 -0
  69. data/lib/tesser_apiv1/models/provider_key_enum.rb +36 -0
  70. data/lib/tesser_apiv1/models/response.rb +81 -0
  71. data/lib/tesser_apiv1/models/review_payment_request.rb +60 -0
  72. data/lib/tesser_apiv1/models/risk_status_enum.rb +44 -0
  73. data/lib/tesser_apiv1/models/status1_enum.rb +52 -0
  74. data/lib/tesser_apiv1/models/status_enum.rb +48 -0
  75. data/lib/tesser_apiv1/models/step.rb +421 -0
  76. data/lib/tesser_apiv1/models/step_type_enum.rb +44 -0
  77. data/lib/tesser_apiv1/models/tenant.rb +275 -0
  78. data/lib/tesser_apiv1/models/tenant_api_credentials.rb +88 -0
  79. data/lib/tesser_apiv1/models/tenant_list_response.rb +69 -0
  80. data/lib/tesser_apiv1/models/tenant_response.rb +60 -0
  81. data/lib/tesser_apiv1/models/transfer_step.rb +422 -0
  82. data/lib/tesser_apiv1/models/turnkey_stamp.rb +81 -0
  83. data/lib/tesser_apiv1/models/type3_enum.rb +40 -0
  84. data/lib/tesser_apiv1/models/type4_enum.rb +44 -0
  85. data/lib/tesser_apiv1/models/type_enum.rb +44 -0
  86. data/lib/tesser_apiv1/models/update_account_request.rb +62 -0
  87. data/lib/tesser_apiv1/models/update_account_response.rb +60 -0
  88. data/lib/tesser_apiv1/models/update_counterparty_request.rb +166 -0
  89. data/lib/tesser_apiv1/models/update_counterparty_response.rb +60 -0
  90. data/lib/tesser_apiv1/models/update_payment_request.rb +100 -0
  91. data/lib/tesser_apiv1/models/update_tenant_request.rb +111 -0
  92. data/lib/tesser_apiv1/models/update_tenant_response.rb +60 -0
  93. data/lib/tesser_apiv1/utilities/date_time_helper.rb +11 -0
  94. data/lib/tesser_apiv1/utilities/file_wrapper.rb +28 -0
  95. data/lib/tesser_apiv1/utilities/union_type_lookup.rb +1234 -0
  96. data/lib/tesser_apiv1.rb +116 -0
  97. data/test/controllers/controller_test_base.rb +23 -0
  98. data/test/controllers/test_health_controller.rb +31 -0
  99. data/test/controllers/test_tenants_controller.rb +133 -0
  100. data/test/http_response_catcher.rb +19 -0
  101. metadata +212 -0
@@ -0,0 +1,60 @@
1
+ # tesser_apiv1
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module TesserApiv1
7
+ # PaymentResponse Model.
8
+ class PaymentResponse < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # TODO: Write general description for this method
13
+ # @return [Data6]
14
+ attr_accessor :data
15
+
16
+ # A mapping from model property names to API property names.
17
+ def self.names
18
+ @_hash = {} if @_hash.nil?
19
+ @_hash['data'] = 'data'
20
+ @_hash
21
+ end
22
+
23
+ # An array for optional fields
24
+ def self.optionals
25
+ []
26
+ end
27
+
28
+ # An array for nullable fields
29
+ def self.nullables
30
+ []
31
+ end
32
+
33
+ def initialize(data = nil)
34
+ @data = data
35
+ end
36
+
37
+ # Creates an instance of the object from a hash.
38
+ def self.from_hash(hash)
39
+ return nil unless hash
40
+
41
+ # Extract variables from the hash.
42
+ data = Data6.from_hash(hash['data']) if hash['data']
43
+
44
+ # Create object from extracted values.
45
+ PaymentResponse.new(data)
46
+ end
47
+
48
+ # Provides a human-readable string representation of the object.
49
+ def to_s
50
+ class_name = self.class.name.split('::').last
51
+ "<#{class_name} data: #{@data}>"
52
+ end
53
+
54
+ # Provides a debugging-friendly string with detailed object information.
55
+ def inspect
56
+ class_name = self.class.name.split('::').last
57
+ "<#{class_name} data: #{@data.inspect}>"
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,52 @@
1
+ # tesser_apiv1
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module TesserApiv1
7
+ # payment_type3.
8
+ class PaymentType3Enum
9
+ PAYMENT_TYPE3_ENUM = [
10
+ # TODO: Write general description for WITHDRAWAL
11
+ WITHDRAWAL = 'withdrawal'.freeze,
12
+
13
+ # TODO: Write general description for DEPOSIT
14
+ DEPOSIT = 'deposit'.freeze,
15
+
16
+ # TODO: Write general description for ONRAMP
17
+ ONRAMP = 'onramp'.freeze,
18
+
19
+ # TODO: Write general description for OFFRAMP
20
+ OFFRAMP = 'offramp'.freeze,
21
+
22
+ # TODO: Write general description for PAYMENT
23
+ PAYMENT = 'payment'.freeze,
24
+
25
+ # TODO: Write general description for TRANSFER
26
+ TRANSFER = 'transfer'.freeze
27
+ ].freeze
28
+
29
+ def self.validate(value)
30
+ return false if value.nil?
31
+
32
+ PAYMENT_TYPE3_ENUM.include?(value)
33
+ end
34
+
35
+ def self.from_value(value, default_value = WITHDRAWAL)
36
+ return default_value if value.nil?
37
+
38
+ str = value.to_s.strip
39
+
40
+ case str.downcase
41
+ when 'withdrawal' then WITHDRAWAL
42
+ when 'deposit' then DEPOSIT
43
+ when 'onramp' then ONRAMP
44
+ when 'offramp' then OFFRAMP
45
+ when 'payment' then PAYMENT
46
+ when 'transfer' then TRANSFER
47
+ else
48
+ default_value
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,54 @@
1
+ # tesser_apiv1
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module TesserApiv1
7
+ # Type of payment operation: 'payment' (wallet-to-wallet), 'offramp'
8
+ # (crypto-to-fiat), 'onramp' (fiat-to-crypto), 'withdrawal', 'deposit', or
9
+ # 'transfer'.
10
+ class PaymentTypeEnum
11
+ PAYMENT_TYPE_ENUM = [
12
+ # TODO: Write general description for WITHDRAWAL
13
+ WITHDRAWAL = 'withdrawal'.freeze,
14
+
15
+ # TODO: Write general description for DEPOSIT
16
+ DEPOSIT = 'deposit'.freeze,
17
+
18
+ # TODO: Write general description for ONRAMP
19
+ ONRAMP = 'onramp'.freeze,
20
+
21
+ # TODO: Write general description for OFFRAMP
22
+ OFFRAMP = 'offramp'.freeze,
23
+
24
+ # TODO: Write general description for PAYMENT
25
+ PAYMENT = 'payment'.freeze,
26
+
27
+ # TODO: Write general description for TRANSFER
28
+ TRANSFER = 'transfer'.freeze
29
+ ].freeze
30
+
31
+ def self.validate(value)
32
+ return false if value.nil?
33
+
34
+ PAYMENT_TYPE_ENUM.include?(value)
35
+ end
36
+
37
+ def self.from_value(value, default_value = WITHDRAWAL)
38
+ return default_value if value.nil?
39
+
40
+ str = value.to_s.strip
41
+
42
+ case str.downcase
43
+ when 'withdrawal' then WITHDRAWAL
44
+ when 'deposit' then DEPOSIT
45
+ when 'onramp' then ONRAMP
46
+ when 'offramp' then OFFRAMP
47
+ when 'payment' then PAYMENT
48
+ when 'transfer' then TRANSFER
49
+ else
50
+ default_value
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,36 @@
1
+ # tesser_apiv1
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module TesserApiv1
7
+ # Provider key used for this step (if applicable).
8
+ class ProviderKey1Enum
9
+ PROVIDER_KEY1_ENUM = [
10
+ # TODO: Write general description for ALFRED
11
+ ALFRED = 'alfred'.freeze,
12
+
13
+ # TODO: Write general description for CIRCLE_MINT
14
+ CIRCLE_MINT = 'circle_mint'.freeze
15
+ ].freeze
16
+
17
+ def self.validate(value)
18
+ return false if value.nil?
19
+
20
+ PROVIDER_KEY1_ENUM.include?(value)
21
+ end
22
+
23
+ def self.from_value(value, default_value = ALFRED)
24
+ return default_value if value.nil?
25
+
26
+ str = value.to_s.strip
27
+
28
+ case str.downcase
29
+ when 'alfred' then ALFRED
30
+ when 'circle_mint' then CIRCLE_MINT
31
+ else
32
+ default_value
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,36 @@
1
+ # tesser_apiv1
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module TesserApiv1
7
+ # ProviderKey.
8
+ class ProviderKeyEnum
9
+ PROVIDER_KEY_ENUM = [
10
+ # TODO: Write general description for ALFRED
11
+ ALFRED = 'alfred'.freeze,
12
+
13
+ # TODO: Write general description for CIRCLE_MINT
14
+ CIRCLE_MINT = 'circle_mint'.freeze
15
+ ].freeze
16
+
17
+ def self.validate(value)
18
+ return false if value.nil?
19
+
20
+ PROVIDER_KEY_ENUM.include?(value)
21
+ end
22
+
23
+ def self.from_value(value, default_value = ALFRED)
24
+ return default_value if value.nil?
25
+
26
+ str = value.to_s.strip
27
+
28
+ case str.downcase
29
+ when 'alfred' then ALFRED
30
+ when 'circle_mint' then CIRCLE_MINT
31
+ else
32
+ default_value
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,81 @@
1
+ # tesser_apiv1
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module TesserApiv1
7
+ # Response Model.
8
+ class Response < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # TODO: Write general description for this method
13
+ # @return [String]
14
+ attr_accessor :status
15
+
16
+ # TODO: Write general description for this method
17
+ # @return [String]
18
+ attr_accessor :git_sha
19
+
20
+ # TODO: Write general description for this method
21
+ # @return [String]
22
+ attr_accessor :env
23
+
24
+ # A mapping from model property names to API property names.
25
+ def self.names
26
+ @_hash = {} if @_hash.nil?
27
+ @_hash['status'] = 'status'
28
+ @_hash['git_sha'] = 'gitSha'
29
+ @_hash['env'] = 'env'
30
+ @_hash
31
+ end
32
+
33
+ # An array for optional fields
34
+ def self.optionals
35
+ %w[
36
+ status
37
+ git_sha
38
+ env
39
+ ]
40
+ end
41
+
42
+ # An array for nullable fields
43
+ def self.nullables
44
+ []
45
+ end
46
+
47
+ def initialize(status = SKIP, git_sha = SKIP, env = SKIP)
48
+ @status = status unless status == SKIP
49
+ @git_sha = git_sha unless git_sha == SKIP
50
+ @env = env unless env == SKIP
51
+ end
52
+
53
+ # Creates an instance of the object from a hash.
54
+ def self.from_hash(hash)
55
+ return nil unless hash
56
+
57
+ # Extract variables from the hash.
58
+ status = hash.key?('status') ? hash['status'] : SKIP
59
+ git_sha = hash.key?('gitSha') ? hash['gitSha'] : SKIP
60
+ env = hash.key?('env') ? hash['env'] : SKIP
61
+
62
+ # Create object from extracted values.
63
+ Response.new(status,
64
+ git_sha,
65
+ env)
66
+ end
67
+
68
+ # Provides a human-readable string representation of the object.
69
+ def to_s
70
+ class_name = self.class.name.split('::').last
71
+ "<#{class_name} status: #{@status}, git_sha: #{@git_sha}, env: #{@env}>"
72
+ end
73
+
74
+ # Provides a debugging-friendly string with detailed object information.
75
+ def inspect
76
+ class_name = self.class.name.split('::').last
77
+ "<#{class_name} status: #{@status.inspect}, git_sha: #{@git_sha.inspect}, env:"\
78
+ " #{@env.inspect}>"
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,60 @@
1
+ # tesser_apiv1
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module TesserApiv1
7
+ # ReviewPaymentRequest Model.
8
+ class ReviewPaymentRequest < BaseModel
9
+ SKIP = Object.new
10
+ private_constant :SKIP
11
+
12
+ # Whether to approve (true) or reject (false) the payment.
13
+ # @return [TrueClass | FalseClass]
14
+ attr_accessor :is_approved
15
+
16
+ # A mapping from model property names to API property names.
17
+ def self.names
18
+ @_hash = {} if @_hash.nil?
19
+ @_hash['is_approved'] = 'is_approved'
20
+ @_hash
21
+ end
22
+
23
+ # An array for optional fields
24
+ def self.optionals
25
+ []
26
+ end
27
+
28
+ # An array for nullable fields
29
+ def self.nullables
30
+ []
31
+ end
32
+
33
+ def initialize(is_approved = nil)
34
+ @is_approved = is_approved
35
+ end
36
+
37
+ # Creates an instance of the object from a hash.
38
+ def self.from_hash(hash)
39
+ return nil unless hash
40
+
41
+ # Extract variables from the hash.
42
+ is_approved = hash.key?('is_approved') ? hash['is_approved'] : nil
43
+
44
+ # Create object from extracted values.
45
+ ReviewPaymentRequest.new(is_approved)
46
+ end
47
+
48
+ # Provides a human-readable string representation of the object.
49
+ def to_s
50
+ class_name = self.class.name.split('::').last
51
+ "<#{class_name} is_approved: #{@is_approved}>"
52
+ end
53
+
54
+ # Provides a debugging-friendly string with detailed object information.
55
+ def inspect
56
+ class_name = self.class.name.split('::').last
57
+ "<#{class_name} is_approved: #{@is_approved.inspect}>"
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,44 @@
1
+ # tesser_apiv1
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module TesserApiv1
7
+ # Current risk status.
8
+ class RiskStatusEnum
9
+ RISK_STATUS_ENUM = [
10
+ # TODO: Write general description for UNCHECKED
11
+ UNCHECKED = 'unchecked'.freeze,
12
+
13
+ # TODO: Write general description for AWAITING_DECISION
14
+ AWAITING_DECISION = 'awaiting_decision'.freeze,
15
+
16
+ # TODO: Write general description for APPROVED
17
+ APPROVED = 'approved'.freeze,
18
+
19
+ # TODO: Write general description for REJECTED
20
+ REJECTED = 'rejected'.freeze
21
+ ].freeze
22
+
23
+ def self.validate(value)
24
+ return false if value.nil?
25
+
26
+ RISK_STATUS_ENUM.include?(value)
27
+ end
28
+
29
+ def self.from_value(value, default_value = UNCHECKED)
30
+ return default_value if value.nil?
31
+
32
+ str = value.to_s.strip
33
+
34
+ case str.downcase
35
+ when 'unchecked' then UNCHECKED
36
+ when 'awaiting_decision' then AWAITING_DECISION
37
+ when 'approved' then APPROVED
38
+ when 'rejected' then REJECTED
39
+ else
40
+ default_value
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,52 @@
1
+ # tesser_apiv1
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module TesserApiv1
7
+ # Step status: 'created', 'submitted', 'confirmed', 'finalized', 'failed'.
8
+ class Status1Enum
9
+ STATUS1_ENUM = [
10
+ # TODO: Write general description for CREATED
11
+ CREATED = 'created'.freeze,
12
+
13
+ # TODO: Write general description for SUBMITTED
14
+ SUBMITTED = 'submitted'.freeze,
15
+
16
+ # TODO: Write general description for CONFIRMED
17
+ CONFIRMED = 'confirmed'.freeze,
18
+
19
+ # TODO: Write general description for FINALIZED
20
+ FINALIZED = 'finalized'.freeze,
21
+
22
+ # TODO: Write general description for COMPLETED
23
+ COMPLETED = 'completed'.freeze,
24
+
25
+ # TODO: Write general description for FAILED
26
+ FAILED = 'failed'.freeze
27
+ ].freeze
28
+
29
+ def self.validate(value)
30
+ return false if value.nil?
31
+
32
+ STATUS1_ENUM.include?(value)
33
+ end
34
+
35
+ def self.from_value(value, default_value = CREATED)
36
+ return default_value if value.nil?
37
+
38
+ str = value.to_s.strip
39
+
40
+ case str.downcase
41
+ when 'created' then CREATED
42
+ when 'submitted' then SUBMITTED
43
+ when 'confirmed' then CONFIRMED
44
+ when 'finalized' then FINALIZED
45
+ when 'completed' then COMPLETED
46
+ when 'failed' then FAILED
47
+ else
48
+ default_value
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,48 @@
1
+ # tesser_apiv1
2
+ #
3
+ # This file was automatically generated by APIMATIC v3.0 (
4
+ # https://www.apimatic.io ).
5
+
6
+ module TesserApiv1
7
+ # Step status: 'created', 'submitted', 'confirmed', 'finalized', 'failed'.
8
+ class StatusEnum
9
+ STATUS_ENUM = [
10
+ # TODO: Write general description for CREATED
11
+ CREATED = 'created'.freeze,
12
+
13
+ # TODO: Write general description for SUBMITTED
14
+ SUBMITTED = 'submitted'.freeze,
15
+
16
+ # TODO: Write general description for CONFIRMED
17
+ CONFIRMED = 'confirmed'.freeze,
18
+
19
+ # TODO: Write general description for FINALIZED
20
+ FINALIZED = 'finalized'.freeze,
21
+
22
+ # TODO: Write general description for FAILED
23
+ FAILED = 'failed'.freeze
24
+ ].freeze
25
+
26
+ def self.validate(value)
27
+ return false if value.nil?
28
+
29
+ STATUS_ENUM.include?(value)
30
+ end
31
+
32
+ def self.from_value(value, default_value = CREATED)
33
+ return default_value if value.nil?
34
+
35
+ str = value.to_s.strip
36
+
37
+ case str.downcase
38
+ when 'created' then CREATED
39
+ when 'submitted' then SUBMITTED
40
+ when 'confirmed' then CONFIRMED
41
+ when 'finalized' then FINALIZED
42
+ when 'failed' then FAILED
43
+ else
44
+ default_value
45
+ end
46
+ end
47
+ end
48
+ end