tax_conformance_kit 0.1.0 → 0.1.1

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 (421) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +21 -11
  3. data/bin/taxctl +0 -0
  4. data/data/kind-registry.v1.json +316 -0
  5. data/data/regulation/nl/gemeentelijke_verordening/aa_en_hunze/2024-11-29.json +64 -0
  6. data/data/regulation/nl/gemeentelijke_verordening/aa_en_hunze/2025-11-28.json +64 -0
  7. data/data/regulation/nl/gemeentelijke_verordening/aalten/2024-12-23.json +70 -0
  8. data/data/regulation/nl/gemeentelijke_verordening/aalten/2025-12-20.json +70 -0
  9. data/data/regulation/nl/gemeentelijke_verordening/achtkarspelen/2025-12-31.json +60 -0
  10. data/data/regulation/nl/gemeentelijke_verordening/alblasserdam/2025-01-01.json +61 -0
  11. data/data/regulation/nl/gemeentelijke_verordening/alblasserdam/2025-12-23.json +103 -0
  12. data/data/regulation/nl/gemeentelijke_verordening/alkmaar/2024-12-18.json +107 -0
  13. data/data/regulation/nl/gemeentelijke_verordening/alkmaar/2025-12-17.json +107 -0
  14. data/data/regulation/nl/gemeentelijke_verordening/almelo/2024-01-01.json +108 -0
  15. data/data/regulation/nl/gemeentelijke_verordening/almelo/2025-01-01.json +105 -0
  16. data/data/regulation/nl/gemeentelijke_verordening/almelo/2026-01-01.json +105 -0
  17. data/data/regulation/nl/gemeentelijke_verordening/almere/2024-12-25.json +71 -0
  18. data/data/regulation/nl/gemeentelijke_verordening/almere/2025-12-24.json +71 -0
  19. data/data/regulation/nl/gemeentelijke_verordening/alphen_aan_den_rijn/2024-12-18.json +63 -0
  20. data/data/regulation/nl/gemeentelijke_verordening/alphen_aan_den_rijn/2025-12-19.json +63 -0
  21. data/data/regulation/nl/gemeentelijke_verordening/alphen_chaam/2025-01-01.json +71 -0
  22. data/data/regulation/nl/gemeentelijke_verordening/alphen_chaam/2026-01-01.json +120 -0
  23. data/data/regulation/nl/gemeentelijke_verordening/ameland/2024-01-01.json +65 -0
  24. data/data/regulation/nl/gemeentelijke_verordening/ameland/2025-01-01.json +65 -0
  25. data/data/regulation/nl/gemeentelijke_verordening/ameland/2026-01-01.json +65 -0
  26. data/data/regulation/nl/gemeentelijke_verordening/amersfoort/2024-12-24.json +61 -0
  27. data/data/regulation/nl/gemeentelijke_verordening/amersfoort/2025-12-20.json +61 -0
  28. data/data/regulation/nl/gemeentelijke_verordening/amstelveen/2025-01-01.json +111 -0
  29. data/data/regulation/nl/gemeentelijke_verordening/amstelveen/2026-01-01.json +111 -0
  30. data/data/regulation/nl/gemeentelijke_verordening/amsterdam/2026-01-01.json +45 -0
  31. data/data/regulation/nl/gemeentelijke_verordening/amsterdam/conformance/percentage_of_base_normal.json +18 -0
  32. data/data/regulation/nl/gemeentelijke_verordening/amsterdam/conformance/percentage_of_base_rounding_up.json +18 -0
  33. data/data/regulation/nl/gemeentelijke_verordening/amsterdam/conformance/quarterly_threshold_below_minimum.assessment.json +43 -0
  34. data/data/regulation/nl/gemeentelijke_verordening/amsterdam/conformance/quarterly_threshold_exact_minimum.assessment.json +43 -0
  35. data/data/regulation/nl/gemeentelijke_verordening/amsterdam/conformance/quarterly_threshold_met.assessment.json +43 -0
  36. data/data/regulation/nl/gemeentelijke_verordening/apeldoorn/2024-04-04.json +140 -0
  37. data/data/regulation/nl/gemeentelijke_verordening/apeldoorn/2024-12-24.json +140 -0
  38. data/data/regulation/nl/gemeentelijke_verordening/apeldoorn/2025-12-30.json +140 -0
  39. data/data/regulation/nl/gemeentelijke_verordening/baarle_nassau/2025-01-01.json +70 -0
  40. data/data/regulation/nl/gemeentelijke_verordening/baarle_nassau/2026-01-01.json +70 -0
  41. data/data/regulation/nl/gemeentelijke_verordening/baarn/2024-12-31.json +78 -0
  42. data/data/regulation/nl/gemeentelijke_verordening/baarn/2025-12-30.json +78 -0
  43. data/data/regulation/nl/gemeentelijke_verordening/barneveld/2024-12-12.json +70 -0
  44. data/data/regulation/nl/gemeentelijke_verordening/barneveld/2025-11-28.json +120 -0
  45. data/data/regulation/nl/gemeentelijke_verordening/beekdaelen/2024-11-22.json +112 -0
  46. data/data/regulation/nl/gemeentelijke_verordening/beekdaelen/2025-11-28.json +112 -0
  47. data/data/regulation/nl/gemeentelijke_verordening/bergen_nh/2024-12-24.json +73 -0
  48. data/data/regulation/nl/gemeentelijke_verordening/bergen_nh/2025-12-18.json +73 -0
  49. data/data/regulation/nl/gemeentelijke_verordening/bergen_op_zoom/2025-12-12.json +72 -0
  50. data/data/regulation/nl/gemeentelijke_verordening/bernheze/2024-01-01.json +63 -0
  51. data/data/regulation/nl/gemeentelijke_verordening/bernheze/2025-03-20.json +67 -0
  52. data/data/regulation/nl/gemeentelijke_verordening/bernheze/2025-12-25.json +67 -0
  53. data/data/regulation/nl/gemeentelijke_verordening/best/2024-11-23.json +70 -0
  54. data/data/regulation/nl/gemeentelijke_verordening/best/2025-11-21.json +70 -0
  55. data/data/regulation/nl/gemeentelijke_verordening/beuningen/2024-12-21.json +66 -0
  56. data/data/regulation/nl/gemeentelijke_verordening/beuningen/2025-12-20.json +66 -0
  57. data/data/regulation/nl/gemeentelijke_verordening/beverwijk/2024-12-19.json +61 -0
  58. data/data/regulation/nl/gemeentelijke_verordening/beverwijk/2025-12-16.json +61 -0
  59. data/data/regulation/nl/gemeentelijke_verordening/blaricum/2024-01-01.json +107 -0
  60. data/data/regulation/nl/gemeentelijke_verordening/blaricum/2025-01-01.json +107 -0
  61. data/data/regulation/nl/gemeentelijke_verordening/blaricum/2026-01-01.json +107 -0
  62. data/data/regulation/nl/gemeentelijke_verordening/bloemendaal/2024-01-04.json +105 -0
  63. data/data/regulation/nl/gemeentelijke_verordening/bloemendaal/2024-12-31.json +105 -0
  64. data/data/regulation/nl/gemeentelijke_verordening/bloemendaal/2026-01-01.json +97 -0
  65. data/data/regulation/nl/gemeentelijke_verordening/boekel/2024-12-18.json +64 -0
  66. data/data/regulation/nl/gemeentelijke_verordening/borger_odoorn/2025-01-01.json +170 -0
  67. data/data/regulation/nl/gemeentelijke_verordening/borger_odoorn/2026-01-01.json +170 -0
  68. data/data/regulation/nl/gemeentelijke_verordening/borne/2025-01-01.json +105 -0
  69. data/data/regulation/nl/gemeentelijke_verordening/borne/2026-01-01.json +105 -0
  70. data/data/regulation/nl/gemeentelijke_verordening/breda/2024-12-25.json +107 -0
  71. data/data/regulation/nl/gemeentelijke_verordening/breda/2026-01-01.json +225 -0
  72. data/data/regulation/nl/gemeentelijke_verordening/breda/2026-03-19.json +170 -0
  73. data/data/regulation/nl/gemeentelijke_verordening/breda/conformance/camping_arrangement_guest.json +20 -0
  74. data/data/regulation/nl/gemeentelijke_verordening/breda/conformance/camping_arrangement_guest_119_nights.json +20 -0
  75. data/data/regulation/nl/gemeentelijke_verordening/breda/conformance/camping_arrangement_guest_120_nights.json +20 -0
  76. data/data/regulation/nl/gemeentelijke_verordening/breda/conformance/camping_arrangement_guest_29_nights.json +20 -0
  77. data/data/regulation/nl/gemeentelijke_verordening/breda/conformance/camping_arrangement_guest_30_nights.json +20 -0
  78. data/data/regulation/nl/gemeentelijke_verordening/breda/conformance/coa_exempt.json +19 -0
  79. data/data/regulation/nl/gemeentelijke_verordening/breda/conformance/supervised_minor_group_exempt.json +36 -0
  80. data/data/regulation/nl/gemeentelijke_verordening/breda/conformance/wtza_exempt.json +19 -0
  81. data/data/regulation/nl/gemeentelijke_verordening/bronckhorst/2024-01-01.json +120 -0
  82. data/data/regulation/nl/gemeentelijke_verordening/brummen/2024-01-01.json +152 -0
  83. data/data/regulation/nl/gemeentelijke_verordening/brummen/2025-01-01.json +147 -0
  84. data/data/regulation/nl/gemeentelijke_verordening/brummen/2026-01-01.json +147 -0
  85. data/data/regulation/nl/gemeentelijke_verordening/brunssum/2024-12-19.json +60 -0
  86. data/data/regulation/nl/gemeentelijke_verordening/brunssum/2025-12-25.json +64 -0
  87. data/data/regulation/nl/gemeentelijke_verordening/castricum/2024-11-27.json +108 -0
  88. data/data/regulation/nl/gemeentelijke_verordening/castricum/2025-11-26.json +64 -0
  89. data/data/regulation/nl/gemeentelijke_verordening/coevorden/2025-01-01.json +67 -0
  90. data/data/regulation/nl/gemeentelijke_verordening/culemborg/2024-12-19.json +70 -0
  91. data/data/regulation/nl/gemeentelijke_verordening/culemborg/2025-12-30.json +70 -0
  92. data/data/regulation/nl/gemeentelijke_verordening/de_fryske_marren/2024-12-24.json +77 -0
  93. data/data/regulation/nl/gemeentelijke_verordening/de_fryske_marren/2026-01-01.json +77 -0
  94. data/data/regulation/nl/gemeentelijke_verordening/de_wolden/2025-01-01.json +70 -0
  95. data/data/regulation/nl/gemeentelijke_verordening/de_wolden/2026-01-01.json +70 -0
  96. data/data/regulation/nl/gemeentelijke_verordening/deurne/2024-11-29.json +62 -0
  97. data/data/regulation/nl/gemeentelijke_verordening/deurne/2026-01-01.json +62 -0
  98. data/data/regulation/nl/gemeentelijke_verordening/deventer/2024-11-19.json +105 -0
  99. data/data/regulation/nl/gemeentelijke_verordening/deventer/2025-12-05.json +105 -0
  100. data/data/regulation/nl/gemeentelijke_verordening/diemen/2024-01-01.json +66 -0
  101. data/data/regulation/nl/gemeentelijke_verordening/diemen/2024-12-28.json +66 -0
  102. data/data/regulation/nl/gemeentelijke_verordening/diemen/2026-01-01.json +66 -0
  103. data/data/regulation/nl/gemeentelijke_verordening/dinkelland/2024-12-28.json +167 -0
  104. data/data/regulation/nl/gemeentelijke_verordening/dinkelland/2025-12-30.json +118 -0
  105. data/data/regulation/nl/gemeentelijke_verordening/doesburg/2024-12-25.json +110 -0
  106. data/data/regulation/nl/gemeentelijke_verordening/doesburg/2025-12-24.json +110 -0
  107. data/data/regulation/nl/gemeentelijke_verordening/doetinchem/2024-12-25.json +122 -0
  108. data/data/regulation/nl/gemeentelijke_verordening/doetinchem/2025-12-24.json +122 -0
  109. data/data/regulation/nl/gemeentelijke_verordening/drechterland/2024-12-31.json +67 -0
  110. data/data/regulation/nl/gemeentelijke_verordening/drechterland/2025-12-30.json +67 -0
  111. data/data/regulation/nl/gemeentelijke_verordening/dronten/2024-12-07.json +76 -0
  112. data/data/regulation/nl/gemeentelijke_verordening/dronten/2025-12-05.json +76 -0
  113. data/data/regulation/nl/gemeentelijke_verordening/edam_volendam/2024-12-19.json +122 -0
  114. data/data/regulation/nl/gemeentelijke_verordening/edam_volendam/2025-12-23.json +122 -0
  115. data/data/regulation/nl/gemeentelijke_verordening/ede/2024-12-04.json +108 -0
  116. data/data/regulation/nl/gemeentelijke_verordening/ede/2025-11-29.json +108 -0
  117. data/data/regulation/nl/gemeentelijke_verordening/eemnes/2025-01-01.json +131 -0
  118. data/data/regulation/nl/gemeentelijke_verordening/eemnes/2026-01-01.json +131 -0
  119. data/data/regulation/nl/gemeentelijke_verordening/eindhoven/2025-01-01.json +64 -0
  120. data/data/regulation/nl/gemeentelijke_verordening/eindhoven/2025-12-03.json +61 -0
  121. data/data/regulation/nl/gemeentelijke_verordening/elburg/2024-01-01.json +132 -0
  122. data/data/regulation/nl/gemeentelijke_verordening/emmen/2025-01-01.json +61 -0
  123. data/data/regulation/nl/gemeentelijke_verordening/emmen/2026-01-01.json +61 -0
  124. data/data/regulation/nl/gemeentelijke_verordening/enkhuizen/2024-12-31.json +61 -0
  125. data/data/regulation/nl/gemeentelijke_verordening/enkhuizen/2026-01-01.json +67 -0
  126. data/data/regulation/nl/gemeentelijke_verordening/enschede/2024-01-01.json +108 -0
  127. data/data/regulation/nl/gemeentelijke_verordening/enschede/2025-01-01.json +105 -0
  128. data/data/regulation/nl/gemeentelijke_verordening/enschede/2026-01-01.json +105 -0
  129. data/data/regulation/nl/gemeentelijke_verordening/etten_leur/2024-12-10.json +72 -0
  130. data/data/regulation/nl/gemeentelijke_verordening/geertruidenberg/2024-11-27.json +115 -0
  131. data/data/regulation/nl/gemeentelijke_verordening/geertruidenberg/2025-12-11.json +115 -0
  132. data/data/regulation/nl/gemeentelijke_verordening/geldrop_mierlo/2024-12-17.json +67 -0
  133. data/data/regulation/nl/gemeentelijke_verordening/geldrop_mierlo/2025-11-21.json +67 -0
  134. data/data/regulation/nl/gemeentelijke_verordening/gemert_bakel/2024-01-25.json +67 -0
  135. data/data/regulation/nl/gemeentelijke_verordening/gemert_bakel/2024-01-27.json +67 -0
  136. data/data/regulation/nl/gemeentelijke_verordening/gemert_bakel/2024-12-18.json +67 -0
  137. data/data/regulation/nl/gemeentelijke_verordening/gemert_bakel/2025-12-18.json +67 -0
  138. data/data/regulation/nl/gemeentelijke_verordening/gilze_en_rijen/2025-01-01.json +108 -0
  139. data/data/regulation/nl/gemeentelijke_verordening/gilze_en_rijen/2025-12-25.json +120 -0
  140. data/data/regulation/nl/gemeentelijke_verordening/goes/2024-12-29.json +69 -0
  141. data/data/regulation/nl/gemeentelijke_verordening/goes/2025-12-26.json +69 -0
  142. data/data/regulation/nl/gemeentelijke_verordening/gooise_meren/2024-12-14.json +70 -0
  143. data/data/regulation/nl/gemeentelijke_verordening/gooise_meren/2026-01-01.json +70 -0
  144. data/data/regulation/nl/gemeentelijke_verordening/gorinchem/2025-12-25.json +100 -0
  145. data/data/regulation/nl/gemeentelijke_verordening/gouda/2024-12-17.json +64 -0
  146. data/data/regulation/nl/gemeentelijke_verordening/gouda/2025-12-16.json +64 -0
  147. data/data/regulation/nl/gemeentelijke_verordening/haaksbergen/2024-01-01.json +120 -0
  148. data/data/regulation/nl/gemeentelijke_verordening/haaksbergen/2025-01-01.json +117 -0
  149. data/data/regulation/nl/gemeentelijke_verordening/haaksbergen/2026-01-01.json +117 -0
  150. data/data/regulation/nl/gemeentelijke_verordening/haarlem/2024-12-28.json +193 -0
  151. data/data/regulation/nl/gemeentelijke_verordening/haarlem/2025-12-24.json +191 -0
  152. data/data/regulation/nl/gemeentelijke_verordening/haarlemmermeer/2024-12-07.json +61 -0
  153. data/data/regulation/nl/gemeentelijke_verordening/haarlemmermeer/2025-12-11.json +61 -0
  154. data/data/regulation/nl/gemeentelijke_verordening/halderberge/2024-12-20.json +70 -0
  155. data/data/regulation/nl/gemeentelijke_verordening/halderberge/2025-12-24.json +70 -0
  156. data/data/regulation/nl/gemeentelijke_verordening/hardenberg/2025-12-25.json +67 -0
  157. data/data/regulation/nl/gemeentelijke_verordening/harderwijk/2024-12-21.json +70 -0
  158. data/data/regulation/nl/gemeentelijke_verordening/harderwijk/2025-12-20.json +70 -0
  159. data/data/regulation/nl/gemeentelijke_verordening/harlingen/2024-12-17.json +64 -0
  160. data/data/regulation/nl/gemeentelijke_verordening/harlingen/2025-12-10.json +64 -0
  161. data/data/regulation/nl/gemeentelijke_verordening/heemskerk/2024-12-18.json +61 -0
  162. data/data/regulation/nl/gemeentelijke_verordening/heemskerk/2025-12-19.json +61 -0
  163. data/data/regulation/nl/gemeentelijke_verordening/heemstede/2025-01-01.json +64 -0
  164. data/data/regulation/nl/gemeentelijke_verordening/heemstede/2025-12-23.json +64 -0
  165. data/data/regulation/nl/gemeentelijke_verordening/heeze_leende/2024-12-20.json +193 -0
  166. data/data/regulation/nl/gemeentelijke_verordening/heeze_leende/2025-12-04.json +61 -0
  167. data/data/regulation/nl/gemeentelijke_verordening/heiloo/2024-11-27.json +61 -0
  168. data/data/regulation/nl/gemeentelijke_verordening/heiloo/2025-11-14.json +61 -0
  169. data/data/regulation/nl/gemeentelijke_verordening/helmond/2024-01-01.json +109 -0
  170. data/data/regulation/nl/gemeentelijke_verordening/helmond/2025-01-01.json +109 -0
  171. data/data/regulation/nl/gemeentelijke_verordening/helmond/2026-01-01.json +109 -0
  172. data/data/regulation/nl/gemeentelijke_verordening/het_hogeland/2026-01-01.json +61 -0
  173. data/data/regulation/nl/gemeentelijke_verordening/heumen/2025-01-01.json +64 -0
  174. data/data/regulation/nl/gemeentelijke_verordening/heusden/2024-01-01.json +172 -0
  175. data/data/regulation/nl/gemeentelijke_verordening/heusden/2025-01-01.json +172 -0
  176. data/data/regulation/nl/gemeentelijke_verordening/heusden/2026-01-01.json +152 -0
  177. data/data/regulation/nl/gemeentelijke_verordening/hoeksche_waard/2024-12-31.json +62 -0
  178. data/data/regulation/nl/gemeentelijke_verordening/hoeksche_waard/2025-12-24.json +59 -0
  179. data/data/regulation/nl/gemeentelijke_verordening/hof_van_twente/2024-01-01.json +108 -0
  180. data/data/regulation/nl/gemeentelijke_verordening/hoogeveen/2025-01-01.json +70 -0
  181. data/data/regulation/nl/gemeentelijke_verordening/hoogeveen/2026-01-01.json +70 -0
  182. data/data/regulation/nl/gemeentelijke_verordening/houten/2024-12-19.json +65 -0
  183. data/data/regulation/nl/gemeentelijke_verordening/houten/2025-12-23.json +65 -0
  184. data/data/regulation/nl/gemeentelijke_verordening/huizen/2024-11-24.json +119 -0
  185. data/data/regulation/nl/gemeentelijke_verordening/huizen/2025-11-16.json +119 -0
  186. data/data/regulation/nl/gemeentelijke_verordening/hulst/2024-11-27.json +117 -0
  187. data/data/regulation/nl/gemeentelijke_verordening/hulst/2025-11-26.json +117 -0
  188. data/data/regulation/nl/gemeentelijke_verordening/kampen/2024-11-20.json +60 -0
  189. data/data/regulation/nl/gemeentelijke_verordening/kampen/2025-11-12.json +60 -0
  190. data/data/regulation/nl/gemeentelijke_verordening/katwijk/2024-12-25.json +122 -0
  191. data/data/regulation/nl/gemeentelijke_verordening/katwijk/2025-12-12.json +122 -0
  192. data/data/regulation/nl/gemeentelijke_verordening/koggenland/2024-11-16.json +59 -0
  193. data/data/regulation/nl/gemeentelijke_verordening/krimpenerwaard/2024-01-01.json +64 -0
  194. data/data/regulation/nl/gemeentelijke_verordening/krimpenerwaard/2025-01-01.json +64 -0
  195. data/data/regulation/nl/gemeentelijke_verordening/krimpenerwaard/2026-01-01.json +61 -0
  196. data/data/regulation/nl/gemeentelijke_verordening/landgraaf/2024-01-01.json +64 -0
  197. data/data/regulation/nl/gemeentelijke_verordening/landgraaf/2025-01-01.json +64 -0
  198. data/data/regulation/nl/gemeentelijke_verordening/landgraaf/2026-01-01.json +66 -0
  199. data/data/regulation/nl/gemeentelijke_verordening/landsmeer/2025-01-03.json +72 -0
  200. data/data/regulation/nl/gemeentelijke_verordening/landsmeer/2025-12-30.json +72 -0
  201. data/data/regulation/nl/gemeentelijke_verordening/leeuwarden/2024-12-17.json +68 -0
  202. data/data/regulation/nl/gemeentelijke_verordening/leeuwarden/2025-12-02.json +74 -0
  203. data/data/regulation/nl/gemeentelijke_verordening/leiden/2025-12-20.json +105 -0
  204. data/data/regulation/nl/gemeentelijke_verordening/leiderdorp/2024-12-24.json +105 -0
  205. data/data/regulation/nl/gemeentelijke_verordening/leiderdorp/2025-12-24.json +105 -0
  206. data/data/regulation/nl/gemeentelijke_verordening/leidschendam_voorburg/2024-01-01.json +110 -0
  207. data/data/regulation/nl/gemeentelijke_verordening/leidschendam_voorburg/2025-01-01.json +110 -0
  208. data/data/regulation/nl/gemeentelijke_verordening/leidschendam_voorburg/2026-01-01.json +110 -0
  209. data/data/regulation/nl/gemeentelijke_verordening/leusden/2024-01-01.json +66 -0
  210. data/data/regulation/nl/gemeentelijke_verordening/leusden/2025-01-01.json +66 -0
  211. data/data/regulation/nl/gemeentelijke_verordening/leusden/2026-01-01.json +108 -0
  212. data/data/regulation/nl/gemeentelijke_verordening/lingewaard/2024-01-01.json +61 -0
  213. data/data/regulation/nl/gemeentelijke_verordening/lingewaard/2025-01-01.json +61 -0
  214. data/data/regulation/nl/gemeentelijke_verordening/lochem/2024-01-01.json +110 -0
  215. data/data/regulation/nl/gemeentelijke_verordening/lochem/2025-01-01.json +69 -0
  216. data/data/regulation/nl/gemeentelijke_verordening/lochem/2026-01-01.json +69 -0
  217. data/data/regulation/nl/gemeentelijke_verordening/loon_op_zand/2024-12-25.json +256 -0
  218. data/data/regulation/nl/gemeentelijke_verordening/loon_op_zand/2025-12-24.json +196 -0
  219. data/data/regulation/nl/gemeentelijke_verordening/lopik/2024-01-01.json +64 -0
  220. data/data/regulation/nl/gemeentelijke_verordening/lopik/2024-12-24.json +64 -0
  221. data/data/regulation/nl/gemeentelijke_verordening/lopik/2025-12-24.json +64 -0
  222. data/data/regulation/nl/gemeentelijke_verordening/maashorst/2024-12-19.json +118 -0
  223. data/data/regulation/nl/gemeentelijke_verordening/maashorst/2025-12-30.json +118 -0
  224. data/data/regulation/nl/gemeentelijke_verordening/maassluis/2024-01-01.json +57 -0
  225. data/data/regulation/nl/gemeentelijke_verordening/maassluis/2025-01-01.json +57 -0
  226. data/data/regulation/nl/gemeentelijke_verordening/maassluis/2026-01-01.json +57 -0
  227. data/data/regulation/nl/gemeentelijke_verordening/meerssen/2024-12-27.json +68 -0
  228. data/data/regulation/nl/gemeentelijke_verordening/midden_drenthe/2025-12-23.json +117 -0
  229. data/data/regulation/nl/gemeentelijke_verordening/midden_groningen/2024-12-31.json +105 -0
  230. data/data/regulation/nl/gemeentelijke_verordening/midden_groningen/2025-12-29.json +105 -0
  231. data/data/regulation/nl/gemeentelijke_verordening/molenlanden/2024-01-01.json +64 -0
  232. data/data/regulation/nl/gemeentelijke_verordening/molenlanden/2025-01-01.json +64 -0
  233. data/data/regulation/nl/gemeentelijke_verordening/nederweert/2024-12-21.json +64 -0
  234. data/data/regulation/nl/gemeentelijke_verordening/nederweert/2025-12-18.json +64 -0
  235. data/data/regulation/nl/gemeentelijke_verordening/nieuwegein/2024-12-24.json +64 -0
  236. data/data/regulation/nl/gemeentelijke_verordening/nieuwegein/2025-12-30.json +64 -0
  237. data/data/regulation/nl/gemeentelijke_verordening/noardeast_frysl/303/242n/2025-01-01.json +77 -0
  238. data/data/regulation/nl/gemeentelijke_verordening/noardeast_frysl/303/242n/2025-12-24.json +77 -0
  239. data/data/regulation/nl/gemeentelijke_verordening/noord_beveland/2024-07-17.json +67 -0
  240. data/data/regulation/nl/gemeentelijke_verordening/noord_beveland/2025-01-01.json +67 -0
  241. data/data/regulation/nl/gemeentelijke_verordening/noord_beveland/2025-12-24.json +67 -0
  242. data/data/regulation/nl/gemeentelijke_verordening/nuenen_gerwen_en_nederwetten/2024-11-28.json +57 -0
  243. data/data/regulation/nl/gemeentelijke_verordening/nuenen_gerwen_en_nederwetten/2025-11-20.json +57 -0
  244. data/data/regulation/nl/gemeentelijke_verordening/oegstgeest/2024-12-18.json +64 -0
  245. data/data/regulation/nl/gemeentelijke_verordening/oegstgeest/2025-12-23.json +64 -0
  246. data/data/regulation/nl/gemeentelijke_verordening/oirschot/2024-12-19.json +188 -0
  247. data/data/regulation/nl/gemeentelijke_verordening/oldambt/2024-01-01.json +73 -0
  248. data/data/regulation/nl/gemeentelijke_verordening/oldambt/2025-01-01.json +73 -0
  249. data/data/regulation/nl/gemeentelijke_verordening/oldebroek/2025-01-01.json +67 -0
  250. data/data/regulation/nl/gemeentelijke_verordening/oldebroek/2025-12-27.json +67 -0
  251. data/data/regulation/nl/gemeentelijke_verordening/oldenzaal/2025-01-01.json +59 -0
  252. data/data/regulation/nl/gemeentelijke_verordening/olst_wijhe/2024-12-25.json +67 -0
  253. data/data/regulation/nl/gemeentelijke_verordening/olst_wijhe/2025-12-23.json +67 -0
  254. data/data/regulation/nl/gemeentelijke_verordening/ommen/2024-12-28.json +70 -0
  255. data/data/regulation/nl/gemeentelijke_verordening/ommen/2025-12-25.json +70 -0
  256. data/data/regulation/nl/gemeentelijke_verordening/oost_gelre/2024-01-01.json +57 -0
  257. data/data/regulation/nl/gemeentelijke_verordening/oost_gelre/2025-01-01.json +57 -0
  258. data/data/regulation/nl/gemeentelijke_verordening/oost_gelre/2026-01-01.json +57 -0
  259. data/data/regulation/nl/gemeentelijke_verordening/oosterhout/2024-12-28.json +112 -0
  260. data/data/regulation/nl/gemeentelijke_verordening/oosterhout/2025-12-18.json +68 -0
  261. data/data/regulation/nl/gemeentelijke_verordening/oostzaan/2025-01-01.json +60 -0
  262. data/data/regulation/nl/gemeentelijke_verordening/oostzaan/2025-12-30.json +60 -0
  263. data/data/regulation/nl/gemeentelijke_verordening/opmeer/2024-12-25.json +59 -0
  264. data/data/regulation/nl/gemeentelijke_verordening/opmeer/2025-12-19.json +59 -0
  265. data/data/regulation/nl/gemeentelijke_verordening/oss/2025-12-17.json +117 -0
  266. data/data/regulation/nl/gemeentelijke_verordening/oude_ijsselstreek/2024-01-01.json +64 -0
  267. data/data/regulation/nl/gemeentelijke_verordening/oude_ijsselstreek/2025-01-01.json +61 -0
  268. data/data/regulation/nl/gemeentelijke_verordening/oude_ijsselstreek/2025-12-30.json +61 -0
  269. data/data/regulation/nl/gemeentelijke_verordening/ouder_amstel/2024-01-01.json +66 -0
  270. data/data/regulation/nl/gemeentelijke_verordening/oudewater/2024-01-01.json +108 -0
  271. data/data/regulation/nl/gemeentelijke_verordening/oudewater/2025-01-01.json +106 -0
  272. data/data/regulation/nl/gemeentelijke_verordening/overbetuwe/2025-01-01.json +73 -0
  273. data/data/regulation/nl/gemeentelijke_verordening/overbetuwe/2026-01-01.json +73 -0
  274. data/data/regulation/nl/gemeentelijke_verordening/papendrecht/2025-01-01.json +61 -0
  275. data/data/regulation/nl/gemeentelijke_verordening/papendrecht/2025-12-17.json +61 -0
  276. data/data/regulation/nl/gemeentelijke_verordening/purmerend/2024-11-21.json +61 -0
  277. data/data/regulation/nl/gemeentelijke_verordening/purmerend/2025-11-25.json +61 -0
  278. data/data/regulation/nl/gemeentelijke_verordening/raalte/2024-01-01.json +67 -0
  279. data/data/regulation/nl/gemeentelijke_verordening/raalte/2025-12-02.json +67 -0
  280. data/data/regulation/nl/gemeentelijke_verordening/reimerswaal/2024-01-01.json +67 -0
  281. data/data/regulation/nl/gemeentelijke_verordening/reimerswaal/2025-01-01.json +67 -0
  282. data/data/regulation/nl/gemeentelijke_verordening/reimerswaal/2026-01-01.json +67 -0
  283. data/data/regulation/nl/gemeentelijke_verordening/renswoude/2025-01-01.json +53 -0
  284. data/data/regulation/nl/gemeentelijke_verordening/reusel_de_mierden/2024-01-01.json +57 -0
  285. data/data/regulation/nl/gemeentelijke_verordening/reusel_de_mierden/2025-01-01.json +57 -0
  286. data/data/regulation/nl/gemeentelijke_verordening/reusel_de_mierden/2026-01-01.json +61 -0
  287. data/data/regulation/nl/gemeentelijke_verordening/rhenen/2025-12-20.json +64 -0
  288. data/data/regulation/nl/gemeentelijke_verordening/rijssen_holten/2024-12-25.json +70 -0
  289. data/data/regulation/nl/gemeentelijke_verordening/rijssen_holten/2025-12-30.json +70 -0
  290. data/data/regulation/nl/gemeentelijke_verordening/rijswijk/2024-11-21.json +61 -0
  291. data/data/regulation/nl/gemeentelijke_verordening/rijswijk/2025-11-28.json +61 -0
  292. data/data/regulation/nl/gemeentelijke_verordening/roosendaal/2024-12-25.json +64 -0
  293. data/data/regulation/nl/gemeentelijke_verordening/roosendaal/2025-12-24.json +64 -0
  294. data/data/regulation/nl/gemeentelijke_verordening/scherpenzeel/2024-12-20.json +61 -0
  295. data/data/regulation/nl/gemeentelijke_verordening/scherpenzeel/2026-01-01.json +61 -0
  296. data/data/regulation/nl/gemeentelijke_verordening/schiermonnikoog/2024-11-15.json +59 -0
  297. data/data/regulation/nl/gemeentelijke_verordening/schiermonnikoog/2025-12-02.json +59 -0
  298. data/data/regulation/nl/gemeentelijke_verordening/schouwen_duiveland/2024-01-01.json +66 -0
  299. data/data/regulation/nl/gemeentelijke_verordening/schouwen_duiveland/2025-01-01.json +108 -0
  300. data/data/regulation/nl/gemeentelijke_verordening/schouwen_duiveland/2026-01-01.json +64 -0
  301. data/data/regulation/nl/gemeentelijke_verordening/simpelveld/2024-11-21.json +70 -0
  302. data/data/regulation/nl/gemeentelijke_verordening/simpelveld/2025-12-20.json +70 -0
  303. data/data/regulation/nl/gemeentelijke_verordening/sint_michielsgestel/2024-01-01.json +105 -0
  304. data/data/regulation/nl/gemeentelijke_verordening/sint_michielsgestel/2024-12-24.json +105 -0
  305. data/data/regulation/nl/gemeentelijke_verordening/sittard_geleen/2024-11-30.json +110 -0
  306. data/data/regulation/nl/gemeentelijke_verordening/sittard_geleen/2025-12-04.json +110 -0
  307. data/data/regulation/nl/gemeentelijke_verordening/sluis/2024-01-01.json +131 -0
  308. data/data/regulation/nl/gemeentelijke_verordening/sluis/2025-01-01.json +131 -0
  309. data/data/regulation/nl/gemeentelijke_verordening/sluis/2026-01-01.json +131 -0
  310. data/data/regulation/nl/gemeentelijke_verordening/smallingerland/2024-12-28.json +83 -0
  311. data/data/regulation/nl/gemeentelijke_verordening/smallingerland/2025-12-31.json +83 -0
  312. data/data/regulation/nl/gemeentelijke_verordening/someren/2024-12-20.json +118 -0
  313. data/data/regulation/nl/gemeentelijke_verordening/someren/2025-12-19.json +118 -0
  314. data/data/regulation/nl/gemeentelijke_verordening/staphorst/2024-11-30.json +70 -0
  315. data/data/regulation/nl/gemeentelijke_verordening/staphorst/2025-12-03.json +70 -0
  316. data/data/regulation/nl/gemeentelijke_verordening/stede_broec/2024-12-31.json +61 -0
  317. data/data/regulation/nl/gemeentelijke_verordening/stede_broec/2026-01-01.json +67 -0
  318. data/data/regulation/nl/gemeentelijke_verordening/steenbergen/2024-12-19.json +70 -0
  319. data/data/regulation/nl/gemeentelijke_verordening/steenbergen/2025-12-19.json +70 -0
  320. data/data/regulation/nl/gemeentelijke_verordening/stein/2024-12-24.json +108 -0
  321. data/data/regulation/nl/gemeentelijke_verordening/stein/2026-01-01.json +108 -0
  322. data/data/regulation/nl/gemeentelijke_verordening/stichtse_vecht/2024-01-01.json +112 -0
  323. data/data/regulation/nl/gemeentelijke_verordening/stichtse_vecht/2024-12-28.json +112 -0
  324. data/data/regulation/nl/gemeentelijke_verordening/stichtse_vecht/2025-12-25.json +112 -0
  325. data/data/regulation/nl/gemeentelijke_verordening/s/303/272dwest_frysl/303/242n/2025-01-01.json +69 -0
  326. data/data/regulation/nl/gemeentelijke_verordening/s/303/272dwest_frysl/303/242n/2026-01-01.json +69 -0
  327. data/data/regulation/nl/gemeentelijke_verordening/terneuzen/2024-01-01.json +67 -0
  328. data/data/regulation/nl/gemeentelijke_verordening/terneuzen/2025-01-01.json +61 -0
  329. data/data/regulation/nl/gemeentelijke_verordening/terneuzen/2026-01-01.json +61 -0
  330. data/data/regulation/nl/gemeentelijke_verordening/terschelling/2024-12-11.json +69 -0
  331. data/data/regulation/nl/gemeentelijke_verordening/terschelling/2025-12-27.json +69 -0
  332. data/data/regulation/nl/gemeentelijke_verordening/texel/2024-12-27.json +66 -0
  333. data/data/regulation/nl/gemeentelijke_verordening/texel/2026-01-01.json +70 -0
  334. data/data/regulation/nl/gemeentelijke_verordening/tholen/2024-01-01.json +61 -0
  335. data/data/regulation/nl/gemeentelijke_verordening/tilburg/2024-11-27.json +62 -0
  336. data/data/regulation/nl/gemeentelijke_verordening/tilburg/2025-12-10.json +62 -0
  337. data/data/regulation/nl/gemeentelijke_verordening/tubbergen/2025-01-01.json +117 -0
  338. data/data/regulation/nl/gemeentelijke_verordening/tubbergen/2025-12-25.json +118 -0
  339. data/data/regulation/nl/gemeentelijke_verordening/twenterand/2024-01-01.json +70 -0
  340. data/data/regulation/nl/gemeentelijke_verordening/twenterand/2025-01-01.json +67 -0
  341. data/data/regulation/nl/gemeentelijke_verordening/twenterand/2026-01-01.json +67 -0
  342. data/data/regulation/nl/gemeentelijke_verordening/uitgeest/2024-12-20.json +110 -0
  343. data/data/regulation/nl/gemeentelijke_verordening/uitgeest/2025-12-18.json +110 -0
  344. data/data/regulation/nl/gemeentelijke_verordening/uithoorn/2024-01-01.json +57 -0
  345. data/data/regulation/nl/gemeentelijke_verordening/uithoorn/2025-01-01.json +57 -0
  346. data/data/regulation/nl/gemeentelijke_verordening/uithoorn/2026-01-01.json +57 -0
  347. data/data/regulation/nl/gemeentelijke_verordening/uithoorn/conformance/previous_ordinance_last_day.json +18 -0
  348. data/data/regulation/nl/gemeentelijke_verordening/uithoorn/conformance/successor_ordinance_first_day.json +18 -0
  349. data/data/regulation/nl/gemeentelijke_verordening/urk/2024-12-05.json +61 -0
  350. data/data/regulation/nl/gemeentelijke_verordening/urk/2026-01-01.json +61 -0
  351. data/data/regulation/nl/gemeentelijke_verordening/veenendaal/2024-01-01.json +64 -0
  352. data/data/regulation/nl/gemeentelijke_verordening/veenendaal/2024-12-17.json +60 -0
  353. data/data/regulation/nl/gemeentelijke_verordening/veenendaal/2025-12-23.json +64 -0
  354. data/data/regulation/nl/gemeentelijke_verordening/veldhoven/2024-01-01.json +139 -0
  355. data/data/regulation/nl/gemeentelijke_verordening/veldhoven/2025-01-01.json +139 -0
  356. data/data/regulation/nl/gemeentelijke_verordening/velsen/2024-01-01.json +64 -0
  357. data/data/regulation/nl/gemeentelijke_verordening/velsen/2025-01-01.json +64 -0
  358. data/data/regulation/nl/gemeentelijke_verordening/velsen/2026-01-01.json +64 -0
  359. data/data/regulation/nl/gemeentelijke_verordening/vijfheerenlanden/2025-01-01.json +150 -0
  360. data/data/regulation/nl/gemeentelijke_verordening/vijfheerenlanden/2026-01-01.json +150 -0
  361. data/data/regulation/nl/gemeentelijke_verordening/vlaardingen/2024-12-27.json +57 -0
  362. data/data/regulation/nl/gemeentelijke_verordening/vlaardingen/2025-12-20.json +57 -0
  363. data/data/regulation/nl/gemeentelijke_verordening/vlieland/2024-12-20.json +73 -0
  364. data/data/regulation/nl/gemeentelijke_verordening/vlieland/2025-12-19.json +73 -0
  365. data/data/regulation/nl/gemeentelijke_verordening/voerendaal/2025-12-24.json +64 -0
  366. data/data/regulation/nl/gemeentelijke_verordening/voorne_aan_zee/2024-12-25.json +117 -0
  367. data/data/regulation/nl/gemeentelijke_verordening/voorne_aan_zee/2025-11-18.json +117 -0
  368. data/data/regulation/nl/gemeentelijke_verordening/voorschoten/2024-11-28.json +57 -0
  369. data/data/regulation/nl/gemeentelijke_verordening/voorschoten/2025-11-25.json +57 -0
  370. data/data/regulation/nl/gemeentelijke_verordening/voorst/2025-01-01.json +147 -0
  371. data/data/regulation/nl/gemeentelijke_verordening/voorst/2026-01-01.json +147 -0
  372. data/data/regulation/nl/gemeentelijke_verordening/waadhoeke/2024-12-25.json +77 -0
  373. data/data/regulation/nl/gemeentelijke_verordening/waalre/2024-01-01.json +64 -0
  374. data/data/regulation/nl/gemeentelijke_verordening/waalre/2025-01-01.json +64 -0
  375. data/data/regulation/nl/gemeentelijke_verordening/waalre/2026-01-01.json +64 -0
  376. data/data/regulation/nl/gemeentelijke_verordening/waddinxveen/2024-12-20.json +64 -0
  377. data/data/regulation/nl/gemeentelijke_verordening/waddinxveen/2025-12-19.json +64 -0
  378. data/data/regulation/nl/gemeentelijke_verordening/wageningen/2024-12-14.json +59 -0
  379. data/data/regulation/nl/gemeentelijke_verordening/wageningen/2025-12-23.json +67 -0
  380. data/data/regulation/nl/gemeentelijke_verordening/wassenaar/2024-12-21.json +107 -0
  381. data/data/regulation/nl/gemeentelijke_verordening/wassenaar/2025-12-06.json +107 -0
  382. data/data/regulation/nl/gemeentelijke_verordening/waterland/2024-12-28.json +73 -0
  383. data/data/regulation/nl/gemeentelijke_verordening/waterland/2025-12-30.json +73 -0
  384. data/data/regulation/nl/gemeentelijke_verordening/weert/2024-12-24.json +108 -0
  385. data/data/regulation/nl/gemeentelijke_verordening/weert/2025-12-20.json +108 -0
  386. data/data/regulation/nl/gemeentelijke_verordening/west_maas_en_waal/2024-12-20.json +73 -0
  387. data/data/regulation/nl/gemeentelijke_verordening/west_maas_en_waal/2025-12-20.json +73 -0
  388. data/data/regulation/nl/gemeentelijke_verordening/westerveld/2024-12-28.json +158 -0
  389. data/data/regulation/nl/gemeentelijke_verordening/westerwolde/2025-01-01.json +61 -0
  390. data/data/regulation/nl/gemeentelijke_verordening/wierden/2025-12-18.json +66 -0
  391. data/data/regulation/nl/gemeentelijke_verordening/wijk_bij_duurstede/2024-12-21.json +100 -0
  392. data/data/regulation/nl/gemeentelijke_verordening/wijk_bij_duurstede/2025-12-20.json +100 -0
  393. data/data/regulation/nl/gemeentelijke_verordening/winterswijk/2024-12-04.json +131 -0
  394. data/data/regulation/nl/gemeentelijke_verordening/winterswijk/2025-11-08.json +131 -0
  395. data/data/regulation/nl/gemeentelijke_verordening/woensdrecht/2025-01-01.json +64 -0
  396. data/data/regulation/nl/gemeentelijke_verordening/wormerland/2024-12-20.json +64 -0
  397. data/data/regulation/nl/gemeentelijke_verordening/wormerland/2025-12-30.json +64 -0
  398. data/data/regulation/nl/gemeentelijke_verordening/woudenberg/2024-12-25.json +64 -0
  399. data/data/regulation/nl/gemeentelijke_verordening/woudenberg/2025-12-24.json +64 -0
  400. data/data/regulation/nl/gemeentelijke_verordening/zaanstad/2025-12-04.json +179 -0
  401. data/data/regulation/nl/gemeentelijke_verordening/zaltbommel/2024-01-01.json +170 -0
  402. data/data/regulation/nl/gemeentelijke_verordening/zaltbommel/2025-01-01.json +170 -0
  403. data/data/regulation/nl/gemeentelijke_verordening/zaltbommel/2026-01-01.json +170 -0
  404. data/data/regulation/nl/gemeentelijke_verordening/zandvoort/2024-12-24.json +66 -0
  405. data/data/regulation/nl/gemeentelijke_verordening/zandvoort/2025-12-23.json +70 -0
  406. data/data/regulation/nl/gemeentelijke_verordening/zeewolde/2024-12-25.json +111 -0
  407. data/data/regulation/nl/gemeentelijke_verordening/zeewolde/2025-12-24.json +111 -0
  408. data/data/regulation/nl/gemeentelijke_verordening/zeist/2025-12-25.json +108 -0
  409. data/data/regulation/nl/gemeentelijke_verordening/zoetermeer/2024-12-20.json +65 -0
  410. data/data/regulation/nl/gemeentelijke_verordening/zoetermeer/2025-12-19.json +65 -0
  411. data/data/regulation/nl/gemeentelijke_verordening/zuidplas/2026-01-01.json +64 -0
  412. data/data/regulation/nl/gemeentelijke_verordening/zundert/2024-12-19.json +70 -0
  413. data/data/regulation/nl/gemeentelijke_verordening/zundert/2025-12-16.json +70 -0
  414. data/data/regulation/nl/gemeentelijke_verordening/zwartewaterland/2024-11-20.json +73 -0
  415. data/data/regulation/nl/gemeentelijke_verordening/zwartewaterland/2025-11-25.json +73 -0
  416. data/data/regulation/nl/gemeentelijke_verordening/zwolle/2024-12-24.json +110 -0
  417. data/data/regulation/nl/gemeentelijke_verordening/zwolle/2025-12-19.json +110 -0
  418. data/lib/tax_conformance_kit/taxctl_client.rb +1 -1
  419. data/lib/tax_conformance_kit/version.rb +1 -1
  420. data/lib/tax_conformance_kit.rb +16 -0
  421. metadata +419 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a30a2eddf0c383ace1ac9ad16038f9dd531c92ef577cb95c0a8c01f5ec6a7baf
4
- data.tar.gz: 21061dff0f74ab49a0f194304e645d2c015e71352b7bdd32f9e4d47454b7376a
3
+ metadata.gz: 6f7af37d7149859cbb18692e8040e9a710027fbef9f0716eacca6ed9c491c301
4
+ data.tar.gz: 2dc3af404778b6b2e4c8939aa3e5b49b8fb2040ec0cba3ffd07987dea906e294
5
5
  SHA512:
6
- metadata.gz: 5dd8edd5f14f151ace599d3cc088b85ee8be81326280e4d0752c295578c8b665a0257aa87f87536698595a668ddab06f984d33dae4d380e3d331f68d80e89268
7
- data.tar.gz: edd8bcb53f6740ee483389afc0e799f6e54dfc16215e14f5dd7220372bfbbe734eef85cad9e9e4873dd2f227484862964483afa1bfdef4ec56f37403d5e1fbb4
6
+ metadata.gz: 9fb939964451a20c444da3f8ecab844203cca7472a11eb331229c8bb1623cc5ad5fa7c18bcec40abe0e1040f3ac5c03354eb4f17e186e6331dc34f08688d9a76
7
+ data.tar.gz: 5fbc537124e7698d4276b0b5b13d4ffe0197d437f90160283640a37c1274e5cfb7e0e996e9ef82483fdde2c0ec8fc12516de7d33573d815569f4ecfc021f6f93
data/README.md CHANGED
@@ -4,7 +4,13 @@ Thin Ruby client for the `tax-conformance-kit` Go runtime.
4
4
 
5
5
  ## Install
6
6
 
7
- Path dependency:
7
+ Bundler (RubyGems):
8
+
9
+ ```ruby
10
+ gem "tax_conformance_kit", "~> 0.2.0"
11
+ ```
12
+
13
+ Path dependency (for local development):
8
14
 
9
15
  ```ruby
10
16
  gem "tax_conformance_kit", path: "../tax-conformance-kit/clients/ruby"
@@ -13,28 +19,32 @@ gem "tax_conformance_kit", path: "../tax-conformance-kit/clients/ruby"
13
19
  Git dependency:
14
20
 
15
21
  ```ruby
16
- gem "tax_conformance_kit", git: "https://github.com/ramones/tax-conformance-kit.git", glob: "clients/ruby/*.gemspec"
22
+ gem "tax_conformance_kit", git: "https://github.com/odeva-labs/tax-conformance-kit.git", glob: "clients/ruby/*.gemspec"
17
23
  ```
18
24
 
19
25
  ## Usage
20
26
 
27
+ Zero-config — the gem ships with the bundled `taxctl` binary and the kind registry:
28
+
21
29
  ```ruby
22
30
  require "tax_conformance_kit"
23
31
 
24
- client = TaxConformanceKit::TaxctlClient.new(
25
- command: ["/path/to/taxctl"],
26
- registry_path: "/path/to/kind-registry.v1.json"
27
- )
28
-
29
- response = client.evaluate(
30
- ruleset: ruleset_hash,
31
- booking_input: booking_input_hash
32
- )
32
+ client = TaxConformanceKit::TaxctlClient.new
33
+ response = client.evaluate(ruleset: ruleset_hash, booking_input: booking_input_hash)
33
34
  ```
34
35
 
36
+ ### Advanced: override `command:`
37
+
35
38
  `command:` may be either:
36
39
 
37
40
  - a binary path string, for example `"/usr/local/bin/taxctl"`
38
41
  - a full argv array, for example `["go", "run", "./cmd/taxctl"]`
39
42
 
43
+ ```ruby
44
+ client = TaxConformanceKit::TaxctlClient.new(
45
+ command: ["/path/to/taxctl"],
46
+ registry_path: "/path/to/kind-registry.v1.json"
47
+ )
48
+ ```
49
+
40
50
  The client does not implement the evaluator. It shells out to the canonical Go runtime and exchanges JSON over stdin/stdout.
data/bin/taxctl ADDED
Binary file
@@ -0,0 +1,316 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://tax-conformance.dev/schemas/kind-registry.v1.json",
4
+ "title": "KindRegistry",
5
+ "description": "Canonical list of calculation.kind and predicate.kind values with their params schemas. Every engine port MUST reject rulesets referencing kinds not present here. Ports MAY implement a subset, but MUST fail loudly on unimplemented-but-registered kinds encountered during evaluation.",
6
+ "type": "object",
7
+ "required": ["registry_version", "calculations", "predicates"],
8
+ "properties": {
9
+ "registry_version": { "const": "v1" },
10
+ "calculations": {
11
+ "type": "object",
12
+ "additionalProperties": { "$ref": "#/$defs/KindEntry" }
13
+ },
14
+ "predicates": {
15
+ "type": "object",
16
+ "additionalProperties": { "$ref": "#/$defs/KindEntry" }
17
+ }
18
+ },
19
+ "$defs": {
20
+ "KindEntry": {
21
+ "type": "object",
22
+ "required": ["description", "params_schema"],
23
+ "properties": {
24
+ "description": { "type": "string" },
25
+ "since": { "type": "string", "description": "Schema version when introduced" },
26
+ "params_schema": {
27
+ "type": "object",
28
+ "description": "JSON Schema (draft 2020-12) for the kind's params object"
29
+ },
30
+ "examples": {
31
+ "type": "array",
32
+ "items": { "type": "object" }
33
+ }
34
+ }
35
+ }
36
+ },
37
+
38
+ "registry_version": "v1",
39
+ "calculations": {
40
+ "generic.per_night": {
41
+ "description": "Flat amount per night.",
42
+ "since": "v1",
43
+ "params_schema": {
44
+ "type": "object",
45
+ "required": ["amount"],
46
+ "properties": {
47
+ "amount": { "type": "number", "minimum": 0 }
48
+ },
49
+ "additionalProperties": false
50
+ }
51
+ },
52
+ "generic.per_person_per_night": {
53
+ "description": "Flat amount per guest per night. Guests = adults + children unless a predicate narrows the set.",
54
+ "since": "v1",
55
+ "params_schema": {
56
+ "type": "object",
57
+ "required": ["amount"],
58
+ "properties": {
59
+ "amount": { "type": "number", "minimum": 0 }
60
+ },
61
+ "additionalProperties": false
62
+ }
63
+ },
64
+ "generic.fixed_amount": {
65
+ "description": "Flat amount per booking.",
66
+ "since": "v1",
67
+ "params_schema": {
68
+ "type": "object",
69
+ "required": ["amount"],
70
+ "properties": {
71
+ "amount": { "type": "number", "minimum": 0 }
72
+ },
73
+ "additionalProperties": false
74
+ }
75
+ },
76
+ "generic.percentage_of_base": {
77
+ "description": "Percentage of a configurable base. IMPORTANT: 'accommodation_fee_exclusive_of_tax' means the taxable base excludes the tourist tax itself (NL ordinances commonly define it this way).",
78
+ "since": "v1",
79
+ "params_schema": {
80
+ "type": "object",
81
+ "required": ["rate_pct", "base"],
82
+ "properties": {
83
+ "rate_pct": { "type": "number", "minimum": 0 },
84
+ "base": {
85
+ "type": "string",
86
+ "enum": [
87
+ "accommodation_fee_exclusive_of_tax",
88
+ "gross_booking_total",
89
+ "subtotal"
90
+ ]
91
+ }
92
+ },
93
+ "additionalProperties": false
94
+ }
95
+ },
96
+ "nl.tiered_by_stay_duration": {
97
+ "description": "Step function over stay length in nights. Tiers are closed-open on max_nights; final tier may omit max_nights. Each tier's amount is the total for the booking (not per-night).",
98
+ "since": "v1",
99
+ "params_schema": {
100
+ "type": "object",
101
+ "required": ["tiers"],
102
+ "properties": {
103
+ "tiers": {
104
+ "type": "array",
105
+ "minItems": 1,
106
+ "items": {
107
+ "type": "object",
108
+ "required": ["amount"],
109
+ "properties": {
110
+ "min_nights": { "type": "integer", "minimum": 0 },
111
+ "max_nights": { "type": "integer", "minimum": 1 },
112
+ "amount": { "type": "number", "minimum": 0 }
113
+ },
114
+ "additionalProperties": false
115
+ }
116
+ }
117
+ },
118
+ "additionalProperties": false
119
+ },
120
+ "examples": [
121
+ {
122
+ "tiers": [
123
+ { "max_nights": 30, "amount": 0 },
124
+ { "min_nights": 30, "max_nights": 120, "amount": 50 },
125
+ { "min_nights": 120, "max_nights": 240, "amount": 100 },
126
+ { "min_nights": 240, "amount": 150 }
127
+ ]
128
+ }
129
+ ]
130
+ },
131
+ "nl.fixed_per_pitch_per_year": {
132
+ "description": "Per-pitch annual levy. Requires pitch_count on input. Primarily used with the annual_operator_assessment mode; included here so that per-booking engines can at least validate and reject explicitly.",
133
+ "since": "v1",
134
+ "params_schema": {
135
+ "type": "object",
136
+ "required": ["amount_per_pitch"],
137
+ "properties": {
138
+ "amount_per_pitch": { "type": "number", "minimum": 0 },
139
+ "season": {
140
+ "type": "string",
141
+ "enum": ["full_year", "pre_season", "post_season", "per_month"]
142
+ }
143
+ },
144
+ "additionalProperties": false
145
+ }
146
+ },
147
+ "nl.forfait_per_person_per_night": {
148
+ "description": "Per-person-per-night rate applied to DEEMED inputs (nights and persons derived from ordinance-defined forfaits, e.g. Roerdalen: yearly pitch = 80 nights x 2.4 persons). Concrete forfait table lives in params; engine multiplies rate * deemed_nights * deemed_persons * pitch_count.",
149
+ "since": "v1",
150
+ "params_schema": {
151
+ "type": "object",
152
+ "required": ["amount", "forfait"],
153
+ "properties": {
154
+ "amount": { "type": "number", "minimum": 0 },
155
+ "forfait": {
156
+ "type": "object",
157
+ "required": ["nights", "persons_per_pitch"],
158
+ "properties": {
159
+ "nights": { "type": "number", "minimum": 0 },
160
+ "persons_per_pitch": { "type": "number", "minimum": 0 },
161
+ "regime": {
162
+ "type": "string",
163
+ "enum": ["yearly_pitch", "seasonal_pitch", "bed_rental"]
164
+ }
165
+ },
166
+ "additionalProperties": false
167
+ }
168
+ },
169
+ "additionalProperties": false
170
+ }
171
+ }
172
+ },
173
+ "predicates": {
174
+ "guest.resident_of_same_municipality": {
175
+ "description": "True when main_guest_municipality_code equals property_municipality_code (case-insensitive).",
176
+ "since": "v1",
177
+ "params_schema": { "type": "object", "additionalProperties": false }
178
+ },
179
+ "guest.age_below": {
180
+ "description": "True when at least one (or N, if params.count set) guest is younger than max_age on the reference night.",
181
+ "since": "v1",
182
+ "params_schema": {
183
+ "type": "object",
184
+ "required": ["max_age"],
185
+ "properties": {
186
+ "max_age": { "type": "integer", "minimum": 0 },
187
+ "night_index": {
188
+ "type": "string",
189
+ "enum": ["first", "any", "each"],
190
+ "default": "any",
191
+ "description": "Which night the age is evaluated against. Roerdalen 'under 2 first night' uses 'first'."
192
+ },
193
+ "count": { "type": "integer", "minimum": 1, "default": 1 }
194
+ },
195
+ "additionalProperties": false
196
+ }
197
+ },
198
+ "stay.purpose_in": {
199
+ "description": "True when booking_input.stay_purpose is in the allowed list.",
200
+ "since": "v1",
201
+ "params_schema": {
202
+ "type": "object",
203
+ "required": ["values"],
204
+ "properties": {
205
+ "values": {
206
+ "type": "array",
207
+ "items": {
208
+ "type": "string",
209
+ "enum": ["school_group", "youth_group", "leisure", "business", "medical", "asylum", "government_ordered"]
210
+ },
211
+ "minItems": 1
212
+ }
213
+ },
214
+ "additionalProperties": false
215
+ }
216
+ },
217
+ "stay.wtza_care_institution": {
218
+ "description": "Stay is at a Wtza-registered care institution. Short-circuit exemption in all four sampled NL ordinances.",
219
+ "since": "v1",
220
+ "params_schema": { "type": "object", "additionalProperties": false }
221
+ },
222
+ "stay.coa_asylum_housing": {
223
+ "description": "Stay is COA asylum-seeker housing.",
224
+ "since": "v1",
225
+ "params_schema": { "type": "object", "additionalProperties": false }
226
+ },
227
+ "stay.accommodation_brought_by": {
228
+ "description": "Guest brings their own accommodation vs operator provides (Breda camping vs bungalow distinction).",
229
+ "since": "v1",
230
+ "params_schema": {
231
+ "type": "object",
232
+ "required": ["value"],
233
+ "properties": {
234
+ "value": { "type": "string", "enum": ["guest", "operator"] }
235
+ },
236
+ "additionalProperties": false
237
+ }
238
+ },
239
+ "stay.pricing_arrangement": {
240
+ "description": "Operator-elected pricing regime. 'per_night' = charged per person per night; 'arrangement' = tiered flat amount by stay-duration bucket. Breda allows camping operators to elect either. Input must assert the chosen regime.",
241
+ "since": "v1",
242
+ "params_schema": {
243
+ "type": "object",
244
+ "required": ["value"],
245
+ "properties": {
246
+ "value": { "type": "string", "enum": ["per_night", "arrangement"] }
247
+ },
248
+ "additionalProperties": false
249
+ }
250
+ },
251
+ "stay.supervised_minor_group": {
252
+ "description": "True when the booking is an organized minor group with enough minors and adult supervisors. Breda exempts groups of more than 10 minors accompanied by 18+ supervisors.",
253
+ "since": "v1",
254
+ "params_schema": {
255
+ "type": "object",
256
+ "required": ["min_minors", "min_supervisors", "supervisor_min_age"],
257
+ "properties": {
258
+ "min_minors": { "type": "integer", "minimum": 1 },
259
+ "min_supervisors": { "type": "integer", "minimum": 1 },
260
+ "supervisor_min_age": { "type": "integer", "minimum": 0 },
261
+ "allowed_purposes": {
262
+ "type": "array",
263
+ "items": {
264
+ "type": "string",
265
+ "enum": ["school_group", "youth_group", "leisure", "business", "medical", "asylum", "government_ordered"]
266
+ },
267
+ "minItems": 1
268
+ }
269
+ },
270
+ "additionalProperties": false
271
+ }
272
+ },
273
+ "stay.seasonal_window": {
274
+ "description": "Stay date falls within a recurring month-day window (wraps year). Schouwen-Duiveland seasonal surcharges.",
275
+ "since": "v1",
276
+ "params_schema": {
277
+ "type": "object",
278
+ "required": ["start_mmdd", "end_mmdd"],
279
+ "properties": {
280
+ "start_mmdd": { "type": "string", "pattern": "^\\d{2}-\\d{2}$" },
281
+ "end_mmdd": { "type": "string", "pattern": "^\\d{2}-\\d{2}$" }
282
+ },
283
+ "additionalProperties": false
284
+ }
285
+ },
286
+ "pitch.ownership_restriction": {
287
+ "description": "Schouwen-Duiveland: pitch reserved for owner + household; non-owner guests excluded.",
288
+ "since": "v1",
289
+ "params_schema": {
290
+ "type": "object",
291
+ "properties": {
292
+ "allowed": {
293
+ "type": "array",
294
+ "items": { "type": "string", "enum": ["owner", "owner_household"] }
295
+ }
296
+ },
297
+ "additionalProperties": false
298
+ }
299
+ },
300
+ "cross_tax.already_subject_to": {
301
+ "description": "Booking is already subject to another named tax (Roerdalen: forensenbelasting). Engine does not verify; input must assert it.",
302
+ "since": "v1",
303
+ "params_schema": {
304
+ "type": "object",
305
+ "required": ["tax"],
306
+ "properties": {
307
+ "tax": {
308
+ "type": "string",
309
+ "enum": ["forensenbelasting", "watertoeristenbelasting", "vat", "corporate"]
310
+ }
311
+ },
312
+ "additionalProperties": false
313
+ }
314
+ }
315
+ }
316
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "id": "nl-aa_en_hunze-2024-11-29",
3
+ "domain": "tourist_tax",
4
+ "lifecycle": "draft",
5
+ "jurisdiction": {
6
+ "country_code": "NL",
7
+ "country_name": "Netherlands",
8
+ "region_code": "",
9
+ "region_name": ""
10
+ },
11
+ "notes": "Auto-generated from CVDR publication analysis. Source-backed draft only; review required before conformance use.",
12
+ "assessment_policy": {
13
+ "period": "calendar_year",
14
+ "minimum_assessment_amount": {
15
+ "amount": 10,
16
+ "currency": "EUR"
17
+ },
18
+ "notes": "Assessment period inferred from the belastingtijdvak article. Minimum assessment amount inferred from the aanslaggrens article."
19
+ },
20
+ "rules": [
21
+ {
22
+ "id": "2024-11-29-rate-1",
23
+ "municipality_code": "1680",
24
+ "municipality_name": "Aa en Hunze",
25
+ "region_code": "",
26
+ "valid_from": "2024-11-29",
27
+ "valid_to": "2025-11-27",
28
+ "applies_to": {
29
+ "accommodation_types": []
30
+ },
31
+ "calculation": {
32
+ "kind": "generic.per_person_per_night",
33
+ "params": {
34
+ "amount": 1.55
35
+ },
36
+ "currency": "EUR"
37
+ },
38
+ "predicates": [],
39
+ "exemptions": [
40
+ {
41
+ "kind": "guest.resident_of_same_municipality",
42
+ "params": null
43
+ },
44
+ {
45
+ "kind": "stay.wtza_care_institution",
46
+ "params": null
47
+ },
48
+ {
49
+ "kind": "stay.coa_asylum_housing",
50
+ "params": null
51
+ }
52
+ ],
53
+ "source": {
54
+ "source_url": "https://lokaleregelgeving.overheid.nl/CVDR727133/1",
55
+ "cvdr_id": "CVDR727133",
56
+ "scraped_at": "2026-04-17T12:09:56Z",
57
+ "reviewed_at": null,
58
+ "reviewer": ""
59
+ },
60
+ "confidence": "scraped",
61
+ "notes": "Generated from tariff article. Reviewer must confirm category boundaries and exclusions. Evidence articles: 6"
62
+ }
63
+ ]
64
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "id": "nl-aa_en_hunze-2025-11-28",
3
+ "domain": "tourist_tax",
4
+ "lifecycle": "draft",
5
+ "jurisdiction": {
6
+ "country_code": "NL",
7
+ "country_name": "Netherlands",
8
+ "region_code": "",
9
+ "region_name": ""
10
+ },
11
+ "notes": "Auto-generated from CVDR publication analysis. Source-backed draft only; review required before conformance use.",
12
+ "assessment_policy": {
13
+ "minimum_assessment_amount": {
14
+ "amount": 10,
15
+ "currency": "EUR"
16
+ },
17
+ "notes": "Assessment period inferred from the belastingtijdvak article. Minimum assessment amount inferred from the aanslaggrens article.",
18
+ "period": "calendar_year"
19
+ },
20
+ "rules": [
21
+ {
22
+ "applies_to": {
23
+ "accommodation_types": []
24
+ },
25
+ "calculation": {
26
+ "currency": "EUR",
27
+ "kind": "generic.per_person_per_night",
28
+ "params": {
29
+ "amount": 1.55
30
+ }
31
+ },
32
+ "confidence": "scraped",
33
+ "exemptions": [
34
+ {
35
+ "kind": "guest.resident_of_same_municipality",
36
+ "params": null
37
+ },
38
+ {
39
+ "kind": "stay.wtza_care_institution",
40
+ "params": null
41
+ },
42
+ {
43
+ "kind": "stay.coa_asylum_housing",
44
+ "params": null
45
+ }
46
+ ],
47
+ "id": "2025-11-28-rate-1",
48
+ "municipality_code": "1680",
49
+ "municipality_name": "Aa en Hunze",
50
+ "notes": "Generated from tariff article. Reviewer must confirm category boundaries and exclusions. Evidence articles: 6",
51
+ "predicates": [],
52
+ "region_code": "",
53
+ "source": {
54
+ "cvdr_id": "CVDR747131",
55
+ "reviewed_at": null,
56
+ "reviewer": "",
57
+ "scraped_at": "2026-04-17T12:09:56Z",
58
+ "source_url": "https://lokaleregelgeving.overheid.nl/CVDR747131/1"
59
+ },
60
+ "valid_from": "2025-11-28",
61
+ "valid_to": null
62
+ }
63
+ ]
64
+ }
@@ -0,0 +1,70 @@
1
+ {
2
+ "id": "nl-aalten-2024-12-23",
3
+ "domain": "tourist_tax",
4
+ "lifecycle": "draft",
5
+ "jurisdiction": {
6
+ "country_code": "NL",
7
+ "country_name": "Netherlands",
8
+ "region_code": "",
9
+ "region_name": ""
10
+ },
11
+ "notes": "Auto-generated from CVDR publication analysis. Source-backed draft only; review required before conformance use.",
12
+ "assessment_policy": {
13
+ "period": "calendar_year",
14
+ "minimum_assessment_amount": {
15
+ "amount": 10,
16
+ "currency": "EUR"
17
+ },
18
+ "notes": "Assessment period inferred from the belastingtijdvak article. Minimum assessment amount inferred from the aanslaggrens article."
19
+ },
20
+ "rules": [
21
+ {
22
+ "id": "2024-12-23-rate-1",
23
+ "municipality_code": "0197",
24
+ "municipality_name": "Aalten",
25
+ "region_code": "",
26
+ "valid_from": "2024-12-23",
27
+ "valid_to": "2025-12-19",
28
+ "applies_to": {
29
+ "accommodation_types": []
30
+ },
31
+ "calculation": {
32
+ "kind": "generic.per_person_per_night",
33
+ "params": {
34
+ "amount": 1.55
35
+ },
36
+ "currency": "EUR"
37
+ },
38
+ "predicates": [],
39
+ "exemptions": [
40
+ {
41
+ "kind": "guest.resident_of_same_municipality",
42
+ "params": null
43
+ },
44
+ {
45
+ "kind": "stay.wtza_care_institution",
46
+ "params": null
47
+ },
48
+ {
49
+ "kind": "stay.coa_asylum_housing",
50
+ "params": null
51
+ },
52
+ {
53
+ "kind": "cross_tax.already_subject_to",
54
+ "params": {
55
+ "tax": "forensenbelasting"
56
+ }
57
+ }
58
+ ],
59
+ "source": {
60
+ "source_url": "https://lokaleregelgeving.overheid.nl/CVDR730806/1",
61
+ "cvdr_id": "CVDR730806",
62
+ "scraped_at": "2026-04-17T12:09:56Z",
63
+ "reviewed_at": null,
64
+ "reviewer": ""
65
+ },
66
+ "confidence": "scraped",
67
+ "notes": "Generated from tariff article. Reviewer must confirm category boundaries and exclusions. Evidence articles: 6"
68
+ }
69
+ ]
70
+ }
@@ -0,0 +1,70 @@
1
+ {
2
+ "id": "nl-aalten-2025-12-20",
3
+ "domain": "tourist_tax",
4
+ "lifecycle": "draft",
5
+ "jurisdiction": {
6
+ "country_code": "NL",
7
+ "country_name": "Netherlands",
8
+ "region_code": "",
9
+ "region_name": ""
10
+ },
11
+ "notes": "Auto-generated from CVDR publication analysis. Source-backed draft only; review required before conformance use.",
12
+ "assessment_policy": {
13
+ "minimum_assessment_amount": {
14
+ "amount": 10,
15
+ "currency": "EUR"
16
+ },
17
+ "notes": "Assessment period inferred from the belastingtijdvak article. Minimum assessment amount inferred from the aanslaggrens article.",
18
+ "period": "calendar_year"
19
+ },
20
+ "rules": [
21
+ {
22
+ "applies_to": {
23
+ "accommodation_types": []
24
+ },
25
+ "calculation": {
26
+ "currency": "EUR",
27
+ "kind": "generic.per_person_per_night",
28
+ "params": {
29
+ "amount": 1.55
30
+ }
31
+ },
32
+ "confidence": "scraped",
33
+ "exemptions": [
34
+ {
35
+ "kind": "guest.resident_of_same_municipality",
36
+ "params": null
37
+ },
38
+ {
39
+ "kind": "stay.wtza_care_institution",
40
+ "params": null
41
+ },
42
+ {
43
+ "kind": "stay.coa_asylum_housing",
44
+ "params": null
45
+ },
46
+ {
47
+ "kind": "cross_tax.already_subject_to",
48
+ "params": {
49
+ "tax": "forensenbelasting"
50
+ }
51
+ }
52
+ ],
53
+ "id": "2025-12-20-rate-1",
54
+ "municipality_code": "0197",
55
+ "municipality_name": "Aalten",
56
+ "notes": "Generated from tariff article. Reviewer must confirm category boundaries and exclusions. Evidence articles: 6",
57
+ "predicates": [],
58
+ "region_code": "",
59
+ "source": {
60
+ "cvdr_id": "CVDR751414",
61
+ "reviewed_at": null,
62
+ "reviewer": "",
63
+ "scraped_at": "2026-04-17T12:09:56Z",
64
+ "source_url": "https://lokaleregelgeving.overheid.nl/CVDR751414/1"
65
+ },
66
+ "valid_from": "2025-12-20",
67
+ "valid_to": null
68
+ }
69
+ ]
70
+ }