fortnox-api 0.9.1 → 1.0.0.rc1

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 (340) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +78 -92
  3. data/{LICENSE.txt → LICENSE.md} +0 -0
  4. data/README.md +234 -253
  5. data/bin/fortnox-setup +195 -0
  6. data/bin/fortnox-update-env +38 -0
  7. data/fortnox.gemspec +29 -0
  8. data/lib/fortnox/auth/thread_local.rb +28 -0
  9. data/lib/fortnox/collection.rb +23 -0
  10. data/lib/fortnox/mappers/country_code.rb +34 -0
  11. data/lib/fortnox/mappers/date.rb +21 -0
  12. data/lib/fortnox/mappers/document_row.rb +12 -0
  13. data/lib/fortnox/mappers/edi_information.rb +15 -0
  14. data/lib/fortnox/mappers/email_information.rb +11 -0
  15. data/lib/fortnox/mappers/invoice_row.rb +14 -0
  16. data/lib/fortnox/mappers/label_references.rb +24 -0
  17. data/lib/fortnox/mappers/order_row.rb +9 -0
  18. data/lib/fortnox/mappers/struct.rb +71 -0
  19. data/lib/fortnox/mappers/struct_array.rb +31 -0
  20. data/lib/fortnox/resource.rb +121 -0
  21. data/lib/fortnox/resources/article.rb +159 -0
  22. data/lib/fortnox/resources/customer.rb +208 -0
  23. data/lib/fortnox/resources/document.rb +202 -0
  24. data/lib/fortnox/resources/invoice.rb +91 -0
  25. data/lib/fortnox/resources/label.rb +14 -0
  26. data/lib/fortnox/resources/order.rb +37 -0
  27. data/lib/fortnox/resources/project.rb +40 -0
  28. data/lib/fortnox/resources/terms_of_payment.rb +22 -0
  29. data/lib/fortnox/resources/unit.rb +25 -0
  30. data/lib/fortnox/struct.rb +24 -0
  31. data/lib/fortnox/structs/default_delivery_types.rb +16 -0
  32. data/lib/fortnox/structs/default_templates.rb +19 -0
  33. data/lib/fortnox/structs/document_row.rb +62 -0
  34. data/lib/fortnox/structs/edi_information.rb +25 -0
  35. data/lib/fortnox/structs/email_information.rb +22 -0
  36. data/lib/fortnox/structs/invoice_row.rb +13 -0
  37. data/lib/fortnox/structs/order_row.rb +10 -0
  38. data/lib/fortnox/types.rb +129 -0
  39. data/lib/fortnox/{api/version.rb → version.rb} +1 -3
  40. data/lib/fortnox.rb +102 -0
  41. metadata +55 -575
  42. data/.codeclimate.yml +0 -20
  43. data/.env.template +0 -7
  44. data/.env.test +0 -11
  45. data/.gitignore +0 -20
  46. data/.rspec +0 -2
  47. data/.rubocop.yml +0 -41
  48. data/.tool-versions +0 -1
  49. data/.travis.yml +0 -32
  50. data/CONTRIBUTE.md +0 -38
  51. data/DEVELOPER_README.md +0 -69
  52. data/Gemfile +0 -6
  53. data/Guardfile +0 -16
  54. data/Rakefile +0 -140
  55. data/bin/console +0 -22
  56. data/bin/get_tokens +0 -79
  57. data/bin/renew_tokens +0 -28
  58. data/fortnox-api.gemspec +0 -50
  59. data/lib/fortnox/api/mappers/article.rb +0 -23
  60. data/lib/fortnox/api/mappers/base/canonical_name_sym.rb +0 -21
  61. data/lib/fortnox/api/mappers/base/from_json.rb +0 -91
  62. data/lib/fortnox/api/mappers/base/to_json.rb +0 -66
  63. data/lib/fortnox/api/mappers/base.rb +0 -30
  64. data/lib/fortnox/api/mappers/customer.rb +0 -27
  65. data/lib/fortnox/api/mappers/default_delivery_types.rb +0 -15
  66. data/lib/fortnox/api/mappers/default_templates.rb +0 -16
  67. data/lib/fortnox/api/mappers/edi_information.rb +0 -23
  68. data/lib/fortnox/api/mappers/email_information.rb +0 -19
  69. data/lib/fortnox/api/mappers/invoice.rb +0 -29
  70. data/lib/fortnox/api/mappers/invoice_row.rb +0 -25
  71. data/lib/fortnox/api/mappers/order.rb +0 -26
  72. data/lib/fortnox/api/mappers/order_row.rb +0 -23
  73. data/lib/fortnox/api/mappers/project.rb +0 -17
  74. data/lib/fortnox/api/mappers/terms_of_payment.rb +0 -17
  75. data/lib/fortnox/api/mappers/unit.rb +0 -17
  76. data/lib/fortnox/api/mappers/value/array.rb +0 -18
  77. data/lib/fortnox/api/mappers/value/country_string.rb +0 -24
  78. data/lib/fortnox/api/mappers/value/date.rb +0 -11
  79. data/lib/fortnox/api/mappers/value/hash.rb +0 -16
  80. data/lib/fortnox/api/mappers/value/identity.rb +0 -18
  81. data/lib/fortnox/api/mappers.rb +0 -21
  82. data/lib/fortnox/api/models/article.rb +0 -134
  83. data/lib/fortnox/api/models/base.rb +0 -128
  84. data/lib/fortnox/api/models/customer.rb +0 -210
  85. data/lib/fortnox/api/models/document.rb +0 -189
  86. data/lib/fortnox/api/models/invoice.rb +0 -87
  87. data/lib/fortnox/api/models/label.rb +0 -19
  88. data/lib/fortnox/api/models/order.rb +0 -27
  89. data/lib/fortnox/api/models/project.rb +0 -42
  90. data/lib/fortnox/api/models/terms_of_payment.rb +0 -28
  91. data/lib/fortnox/api/models/unit.rb +0 -24
  92. data/lib/fortnox/api/models.rb +0 -9
  93. data/lib/fortnox/api/repositories/article.rb +0 -17
  94. data/lib/fortnox/api/repositories/authentication.rb +0 -61
  95. data/lib/fortnox/api/repositories/base/loaders.rb +0 -64
  96. data/lib/fortnox/api/repositories/base/savers.rb +0 -57
  97. data/lib/fortnox/api/repositories/base.rb +0 -93
  98. data/lib/fortnox/api/repositories/customer.rb +0 -17
  99. data/lib/fortnox/api/repositories/invoice.rb +0 -17
  100. data/lib/fortnox/api/repositories/order.rb +0 -17
  101. data/lib/fortnox/api/repositories/project.rb +0 -17
  102. data/lib/fortnox/api/repositories/terms_of_payment.rb +0 -17
  103. data/lib/fortnox/api/repositories/unit.rb +0 -17
  104. data/lib/fortnox/api/repositories.rb +0 -10
  105. data/lib/fortnox/api/request_handling.rb +0 -46
  106. data/lib/fortnox/api/types/default_delivery_types.rb +0 -20
  107. data/lib/fortnox/api/types/default_templates.rb +0 -23
  108. data/lib/fortnox/api/types/defaulted.rb +0 -11
  109. data/lib/fortnox/api/types/document_row.rb +0 -64
  110. data/lib/fortnox/api/types/edi_information.rb +0 -29
  111. data/lib/fortnox/api/types/email_information.rb +0 -26
  112. data/lib/fortnox/api/types/enums.rb +0 -116
  113. data/lib/fortnox/api/types/invoice_row.rb +0 -19
  114. data/lib/fortnox/api/types/model.rb +0 -37
  115. data/lib/fortnox/api/types/nullable.rb +0 -25
  116. data/lib/fortnox/api/types/order_row.rb +0 -16
  117. data/lib/fortnox/api/types/required.rb +0 -13
  118. data/lib/fortnox/api/types/shim/country_string.rb +0 -10
  119. data/lib/fortnox/api/types/sized.rb +0 -33
  120. data/lib/fortnox/api/types.rb +0 -144
  121. data/lib/fortnox/api.rb +0 -62
  122. data/spec/fortnox/api/mappers/article_spec.rb +0 -17
  123. data/spec/fortnox/api/mappers/base/canonical_name_sym_spec.rb +0 -36
  124. data/spec/fortnox/api/mappers/base/from_json_spec.rb +0 -70
  125. data/spec/fortnox/api/mappers/base/to_json_spec.rb +0 -68
  126. data/spec/fortnox/api/mappers/base_spec.rb +0 -154
  127. data/spec/fortnox/api/mappers/contexts/json_conversion.rb +0 -62
  128. data/spec/fortnox/api/mappers/customer_spec.rb +0 -27
  129. data/spec/fortnox/api/mappers/default_delivery_types_spec.rb +0 -14
  130. data/spec/fortnox/api/mappers/edi_information_spec.rb +0 -23
  131. data/spec/fortnox/api/mappers/email_information_spec.rb +0 -19
  132. data/spec/fortnox/api/mappers/examples/mapper.rb +0 -34
  133. data/spec/fortnox/api/mappers/invoice_row_spec.rb +0 -24
  134. data/spec/fortnox/api/mappers/invoice_spec.rb +0 -27
  135. data/spec/fortnox/api/mappers/order_row_spec.rb +0 -21
  136. data/spec/fortnox/api/mappers/order_spec.rb +0 -23
  137. data/spec/fortnox/api/mappers/project_spec.rb +0 -12
  138. data/spec/fortnox/api/mappers/terms_of_payment_spec.rb +0 -16
  139. data/spec/fortnox/api/mappers/unit_spec.rb +0 -56
  140. data/spec/fortnox/api/models/article_spec.rb +0 -9
  141. data/spec/fortnox/api/models/base_spec.rb +0 -117
  142. data/spec/fortnox/api/models/customer_spec.rb +0 -9
  143. data/spec/fortnox/api/models/examples/document_base.rb +0 -15
  144. data/spec/fortnox/api/models/examples/model.rb +0 -22
  145. data/spec/fortnox/api/models/invoice_spec.rb +0 -11
  146. data/spec/fortnox/api/models/order_spec.rb +0 -12
  147. data/spec/fortnox/api/models/project_spec.rb +0 -9
  148. data/spec/fortnox/api/models/terms_of_payment_spec.rb +0 -9
  149. data/spec/fortnox/api/models/unit_spec.rb +0 -33
  150. data/spec/fortnox/api/repositories/article_spec.rb +0 -80
  151. data/spec/fortnox/api/repositories/authentication_spec.rb +0 -103
  152. data/spec/fortnox/api/repositories/base_spec.rb +0 -168
  153. data/spec/fortnox/api/repositories/customer_spec.rb +0 -100
  154. data/spec/fortnox/api/repositories/examples/all.rb +0 -17
  155. data/spec/fortnox/api/repositories/examples/find.rb +0 -84
  156. data/spec/fortnox/api/repositories/examples/only.rb +0 -34
  157. data/spec/fortnox/api/repositories/examples/save.rb +0 -76
  158. data/spec/fortnox/api/repositories/examples/save_with_nested_model.rb +0 -28
  159. data/spec/fortnox/api/repositories/examples/save_with_specially_named_attribute.rb +0 -26
  160. data/spec/fortnox/api/repositories/examples/search.rb +0 -39
  161. data/spec/fortnox/api/repositories/invoice_spec.rb +0 -297
  162. data/spec/fortnox/api/repositories/order_spec.rb +0 -53
  163. data/spec/fortnox/api/repositories/project_spec.rb +0 -36
  164. data/spec/fortnox/api/repositories/terms_of_payment_spec.rb +0 -34
  165. data/spec/fortnox/api/repositories/unit_spec.rb +0 -39
  166. data/spec/fortnox/api/types/account_number_spec.rb +0 -35
  167. data/spec/fortnox/api/types/country_code_spec.rb +0 -42
  168. data/spec/fortnox/api/types/country_spec.rb +0 -67
  169. data/spec/fortnox/api/types/default_delivery_types_spec.rb +0 -12
  170. data/spec/fortnox/api/types/edi_information_spec.rb +0 -15
  171. data/spec/fortnox/api/types/email_information_spec.rb +0 -15
  172. data/spec/fortnox/api/types/email_spec.rb +0 -43
  173. data/spec/fortnox/api/types/enums_spec.rb +0 -17
  174. data/spec/fortnox/api/types/examples/document_row.rb +0 -25
  175. data/spec/fortnox/api/types/examples/enum.rb +0 -55
  176. data/spec/fortnox/api/types/examples/types.rb +0 -11
  177. data/spec/fortnox/api/types/housework_types_spec.rb +0 -149
  178. data/spec/fortnox/api/types/invoice_row_spec.rb +0 -11
  179. data/spec/fortnox/api/types/model_spec.rb +0 -69
  180. data/spec/fortnox/api/types/nullable_spec.rb +0 -79
  181. data/spec/fortnox/api/types/order_row_spec.rb +0 -15
  182. data/spec/fortnox/api/types/required_spec.rb +0 -36
  183. data/spec/fortnox/api/types/sales_account_spec.rb +0 -57
  184. data/spec/fortnox/api/types/sized_spec.rb +0 -76
  185. data/spec/fortnox/api_spec.rb +0 -66
  186. data/spec/spec_helper.rb +0 -35
  187. data/spec/support/helpers/configuration_helper.rb +0 -39
  188. data/spec/support/helpers/repository_helper.rb +0 -10
  189. data/spec/support/helpers.rb +0 -3
  190. data/spec/support/matchers/type/attribute_matcher.rb +0 -40
  191. data/spec/support/matchers/type/enum_matcher.rb +0 -23
  192. data/spec/support/matchers/type/have_account_number_matcher.rb +0 -23
  193. data/spec/support/matchers/type/have_currency_matcher.rb +0 -9
  194. data/spec/support/matchers/type/have_customer_type_matcher.rb +0 -15
  195. data/spec/support/matchers/type/have_default_delivery_type_matcher.rb +0 -9
  196. data/spec/support/matchers/type/have_discount_type_matcher.rb +0 -9
  197. data/spec/support/matchers/type/have_email_matcher.rb +0 -24
  198. data/spec/support/matchers/type/have_housework_type_matcher.rb +0 -9
  199. data/spec/support/matchers/type/have_nullable_date_matcher.rb +0 -60
  200. data/spec/support/matchers/type/have_nullable_matcher.rb +0 -54
  201. data/spec/support/matchers/type/have_nullable_string_matcher.rb +0 -47
  202. data/spec/support/matchers/type/have_sized_float_matcher.rb +0 -10
  203. data/spec/support/matchers/type/have_sized_integer_matcher.rb +0 -10
  204. data/spec/support/matchers/type/have_sized_string_matcher.rb +0 -36
  205. data/spec/support/matchers/type/have_vat_type_matcher.rb +0 -9
  206. data/spec/support/matchers/type/numeric_matcher.rb +0 -52
  207. data/spec/support/matchers/type/require_attribute_matcher.rb +0 -68
  208. data/spec/support/matchers/type/type_matcher.rb +0 -40
  209. data/spec/support/matchers/type.rb +0 -19
  210. data/spec/support/matchers.rb +0 -3
  211. data/spec/support/vcr_setup.rb +0 -24
  212. data/spec/vcr_cassettes/articles/all.yml +0 -67
  213. data/spec/vcr_cassettes/articles/find_by_hash_failure.yml +0 -62
  214. data/spec/vcr_cassettes/articles/find_failure.yml +0 -62
  215. data/spec/vcr_cassettes/articles/find_id_1.yml +0 -63
  216. data/spec/vcr_cassettes/articles/find_new.yml +0 -63
  217. data/spec/vcr_cassettes/articles/limits/quantity_in_stock_min_value.yml +0 -63
  218. data/spec/vcr_cassettes/articles/limits/quantity_in_stock_rounding_positive_value.yml +0 -63
  219. data/spec/vcr_cassettes/articles/multi_param_find_by_hash.yml +0 -62
  220. data/spec/vcr_cassettes/articles/save_new.yml +0 -63
  221. data/spec/vcr_cassettes/articles/save_old.yml +0 -63
  222. data/spec/vcr_cassettes/articles/save_with_specially_named_attribute.yml +0 -63
  223. data/spec/vcr_cassettes/articles/search_by_name.yml +0 -65
  224. data/spec/vcr_cassettes/articles/search_miss.yml +0 -62
  225. data/spec/vcr_cassettes/articles/search_with_special_char.yml +0 -62
  226. data/spec/vcr_cassettes/articles/single_param_find_by_hash.yml +0 -62
  227. data/spec/vcr_cassettes/authentication/expired_token.yml +0 -54
  228. data/spec/vcr_cassettes/authentication/invalid_authorization.yml +0 -57
  229. data/spec/vcr_cassettes/authentication/invalid_refresh_token.yml +0 -58
  230. data/spec/vcr_cassettes/authentication/valid_request.yml +0 -63
  231. data/spec/vcr_cassettes/customers/all.yml +0 -69
  232. data/spec/vcr_cassettes/customers/find_by_hash_failure.yml +0 -62
  233. data/spec/vcr_cassettes/customers/find_failure.yml +0 -62
  234. data/spec/vcr_cassettes/customers/find_id_1.yml +0 -64
  235. data/spec/vcr_cassettes/customers/find_new.yml +0 -63
  236. data/spec/vcr_cassettes/customers/find_with_sales_account.yml +0 -63
  237. data/spec/vcr_cassettes/customers/multi_param_find_by_hash.yml +0 -63
  238. data/spec/vcr_cassettes/customers/save_new.yml +0 -63
  239. data/spec/vcr_cassettes/customers/save_new_with_country_code_SE.yml +0 -64
  240. data/spec/vcr_cassettes/customers/save_new_with_sales_account.yml +0 -63
  241. data/spec/vcr_cassettes/customers/save_old.yml +0 -63
  242. data/spec/vcr_cassettes/customers/save_with_specially_named_attribute.yml +0 -63
  243. data/spec/vcr_cassettes/customers/search_by_name.yml +0 -64
  244. data/spec/vcr_cassettes/customers/search_miss.yml +0 -62
  245. data/spec/vcr_cassettes/customers/search_with_special_char.yml +0 -62
  246. data/spec/vcr_cassettes/customers/single_param_find_by_hash.yml +0 -64
  247. data/spec/vcr_cassettes/invoices/all.yml +0 -96
  248. data/spec/vcr_cassettes/invoices/filter_hit.yml +0 -64
  249. data/spec/vcr_cassettes/invoices/filter_invalid.yml +0 -60
  250. data/spec/vcr_cassettes/invoices/find_by_hash_failure.yml +0 -62
  251. data/spec/vcr_cassettes/invoices/find_failure.yml +0 -62
  252. data/spec/vcr_cassettes/invoices/find_id_1.yml +0 -65
  253. data/spec/vcr_cassettes/invoices/find_new.yml +0 -65
  254. data/spec/vcr_cassettes/invoices/multi_param_find_by_hash.yml +0 -63
  255. data/spec/vcr_cassettes/invoices/row_delivered_quantity_decimals.yml +0 -65
  256. data/spec/vcr_cassettes/invoices/row_delivered_quantity_decimals_round_up.yml +0 -65
  257. data/spec/vcr_cassettes/invoices/row_description_limit.yml +0 -65
  258. data/spec/vcr_cassettes/invoices/row_price_limit.yml +0 -65
  259. data/spec/vcr_cassettes/invoices/row_price_limit_round_up.yml +0 -65
  260. data/spec/vcr_cassettes/invoices/save_new.yml +0 -65
  261. data/spec/vcr_cassettes/invoices/save_new_with_comments.yml +0 -65
  262. data/spec/vcr_cassettes/invoices/save_new_with_country.yml +0 -65
  263. data/spec/vcr_cassettes/invoices/save_new_with_country_GB.yml +0 -66
  264. data/spec/vcr_cassettes/invoices/save_new_with_country_Norge.yml +0 -65
  265. data/spec/vcr_cassettes/invoices/save_new_with_country_Norway.yml +0 -65
  266. data/spec/vcr_cassettes/invoices/save_new_with_country_Sverige.yml +0 -65
  267. data/spec/vcr_cassettes/invoices/save_new_with_country_VA.yml +0 -66
  268. data/spec/vcr_cassettes/invoices/save_new_with_country_VI.yml +0 -66
  269. data/spec/vcr_cassettes/invoices/save_new_with_country_empty_string.yml +0 -65
  270. data/spec/vcr_cassettes/invoices/save_new_with_country_nil.yml +0 -65
  271. data/spec/vcr_cassettes/invoices/save_new_with_unsaved_parent.yml +0 -65
  272. data/spec/vcr_cassettes/invoices/save_old.yml +0 -65
  273. data/spec/vcr_cassettes/invoices/save_old_with_empty_comments.yml +0 -65
  274. data/spec/vcr_cassettes/invoices/save_old_with_empty_country.yml +0 -65
  275. data/spec/vcr_cassettes/invoices/save_old_with_nil_comments.yml +0 -65
  276. data/spec/vcr_cassettes/invoices/save_old_with_nil_country.yml +0 -65
  277. data/spec/vcr_cassettes/invoices/save_with_nested_model.yml +0 -65
  278. data/spec/vcr_cassettes/invoices/save_with_specially_named_attribute.yml +0 -65
  279. data/spec/vcr_cassettes/invoices/search_by_name.yml +0 -63
  280. data/spec/vcr_cassettes/invoices/search_miss.yml +0 -62
  281. data/spec/vcr_cassettes/invoices/search_with_special_char.yml +0 -62
  282. data/spec/vcr_cassettes/invoices/single_param_find_by_hash.yml +0 -64
  283. data/spec/vcr_cassettes/orders/all.yml +0 -69
  284. data/spec/vcr_cassettes/orders/filter_hit.yml +0 -64
  285. data/spec/vcr_cassettes/orders/filter_invalid.yml +0 -60
  286. data/spec/vcr_cassettes/orders/find_by_hash_failure.yml +0 -62
  287. data/spec/vcr_cassettes/orders/find_failure.yml +0 -62
  288. data/spec/vcr_cassettes/orders/find_id_1.yml +0 -67
  289. data/spec/vcr_cassettes/orders/find_new.yml +0 -65
  290. data/spec/vcr_cassettes/orders/housework_invalid_tax_reduction_type.yml +0 -61
  291. data/spec/vcr_cassettes/orders/housework_othercoses_invalid.yml +0 -61
  292. data/spec/vcr_cassettes/orders/housework_type_babysitting.yml +0 -65
  293. data/spec/vcr_cassettes/orders/housework_type_cleaning.yml +0 -65
  294. data/spec/vcr_cassettes/orders/housework_type_construction.yml +0 -65
  295. data/spec/vcr_cassettes/orders/housework_type_cooking.yml +0 -61
  296. data/spec/vcr_cassettes/orders/housework_type_electricity.yml +0 -65
  297. data/spec/vcr_cassettes/orders/housework_type_gardening.yml +0 -65
  298. data/spec/vcr_cassettes/orders/housework_type_glassmetalwork.yml +0 -65
  299. data/spec/vcr_cassettes/orders/housework_type_grounddrainagework.yml +0 -65
  300. data/spec/vcr_cassettes/orders/housework_type_hvac.yml +0 -65
  301. data/spec/vcr_cassettes/orders/housework_type_itservices.yml +0 -65
  302. data/spec/vcr_cassettes/orders/housework_type_majorappliancerepair.yml +0 -65
  303. data/spec/vcr_cassettes/orders/housework_type_masonry.yml +0 -65
  304. data/spec/vcr_cassettes/orders/housework_type_movingservices.yml +0 -65
  305. data/spec/vcr_cassettes/orders/housework_type_othercare.yml +0 -65
  306. data/spec/vcr_cassettes/orders/housework_type_othercosts.yml +0 -65
  307. data/spec/vcr_cassettes/orders/housework_type_paintingwallpapering.yml +0 -65
  308. data/spec/vcr_cassettes/orders/housework_type_snowplowing.yml +0 -65
  309. data/spec/vcr_cassettes/orders/housework_type_textileclothing.yml +0 -65
  310. data/spec/vcr_cassettes/orders/housework_type_tutoring.yml +0 -61
  311. data/spec/vcr_cassettes/orders/multi_param_find_by_hash.yml +0 -63
  312. data/spec/vcr_cassettes/orders/save_new.yml +0 -65
  313. data/spec/vcr_cassettes/orders/save_old.yml +0 -65
  314. data/spec/vcr_cassettes/orders/save_with_nested_model.yml +0 -65
  315. data/spec/vcr_cassettes/orders/search_by_name.yml +0 -63
  316. data/spec/vcr_cassettes/orders/search_miss.yml +0 -62
  317. data/spec/vcr_cassettes/orders/search_with_special_char.yml +0 -62
  318. data/spec/vcr_cassettes/orders/single_param_find_by_hash.yml +0 -64
  319. data/spec/vcr_cassettes/projects/all.yml +0 -64
  320. data/spec/vcr_cassettes/projects/find_by_hash_failure.yml +0 -62
  321. data/spec/vcr_cassettes/projects/find_failure.yml +0 -62
  322. data/spec/vcr_cassettes/projects/find_id_1.yml +0 -63
  323. data/spec/vcr_cassettes/projects/find_new.yml +0 -63
  324. data/spec/vcr_cassettes/projects/multi_param_find_by_hash.yml +0 -64
  325. data/spec/vcr_cassettes/projects/save_new.yml +0 -63
  326. data/spec/vcr_cassettes/projects/save_old.yml +0 -63
  327. data/spec/vcr_cassettes/projects/single_param_find_by_hash.yml +0 -63
  328. data/spec/vcr_cassettes/termsofpayments/all.yml +0 -68
  329. data/spec/vcr_cassettes/termsofpayments/find_failure.yml +0 -62
  330. data/spec/vcr_cassettes/termsofpayments/find_id_1.yml +0 -62
  331. data/spec/vcr_cassettes/termsofpayments/find_new.yml +0 -63
  332. data/spec/vcr_cassettes/termsofpayments/save_new.yml +0 -63
  333. data/spec/vcr_cassettes/termsofpayments/save_old.yml +0 -63
  334. data/spec/vcr_cassettes/units/all.yml +0 -64
  335. data/spec/vcr_cassettes/units/find_failure.yml +0 -62
  336. data/spec/vcr_cassettes/units/find_id_1.yml +0 -63
  337. data/spec/vcr_cassettes/units/find_new.yml +0 -63
  338. data/spec/vcr_cassettes/units/save_new.yml +0 -63
  339. data/spec/vcr_cassettes/units/save_old.yml +0 -63
  340. data/spec/vcr_cassettes/units/save_with_specially_named_attribute.yml +0 -63
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ea75f17f262d1586930c15e3114c1d65590a7f542ea7d75069c6d864c0db52ba
4
- data.tar.gz: bcdc7c31ac33686637badff069fc6eedf9668e915a974420bccfef183c3e335b
3
+ metadata.gz: d4ab3f55b3783c477974abba27bae6b9104baf418e131532a746f822177605bd
4
+ data.tar.gz: 882d8f34d8246f74052823894fd7286a146bdaa745155928059cad7abfe0d6ef
5
5
  SHA512:
6
- metadata.gz: 56e587b9a912a34d08ceaed8207d9097638726423b62bc8cacd0b440d57203f079f8c527aa30bb78bd3f82cd359a11f6c153d344026109e0c9de92ff1f054e44
7
- data.tar.gz: e02fe96b0107463dbeab810717dc08549a8d2292216455c59089f7477725df1e1ecf883af02d521c3ec69bee52fe22f4afaeddf2b473408e7f8e8f40fe039b7f
6
+ metadata.gz: 2e4a87ea6c15df6acce08ef2e3006f6cf4acd936a933e8449af585f5426f0a5f951e06f84a96ec34a044248519b013d2085b3c7ff8889e5016a4cc79af0074f1
7
+ data.tar.gz: '09c2e017f7dc98c61565c0dc00b9d8ab35a8ea8ad90928e523f822c5f6bb84a2ebc74c75cbd1d02a4cb2ba8d58147f39286b0de05c656170a7f55ae6f4792971'
data/CHANGELOG.md CHANGED
@@ -6,105 +6,91 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
6
  and this project adheres to
7
7
  [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
8
8
 
9
- ## [0.9.1]
9
+ ## [1.0.0.rc1] - 2026-05-04
10
10
 
11
- ### Fixed
12
- - Restored undocumented support for string keys in model attributes,
13
- which was inadvertently removed in `v0.9.0`.
14
- - Set correct lower limit for `Article#quantity_in_stock`
15
-
16
- ## [0.9.0]
17
-
18
- ### Added
19
-
20
- - Script in `bin/get_tokens` to issue access and refresh tokens
21
- - Script in `bin/renew_tokens` (convenience feature for developers)
22
- - `Fortnox::API::Repository::Authentication.renew_token`, used for token renewal
23
-
24
- ### Changed
25
-
26
- - **Breaking** The auth process is rewritten to support
27
- [the new auth flow](https://developer.fortnox.se/general/authentication/) that
28
- Fortnox has implemented. You also need to set the access token explicitly with
29
- `Fortnox::API.access_token ' your token'`. See [README](README.md) for more
30
- instructions.
31
-
32
- ### Fixed
33
-
34
- - Missing runtime dependencies `dry-configurable` and `dry-container` is added.
35
- Those were indirect dependencies before via other dry libs, but we use them
36
- explicitly in the gem, so they should be included as real dependencies. Also,
37
- newer versions of these gems did actually break the gem.
38
- - Not trying to update resource if diff against parent is an empty object
39
- (#238).
40
-
41
- ### Removed
42
-
43
- - **Breaking** Drops support for Ruby 2.6 since it's reached end of life
44
- - Token rotation is removed since Fortnox counts rate limit on tenant and client
45
- id. Before, you could get around this by using multiple access tokens. That's
46
- not possible anymore, so token rotation is simply removed.
47
- - **Breaking** Removes `client_id` and `client_secret` from configuration. These
48
- value are only used for token renewal, so they are now arguments to the
49
- `Authentication` repository. This means there are no longer any required
50
- configuration to set in `Fortnox::API.configuration`.
51
-
52
- ## [0.8.0]
11
+ Version 1.0 is a complete rewrite of the gem and is **not** a drop-in
12
+ replacement for the 0.x series. Almost every public entry point has changed.
13
+ See [MIGRATING_TO_1.0.md](MIGRATING_TO_1.0.md) for a guided upgrade and the sections below
14
+ for the full list of breaking changes.
53
15
 
54
16
  ### Changed
55
17
 
56
- - `Fortnox::API::CURRENT_HOUSEWORK_TYPES` is now renamed to `HOUSEWORK_TYPES`
57
- and is instead a Hash with keys for the different categories of types. It also
58
- includes legacy types, which means `Fortnox::API::LEGACY_HOUSEWORK_TYPES` is
59
- removed.
60
-
61
- ### Removed
62
-
63
- - Drops support for Ruby < `2.5.0` since they are deprecated
64
-
65
- ## [0.7.2]
66
-
67
- ### Fixed
68
-
69
- - Invalid validation for Customer's account number attribute
70
-
71
- ## [0.7.1]
72
-
73
- ### Fixed
74
-
75
- - Invalid validation for Customer's country attributes
76
-
77
- ## [0.7.0]
18
+ - **Breaking** Complete rewrite based on [rest-easy](https://github.com/accodeing/rest-easy),
19
+ replacing the HTTParty + Data Mapper architecture with a single resource
20
+ class per entity. The top-level namespace moves from `Fortnox::API` to
21
+ `Fortnox` (e.g. `Fortnox::API::Repository::Customer` →
22
+ `Fortnox::Customer`).
23
+ - **Breaking** Minimum Ruby version raised to 3.1.
24
+ - **Breaking** Authorization now uses the new Fortnox client credentials flow.
25
+ Refresh tokens are no longer needed, nor supported. A tenant ID is now required;
26
+ obtain one with the new `fortnox-setup` executable.
27
+ - **Breaking** `Fortnox.request_access_token` replaces
28
+ `Fortnox::API::Repository::Authentication` for token management.
29
+ - **Breaking** Configuration moves from `Fortnox::API.configuration` to
30
+ module-level setters such as `Fortnox.access_token=`.
31
+ - **Breaking** Country attributes on documents (`country_code`,
32
+ `delivery_country`) now only accept ISO alpha-2 codes (e.g. `'NO'`,
33
+ `'SE'`). The old gem also accepted country names like `'Norge'` or
34
+ `'Norway'`.
35
+ - **Breaking** Exception classes are renamed and consolidated.
36
+ 0.x → 1.0 mapping:
37
+ - `Fortnox::API::Exception` `Fortnox::Error`. Still the base class
38
+ for everything below; rescue it to catch any gem-raised error.
39
+ - `Fortnox::API::AttributeError` → `Fortnox::AttributeError`.
40
+ - `Fortnox::API::RemoteServerError` → `Fortnox::RequestError`, now
41
+ carries the response object as `.response`.
42
+ - `Fortnox::API::MissingAttributeError` → `Fortnox::MissingAttributeError`,
43
+ now carries `.attribute_name`.
44
+ - `Fortnox::API::MissingAccessToken` → `Fortnox::MissingAccessToken`.
45
+ In 0.x this was raised eagerly when constructing a repository; in 1.0
46
+ it is raised lazily, on the first API call from a thread that has not
47
+ set a token.
48
+ - `Fortnox::API::MissingConfiguration` is removed — the configurable
49
+ surface is much smaller in 1.0 and the previous misconfigurations
50
+ are no longer expressible.
51
+ - *new* `Fortnox::ConstraintError < Fortnox::AttributeError` — raised
52
+ when an attribute value violates a type constraint. Carries
53
+ `.attribute_name` and `.value`.
54
+ - Nested structs (EDIInformation, EmailInformation, InvoiceRow, etc.) are
55
+ now plain `Dry::Struct` subclasses; key-mapping and serialisation logic
56
+ lives in dedicated classes under `Fortnox::Mappers`.
57
+ - **Breaking** Collection-returning methods (`.all`, `.search`, `.only`,
58
+ and `.find(hash)`) now return a `Fortnox::Collection` instead of a plain
59
+ `Array`. Collection is `Enumerable` and delegates `each`, `first`, `last`,
60
+ `size`, `length`, `empty?`, `[]`, and `to_a`, so most existing Array
61
+ usage works unchanged. Code that explicitly checks `is_a?(Array)` or
62
+ compares with `==` against an Array literal needs updating.
78
63
 
79
64
  ### Added
80
65
 
81
- - Adds build test for Ruby `2.6.0`, `2.6.3` and `2.7.0-preview`.
82
-
83
- ### Removed
84
-
85
- - Drops support for Ruby < `2.4.0` since they are deprecated
66
+ - `Fortnox.request_access_token` for client credentials token requests
67
+ - `fortnox-setup` executable for initial OAuth authorization and tenant ID
68
+ discovery
69
+ - `fortnox-update-env` executable for refreshing access tokens in env files
70
+ - `Fortnox::Struct` base class for nested models, extending `Dry::Struct`
71
+ with a `:read_only` attribute flag for computed/server-side fields
72
+ - `Fortnox::Collection` class wrapping the result of multi-record API calls
73
+ and exposing pagination metadata via `.total`, `.pages`, and `.current_page`
74
+ - `instance.meta.partial?` flag — true for instances parsed from a
75
+ collection response (which Fortnox returns with fewer attributes than
76
+ single-resource fetches), false for instances from `find(id)`
77
+ - Label resource
86
78
 
87
79
  ### Fixed
88
80
 
89
- - Country attribute for `Invoice` and `Order` is now validated correctly.
90
- - Fixes deprecation warnings
91
- - Unlocks pinned `HTTParty` version
92
- - Invalid email validation
93
-
94
- ## [0.6.3]
95
-
96
- ### Changed
97
-
98
- - Pins `dry-types` to `< 0.13.0` due to breaking changes
99
-
100
- ### Fixed
101
-
102
- - Model attribute `url` is no longer null
103
-
104
- [0.9.1]: https://github.com/accodeing/fortnox-api/compare/v0.9.0...v0.9.1
105
- [0.9.0]: https://github.com/accodeing/fortnox-api/compare/v0.8.0...v0.9.0
106
- [0.8.0]: https://github.com/accodeing/fortnox-api/compare/v0.7.2...v0.8.0
107
- [0.7.2]: https://github.com/accodeing/fortnox-api/compare/v0.7.1...v0.7.2
108
- [0.7.1]: https://github.com/accodeing/fortnox-api/compare/v0.7.0...v0.7.1
109
- [0.7.0]: https://github.com/accodeing/fortnox-api/compare/v0.6.3...v0.7.0
110
- [0.6.3]: https://github.com/accodeing/fortnox-api/compare/v0.6.2...v0.6.3
81
+ - Setting an attribute to `nil` on update now correctly sends `null` to
82
+ Fortnox, clearing the field. In 0.x this silently re-sent the original
83
+ value due to a bug in the mapper diff. (#172)
84
+ - Read-only attributes like `total`, `balance`, and `booked` now load
85
+ correctly from Fortnox API responses. In 0.x these returned `nil` due
86
+ to missing writers for private attributes. (#50)
87
+ - API base URL updated from `apps.fortnox.se/3` to `api.fortnox.se/3`,
88
+ avoiding the redirect introduced by Fortnox in February 2026. (#249)
89
+ - All current housework types are now supported, including types added
90
+ after the 0.x release. (#196)
91
+ - The `Currencies` enum no longer accepts `KUR`. It is not an ISO-4217
92
+ currency code and the Fortnox API would have rejected it; 0.x accepted
93
+ it client-side.
94
+
95
+ For changes prior to the 1.0 rewrite, see the
96
+ [0.x changelog](https://github.com/accodeing/fortnox-api/blob/v0.9.2/CHANGELOG.md).
File without changes