transferzero-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 (338) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +9 -0
  3. data/LICENSE +7 -0
  4. data/README.md +286 -0
  5. data/Rakefile +10 -0
  6. data/docs/APILogsApi.md +141 -0
  7. data/docs/Account.md +19 -0
  8. data/docs/AccountDebitsApi.md +199 -0
  9. data/docs/AccountListResponse.md +19 -0
  10. data/docs/AccountMeta.md +17 -0
  11. data/docs/AccountResponse.md +19 -0
  12. data/docs/AccountValidationApi.md +70 -0
  13. data/docs/AccountValidationError.md +17 -0
  14. data/docs/AccountValidationRequest.md +25 -0
  15. data/docs/AccountValidationResponse.md +19 -0
  16. data/docs/AccountValidationResult.md +17 -0
  17. data/docs/AccountsApi.md +128 -0
  18. data/docs/ApiLog.md +33 -0
  19. data/docs/ApiLogListResponse.md +19 -0
  20. data/docs/ApiLogResponse.md +17 -0
  21. data/docs/Currency.md +35 -0
  22. data/docs/CurrencyExchange.md +37 -0
  23. data/docs/CurrencyExchangeListResponse.md +17 -0
  24. data/docs/CurrencyInfoApi.md +182 -0
  25. data/docs/CurrencyListResponse.md +17 -0
  26. data/docs/CurrencyOpposite.md +37 -0
  27. data/docs/Debit.md +35 -0
  28. data/docs/DebitListRequest.md +17 -0
  29. data/docs/DebitListResponse.md +19 -0
  30. data/docs/DebitRequest.md +17 -0
  31. data/docs/DebitRequestWrapper.md +17 -0
  32. data/docs/DebitResponse.md +17 -0
  33. data/docs/Document.md +35 -0
  34. data/docs/DocumentListResponse.md +19 -0
  35. data/docs/DocumentRequest.md +17 -0
  36. data/docs/DocumentResponse.md +17 -0
  37. data/docs/DocumentWebhook.md +21 -0
  38. data/docs/DocumentsApi.md +199 -0
  39. data/docs/ErrorStatus.md +19 -0
  40. data/docs/FieldDescription.md +19 -0
  41. data/docs/FieldSelectValidation.md +19 -0
  42. data/docs/FieldValidation.md +21 -0
  43. data/docs/LogsApi.md +141 -0
  44. data/docs/Pagination.md +25 -0
  45. data/docs/PaginationMeta.md +17 -0
  46. data/docs/PayinMethod.md +25 -0
  47. data/docs/PayinMethodDetails.md +21 -0
  48. data/docs/PayinMethodDetailsMobile.md +19 -0
  49. data/docs/PayinMethodDetailsNGNBank.md +17 -0
  50. data/docs/PayinMethodRequest.md +17 -0
  51. data/docs/PaymentMethod.md +27 -0
  52. data/docs/PaymentMethodListResponse.md +17 -0
  53. data/docs/PaymentMethodOpposite.md +29 -0
  54. data/docs/PaymentMethodsApi.md +124 -0
  55. data/docs/PayoutMethod.md +27 -0
  56. data/docs/PayoutMethodBankAccountTypeEnum.md +16 -0
  57. data/docs/PayoutMethodDetails.md +53 -0
  58. data/docs/PayoutMethodDetailsBalance.md +17 -0
  59. data/docs/PayoutMethodDetailsGHSBank.md +23 -0
  60. data/docs/PayoutMethodDetailsIBAN.md +25 -0
  61. data/docs/PayoutMethodDetailsMADCash.md +37 -0
  62. data/docs/PayoutMethodDetailsMobile.md +21 -0
  63. data/docs/PayoutMethodDetailsNGNBank.md +25 -0
  64. data/docs/PayoutMethodDetailsXOFMobile.md +23 -0
  65. data/docs/PayoutMethodGenderEnum.md +16 -0
  66. data/docs/PayoutMethodIdentityCardTypeEnum.md +16 -0
  67. data/docs/PayoutMethodListResponse.md +19 -0
  68. data/docs/PayoutMethodMobileProviderEnum.md +16 -0
  69. data/docs/PayoutMethodRequest.md +17 -0
  70. data/docs/PayoutMethodResponse.md +17 -0
  71. data/docs/PayoutMethodWebhook.md +21 -0
  72. data/docs/PayoutMethodsApi.md +334 -0
  73. data/docs/Recipient.md +55 -0
  74. data/docs/RecipientListResponse.md +19 -0
  75. data/docs/RecipientRequest.md +17 -0
  76. data/docs/RecipientResponse.md +17 -0
  77. data/docs/RecipientState.md +16 -0
  78. data/docs/RecipientWebhook.md +21 -0
  79. data/docs/RecipientsApi.md +212 -0
  80. data/docs/Sender.md +67 -0
  81. data/docs/SenderListResponse.md +19 -0
  82. data/docs/SenderRequest.md +17 -0
  83. data/docs/SenderResponse.md +19 -0
  84. data/docs/SenderResponseExisting.md +17 -0
  85. data/docs/SenderResponseMeta.md +17 -0
  86. data/docs/SenderState.md +16 -0
  87. data/docs/SenderWebhook.md +21 -0
  88. data/docs/SendersApi.md +330 -0
  89. data/docs/Transaction.md +47 -0
  90. data/docs/TransactionListResponse.md +19 -0
  91. data/docs/TransactionRequest.md +17 -0
  92. data/docs/TransactionResponse.md +19 -0
  93. data/docs/TransactionResponseExisting.md +19 -0
  94. data/docs/TransactionResponseMeta.md +17 -0
  95. data/docs/TransactionState.md +16 -0
  96. data/docs/TransactionTraits.md +19 -0
  97. data/docs/TransactionWebhook.md +21 -0
  98. data/docs/TransactionsApi.md +450 -0
  99. data/docs/ValidationErrorDescription.md +17 -0
  100. data/docs/Webhook.md +21 -0
  101. data/docs/WebhookDefinition.md +25 -0
  102. data/docs/WebhookDefinitionEventListResponse.md +17 -0
  103. data/docs/WebhookDefinitionListResponse.md +19 -0
  104. data/docs/WebhookDefinitionRequest.md +17 -0
  105. data/docs/WebhookDefinitionResponse.md +17 -0
  106. data/docs/WebhookLog.md +27 -0
  107. data/docs/WebhookLogListResponse.md +19 -0
  108. data/docs/WebhookLogMetadata.md +35 -0
  109. data/docs/WebhookLogMetadataRequest.md +21 -0
  110. data/docs/WebhookLogMetadataResponse.md +21 -0
  111. data/docs/WebhookLogResponse.md +17 -0
  112. data/docs/WebhooksApi.md +319 -0
  113. data/example/client.rb +473 -0
  114. data/git_push.sh +55 -0
  115. data/lib/transferzero-sdk.rb +146 -0
  116. data/lib/transferzero-sdk/api/account_debits_api.rb +187 -0
  117. data/lib/transferzero-sdk/api/account_validation_api.rb +79 -0
  118. data/lib/transferzero-sdk/api/accounts_api.rb +135 -0
  119. data/lib/transferzero-sdk/api/api_logs_api.rb +137 -0
  120. data/lib/transferzero-sdk/api/currency_info_api.rb +167 -0
  121. data/lib/transferzero-sdk/api/documents_api.rb +197 -0
  122. data/lib/transferzero-sdk/api/logs_api.rb +137 -0
  123. data/lib/transferzero-sdk/api/payment_methods_api.rb +119 -0
  124. data/lib/transferzero-sdk/api/payout_methods_api.rb +321 -0
  125. data/lib/transferzero-sdk/api/recipients_api.rb +221 -0
  126. data/lib/transferzero-sdk/api/senders_api.rb +322 -0
  127. data/lib/transferzero-sdk/api/transactions_api.rb +428 -0
  128. data/lib/transferzero-sdk/api/webhooks_api.rb +299 -0
  129. data/lib/transferzero-sdk/api_client.rb +455 -0
  130. data/lib/transferzero-sdk/api_error.rb +61 -0
  131. data/lib/transferzero-sdk/configuration.rb +166 -0
  132. data/lib/transferzero-sdk/models/account.rb +212 -0
  133. data/lib/transferzero-sdk/models/account_list_response.rb +212 -0
  134. data/lib/transferzero-sdk/models/account_meta.rb +202 -0
  135. data/lib/transferzero-sdk/models/account_response.rb +210 -0
  136. data/lib/transferzero-sdk/models/account_validation_error.rb +202 -0
  137. data/lib/transferzero-sdk/models/account_validation_request.rb +325 -0
  138. data/lib/transferzero-sdk/models/account_validation_response.rb +210 -0
  139. data/lib/transferzero-sdk/models/account_validation_result.rb +202 -0
  140. data/lib/transferzero-sdk/models/api_log.rb +287 -0
  141. data/lib/transferzero-sdk/models/api_log_list_response.rb +213 -0
  142. data/lib/transferzero-sdk/models/api_log_response.rb +201 -0
  143. data/lib/transferzero-sdk/models/currency.rb +292 -0
  144. data/lib/transferzero-sdk/models/currency_exchange.rb +311 -0
  145. data/lib/transferzero-sdk/models/currency_exchange_list_response.rb +204 -0
  146. data/lib/transferzero-sdk/models/currency_list_response.rb +204 -0
  147. data/lib/transferzero-sdk/models/currency_opposite.rb +309 -0
  148. data/lib/transferzero-sdk/models/debit.rb +309 -0
  149. data/lib/transferzero-sdk/models/debit_list_request.rb +203 -0
  150. data/lib/transferzero-sdk/models/debit_list_response.rb +212 -0
  151. data/lib/transferzero-sdk/models/debit_request.rb +201 -0
  152. data/lib/transferzero-sdk/models/debit_request_wrapper.rb +227 -0
  153. data/lib/transferzero-sdk/models/debit_response.rb +201 -0
  154. data/lib/transferzero-sdk/models/document.rb +335 -0
  155. data/lib/transferzero-sdk/models/document_list_response.rb +212 -0
  156. data/lib/transferzero-sdk/models/document_request.rb +201 -0
  157. data/lib/transferzero-sdk/models/document_response.rb +201 -0
  158. data/lib/transferzero-sdk/models/document_webhook.rb +243 -0
  159. data/lib/transferzero-sdk/models/error_status.rb +210 -0
  160. data/lib/transferzero-sdk/models/field_description.rb +245 -0
  161. data/lib/transferzero-sdk/models/field_select_validation.rb +212 -0
  162. data/lib/transferzero-sdk/models/field_validation.rb +221 -0
  163. data/lib/transferzero-sdk/models/pagination.rb +242 -0
  164. data/lib/transferzero-sdk/models/pagination_meta.rb +201 -0
  165. data/lib/transferzero-sdk/models/payin_method.rb +242 -0
  166. data/lib/transferzero-sdk/models/payin_method_details.rb +257 -0
  167. data/lib/transferzero-sdk/models/payin_method_details_mobile.rb +218 -0
  168. data/lib/transferzero-sdk/models/payin_method_details_ngn_bank.rb +208 -0
  169. data/lib/transferzero-sdk/models/payin_method_request.rb +201 -0
  170. data/lib/transferzero-sdk/models/payment_method.rb +257 -0
  171. data/lib/transferzero-sdk/models/payment_method_list_response.rb +203 -0
  172. data/lib/transferzero-sdk/models/payment_method_opposite.rb +275 -0
  173. data/lib/transferzero-sdk/models/payout_method.rb +255 -0
  174. data/lib/transferzero-sdk/models/payout_method_bank_account_type_enum.rb +36 -0
  175. data/lib/transferzero-sdk/models/payout_method_details.rb +462 -0
  176. data/lib/transferzero-sdk/models/payout_method_details_balance.rb +202 -0
  177. data/lib/transferzero-sdk/models/payout_method_details_ghs_bank.rb +249 -0
  178. data/lib/transferzero-sdk/models/payout_method_details_iban.rb +258 -0
  179. data/lib/transferzero-sdk/models/payout_method_details_mad_cash.rb +332 -0
  180. data/lib/transferzero-sdk/models/payout_method_details_mobile.rb +235 -0
  181. data/lib/transferzero-sdk/models/payout_method_details_ngn_bank.rb +263 -0
  182. data/lib/transferzero-sdk/models/payout_method_details_xof_mobile.rb +249 -0
  183. data/lib/transferzero-sdk/models/payout_method_gender_enum.rb +36 -0
  184. data/lib/transferzero-sdk/models/payout_method_identity_card_type_enum.rb +37 -0
  185. data/lib/transferzero-sdk/models/payout_method_list_response.rb +212 -0
  186. data/lib/transferzero-sdk/models/payout_method_mobile_provider_enum.rb +36 -0
  187. data/lib/transferzero-sdk/models/payout_method_request.rb +201 -0
  188. data/lib/transferzero-sdk/models/payout_method_response.rb +201 -0
  189. data/lib/transferzero-sdk/models/payout_method_webhook.rb +243 -0
  190. data/lib/transferzero-sdk/models/recipient.rb +406 -0
  191. data/lib/transferzero-sdk/models/recipient_list_response.rb +212 -0
  192. data/lib/transferzero-sdk/models/recipient_request.rb +201 -0
  193. data/lib/transferzero-sdk/models/recipient_response.rb +201 -0
  194. data/lib/transferzero-sdk/models/recipient_state.rb +44 -0
  195. data/lib/transferzero-sdk/models/recipient_webhook.rb +243 -0
  196. data/lib/transferzero-sdk/models/sender.rb +529 -0
  197. data/lib/transferzero-sdk/models/sender_list_response.rb +212 -0
  198. data/lib/transferzero-sdk/models/sender_request.rb +201 -0
  199. data/lib/transferzero-sdk/models/sender_response.rb +210 -0
  200. data/lib/transferzero-sdk/models/sender_response_existing.rb +201 -0
  201. data/lib/transferzero-sdk/models/sender_response_meta.rb +201 -0
  202. data/lib/transferzero-sdk/models/sender_state.rb +40 -0
  203. data/lib/transferzero-sdk/models/sender_webhook.rb +243 -0
  204. data/lib/transferzero-sdk/models/transaction.rb +370 -0
  205. data/lib/transferzero-sdk/models/transaction_list_response.rb +212 -0
  206. data/lib/transferzero-sdk/models/transaction_request.rb +201 -0
  207. data/lib/transferzero-sdk/models/transaction_response.rb +210 -0
  208. data/lib/transferzero-sdk/models/transaction_response_existing.rb +210 -0
  209. data/lib/transferzero-sdk/models/transaction_response_meta.rb +201 -0
  210. data/lib/transferzero-sdk/models/transaction_state.rb +44 -0
  211. data/lib/transferzero-sdk/models/transaction_traits.rb +213 -0
  212. data/lib/transferzero-sdk/models/transaction_webhook.rb +243 -0
  213. data/lib/transferzero-sdk/models/validation_error_description.rb +203 -0
  214. data/lib/transferzero-sdk/models/webhook.rb +238 -0
  215. data/lib/transferzero-sdk/models/webhook_definition.rb +256 -0
  216. data/lib/transferzero-sdk/models/webhook_definition_event_list_response.rb +203 -0
  217. data/lib/transferzero-sdk/models/webhook_definition_list_response.rb +212 -0
  218. data/lib/transferzero-sdk/models/webhook_definition_request.rb +201 -0
  219. data/lib/transferzero-sdk/models/webhook_definition_response.rb +201 -0
  220. data/lib/transferzero-sdk/models/webhook_log.rb +249 -0
  221. data/lib/transferzero-sdk/models/webhook_log_list_response.rb +213 -0
  222. data/lib/transferzero-sdk/models/webhook_log_metadata.rb +289 -0
  223. data/lib/transferzero-sdk/models/webhook_log_metadata_request.rb +224 -0
  224. data/lib/transferzero-sdk/models/webhook_log_metadata_response.rb +225 -0
  225. data/lib/transferzero-sdk/models/webhook_log_response.rb +201 -0
  226. data/lib/transferzero-sdk/version.rb +15 -0
  227. data/spec/api/account_debits_api_spec.rb +72 -0
  228. data/spec/api/account_validation_api_spec.rb +47 -0
  229. data/spec/api/accounts_api_spec.rb +58 -0
  230. data/spec/api/api_logs_api_spec.rb +62 -0
  231. data/spec/api/currency_info_api_spec.rb +68 -0
  232. data/spec/api/documents_api_spec.rb +72 -0
  233. data/spec/api/logs_api_spec.rb +62 -0
  234. data/spec/api/payment_methods_api_spec.rb +57 -0
  235. data/spec/api/payout_methods_api_spec.rb +102 -0
  236. data/spec/api/recipients_api_spec.rb +79 -0
  237. data/spec/api/senders_api_spec.rb +100 -0
  238. data/spec/api/transactions_api_spec.rb +122 -0
  239. data/spec/api/webhooks_api_spec.rb +95 -0
  240. data/spec/api_client_spec.rb +189 -0
  241. data/spec/configuration_spec.rb +42 -0
  242. data/spec/models/account_list_response_spec.rb +47 -0
  243. data/spec/models/account_meta_spec.rb +41 -0
  244. data/spec/models/account_response_spec.rb +47 -0
  245. data/spec/models/account_spec.rb +47 -0
  246. data/spec/models/account_validation_error_spec.rb +41 -0
  247. data/spec/models/account_validation_request_spec.rb +77 -0
  248. data/spec/models/account_validation_response_spec.rb +47 -0
  249. data/spec/models/account_validation_result_spec.rb +41 -0
  250. data/spec/models/api_log_list_response_spec.rb +47 -0
  251. data/spec/models/api_log_response_spec.rb +41 -0
  252. data/spec/models/api_log_spec.rb +89 -0
  253. data/spec/models/currency_exchange_list_response_spec.rb +41 -0
  254. data/spec/models/currency_exchange_spec.rb +101 -0
  255. data/spec/models/currency_list_response_spec.rb +41 -0
  256. data/spec/models/currency_opposite_spec.rb +101 -0
  257. data/spec/models/currency_spec.rb +95 -0
  258. data/spec/models/debit_list_request_spec.rb +41 -0
  259. data/spec/models/debit_list_response_spec.rb +47 -0
  260. data/spec/models/debit_request_spec.rb +41 -0
  261. data/spec/models/debit_request_wrapper_spec.rb +41 -0
  262. data/spec/models/debit_response_spec.rb +41 -0
  263. data/spec/models/debit_spec.rb +95 -0
  264. data/spec/models/document_list_response_spec.rb +47 -0
  265. data/spec/models/document_request_spec.rb +41 -0
  266. data/spec/models/document_response_spec.rb +41 -0
  267. data/spec/models/document_spec.rb +99 -0
  268. data/spec/models/document_webhook_spec.rb +53 -0
  269. data/spec/models/error_status_spec.rb +47 -0
  270. data/spec/models/field_description_spec.rb +51 -0
  271. data/spec/models/field_select_validation_spec.rb +47 -0
  272. data/spec/models/field_validation_spec.rb +53 -0
  273. data/spec/models/pagination_meta_spec.rb +41 -0
  274. data/spec/models/pagination_spec.rb +65 -0
  275. data/spec/models/payin_method_details_mobile_spec.rb +47 -0
  276. data/spec/models/payin_method_details_ngn_bank_spec.rb +41 -0
  277. data/spec/models/payin_method_details_spec.rb +53 -0
  278. data/spec/models/payin_method_request_spec.rb +41 -0
  279. data/spec/models/payin_method_spec.rb +65 -0
  280. data/spec/models/payment_method_list_response_spec.rb +41 -0
  281. data/spec/models/payment_method_opposite_spec.rb +77 -0
  282. data/spec/models/payment_method_spec.rb +71 -0
  283. data/spec/models/payout_method_bank_account_type_enum_spec.rb +35 -0
  284. data/spec/models/payout_method_details_balance_spec.rb +41 -0
  285. data/spec/models/payout_method_details_ghs_bank_spec.rb +59 -0
  286. data/spec/models/payout_method_details_iban_spec.rb +65 -0
  287. data/spec/models/payout_method_details_mad_cash_spec.rb +101 -0
  288. data/spec/models/payout_method_details_mobile_spec.rb +53 -0
  289. data/spec/models/payout_method_details_ngn_bank_spec.rb +65 -0
  290. data/spec/models/payout_method_details_spec.rb +149 -0
  291. data/spec/models/payout_method_details_xof_mobile_spec.rb +59 -0
  292. data/spec/models/payout_method_gender_enum_spec.rb +35 -0
  293. data/spec/models/payout_method_identity_card_type_enum_spec.rb +35 -0
  294. data/spec/models/payout_method_list_response_spec.rb +47 -0
  295. data/spec/models/payout_method_mobile_provider_enum_spec.rb +35 -0
  296. data/spec/models/payout_method_request_spec.rb +41 -0
  297. data/spec/models/payout_method_response_spec.rb +41 -0
  298. data/spec/models/payout_method_spec.rb +71 -0
  299. data/spec/models/payout_method_webhook_spec.rb +53 -0
  300. data/spec/models/recipient_list_response_spec.rb +47 -0
  301. data/spec/models/recipient_request_spec.rb +41 -0
  302. data/spec/models/recipient_response_spec.rb +41 -0
  303. data/spec/models/recipient_spec.rb +155 -0
  304. data/spec/models/recipient_state_spec.rb +35 -0
  305. data/spec/models/recipient_webhook_spec.rb +53 -0
  306. data/spec/models/sender_list_response_spec.rb +47 -0
  307. data/spec/models/sender_request_spec.rb +41 -0
  308. data/spec/models/sender_response_existing_spec.rb +41 -0
  309. data/spec/models/sender_response_meta_spec.rb +41 -0
  310. data/spec/models/sender_response_spec.rb +47 -0
  311. data/spec/models/sender_spec.rb +195 -0
  312. data/spec/models/sender_state_spec.rb +35 -0
  313. data/spec/models/sender_webhook_spec.rb +53 -0
  314. data/spec/models/transaction_list_response_spec.rb +47 -0
  315. data/spec/models/transaction_request_spec.rb +41 -0
  316. data/spec/models/transaction_response_existing_spec.rb +47 -0
  317. data/spec/models/transaction_response_meta_spec.rb +41 -0
  318. data/spec/models/transaction_response_spec.rb +47 -0
  319. data/spec/models/transaction_spec.rb +131 -0
  320. data/spec/models/transaction_state_spec.rb +35 -0
  321. data/spec/models/transaction_traits_spec.rb +47 -0
  322. data/spec/models/transaction_webhook_spec.rb +53 -0
  323. data/spec/models/validation_error_description_spec.rb +41 -0
  324. data/spec/models/webhook_definition_event_list_response_spec.rb +41 -0
  325. data/spec/models/webhook_definition_list_response_spec.rb +47 -0
  326. data/spec/models/webhook_definition_request_spec.rb +41 -0
  327. data/spec/models/webhook_definition_response_spec.rb +41 -0
  328. data/spec/models/webhook_definition_spec.rb +65 -0
  329. data/spec/models/webhook_log_list_response_spec.rb +47 -0
  330. data/spec/models/webhook_log_metadata_request_spec.rb +53 -0
  331. data/spec/models/webhook_log_metadata_response_spec.rb +53 -0
  332. data/spec/models/webhook_log_metadata_spec.rb +95 -0
  333. data/spec/models/webhook_log_response_spec.rb +41 -0
  334. data/spec/models/webhook_log_spec.rb +71 -0
  335. data/spec/models/webhook_spec.rb +53 -0
  336. data/spec/spec_helper.rb +111 -0
  337. data/transferzero-sdk.gemspec +46 -0
  338. metadata +684 -0
data/example/client.rb ADDED
@@ -0,0 +1,473 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'securerandom'
4
+ require 'bundler/inline'
5
+
6
+ gemfile do
7
+ gem "transferzero-sdk", "=1.0.0"
8
+ end
9
+
10
+ require 'transferzero-sdk'
11
+
12
+ credentials = {
13
+ key: "<key>",
14
+ secret: "<secret>",
15
+ host: "https://api-sandbox.transferzero.com/v1"
16
+ }
17
+
18
+ # Please see our documentation at https://github.com/transferzero/api-documentation
19
+ # and the API specification at http://api.transferzero.com/documentation/
20
+ # for more information.
21
+
22
+ class Client
23
+ def initialize(credentials)
24
+ TransferZero.configure do |config|
25
+ config.api_key = credentials[:key]
26
+ config.api_secret = credentials[:secret]
27
+ config.host = credentials[:host]
28
+ end
29
+ end
30
+
31
+ def list_currencies_example
32
+ begin
33
+ currency_info_api = TransferZero::CurrencyInfoApi.new
34
+ currencies = currency_info_api.info_currencies.object
35
+ currencies.map(&:code)
36
+ rescue TransferZero::ApiError => e
37
+ puts "Exception when calling CurrencyInfoApi#info_currencies: #{e}"
38
+ end
39
+ end
40
+
41
+ def account_validation_example
42
+ # See https://github.com/transferzero/api-documentation/blob/master/additional-features.md#bank-account-name-enquiry
43
+ # for more information on how this feature can be used
44
+ begin
45
+ request = TransferZero::AccountValidationRequest.new
46
+ request.bank_account = '9040009999999'
47
+ request.bank_code = '120100'
48
+ request.country = 'GH'
49
+ request.currency = 'GHS'
50
+ request.method = 'bank'
51
+
52
+ account_validation_api = TransferZero::AccountValidationApi.new
53
+ account_validation = account_validation_api.post_account_validations(request)
54
+ account_name = account_validation.object.account_name
55
+ puts "Account Name: #{account_name}"
56
+ rescue TransferZero::ApiError => e
57
+ if e.validation_error
58
+ puts e.response_object("AccountValidationResponse").meta.error
59
+ else
60
+ puts "Exception when calling AccountValidationApi#account_validation_example: #{e}"
61
+ end
62
+ end
63
+ end
64
+
65
+ def create_sender_example
66
+ # For more details on senders please check https://github.com/transferzero/api-documentation/blob/master/transaction-flow.md#sender
67
+ begin
68
+ api = TransferZero::SendersApi.new
69
+ sender = TransferZero::Sender.new
70
+ sender.country = 'UG'
71
+ sender.phone_country = 'UG'
72
+ sender.phone_number = '752403639'
73
+ sender.email = 'example@home.org'
74
+ sender.first_name = 'Johnny'
75
+ sender.last_name = 'English'
76
+ sender.city = 'Kampala'
77
+ sender.street = "Unknown 17-3"
78
+ sender.address_description = "Description of address"
79
+ sender.postal_code = "798983"
80
+ sender.birth_date = "1900-12-31"
81
+ sender.ip = '127.0.0.1'
82
+ sender.external_id = 'SENDER-2b59def0' # Optional field for customer ID
83
+
84
+ sender_request = TransferZero::SenderRequest.new
85
+ sender_request.sender = sender
86
+ sender_response = api.post_senders(sender_request)
87
+ created_sender = sender_response.object
88
+
89
+ puts "Sender created! ID: #{created_sender.id}"
90
+ created_sender.id
91
+ rescue TransferZero::ApiError => e
92
+ if e.validation_error
93
+ puts e.response_object("SenderResponse").object.errors
94
+ else
95
+ puts "Exception when calling SendersApi#create_sender_example: #{e}"
96
+ end
97
+ end
98
+ end
99
+
100
+ def get_sender_by_external_id_example
101
+ # Find more details on external IDs at https://github.com/transferzero/api-documentation/blob/master/transaction-flow.md#external-id
102
+ begin
103
+ opts = { external_id: 'SENDER-2b59def0' }
104
+ sender = TransferZero::SendersApi.new
105
+ sender.get_senders(opts).object.first
106
+ rescue TransferZero::ApiError => e
107
+ if e.validation_error
108
+ puts e.response_object("SenderResponse").object.errors
109
+ else
110
+ puts "Exception when calling SendersApi#get_sender_by_external_id_example: #{e}"
111
+ end
112
+ end
113
+ end
114
+
115
+ def update_sender_example
116
+ # For more details on senders please check https://github.com/transferzero/api-documentation/blob/master/transaction-flow.md#sender
117
+ begin
118
+ api = TransferZero::SendersApi.new
119
+ sender = TransferZero::Sender.new
120
+ sender.city = 'London'
121
+ sender_request = TransferZero::SenderRequest.new
122
+ sender_request.sender = sender
123
+
124
+ api.patch_sender('ec33484c-4456-4625-a823-9704a3a54e68', sender_request)
125
+ rescue TransferZero::ApiError => e
126
+ if e.validation_error
127
+ puts e.response_object("SenderResponse").object.errors
128
+ else
129
+ puts "Exception when calling SendersApi#create_sender_example: #{e}"
130
+ end
131
+ end
132
+ end
133
+
134
+ def create_transaction_example
135
+ begin
136
+ api = TransferZero::TransactionsApi.new
137
+ transaction = TransferZero::Transaction.new
138
+ # Please check our documentation at https://github.com/transferzero/api-documentation/blob/master/transaction-flow.md
139
+ # for details on how transactions work.
140
+
141
+ sender = TransferZero::Sender.new
142
+ # When adding a sender to transaction, please use either an id or external_id. Providing both will result in a validation error.
143
+ # Please see our documentation at https://github.com/transferzero/api-documentation/blob/master/transaction-flow.md#sender
144
+ sender.id = 'ec33484c-4456-4625-a823-9704a3a54e68'
145
+
146
+ # You can find the various payout options at https://github.com/transferzero/api-documentation/blob/master/transaction-flow.md#payout-details
147
+ ngn_bank_details = TransferZero::PayoutMethodDetails.new
148
+ ngn_bank_details.bank_account = '123456789'
149
+ ngn_bank_details.bank_account_type = TransferZero::PayoutMethodBankAccountTypeEnum::N20
150
+ ngn_bank_details.bank_code = '082'
151
+ ngn_bank_details.first_name = 'first'
152
+ ngn_bank_details.last_name = 'last'
153
+
154
+ payout_method = TransferZero::PayoutMethod.new
155
+ payout_method.type = 'NGN::Bank'
156
+ payout_method.details = ngn_bank_details
157
+
158
+ # Please see https://github.com/transferzero/api-documentation/blob/master/transaction-flow.md#requested-amount-and-currency
159
+ # on what the request amount and currencies do
160
+ recipient = TransferZero::Recipient.new
161
+ recipient.requested_amount = 10000
162
+ recipient.requested_currency = 'NGN'
163
+ recipient.payout_method = payout_method
164
+
165
+ # Similarly you can check https://github.com/transferzero/api-documentation/blob/master/transaction-flow.md#requested-amount-and-currency
166
+ # on details about the input currency parameter
167
+
168
+ # Find more details on external IDs at https://github.com/transferzero/api-documentation/blob/master/transaction-flow.md#external-id
169
+ transaction.external_id = 'TRANSACTION-1f834add' # Optional field for customer's ID
170
+ transaction.input_currency = 'GBP'
171
+ transaction.sender = sender
172
+ transaction.recipients = [recipient]
173
+
174
+ transaction_request = TransferZero::TransactionRequest.new
175
+ transaction_request.transaction = transaction
176
+ transaction_response = api.post_transactions(transaction_request)
177
+ created_transaction = transaction_response.object
178
+
179
+ puts "Transaction created! ID: #{created_transaction.id}"
180
+ created_transaction.id
181
+ rescue TransferZero::ApiError => e
182
+ if e.validation_error
183
+ puts e.response_object("TransactionResponse").object.errors
184
+ else
185
+ puts e
186
+ end
187
+ end
188
+ end
189
+
190
+ def get_transaction_by_external_id_example
191
+ # Please see https://github.com/transferzero/api-documentation/blob/master/transaction-flow.md#external-id
192
+ # for more details on external IDs
193
+ begin
194
+ opts = { external_id: 'TRANSACTION-1f834add' }
195
+ transaction = TransferZero::TransactionsApi.new
196
+ transaction.get_transactions(opts).object.first
197
+ rescue TransferZero::ApiError => e
198
+ if e.validation_error
199
+ puts e.response_object("TransactionResponse").object.errors
200
+ else
201
+ puts "Exception when calling TransactionsApi#get_transaction_by_external_id_example: #{e}"
202
+ end
203
+ end
204
+ end
205
+
206
+ def create_and_fund_transaction_example
207
+ transaction_id = create_transaction_example
208
+ if transaction_id.nil?
209
+ puts "Transaction with ID #{transaction_id} does not exist"
210
+ else
211
+ # Please see https://github.com/transferzero/api-documentation/blob/master/transaction-flow.md#funding-transactions
212
+ # on details about funding transactions
213
+ debit = TransferZero::Debit.new
214
+ debit.currency = 'GBP'
215
+ debit.to_id = transaction_id
216
+ debit.to_type = "Transaction"
217
+
218
+ debit_request = TransferZero::DebitRequestWrapper.new
219
+ debit_request.debit = debit
220
+
221
+ debit_api = TransferZero::AccountDebitsApi.new
222
+
223
+ begin
224
+ debit_response = debit_api.post_accounts_debits(debit_request)
225
+ puts "Transaction Funded Successfully"
226
+ debit_response.object
227
+ rescue TransferZero::ApiError => e
228
+ if e.validation_error
229
+ puts e.response_object("DebitResponse").object.errors
230
+ else
231
+ puts e
232
+ end
233
+ end
234
+ end
235
+ end
236
+
237
+ def webhook_parse_example
238
+ # Please see https://github.com/transferzero/api-documentation#webhooks
239
+ # for more details about how webhooks / callbacks work from our system
240
+ headers = {
241
+ "Authorization-Nonce": "<authorization-nonce>",
242
+ "Authorization-Key": "<authorization-key>",
243
+ "Authorization-Signature": "<authorization-signature>"
244
+ }
245
+
246
+ body = <<-JSON
247
+ {
248
+ "webhook": "85d11cf4-d4d6-46e4-ab7d-91355e80392a",
249
+ "event": "transaction.created",
250
+ "object": {
251
+ "input_amount": 21.59,
252
+ "input_currency": "GBP",
253
+ "id": "cd390e83-a9de-404d-a660-4da0f1342c04",
254
+ "metadata": {},
255
+ "state": "approved",
256
+ "payin_reference": "WIHGHZTSPOWN",
257
+ "sender": {
258
+ "id": "6f15f581-889f-4ae1-9591-cb283add661f",
259
+ "type": "person",
260
+ "state": "approved",
261
+ "state_reason": null,
262
+ "country": "GB",
263
+ "street": "Brick Lane",
264
+ "postal_code": "E1 6QL",
265
+ "city": "London",
266
+ "phone_country": "GB",
267
+ "phone_number": "07123456789",
268
+ "email": "me@transferzero.com",
269
+ "ip": "127.0.0.1",
270
+ "address_description": null,
271
+ "first_name": "Test",
272
+ "middle_name": null,
273
+ "last_name": "User",
274
+ "birth_date": "1990-01-01",
275
+ "occupation": "Tester",
276
+ "nationality": null,
277
+ "metadata": {
278
+ "transferzero": {
279
+ "referer": {}
280
+ }
281
+ },
282
+ "providers": {
283
+ "NGN::Bank": "transferzero_auto"
284
+ },
285
+ "onboarding_status": "completed_first_transaction"
286
+ },
287
+ "payin_methods": [
288
+ {
289
+ "id": "e78632a8-51de-4b78-892c-31d6c5d0db5c",
290
+ "type": "GBP::Bank",
291
+ "out_details": {
292
+ "style": "info",
293
+ "BIC": "LHVBEE22",
294
+ "IBAN": "EE087700771002673049",
295
+ "Reference": "WIHGHZTSPOWN",
296
+ "Account Name": "B TRANSFER SERVICES LIMITED",
297
+ "Bank Address": "Tartu mnt 2, 10145 Tallinn, Estonia.",
298
+ "Beneficiary Address": "Tax Assist Accountants, 64 Southwark Bridge Road, London SE1 0AS"
299
+ },
300
+ "in_details": {},
301
+ "instructions": {},
302
+ "provider": "lhv"
303
+ }
304
+ ],
305
+ "paid_amount": 0,
306
+ "due_amount": 21.59,
307
+ "recipients": [
308
+ {
309
+ "created_at": "2019-03-04T07:41:49.972Z",
310
+ "editable": true,
311
+ "id": "4a401c7f-7e38-445f-bb85-7dcad8d22e91",
312
+ "input_usd_amount": 28.52,
313
+ "may_cancel": true,
314
+ "metadata": {},
315
+ "state": "initial",
316
+ "transaction_id": "cd390e83-a9de-404d-a660-4da0f1342c04",
317
+ "transaction_state": "initial",
318
+ "payout_method": {
319
+ "id": "b704e560-da50-4ff5-9bd7-b9499dba4b54",
320
+ "type": "NGN::Bank",
321
+ "details": {
322
+ "bank_code": "082",
323
+ "last_name": "Last",
324
+ "first_name": "First",
325
+ "bank_account": "123456789",
326
+ "bank_account_type": "20"
327
+ },
328
+ "metadata": {},
329
+ "provider": "transferzero_auto",
330
+ "fields": {
331
+ "email": {
332
+ "type": "input",
333
+ "validations": {
334
+ "format": "\\A((\\w+([\\-+.]\\w+)*@[a-zA-Z0-9]+([\\-\\.][a-zA-Z0-9]+)*)*){3,320}\\z"
335
+ }
336
+ },
337
+ "first_name": {
338
+ "type": "input",
339
+ "validations": {
340
+ "presence": true
341
+ }
342
+ },
343
+ "last_name": {
344
+ "type": "input",
345
+ "validations": {
346
+ "presence": true
347
+ }
348
+ },
349
+ "bank_code": {
350
+ "type": "select",
351
+ "options": {
352
+ "214": "FCMB Bank",
353
+ "215": "Unity Bank",
354
+ "232": "Sterling bank",
355
+ "301": "Jaiz Bank",
356
+ "044": "Access Bank",
357
+ "063": "Diamond Bank",
358
+ "050": "EcoBank",
359
+ "070": "Fidelity Bank",
360
+ "011": "First Bank of Nigeria",
361
+ "058": "Guaranty Trust Bank",
362
+ "030": "Heritage Bank",
363
+ "082": "Keystone",
364
+ "076": "Polaris Bank",
365
+ "039": "Stanbic IBTC Bank",
366
+ "032": "Union Bank",
367
+ "033": "United Bank for Africa",
368
+ "035": "Wema Bank",
369
+ "057": "Zenith International"
370
+ },
371
+ "validations": {
372
+ "presence": true,
373
+ "inclusion": {
374
+ "in": {
375
+ "214": "FCMB Bank",
376
+ "215": "Unity Bank",
377
+ "232": "Sterling bank",
378
+ "301": "Jaiz Bank",
379
+ "044": "Access Bank",
380
+ "063": "Diamond Bank",
381
+ "050": "EcoBank",
382
+ "070": "Fidelity Bank",
383
+ "011": "First Bank of Nigeria",
384
+ "058": "Guaranty Trust Bank",
385
+ "030": "Heritage Bank",
386
+ "082": "Keystone",
387
+ "076": "Polaris Bank",
388
+ "039": "Stanbic IBTC Bank",
389
+ "032": "Union Bank",
390
+ "033": "United Bank for Africa",
391
+ "035": "Wema Bank",
392
+ "057": "Zenith International"
393
+ }
394
+ }
395
+ }
396
+ },
397
+ "bank_account": {
398
+ "type": "input",
399
+ "validations": {
400
+ "presence": true
401
+ }
402
+ },
403
+ "bank_account_type": {
404
+ "type": "select",
405
+ "options": {
406
+ "10": "Savings",
407
+ "20": "Current",
408
+ "00": "Unknown"
409
+ }
410
+ }
411
+ }
412
+ },
413
+ "exchange_rate": 463.177396943029,
414
+ "fee_fractional": 64,
415
+ "requested_amount": 10000,
416
+ "requested_currency": "NGN",
417
+ "input_amount": 21.59,
418
+ "input_currency": "GBP",
419
+ "output_amount": 10000,
420
+ "output_currency": "NGN"
421
+ }
422
+ ],
423
+ "created_at": "2019-03-04T07:41:49.972Z",
424
+ "expires_at": "2019-03-07T07:41:49.972Z",
425
+ "traits": {}
426
+ }
427
+ }
428
+ JSON
429
+
430
+ webhook_api = TransferZero::ApiClient.new
431
+ webhook_url = "<url>"
432
+
433
+ # Once you've set up an endpoint where you'll be receiving callbacks you can use the following code snippet
434
+ # to both verify that the webhook we sent out is legitimate, and then parse it's contents regardless of type.
435
+ # The details you need to provide are:
436
+ # - the body of the webhook/callback you received as a string
437
+ # - the url of your webhook, where you are awaiting the callbacks - this has to be the full URL
438
+ # - the authentication headers you have received on your webhook endpoint - as an associative array
439
+
440
+ if webhook_api.validate_webhook_request(webhook_url, body, headers)
441
+ webhook = webhook_api.parse_response(body, "Webhook")
442
+ if webhook['event'].start_with?('transaction')
443
+ transaction_webhook = webhook_api.parse_response(body, 'TransactionWebhook')
444
+ puts transaction_webhook.object.to_s
445
+ elsif webhook['event'].start_with?('recipient')
446
+ recipient_webhook = webhook_api.parse_response(body, 'RecipientWebhook')
447
+ puts recipient_webhook.object.to_s
448
+ elsif webhook['event'].start_with?('payout_method')
449
+ payout_method_webhook = webhook_api.parse_response(body, 'PayoutMethodWebhook')
450
+ puts payout_method_webhook.object.to_s
451
+ elsif webhook['event'].start_with?('sender')
452
+ sender_webhook = webhook_api.parse_response(body, 'SenderWebhook')
453
+ puts sender_webhook.object.to_s
454
+ elsif webhook['event'].start_with?('document')
455
+ document_webhook = webhook_api.parse_response(body, 'DocumentWebhook')
456
+ puts document_webhook.object.to_s
457
+ else
458
+ puts webhook
459
+ end
460
+ end
461
+ end
462
+ end
463
+
464
+ # client = Client.new(credentials)
465
+ # client.list_currencies_example
466
+ # client.account_validation_example
467
+ # client.create_sender_example
468
+ # client.get_sender_by_external_id_example
469
+ # client.update_sender_example
470
+ # client.create_transaction_example
471
+ # client.get_transaction_by_external_id_example
472
+ # client.create_and_fund_transaction_example
473
+ # client.webhook_parse_example