ynab 1.31.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (260) hide show
  1. checksums.yaml +4 -4
  2. data/DEVELOPMENT.md +11 -0
  3. data/Gemfile +8 -0
  4. data/Gemfile.lock +42 -0
  5. data/README.md +3 -3
  6. data/Rakefile +58 -0
  7. data/config.json +9 -0
  8. data/docs/Account.md +25 -0
  9. data/docs/AccountResponse.md +8 -0
  10. data/docs/AccountResponseData.md +8 -0
  11. data/docs/AccountType.md +7 -0
  12. data/docs/AccountWrapper.md +8 -0
  13. data/docs/AccountsApi.md +70 -0
  14. data/docs/AccountsResponse.md +8 -0
  15. data/docs/AccountsResponseData.md +9 -0
  16. data/docs/AccountsWrapper.md +9 -0
  17. data/docs/BudgetDetail.md +24 -0
  18. data/docs/BudgetDetailAllOf.md +17 -0
  19. data/docs/BudgetDetailResponse.md +8 -0
  20. data/docs/BudgetDetailResponseData.md +9 -0
  21. data/docs/BudgetDetailWrapper.md +9 -0
  22. data/docs/BudgetSettings.md +9 -0
  23. data/docs/BudgetSettingsResponse.md +8 -0
  24. data/docs/BudgetSettingsResponseData.md +8 -0
  25. data/docs/BudgetSettingsWrapper.md +8 -0
  26. data/docs/BudgetSummary.md +15 -0
  27. data/docs/BudgetSummaryResponse.md +8 -0
  28. data/docs/BudgetSummaryResponseData.md +9 -0
  29. data/docs/BudgetSummaryWrapper.md +9 -0
  30. data/docs/BudgetsApi.md +68 -0
  31. data/docs/BulkIdWrapper.md +8 -0
  32. data/docs/BulkIds.md +9 -0
  33. data/docs/BulkResponse.md +8 -0
  34. data/docs/BulkResponseData.md +8 -0
  35. data/docs/BulkResponseDataBulk.md +9 -0
  36. data/docs/BulkTransactionCreateResponse.md +8 -0
  37. data/docs/BulkTransactionIds.md +8 -0
  38. data/docs/BulkTransactions.md +8 -0
  39. data/docs/CategoriesApi.md +94 -0
  40. data/docs/CategoriesResponse.md +8 -0
  41. data/docs/CategoriesResponseData.md +9 -0
  42. data/docs/Category.md +30 -0
  43. data/docs/CategoryGroup.md +11 -0
  44. data/docs/CategoryGroupWithCategories.md +12 -0
  45. data/docs/CategoryGroupWithCategoriesAllOf.md +8 -0
  46. data/docs/CategoryGroupsWrapper.md +9 -0
  47. data/docs/CategoryResponse.md +8 -0
  48. data/docs/CategoryResponseData.md +8 -0
  49. data/docs/CategoryWrapper.md +9 -0
  50. data/docs/CurrencyFormat.md +15 -0
  51. data/docs/DateFormat.md +8 -0
  52. data/docs/DeprecatedApi.md +28 -0
  53. data/docs/ErrorDetail.md +10 -0
  54. data/docs/ErrorResponse.md +8 -0
  55. data/docs/HybridTransaction.md +30 -0
  56. data/docs/HybridTransactionAllOf.md +12 -0
  57. data/docs/HybridTransactionsResponse.md +8 -0
  58. data/docs/HybridTransactionsResponseData.md +9 -0
  59. data/docs/HybridTransactionsWrapper.md +8 -0
  60. data/docs/LoanAccountPeriodicValue.md +7 -0
  61. data/docs/MonthDetail.md +16 -0
  62. data/docs/MonthDetailAllOf.md +8 -0
  63. data/docs/MonthDetailResponse.md +8 -0
  64. data/docs/MonthDetailResponseData.md +8 -0
  65. data/docs/MonthDetailWrapper.md +8 -0
  66. data/docs/MonthSummariesResponse.md +8 -0
  67. data/docs/MonthSummariesResponseData.md +9 -0
  68. data/docs/MonthSummariesWrapper.md +9 -0
  69. data/docs/MonthSummary.md +15 -0
  70. data/docs/MonthsApi.md +49 -0
  71. data/docs/PatchMonthCategoryWrapper.md +8 -0
  72. data/docs/PatchTransactionsWrapper.md +8 -0
  73. data/docs/Payee.md +11 -0
  74. data/docs/PayeeLocation.md +12 -0
  75. data/docs/PayeeLocationResponse.md +8 -0
  76. data/docs/PayeeLocationResponseData.md +8 -0
  77. data/docs/PayeeLocationWrapper.md +8 -0
  78. data/docs/PayeeLocationsApi.md +69 -0
  79. data/docs/PayeeLocationsResponse.md +8 -0
  80. data/docs/PayeeLocationsResponseData.md +8 -0
  81. data/docs/PayeeLocationsWrapper.md +8 -0
  82. data/docs/PayeeResponse.md +8 -0
  83. data/docs/PayeeResponseData.md +8 -0
  84. data/docs/PayeeWrapper.md +8 -0
  85. data/docs/PayeesApi.md +49 -0
  86. data/docs/PayeesResponse.md +8 -0
  87. data/docs/PayeesResponseData.md +9 -0
  88. data/docs/PayeesWrapper.md +9 -0
  89. data/docs/PostAccountWrapper.md +8 -0
  90. data/docs/PostTransactionsWrapper.md +9 -0
  91. data/docs/PutTransactionWrapper.md +8 -0
  92. data/docs/SaveAccount.md +10 -0
  93. data/docs/SaveAccountWrapper.md +8 -0
  94. data/docs/SaveCategoryResponse.md +8 -0
  95. data/docs/SaveCategoryResponseData.md +9 -0
  96. data/docs/SaveMonthCategory.md +8 -0
  97. data/docs/SaveMonthCategoryWrapper.md +8 -0
  98. data/docs/SaveSubTransaction.md +12 -0
  99. data/docs/SaveTransaction.md +19 -0
  100. data/docs/SaveTransactionWithId.md +20 -0
  101. data/docs/SaveTransactionWithIdAllOf.md +8 -0
  102. data/docs/SaveTransactionWithOptionalFields.md +19 -0
  103. data/docs/SaveTransactionWrapper.md +8 -0
  104. data/docs/SaveTransactionsResponse.md +8 -0
  105. data/docs/SaveTransactionsResponseData.md +12 -0
  106. data/docs/SaveTransactionsWrapper.md +9 -0
  107. data/docs/ScheduledSubTransaction.md +15 -0
  108. data/docs/ScheduledTransactionDetail.md +23 -0
  109. data/docs/ScheduledTransactionDetailAllOf.md +11 -0
  110. data/docs/ScheduledTransactionResponse.md +8 -0
  111. data/docs/ScheduledTransactionResponseData.md +8 -0
  112. data/docs/ScheduledTransactionSummary.md +19 -0
  113. data/docs/ScheduledTransactionWrapper.md +8 -0
  114. data/docs/ScheduledTransactionsApi.md +49 -0
  115. data/docs/ScheduledTransactionsResponse.md +8 -0
  116. data/docs/ScheduledTransactionsResponseData.md +9 -0
  117. data/docs/ScheduledTransactionsWrapper.md +8 -0
  118. data/docs/SubTransaction.md +18 -0
  119. data/docs/TransactionDetail.md +29 -0
  120. data/docs/TransactionDetailAllOf.md +11 -0
  121. data/docs/TransactionResponse.md +8 -0
  122. data/docs/TransactionResponseData.md +8 -0
  123. data/docs/TransactionSummary.md +25 -0
  124. data/docs/TransactionWrapper.md +8 -0
  125. data/docs/TransactionsApi.md +228 -0
  126. data/docs/TransactionsImportResponse.md +8 -0
  127. data/docs/TransactionsImportResponseData.md +8 -0
  128. data/docs/TransactionsResponse.md +8 -0
  129. data/docs/TransactionsResponseData.md +9 -0
  130. data/docs/TransactionsWrapper.md +9 -0
  131. data/docs/UpdateTransaction.md +20 -0
  132. data/docs/UpdateTransactionsWrapper.md +8 -0
  133. data/docs/User.md +8 -0
  134. data/docs/UserApi.md +25 -0
  135. data/docs/UserResponse.md +8 -0
  136. data/docs/UserResponseData.md +8 -0
  137. data/docs/UserWrapper.md +8 -0
  138. data/examples/budget-list.rb +21 -0
  139. data/examples/budget-month.rb +33 -0
  140. data/examples/category-balance.rb +23 -0
  141. data/examples/create-multiple-transactions.rb +42 -0
  142. data/examples/create-transaction.rb +30 -0
  143. data/examples/update-category-budgeted.rb +25 -0
  144. data/examples/update-multiple-transactions.rb +20 -0
  145. data/lib/ynab/api/accounts_api.rb +78 -41
  146. data/lib/ynab/api/budgets_api.rb +68 -36
  147. data/lib/ynab/api/categories_api.rb +108 -60
  148. data/lib/ynab/api/deprecated_api.rb +32 -17
  149. data/lib/ynab/api/months_api.rb +49 -28
  150. data/lib/ynab/api/payee_locations_api.rb +73 -41
  151. data/lib/ynab/api/payees_api.rb +49 -28
  152. data/lib/ynab/api/scheduled_transactions_api.rb +49 -28
  153. data/lib/ynab/api/transactions_api.rb +268 -140
  154. data/lib/ynab/api/user_api.rb +22 -12
  155. data/lib/ynab/api_client.rb +97 -95
  156. data/lib/ynab/configuration.rb +101 -14
  157. data/lib/ynab/models/account.rb +117 -55
  158. data/lib/ynab/models/account_response.rb +53 -18
  159. data/lib/ynab/models/account_response_data.rb +53 -18
  160. data/lib/ynab/models/account_type.rb +30 -20
  161. data/lib/ynab/models/accounts_response.rb +53 -18
  162. data/lib/ynab/models/accounts_response_data.rb +54 -19
  163. data/lib/ynab/models/budget_detail.rb +80 -35
  164. data/lib/ynab/models/budget_detail_all_of.rb +320 -0
  165. data/lib/ynab/models/budget_detail_response.rb +53 -18
  166. data/lib/ynab/models/budget_detail_response_data.rb +54 -19
  167. data/lib/ynab/models/budget_settings.rb +56 -29
  168. data/lib/ynab/models/budget_settings_response.rb +53 -18
  169. data/lib/ynab/models/budget_settings_response_data.rb +53 -18
  170. data/lib/ynab/models/budget_summary.rb +63 -26
  171. data/lib/ynab/models/budget_summary_response.rb +53 -18
  172. data/lib/ynab/models/budget_summary_response_data.rb +54 -20
  173. data/lib/ynab/models/bulk_response.rb +53 -18
  174. data/lib/ynab/models/bulk_response_data.rb +53 -18
  175. data/lib/ynab/models/bulk_response_data_bulk.rb +54 -19
  176. data/lib/ynab/models/bulk_transactions.rb +53 -18
  177. data/lib/ynab/models/categories_response.rb +53 -18
  178. data/lib/ynab/models/categories_response_data.rb +54 -19
  179. data/lib/ynab/models/category.rb +110 -48
  180. data/lib/ynab/models/category_group.rb +58 -23
  181. data/lib/ynab/models/category_group_with_categories.rb +67 -24
  182. data/lib/ynab/models/{save_month_category_wrapper.rb → category_group_with_categories_all_of.rb} +67 -29
  183. data/lib/ynab/models/category_response.rb +53 -18
  184. data/lib/ynab/models/category_response_data.rb +53 -18
  185. data/lib/ynab/models/currency_format.rb +62 -27
  186. data/lib/ynab/models/date_format.rb +53 -18
  187. data/lib/ynab/models/error_detail.rb +55 -20
  188. data/lib/ynab/models/error_response.rb +53 -18
  189. data/lib/ynab/models/hybrid_transaction.rb +118 -46
  190. data/lib/ynab/models/hybrid_transaction_all_of.rb +304 -0
  191. data/lib/ynab/models/hybrid_transactions_response.rb +53 -18
  192. data/lib/ynab/models/hybrid_transactions_response_data.rb +54 -19
  193. data/lib/ynab/models/month_detail.rb +72 -27
  194. data/lib/ynab/models/{update_transactions_wrapper.rb → month_detail_all_of.rb} +66 -30
  195. data/lib/ynab/models/month_detail_response.rb +53 -18
  196. data/lib/ynab/models/month_detail_response_data.rb +53 -18
  197. data/lib/ynab/models/month_summaries_response.rb +53 -18
  198. data/lib/ynab/models/month_summaries_response_data.rb +54 -19
  199. data/lib/ynab/models/month_summary.rb +63 -26
  200. data/lib/ynab/models/patch_month_category_wrapper.rb +53 -18
  201. data/lib/ynab/models/patch_transactions_wrapper.rb +53 -18
  202. data/lib/ynab/models/payee.rb +58 -22
  203. data/lib/ynab/models/payee_location.rb +58 -23
  204. data/lib/ynab/models/payee_location_response.rb +53 -18
  205. data/lib/ynab/models/payee_location_response_data.rb +53 -18
  206. data/lib/ynab/models/payee_locations_response.rb +53 -18
  207. data/lib/ynab/models/payee_locations_response_data.rb +53 -18
  208. data/lib/ynab/models/payee_response.rb +53 -18
  209. data/lib/ynab/models/payee_response_data.rb +53 -18
  210. data/lib/ynab/models/payees_response.rb +53 -18
  211. data/lib/ynab/models/payees_response_data.rb +54 -19
  212. data/lib/ynab/models/post_account_wrapper.rb +53 -18
  213. data/lib/ynab/models/post_transactions_wrapper.rb +54 -19
  214. data/lib/ynab/models/put_transaction_wrapper.rb +53 -18
  215. data/lib/ynab/models/save_account.rb +77 -20
  216. data/lib/ynab/models/save_category_response.rb +53 -18
  217. data/lib/ynab/models/save_category_response_data.rb +54 -19
  218. data/lib/ynab/models/save_month_category.rb +53 -18
  219. data/lib/ynab/models/save_sub_transaction.rb +61 -22
  220. data/lib/ynab/models/save_transaction.rb +88 -33
  221. data/lib/ynab/models/save_transaction_with_id.rb +102 -46
  222. data/lib/ynab/models/{save_transactions_wrapper.rb → save_transaction_with_id_all_of.rb} +60 -36
  223. data/lib/ynab/models/save_transaction_with_optional_fields.rb +81 -33
  224. data/lib/ynab/models/save_transactions_response.rb +53 -18
  225. data/lib/ynab/models/save_transactions_response_data.rb +57 -23
  226. data/lib/ynab/models/scheduled_sub_transaction.rb +66 -27
  227. data/lib/ynab/models/scheduled_transaction_detail.rb +94 -36
  228. data/lib/ynab/models/scheduled_transaction_detail_all_of.rb +262 -0
  229. data/lib/ynab/models/scheduled_transaction_response.rb +53 -18
  230. data/lib/ynab/models/scheduled_transaction_response_data.rb +53 -18
  231. data/lib/ynab/models/scheduled_transaction_summary.rb +80 -32
  232. data/lib/ynab/models/scheduled_transactions_response.rb +53 -18
  233. data/lib/ynab/models/scheduled_transactions_response_data.rb +54 -19
  234. data/lib/ynab/models/sub_transaction.rb +71 -29
  235. data/lib/ynab/models/transaction_detail.rb +112 -44
  236. data/lib/ynab/models/{save_transaction_wrapper.rb → transaction_detail_all_of.rb} +102 -29
  237. data/lib/ynab/models/transaction_response.rb +53 -18
  238. data/lib/ynab/models/transaction_response_data.rb +53 -18
  239. data/lib/ynab/models/transaction_summary.rb +98 -40
  240. data/lib/ynab/models/transactions_import_response.rb +53 -18
  241. data/lib/ynab/models/transactions_import_response_data.rb +53 -18
  242. data/lib/ynab/models/transactions_response.rb +53 -18
  243. data/lib/ynab/models/transactions_response_data.rb +54 -19
  244. data/lib/ynab/models/user.rb +53 -18
  245. data/lib/ynab/models/user_response.rb +53 -18
  246. data/lib/ynab/models/user_response_data.rb +53 -18
  247. data/lib/ynab/version.rb +1 -1
  248. data/lib/ynab.rb +19 -14
  249. data/open_api_spec.yaml +3012 -0
  250. data/templates/api_client.mustache +274 -0
  251. data/templates/api_client_typhoeus_partial.mustache +156 -0
  252. data/templates/api_doc.mustache +44 -0
  253. data/templates/gem.mustache +84 -0
  254. data/templates/partial_model_generic_doc.mustache +9 -0
  255. data/ynab.gemspec +38 -0
  256. metadata +192 -85
  257. data/lib/ynab/models/loan_account_periodic_value.rb +0 -175
  258. data/lib/ynab/models/save_account_wrapper.rb +0 -189
  259. data/lib/ynab/models/update_transaction.rb +0 -407
  260. data/spec/models/transaction_detail_spec.rb +0 -11
@@ -3,39 +3,49 @@
3
3
 
4
4
  #Our API uses a REST based design, leverages the JSON data format, and relies upon HTTPS for transport. We respond with meaningful HTTP response codes and if an error occurs, we include error details in the response body. API Documentation is at https://api.ynab.com
5
5
 
6
- OpenAPI spec version: 1.0.0
6
+ The version of the OpenAPI document: 1.0.0
7
7
 
8
- Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.14
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 6.6.0
10
10
 
11
11
  =end
12
12
 
13
13
  require 'date'
14
+ require 'time'
14
15
 
15
16
  module YNAB
16
17
  class AccountType
17
-
18
- CHECKING = 'checking'.freeze
19
- SAVINGS = 'savings'.freeze
20
- CASH = 'cash'.freeze
21
- CREDIT_CARD = 'creditCard'.freeze
22
- LINE_OF_CREDIT = 'lineOfCredit'.freeze
23
- OTHER_ASSET = 'otherAsset'.freeze
24
- OTHER_LIABILITY = 'otherLiability'.freeze
25
- MORTGAGE = 'mortgage'.freeze
26
- AUTO_LOAN = 'autoLoan'.freeze
27
- STUDENT_LOAN = 'studentLoan'.freeze
28
- PERSONAL_LOAN = 'personalLoan'.freeze
29
- MEDICAL_DEBT = 'medicalDebt'.freeze
30
- OTHER_DEBT = 'otherDebt'.freeze
18
+ CHECKING = "checking".freeze
19
+ SAVINGS = "savings".freeze
20
+ CASH = "cash".freeze
21
+ CREDIT_CARD = "creditCard".freeze
22
+ LINE_OF_CREDIT = "lineOfCredit".freeze
23
+ OTHER_ASSET = "otherAsset".freeze
24
+ OTHER_LIABILITY = "otherLiability".freeze
25
+ MORTGAGE = "mortgage".freeze
26
+ AUTO_LOAN = "autoLoan".freeze
27
+ STUDENT_LOAN = "studentLoan".freeze
28
+ PERSONAL_LOAN = "personalLoan".freeze
29
+ MEDICAL_DEBT = "medicalDebt".freeze
30
+ OTHER_DEBT = "otherDebt".freeze
31
+
32
+ def self.all_vars
33
+ @all_vars ||= [CHECKING, SAVINGS, CASH, CREDIT_CARD, LINE_OF_CREDIT, OTHER_ASSET, OTHER_LIABILITY, MORTGAGE, AUTO_LOAN, STUDENT_LOAN, PERSONAL_LOAN, MEDICAL_DEBT, OTHER_DEBT].freeze
34
+ end
35
+
36
+ # Builds the enum from string
37
+ # @param [String] The enum value in the form of the string
38
+ # @return [String] The enum value
39
+ def self.build_from_hash(value)
40
+ new.build_from_hash(value)
41
+ end
31
42
 
32
43
  # Builds the enum from string
33
44
  # @param [String] The enum value in the form of the string
34
45
  # @return [String] The enum value
35
46
  def build_from_hash(value)
36
- constantValues = AccountType.constants.select { |c| AccountType::const_get(c) == value }
37
- raise "Invalid ENUM value #{value} for class #AccountType" if constantValues.empty?
38
- value
47
+ return value if AccountType.all_vars.include?(value)
48
+ raise "Invalid ENUM value #{value} for class #AccountType"
39
49
  end
40
50
  end
41
51
  end
@@ -3,14 +3,15 @@
3
3
 
4
4
  #Our API uses a REST based design, leverages the JSON data format, and relies upon HTTPS for transport. We respond with meaningful HTTP response codes and if an error occurs, we include error details in the response body. API Documentation is at https://api.ynab.com
5
5
 
6
- OpenAPI spec version: 1.0.0
6
+ The version of the OpenAPI document: 1.0.0
7
7
 
8
- Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.14
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 6.6.0
10
10
 
11
11
  =end
12
12
 
13
13
  require 'date'
14
+ require 'time'
14
15
 
15
16
  module YNAB
16
17
  class AccountsResponse
@@ -23,22 +24,40 @@ module YNAB
23
24
  }
24
25
  end
25
26
 
27
+ # Returns all the JSON keys this model knows about
28
+ def self.acceptable_attributes
29
+ attribute_map.values
30
+ end
31
+
26
32
  # Attribute type mapping.
27
- def self.swagger_types
33
+ def self.openapi_types
28
34
  {
29
35
  :'data' => :'AccountsResponseData'
30
36
  }
31
37
  end
32
38
 
39
+ # List of attributes with nullable: true
40
+ def self.openapi_nullable
41
+ Set.new([
42
+ ])
43
+ end
44
+
33
45
  # Initializes the object
34
46
  # @param [Hash] attributes Model attributes in the form of hash
35
47
  def initialize(attributes = {})
36
- return unless attributes.is_a?(Hash)
48
+ if (!attributes.is_a?(Hash))
49
+ fail ArgumentError, "The input argument (attributes) must be a hash in `YNAB::AccountsResponse` initialize method"
50
+ end
37
51
 
38
- # convert string to symbol for hash key
39
- attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
52
+ # check to see if the attribute exists and convert string to symbol for hash key
53
+ attributes = attributes.each_with_object({}) { |(k, v), h|
54
+ if (!self.class.attribute_map.key?(k.to_sym))
55
+ fail ArgumentError, "`#{k}` is not a valid attribute in `YNAB::AccountsResponse`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
56
+ end
57
+ h[k.to_sym] = v
58
+ }
40
59
 
41
- if attributes.has_key?(:'data')
60
+ if attributes.key?(:'data')
42
61
  self.data = attributes[:'data']
43
62
  end
44
63
  end
@@ -76,17 +95,28 @@ module YNAB
76
95
  end
77
96
 
78
97
  # Calculates hash code according to all attributes.
79
- # @return [Fixnum] Hash code
98
+ # @return [Integer] Hash code
80
99
  def hash
81
100
  [data].hash
82
101
  end
102
+
103
+ # Builds the object from hash
104
+ # @param [Hash] attributes Model attributes in the form of hash
105
+ # @return [Object] Returns the model itself
106
+ def self.build_from_hash(attributes)
107
+ new.build_from_hash(attributes)
108
+ end
109
+
83
110
  # Builds the object from hash
84
111
  # @param [Hash] attributes Model attributes in the form of hash
85
112
  # @return [Object] Returns the model itself
86
113
  def build_from_hash(attributes)
87
114
  return nil unless attributes.is_a?(Hash)
88
- self.class.swagger_types.each_pair do |key, type|
89
- if type =~ /\AArray<(.*)>/i
115
+ attributes = attributes.transform_keys(&:to_sym)
116
+ self.class.openapi_types.each_pair do |key, type|
117
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
118
+ self.send("#{key}=", nil)
119
+ elsif type =~ /\AArray<(.*)>/i
90
120
  # check to ensure the input is an array given that the attribute
91
121
  # is documented as an array but the input is not
92
122
  if attributes[self.class.attribute_map[key]].is_a?(Array)
@@ -94,7 +124,7 @@ module YNAB
94
124
  end
95
125
  elsif !attributes[self.class.attribute_map[key]].nil?
96
126
  self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
97
- end # or else data not found in attributes(hash), not an issue as the data can be optional
127
+ end
98
128
  end
99
129
 
100
130
  self
@@ -106,8 +136,8 @@ module YNAB
106
136
  # @return [Object] Deserialized data
107
137
  def _deserialize(type, value)
108
138
  case type.to_sym
109
- when :DateTime
110
- DateTime.parse(value)
139
+ when :Time
140
+ Time.parse(value)
111
141
  when :Date
112
142
  Date.parse(value)
113
143
  when :String
@@ -116,7 +146,7 @@ module YNAB
116
146
  value.to_i
117
147
  when :Float
118
148
  value.to_f
119
- when :BOOLEAN
149
+ when :Boolean
120
150
  if value.to_s =~ /\A(true|t|yes|y|1)\z/i
121
151
  true
122
152
  else
@@ -137,8 +167,9 @@ module YNAB
137
167
  end
138
168
  end
139
169
  else # model
140
- temp_model = YNAB.const_get(type).new
141
- temp_model.build_from_hash(value)
170
+ # models (e.g. Pet) or oneOf
171
+ klass = YNAB.const_get(type)
172
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
142
173
  end
143
174
  end
144
175
 
@@ -160,7 +191,11 @@ module YNAB
160
191
  hash = {}
161
192
  self.class.attribute_map.each_pair do |attr, param|
162
193
  value = self.send(attr)
163
- next if value.nil?
194
+ if value.nil?
195
+ is_nullable = self.class.openapi_nullable.include?(attr)
196
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
197
+ end
198
+
164
199
  hash[param] = _to_hash(value)
165
200
  end
166
201
  hash
@@ -3,14 +3,15 @@
3
3
 
4
4
  #Our API uses a REST based design, leverages the JSON data format, and relies upon HTTPS for transport. We respond with meaningful HTTP response codes and if an error occurs, we include error details in the response body. API Documentation is at https://api.ynab.com
5
5
 
6
- OpenAPI spec version: 1.0.0
6
+ The version of the OpenAPI document: 1.0.0
7
7
 
8
- Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.14
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 6.6.0
10
10
 
11
11
  =end
12
12
 
13
13
  require 'date'
14
+ require 'time'
14
15
 
15
16
  module YNAB
16
17
  class AccountsResponseData
@@ -27,29 +28,47 @@ module YNAB
27
28
  }
28
29
  end
29
30
 
31
+ # Returns all the JSON keys this model knows about
32
+ def self.acceptable_attributes
33
+ attribute_map.values
34
+ end
35
+
30
36
  # Attribute type mapping.
31
- def self.swagger_types
37
+ def self.openapi_types
32
38
  {
33
39
  :'accounts' => :'Array<Account>',
34
40
  :'server_knowledge' => :'Integer'
35
41
  }
36
42
  end
37
43
 
44
+ # List of attributes with nullable: true
45
+ def self.openapi_nullable
46
+ Set.new([
47
+ ])
48
+ end
49
+
38
50
  # Initializes the object
39
51
  # @param [Hash] attributes Model attributes in the form of hash
40
52
  def initialize(attributes = {})
41
- return unless attributes.is_a?(Hash)
53
+ if (!attributes.is_a?(Hash))
54
+ fail ArgumentError, "The input argument (attributes) must be a hash in `YNAB::AccountsResponseData` initialize method"
55
+ end
42
56
 
43
- # convert string to symbol for hash key
44
- attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
57
+ # check to see if the attribute exists and convert string to symbol for hash key
58
+ attributes = attributes.each_with_object({}) { |(k, v), h|
59
+ if (!self.class.attribute_map.key?(k.to_sym))
60
+ fail ArgumentError, "`#{k}` is not a valid attribute in `YNAB::AccountsResponseData`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
61
+ end
62
+ h[k.to_sym] = v
63
+ }
45
64
 
46
- if attributes.has_key?(:'accounts')
65
+ if attributes.key?(:'accounts')
47
66
  if (value = attributes[:'accounts']).is_a?(Array)
48
67
  self.accounts = value
49
68
  end
50
69
  end
51
70
 
52
- if attributes.has_key?(:'server_knowledge')
71
+ if attributes.key?(:'server_knowledge')
53
72
  self.server_knowledge = attributes[:'server_knowledge']
54
73
  end
55
74
  end
@@ -93,17 +112,28 @@ module YNAB
93
112
  end
94
113
 
95
114
  # Calculates hash code according to all attributes.
96
- # @return [Fixnum] Hash code
115
+ # @return [Integer] Hash code
97
116
  def hash
98
117
  [accounts, server_knowledge].hash
99
118
  end
119
+
120
+ # Builds the object from hash
121
+ # @param [Hash] attributes Model attributes in the form of hash
122
+ # @return [Object] Returns the model itself
123
+ def self.build_from_hash(attributes)
124
+ new.build_from_hash(attributes)
125
+ end
126
+
100
127
  # Builds the object from hash
101
128
  # @param [Hash] attributes Model attributes in the form of hash
102
129
  # @return [Object] Returns the model itself
103
130
  def build_from_hash(attributes)
104
131
  return nil unless attributes.is_a?(Hash)
105
- self.class.swagger_types.each_pair do |key, type|
106
- if type =~ /\AArray<(.*)>/i
132
+ attributes = attributes.transform_keys(&:to_sym)
133
+ self.class.openapi_types.each_pair do |key, type|
134
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
135
+ self.send("#{key}=", nil)
136
+ elsif type =~ /\AArray<(.*)>/i
107
137
  # check to ensure the input is an array given that the attribute
108
138
  # is documented as an array but the input is not
109
139
  if attributes[self.class.attribute_map[key]].is_a?(Array)
@@ -111,7 +141,7 @@ module YNAB
111
141
  end
112
142
  elsif !attributes[self.class.attribute_map[key]].nil?
113
143
  self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
114
- end # or else data not found in attributes(hash), not an issue as the data can be optional
144
+ end
115
145
  end
116
146
 
117
147
  self
@@ -123,8 +153,8 @@ module YNAB
123
153
  # @return [Object] Deserialized data
124
154
  def _deserialize(type, value)
125
155
  case type.to_sym
126
- when :DateTime
127
- DateTime.parse(value)
156
+ when :Time
157
+ Time.parse(value)
128
158
  when :Date
129
159
  Date.parse(value)
130
160
  when :String
@@ -133,7 +163,7 @@ module YNAB
133
163
  value.to_i
134
164
  when :Float
135
165
  value.to_f
136
- when :BOOLEAN
166
+ when :Boolean
137
167
  if value.to_s =~ /\A(true|t|yes|y|1)\z/i
138
168
  true
139
169
  else
@@ -154,8 +184,9 @@ module YNAB
154
184
  end
155
185
  end
156
186
  else # model
157
- temp_model = YNAB.const_get(type).new
158
- temp_model.build_from_hash(value)
187
+ # models (e.g. Pet) or oneOf
188
+ klass = YNAB.const_get(type)
189
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
159
190
  end
160
191
  end
161
192
 
@@ -177,7 +208,11 @@ module YNAB
177
208
  hash = {}
178
209
  self.class.attribute_map.each_pair do |attr, param|
179
210
  value = self.send(attr)
180
- next if value.nil?
211
+ if value.nil?
212
+ is_nullable = self.class.openapi_nullable.include?(attr)
213
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
214
+ end
215
+
181
216
  hash[param] = _to_hash(value)
182
217
  end
183
218
  hash
@@ -3,14 +3,15 @@
3
3
 
4
4
  #Our API uses a REST based design, leverages the JSON data format, and relies upon HTTPS for transport. We respond with meaningful HTTP response codes and if an error occurs, we include error details in the response body. API Documentation is at https://api.ynab.com
5
5
 
6
- OpenAPI spec version: 1.0.0
6
+ The version of the OpenAPI document: 1.0.0
7
7
 
8
- Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.14
8
+ Generated by: https://openapi-generator.tech
9
+ OpenAPI Generator version: 6.6.0
10
10
 
11
11
  =end
12
12
 
13
13
  require 'date'
14
+ require 'time'
14
15
 
15
16
  module YNAB
16
17
  class BudgetDetail
@@ -74,12 +75,17 @@ module YNAB
74
75
  }
75
76
  end
76
77
 
78
+ # Returns all the JSON keys this model knows about
79
+ def self.acceptable_attributes
80
+ attribute_map.values
81
+ end
82
+
77
83
  # Attribute type mapping.
78
- def self.swagger_types
84
+ def self.openapi_types
79
85
  {
80
86
  :'id' => :'String',
81
87
  :'name' => :'String',
82
- :'last_modified_on' => :'DateTime',
88
+ :'last_modified_on' => :'Time',
83
89
  :'first_month' => :'Date',
84
90
  :'last_month' => :'Date',
85
91
  :'date_format' => :'DateFormat',
@@ -97,97 +103,120 @@ module YNAB
97
103
  }
98
104
  end
99
105
 
106
+ # List of attributes with nullable: true
107
+ def self.openapi_nullable
108
+ Set.new([
109
+ :'date_format',
110
+ :'currency_format',
111
+ ])
112
+ end
113
+
114
+ # List of class defined in allOf (OpenAPI v3)
115
+ def self.openapi_all_of
116
+ [
117
+ :'BudgetDetailAllOf',
118
+ :'BudgetSummary'
119
+ ]
120
+ end
121
+
100
122
  # Initializes the object
101
123
  # @param [Hash] attributes Model attributes in the form of hash
102
124
  def initialize(attributes = {})
103
- return unless attributes.is_a?(Hash)
125
+ if (!attributes.is_a?(Hash))
126
+ fail ArgumentError, "The input argument (attributes) must be a hash in `YNAB::BudgetDetail` initialize method"
127
+ end
104
128
 
105
- # convert string to symbol for hash key
106
- attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
129
+ # check to see if the attribute exists and convert string to symbol for hash key
130
+ attributes = attributes.each_with_object({}) { |(k, v), h|
131
+ if (!self.class.attribute_map.key?(k.to_sym))
132
+ fail ArgumentError, "`#{k}` is not a valid attribute in `YNAB::BudgetDetail`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
133
+ end
134
+ h[k.to_sym] = v
135
+ }
107
136
 
108
- if attributes.has_key?(:'id')
137
+ if attributes.key?(:'id')
109
138
  self.id = attributes[:'id']
110
139
  end
111
140
 
112
- if attributes.has_key?(:'name')
141
+ if attributes.key?(:'name')
113
142
  self.name = attributes[:'name']
114
143
  end
115
144
 
116
- if attributes.has_key?(:'last_modified_on')
145
+ if attributes.key?(:'last_modified_on')
117
146
  self.last_modified_on = attributes[:'last_modified_on']
118
147
  end
119
148
 
120
- if attributes.has_key?(:'first_month')
149
+ if attributes.key?(:'first_month')
121
150
  self.first_month = attributes[:'first_month']
122
151
  end
123
152
 
124
- if attributes.has_key?(:'last_month')
153
+ if attributes.key?(:'last_month')
125
154
  self.last_month = attributes[:'last_month']
126
155
  end
127
156
 
128
- if attributes.has_key?(:'date_format')
157
+ if attributes.key?(:'date_format')
129
158
  self.date_format = attributes[:'date_format']
130
159
  end
131
160
 
132
- if attributes.has_key?(:'currency_format')
161
+ if attributes.key?(:'currency_format')
133
162
  self.currency_format = attributes[:'currency_format']
134
163
  end
135
164
 
136
- if attributes.has_key?(:'accounts')
165
+ if attributes.key?(:'accounts')
137
166
  if (value = attributes[:'accounts']).is_a?(Array)
138
167
  self.accounts = value
139
168
  end
140
169
  end
141
170
 
142
- if attributes.has_key?(:'payees')
171
+ if attributes.key?(:'payees')
143
172
  if (value = attributes[:'payees']).is_a?(Array)
144
173
  self.payees = value
145
174
  end
146
175
  end
147
176
 
148
- if attributes.has_key?(:'payee_locations')
177
+ if attributes.key?(:'payee_locations')
149
178
  if (value = attributes[:'payee_locations']).is_a?(Array)
150
179
  self.payee_locations = value
151
180
  end
152
181
  end
153
182
 
154
- if attributes.has_key?(:'category_groups')
183
+ if attributes.key?(:'category_groups')
155
184
  if (value = attributes[:'category_groups']).is_a?(Array)
156
185
  self.category_groups = value
157
186
  end
158
187
  end
159
188
 
160
- if attributes.has_key?(:'categories')
189
+ if attributes.key?(:'categories')
161
190
  if (value = attributes[:'categories']).is_a?(Array)
162
191
  self.categories = value
163
192
  end
164
193
  end
165
194
 
166
- if attributes.has_key?(:'months')
195
+ if attributes.key?(:'months')
167
196
  if (value = attributes[:'months']).is_a?(Array)
168
197
  self.months = value
169
198
  end
170
199
  end
171
200
 
172
- if attributes.has_key?(:'transactions')
201
+ if attributes.key?(:'transactions')
173
202
  if (value = attributes[:'transactions']).is_a?(Array)
174
203
  self.transactions = value
175
204
  end
176
205
  end
177
206
 
178
- if attributes.has_key?(:'subtransactions')
207
+ if attributes.key?(:'subtransactions')
179
208
  if (value = attributes[:'subtransactions']).is_a?(Array)
180
209
  self.subtransactions = value
181
210
  end
182
211
  end
183
212
 
184
- if attributes.has_key?(:'scheduled_transactions')
213
+ if attributes.key?(:'scheduled_transactions')
185
214
  if (value = attributes[:'scheduled_transactions']).is_a?(Array)
186
215
  self.scheduled_transactions = value
187
216
  end
188
217
  end
189
218
 
190
- if attributes.has_key?(:'scheduled_subtransactions')
219
+ if attributes.key?(:'scheduled_subtransactions')
191
220
  if (value = attributes[:'scheduled_subtransactions']).is_a?(Array)
192
221
  self.scheduled_subtransactions = value
193
222
  end
@@ -248,17 +277,28 @@ module YNAB
248
277
  end
249
278
 
250
279
  # Calculates hash code according to all attributes.
251
- # @return [Fixnum] Hash code
280
+ # @return [Integer] Hash code
252
281
  def hash
253
282
  [id, name, last_modified_on, first_month, last_month, date_format, currency_format, accounts, payees, payee_locations, category_groups, categories, months, transactions, subtransactions, scheduled_transactions, scheduled_subtransactions].hash
254
283
  end
284
+
285
+ # Builds the object from hash
286
+ # @param [Hash] attributes Model attributes in the form of hash
287
+ # @return [Object] Returns the model itself
288
+ def self.build_from_hash(attributes)
289
+ new.build_from_hash(attributes)
290
+ end
291
+
255
292
  # Builds the object from hash
256
293
  # @param [Hash] attributes Model attributes in the form of hash
257
294
  # @return [Object] Returns the model itself
258
295
  def build_from_hash(attributes)
259
296
  return nil unless attributes.is_a?(Hash)
260
- self.class.swagger_types.each_pair do |key, type|
261
- if type =~ /\AArray<(.*)>/i
297
+ attributes = attributes.transform_keys(&:to_sym)
298
+ self.class.openapi_types.each_pair do |key, type|
299
+ if attributes[self.class.attribute_map[key]].nil? && self.class.openapi_nullable.include?(key)
300
+ self.send("#{key}=", nil)
301
+ elsif type =~ /\AArray<(.*)>/i
262
302
  # check to ensure the input is an array given that the attribute
263
303
  # is documented as an array but the input is not
264
304
  if attributes[self.class.attribute_map[key]].is_a?(Array)
@@ -266,7 +306,7 @@ module YNAB
266
306
  end
267
307
  elsif !attributes[self.class.attribute_map[key]].nil?
268
308
  self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
269
- end # or else data not found in attributes(hash), not an issue as the data can be optional
309
+ end
270
310
  end
271
311
 
272
312
  self
@@ -278,8 +318,8 @@ module YNAB
278
318
  # @return [Object] Deserialized data
279
319
  def _deserialize(type, value)
280
320
  case type.to_sym
281
- when :DateTime
282
- DateTime.parse(value)
321
+ when :Time
322
+ Time.parse(value)
283
323
  when :Date
284
324
  Date.parse(value)
285
325
  when :String
@@ -288,7 +328,7 @@ module YNAB
288
328
  value.to_i
289
329
  when :Float
290
330
  value.to_f
291
- when :BOOLEAN
331
+ when :Boolean
292
332
  if value.to_s =~ /\A(true|t|yes|y|1)\z/i
293
333
  true
294
334
  else
@@ -309,8 +349,9 @@ module YNAB
309
349
  end
310
350
  end
311
351
  else # model
312
- temp_model = YNAB.const_get(type).new
313
- temp_model.build_from_hash(value)
352
+ # models (e.g. Pet) or oneOf
353
+ klass = YNAB.const_get(type)
354
+ klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
314
355
  end
315
356
  end
316
357
 
@@ -332,7 +373,11 @@ module YNAB
332
373
  hash = {}
333
374
  self.class.attribute_map.each_pair do |attr, param|
334
375
  value = self.send(attr)
335
- next if value.nil?
376
+ if value.nil?
377
+ is_nullable = self.class.openapi_nullable.include?(attr)
378
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
379
+ end
380
+
336
381
  hash[param] = _to_hash(value)
337
382
  end
338
383
  hash