warp-hr 0.3.0__tar.gz

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 (309) hide show
  1. warp_hr-0.3.0/.claude/skills/warp-python-sdk/SKILL.md +77 -0
  2. warp_hr-0.3.0/.github/workflows/release-please.yml +127 -0
  3. warp_hr-0.3.0/.github/workflows/release-title-edit.yml +93 -0
  4. warp_hr-0.3.0/.github/workflows/sdk-ci.yml +27 -0
  5. warp_hr-0.3.0/.github/workflows/sdk-release.yml +34 -0
  6. warp_hr-0.3.0/.gitignore +10 -0
  7. warp_hr-0.3.0/.release-please-manifest.json +3 -0
  8. warp_hr-0.3.0/CHANGELOG.md +117 -0
  9. warp_hr-0.3.0/LICENSE +201 -0
  10. warp_hr-0.3.0/PKG-INFO +203 -0
  11. warp_hr-0.3.0/README.md +183 -0
  12. warp_hr-0.3.0/SECURITY.md +19 -0
  13. warp_hr-0.3.0/SKILL.md +77 -0
  14. warp_hr-0.3.0/VERSIONING.md +101 -0
  15. warp_hr-0.3.0/api.md +1112 -0
  16. warp_hr-0.3.0/pyproject.toml +34 -0
  17. warp_hr-0.3.0/release-please-config.json +46 -0
  18. warp_hr-0.3.0/scalar-sdk.manifest.json +32432 -0
  19. warp_hr-0.3.0/src/warp_hr/__init__.py +92 -0
  20. warp_hr-0.3.0/src/warp_hr/_base_client.py +2235 -0
  21. warp_hr-0.3.0/src/warp_hr/_client.py +1020 -0
  22. warp_hr-0.3.0/src/warp_hr/_compat.py +226 -0
  23. warp_hr-0.3.0/src/warp_hr/_constants.py +14 -0
  24. warp_hr-0.3.0/src/warp_hr/_event_handler.py +85 -0
  25. warp_hr-0.3.0/src/warp_hr/_exceptions.py +145 -0
  26. warp_hr-0.3.0/src/warp_hr/_files.py +173 -0
  27. warp_hr-0.3.0/src/warp_hr/_models.py +962 -0
  28. warp_hr-0.3.0/src/warp_hr/_qs.py +149 -0
  29. warp_hr-0.3.0/src/warp_hr/_resource.py +43 -0
  30. warp_hr-0.3.0/src/warp_hr/_response.py +840 -0
  31. warp_hr-0.3.0/src/warp_hr/_send_queue.py +90 -0
  32. warp_hr-0.3.0/src/warp_hr/_streaming.py +350 -0
  33. warp_hr-0.3.0/src/warp_hr/_types.py +274 -0
  34. warp_hr-0.3.0/src/warp_hr/_utils/__init__.py +64 -0
  35. warp_hr-0.3.0/src/warp_hr/_utils/_compat.py +45 -0
  36. warp_hr-0.3.0/src/warp_hr/_utils/_datetime_parse.py +136 -0
  37. warp_hr-0.3.0/src/warp_hr/_utils/_json.py +35 -0
  38. warp_hr-0.3.0/src/warp_hr/_utils/_logs.py +25 -0
  39. warp_hr-0.3.0/src/warp_hr/_utils/_path.py +127 -0
  40. warp_hr-0.3.0/src/warp_hr/_utils/_proxy.py +65 -0
  41. warp_hr-0.3.0/src/warp_hr/_utils/_reflection.py +42 -0
  42. warp_hr-0.3.0/src/warp_hr/_utils/_resources_proxy.py +24 -0
  43. warp_hr-0.3.0/src/warp_hr/_utils/_streams.py +12 -0
  44. warp_hr-0.3.0/src/warp_hr/_utils/_sync.py +58 -0
  45. warp_hr-0.3.0/src/warp_hr/_utils/_transform.py +472 -0
  46. warp_hr-0.3.0/src/warp_hr/_utils/_typing.py +156 -0
  47. warp_hr-0.3.0/src/warp_hr/_utils/_utils.py +428 -0
  48. warp_hr-0.3.0/src/warp_hr/_version.py +4 -0
  49. warp_hr-0.3.0/src/warp_hr/_webhook_verify.py +119 -0
  50. warp_hr-0.3.0/src/warp_hr/py.typed +0 -0
  51. warp_hr-0.3.0/src/warp_hr/resources/__init__.py +207 -0
  52. warp_hr-0.3.0/src/warp_hr/resources/bank_accounts.py +298 -0
  53. warp_hr-0.3.0/src/warp_hr/resources/benefits/__init__.py +61 -0
  54. warp_hr-0.3.0/src/warp_hr/resources/benefits/benefits.py +153 -0
  55. warp_hr-0.3.0/src/warp_hr/resources/benefits/deductions.py +745 -0
  56. warp_hr-0.3.0/src/warp_hr/resources/benefits/health_plans.py +335 -0
  57. warp_hr-0.3.0/src/warp_hr/resources/benefits/retirement_plans.py +545 -0
  58. warp_hr-0.3.0/src/warp_hr/resources/company.py +145 -0
  59. warp_hr-0.3.0/src/warp_hr/resources/custom_fields.py +1422 -0
  60. warp_hr-0.3.0/src/warp_hr/resources/departments.py +385 -0
  61. warp_hr-0.3.0/src/warp_hr/resources/i9_verifications.py +296 -0
  62. warp_hr-0.3.0/src/warp_hr/resources/levels.py +145 -0
  63. warp_hr-0.3.0/src/warp_hr/resources/offers.py +692 -0
  64. warp_hr-0.3.0/src/warp_hr/resources/pay_rates/__init__.py +33 -0
  65. warp_hr-0.3.0/src/warp_hr/resources/pay_rates/pay_rates.py +339 -0
  66. warp_hr-0.3.0/src/warp_hr/resources/pay_rates/regular.py +440 -0
  67. warp_hr-0.3.0/src/warp_hr/resources/pay_splits.py +305 -0
  68. warp_hr-0.3.0/src/warp_hr/resources/payroll.py +615 -0
  69. warp_hr-0.3.0/src/warp_hr/resources/time_off/__init__.py +33 -0
  70. warp_hr-0.3.0/src/warp_hr/resources/time_off/policies.py +272 -0
  71. warp_hr-0.3.0/src/warp_hr/resources/time_off/time_off.py +541 -0
  72. warp_hr-0.3.0/src/warp_hr/resources/webhooks.py +165 -0
  73. warp_hr-0.3.0/src/warp_hr/resources/workers.py +1731 -0
  74. warp_hr-0.3.0/src/warp_hr/resources/workplaces.py +406 -0
  75. warp_hr-0.3.0/src/warp_hr/types/__init__.py +225 -0
  76. warp_hr-0.3.0/src/warp_hr/types/bank_account_list_params.py +27 -0
  77. warp_hr-0.3.0/src/warp_hr/types/bank_account_list_response.py +19 -0
  78. warp_hr-0.3.0/src/warp_hr/types/benefits/__init__.py +33 -0
  79. warp_hr-0.3.0/src/warp_hr/types/benefits/deduction_create_params.py +279 -0
  80. warp_hr-0.3.0/src/warp_hr/types/benefits/deduction_list_params.py +71 -0
  81. warp_hr-0.3.0/src/warp_hr/types/benefits/deduction_list_response.py +19 -0
  82. warp_hr-0.3.0/src/warp_hr/types/benefits/deduction_update_params.py +221 -0
  83. warp_hr-0.3.0/src/warp_hr/types/benefits/fixed_amount_benefit_calculation.py +27 -0
  84. warp_hr-0.3.0/src/warp_hr/types/benefits/health_plan_list_params.py +43 -0
  85. warp_hr-0.3.0/src/warp_hr/types/benefits/health_plan_list_response.py +19 -0
  86. warp_hr-0.3.0/src/warp_hr/types/benefits/health_plan_reference.py +19 -0
  87. warp_hr-0.3.0/src/warp_hr/types/benefits/percentage_benefit_calculation.py +23 -0
  88. warp_hr-0.3.0/src/warp_hr/types/benefits/percentage_contribution.py +17 -0
  89. warp_hr-0.3.0/src/warp_hr/types/benefits/public_benefit_deduction.py +88 -0
  90. warp_hr-0.3.0/src/warp_hr/types/benefits/public_benefit_deduction_1.py +88 -0
  91. warp_hr-0.3.0/src/warp_hr/types/benefits/public_benefit_deduction_calculation.py +11 -0
  92. warp_hr-0.3.0/src/warp_hr/types/benefits/public_benefit_deduction_category.py +9 -0
  93. warp_hr-0.3.0/src/warp_hr/types/benefits/public_benefit_deduction_plan.py +11 -0
  94. warp_hr-0.3.0/src/warp_hr/types/benefits/public_benefit_deduction_status.py +7 -0
  95. warp_hr-0.3.0/src/warp_hr/types/benefits/public_health_plan.py +58 -0
  96. warp_hr-0.3.0/src/warp_hr/types/benefits/public_health_plan_carrier.py +15 -0
  97. warp_hr-0.3.0/src/warp_hr/types/benefits/public_health_plan_status.py +7 -0
  98. warp_hr-0.3.0/src/warp_hr/types/benefits/public_retirement_plan.py +40 -0
  99. warp_hr-0.3.0/src/warp_hr/types/benefits/public_retirement_plan_1.py +40 -0
  100. warp_hr-0.3.0/src/warp_hr/types/benefits/public_retirement_plan_provider.py +7 -0
  101. warp_hr-0.3.0/src/warp_hr/types/benefits/public_retirement_plan_status.py +7 -0
  102. warp_hr-0.3.0/src/warp_hr/types/benefits/public_worker_reference.py +20 -0
  103. warp_hr-0.3.0/src/warp_hr/types/benefits/retirement_plan_create_params.py +19 -0
  104. warp_hr-0.3.0/src/warp_hr/types/benefits/retirement_plan_list_params.py +28 -0
  105. warp_hr-0.3.0/src/warp_hr/types/benefits/retirement_plan_list_response.py +19 -0
  106. warp_hr-0.3.0/src/warp_hr/types/benefits/retirement_plan_reference.py +19 -0
  107. warp_hr-0.3.0/src/warp_hr/types/benefits/retirement_plan_update_params.py +18 -0
  108. warp_hr-0.3.0/src/warp_hr/types/boolean_custom_field_value.py +13 -0
  109. warp_hr-0.3.0/src/warp_hr/types/currency_custom_field_value.py +80 -0
  110. warp_hr-0.3.0/src/warp_hr/types/custom_field_archive_option_response.py +25 -0
  111. warp_hr-0.3.0/src/warp_hr/types/custom_field_archive_response.py +37 -0
  112. warp_hr-0.3.0/src/warp_hr/types/custom_field_clear_value_params.py +17 -0
  113. warp_hr-0.3.0/src/warp_hr/types/custom_field_create_option_params.py +20 -0
  114. warp_hr-0.3.0/src/warp_hr/types/custom_field_create_option_response.py +25 -0
  115. warp_hr-0.3.0/src/warp_hr/types/custom_field_create_params.py +40 -0
  116. warp_hr-0.3.0/src/warp_hr/types/custom_field_create_response.py +37 -0
  117. warp_hr-0.3.0/src/warp_hr/types/custom_field_get_response.py +56 -0
  118. warp_hr-0.3.0/src/warp_hr/types/custom_field_list_response.py +40 -0
  119. warp_hr-0.3.0/src/warp_hr/types/custom_field_list_values_params.py +17 -0
  120. warp_hr-0.3.0/src/warp_hr/types/custom_field_list_values_response.py +30 -0
  121. warp_hr-0.3.0/src/warp_hr/types/custom_field_update_option_params.py +18 -0
  122. warp_hr-0.3.0/src/warp_hr/types/custom_field_update_option_response.py +25 -0
  123. warp_hr-0.3.0/src/warp_hr/types/custom_field_update_params.py +26 -0
  124. warp_hr-0.3.0/src/warp_hr/types/custom_field_update_response.py +37 -0
  125. warp_hr-0.3.0/src/warp_hr/types/custom_field_upsert_value_params.py +154 -0
  126. warp_hr-0.3.0/src/warp_hr/types/custom_field_upsert_value_response.py +24 -0
  127. warp_hr-0.3.0/src/warp_hr/types/date_custom_field_value.py +13 -0
  128. warp_hr-0.3.0/src/warp_hr/types/department_create_params.py +11 -0
  129. warp_hr-0.3.0/src/warp_hr/types/department_create_response.py +16 -0
  130. warp_hr-0.3.0/src/warp_hr/types/department_list_params.py +20 -0
  131. warp_hr-0.3.0/src/warp_hr/types/department_list_response.py +28 -0
  132. warp_hr-0.3.0/src/warp_hr/types/department_update_params.py +12 -0
  133. warp_hr-0.3.0/src/warp_hr/types/department_update_response.py +16 -0
  134. warp_hr-0.3.0/src/warp_hr/types/i9_verification_list_params.py +27 -0
  135. warp_hr-0.3.0/src/warp_hr/types/i9_verification_list_response.py +19 -0
  136. warp_hr-0.3.0/src/warp_hr/types/level_list_response.py +22 -0
  137. warp_hr-0.3.0/src/warp_hr/types/multi_select_custom_field_value.py +31 -0
  138. warp_hr-0.3.0/src/warp_hr/types/number_custom_field_value.py +14 -0
  139. warp_hr-0.3.0/src/warp_hr/types/offer_accepted_webhook_event.py +426 -0
  140. warp_hr-0.3.0/src/warp_hr/types/offer_create_params.py +429 -0
  141. warp_hr-0.3.0/src/warp_hr/types/offer_create_response.py +412 -0
  142. warp_hr-0.3.0/src/warp_hr/types/offer_created_webhook_event.py +426 -0
  143. warp_hr-0.3.0/src/warp_hr/types/offer_expired_webhook_event.py +426 -0
  144. warp_hr-0.3.0/src/warp_hr/types/offer_extend_deadline_params.py +13 -0
  145. warp_hr-0.3.0/src/warp_hr/types/offer_extend_deadline_response.py +412 -0
  146. warp_hr-0.3.0/src/warp_hr/types/offer_list_params.py +29 -0
  147. warp_hr-0.3.0/src/warp_hr/types/offer_list_response.py +421 -0
  148. warp_hr-0.3.0/src/warp_hr/types/offer_resend_response.py +412 -0
  149. warp_hr-0.3.0/src/warp_hr/types/offer_sent_webhook_event.py +426 -0
  150. warp_hr-0.3.0/src/warp_hr/types/offer_signature_requested_webhook_event.py +426 -0
  151. warp_hr-0.3.0/src/warp_hr/types/offer_viewed_webhook_event.py +426 -0
  152. warp_hr-0.3.0/src/warp_hr/types/offer_void_params.py +16 -0
  153. warp_hr-0.3.0/src/warp_hr/types/offer_void_response.py +412 -0
  154. warp_hr-0.3.0/src/warp_hr/types/offer_voided_webhook_event.py +426 -0
  155. warp_hr-0.3.0/src/warp_hr/types/parsed_webhook_event.py +60 -0
  156. warp_hr-0.3.0/src/warp_hr/types/pay_rate_created_webhook_event.py +33 -0
  157. warp_hr-0.3.0/src/warp_hr/types/pay_rate_deleted_webhook_event.py +33 -0
  158. warp_hr-0.3.0/src/warp_hr/types/pay_rate_list_params.py +34 -0
  159. warp_hr-0.3.0/src/warp_hr/types/pay_rate_list_response.py +19 -0
  160. warp_hr-0.3.0/src/warp_hr/types/pay_rates/__init__.py +9 -0
  161. warp_hr-0.3.0/src/warp_hr/types/pay_rates/public_create_regular_pay_rate_response.py +12 -0
  162. warp_hr-0.3.0/src/warp_hr/types/pay_rates/regular_create_params.py +92 -0
  163. warp_hr-0.3.0/src/warp_hr/types/pay_rates/regular_delete_params.py +16 -0
  164. warp_hr-0.3.0/src/warp_hr/types/pay_split_get_response.py +9 -0
  165. warp_hr-0.3.0/src/warp_hr/types/pay_split_list_params.py +32 -0
  166. warp_hr-0.3.0/src/warp_hr/types/pay_split_list_response.py +19 -0
  167. warp_hr-0.3.0/src/warp_hr/types/payroll_list_params.py +50 -0
  168. warp_hr-0.3.0/src/warp_hr/types/payroll_list_paychecks_params.py +63 -0
  169. warp_hr-0.3.0/src/warp_hr/types/percentage_custom_field_value.py +14 -0
  170. warp_hr-0.3.0/src/warp_hr/types/public_amount_pay_split.py +37 -0
  171. warp_hr-0.3.0/src/warp_hr/types/public_bank_account.py +35 -0
  172. warp_hr-0.3.0/src/warp_hr/types/public_bank_account_reference.py +21 -0
  173. warp_hr-0.3.0/src/warp_hr/types/public_boolean_worker_custom_field.py +26 -0
  174. warp_hr-0.3.0/src/warp_hr/types/public_company.py +234 -0
  175. warp_hr-0.3.0/src/warp_hr/types/public_company_address.py +78 -0
  176. warp_hr-0.3.0/src/warp_hr/types/public_company_business_type.py +9 -0
  177. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount.py +15 -0
  178. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_1.py +15 -0
  179. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_10.py +15 -0
  180. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_11.py +15 -0
  181. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_12.py +15 -0
  182. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_13.py +15 -0
  183. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_14.py +15 -0
  184. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_15.py +15 -0
  185. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_16.py +15 -0
  186. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_17.py +15 -0
  187. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_18.py +15 -0
  188. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_19.py +15 -0
  189. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_2.py +15 -0
  190. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_20.py +15 -0
  191. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_3.py +15 -0
  192. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_4.py +15 -0
  193. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_5.py +15 -0
  194. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_6.py +15 -0
  195. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_7.py +15 -0
  196. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_8.py +15 -0
  197. warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_9.py +15 -0
  198. warp_hr-0.3.0/src/warp_hr/types/public_currency_worker_custom_field.py +95 -0
  199. warp_hr-0.3.0/src/warp_hr/types/public_custom_field_value_output.py +26 -0
  200. warp_hr-0.3.0/src/warp_hr/types/public_date_worker_custom_field.py +26 -0
  201. warp_hr-0.3.0/src/warp_hr/types/public_exchange_rate.py +32 -0
  202. warp_hr-0.3.0/src/warp_hr/types/public_exchange_rate_value.py +7 -0
  203. warp_hr-0.3.0/src/warp_hr/types/public_funding_payroll_totals.py +58 -0
  204. warp_hr-0.3.0/src/warp_hr/types/public_hourly_rate.py +28 -0
  205. warp_hr-0.3.0/src/warp_hr/types/public_hourly_rate_amount.py +7 -0
  206. warp_hr-0.3.0/src/warp_hr/types/public_i9_verification.py +33 -0
  207. warp_hr-0.3.0/src/warp_hr/types/public_money_amount.py +81 -0
  208. warp_hr-0.3.0/src/warp_hr/types/public_multi_select_worker_custom_field.py +43 -0
  209. warp_hr-0.3.0/src/warp_hr/types/public_number_worker_custom_field.py +26 -0
  210. warp_hr-0.3.0/src/warp_hr/types/public_pay_frequency.py +7 -0
  211. warp_hr-0.3.0/src/warp_hr/types/public_pay_period.py +15 -0
  212. warp_hr-0.3.0/src/warp_hr/types/public_pay_rate.py +109 -0
  213. warp_hr-0.3.0/src/warp_hr/types/public_pay_rate_per.py +7 -0
  214. warp_hr-0.3.0/src/warp_hr/types/public_pay_rate_type.py +7 -0
  215. warp_hr-0.3.0/src/warp_hr/types/public_pay_split.py +11 -0
  216. warp_hr-0.3.0/src/warp_hr/types/public_pay_split_allocation.py +11 -0
  217. warp_hr-0.3.0/src/warp_hr/types/public_pay_split_amount_allocation.py +19 -0
  218. warp_hr-0.3.0/src/warp_hr/types/public_pay_split_fixed_allocation.py +81 -0
  219. warp_hr-0.3.0/src/warp_hr/types/public_pay_split_percentage.py +16 -0
  220. warp_hr-0.3.0/src/warp_hr/types/public_pay_split_percentage_allocation.py +19 -0
  221. warp_hr-0.3.0/src/warp_hr/types/public_pay_split_remainder_allocation.py +11 -0
  222. warp_hr-0.3.0/src/warp_hr/types/public_pay_split_status.py +7 -0
  223. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_benefit.py +67 -0
  224. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_currency_totals.py +57 -0
  225. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_deduction.py +27 -0
  226. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_deduction_tax_treatment.py +7 -0
  227. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_detail.py +314 -0
  228. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_detail_totals.py +56 -0
  229. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_earning.py +74 -0
  230. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_list.py +17 -0
  231. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_payment_method.py +7 -0
  232. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_payroll.py +58 -0
  233. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_reimbursement.py +18 -0
  234. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_status.py +9 -0
  235. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_summary.py +133 -0
  236. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_summary_currency_totals.py +25 -0
  237. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_summary_totals.py +32 -0
  238. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_tax.py +41 -0
  239. warp_hr-0.3.0/src/warp_hr/types/public_paycheck_worker.py +26 -0
  240. warp_hr-0.3.0/src/warp_hr/types/public_payroll_currency.py +70 -0
  241. warp_hr-0.3.0/src/warp_hr/types/public_payroll_detail.py +133 -0
  242. warp_hr-0.3.0/src/warp_hr/types/public_payroll_detail_totals.py +62 -0
  243. warp_hr-0.3.0/src/warp_hr/types/public_payroll_funding_method.py +7 -0
  244. warp_hr-0.3.0/src/warp_hr/types/public_payroll_list.py +17 -0
  245. warp_hr-0.3.0/src/warp_hr/types/public_payroll_money_amount.py +23 -0
  246. warp_hr-0.3.0/src/warp_hr/types/public_payroll_money_amount_1.py +23 -0
  247. warp_hr-0.3.0/src/warp_hr/types/public_payroll_money_amount_2.py +23 -0
  248. warp_hr-0.3.0/src/warp_hr/types/public_payroll_money_amount_3.py +23 -0
  249. warp_hr-0.3.0/src/warp_hr/types/public_payroll_money_amount_4.py +23 -0
  250. warp_hr-0.3.0/src/warp_hr/types/public_payroll_money_amount_5.py +23 -0
  251. warp_hr-0.3.0/src/warp_hr/types/public_payroll_status.py +9 -0
  252. warp_hr-0.3.0/src/warp_hr/types/public_payroll_subtype.py +9 -0
  253. warp_hr-0.3.0/src/warp_hr/types/public_payroll_summary.py +104 -0
  254. warp_hr-0.3.0/src/warp_hr/types/public_payroll_timeline.py +15 -0
  255. warp_hr-0.3.0/src/warp_hr/types/public_payroll_type.py +7 -0
  256. warp_hr-0.3.0/src/warp_hr/types/public_percentage_pay_split.py +37 -0
  257. warp_hr-0.3.0/src/warp_hr/types/public_percentage_worker_custom_field.py +26 -0
  258. warp_hr-0.3.0/src/warp_hr/types/public_select_worker_custom_field.py +43 -0
  259. warp_hr-0.3.0/src/warp_hr/types/public_tax_payer.py +7 -0
  260. warp_hr-0.3.0/src/warp_hr/types/public_text_worker_custom_field.py +26 -0
  261. warp_hr-0.3.0/src/warp_hr/types/public_worker_address.py +277 -0
  262. warp_hr-0.3.0/src/warp_hr/types/public_worker_compensation.py +94 -0
  263. warp_hr-0.3.0/src/warp_hr/types/public_worker_custom_field.py +26 -0
  264. warp_hr-0.3.0/src/warp_hr/types/public_worker_manager.py +20 -0
  265. warp_hr-0.3.0/src/warp_hr/types/public_worker_ssn.py +17 -0
  266. warp_hr-0.3.0/src/warp_hr/types/select_custom_field_value.py +31 -0
  267. warp_hr-0.3.0/src/warp_hr/types/text_custom_field_value.py +13 -0
  268. warp_hr-0.3.0/src/warp_hr/types/time_off/__init__.py +7 -0
  269. warp_hr-0.3.0/src/warp_hr/types/time_off/policy_get_response.py +42 -0
  270. warp_hr-0.3.0/src/warp_hr/types/time_off/policy_list_params.py +18 -0
  271. warp_hr-0.3.0/src/warp_hr/types/time_off/policy_list_response.py +52 -0
  272. warp_hr-0.3.0/src/warp_hr/types/time_off_balance_adjusted_webhook_event.py +21 -0
  273. warp_hr-0.3.0/src/warp_hr/types/time_off_list_assignments_params.py +25 -0
  274. warp_hr-0.3.0/src/warp_hr/types/time_off_list_assignments_response.py +31 -0
  275. warp_hr-0.3.0/src/warp_hr/types/time_off_list_balances_params.py +29 -0
  276. warp_hr-0.3.0/src/warp_hr/types/time_off_list_balances_response.py +39 -0
  277. warp_hr-0.3.0/src/warp_hr/types/time_off_list_requests_params.py +33 -0
  278. warp_hr-0.3.0/src/warp_hr/types/time_off_list_requests_response.py +48 -0
  279. warp_hr-0.3.0/src/warp_hr/types/time_off_request_created_webhook_event.py +51 -0
  280. warp_hr-0.3.0/src/warp_hr/types/time_off_request_deleted_webhook_event.py +51 -0
  281. warp_hr-0.3.0/src/warp_hr/types/time_off_request_reviewed_webhook_event.py +51 -0
  282. warp_hr-0.3.0/src/warp_hr/types/worker_create_contractor_params.py +386 -0
  283. warp_hr-0.3.0/src/warp_hr/types/worker_create_contractor_response.py +129 -0
  284. warp_hr-0.3.0/src/warp_hr/types/worker_create_employee_params.py +150 -0
  285. warp_hr-0.3.0/src/warp_hr/types/worker_create_employee_response.py +129 -0
  286. warp_hr-0.3.0/src/warp_hr/types/worker_created_webhook_event.py +143 -0
  287. warp_hr-0.3.0/src/warp_hr/types/worker_deleted_webhook_event.py +143 -0
  288. warp_hr-0.3.0/src/warp_hr/types/worker_get_response.py +129 -0
  289. warp_hr-0.3.0/src/warp_hr/types/worker_invite_accepted_webhook_event.py +143 -0
  290. warp_hr-0.3.0/src/warp_hr/types/worker_invite_response.py +129 -0
  291. warp_hr-0.3.0/src/warp_hr/types/worker_invite_sent_webhook_event.py +143 -0
  292. warp_hr-0.3.0/src/warp_hr/types/worker_list_params.py +26 -0
  293. warp_hr-0.3.0/src/warp_hr/types/worker_list_response.py +137 -0
  294. warp_hr-0.3.0/src/warp_hr/types/worker_offboarded_webhook_event.py +143 -0
  295. warp_hr-0.3.0/src/warp_hr/types/worker_offboarding_started_webhook_event.py +143 -0
  296. warp_hr-0.3.0/src/warp_hr/types/worker_onboarding_completed_webhook_event.py +143 -0
  297. warp_hr-0.3.0/src/warp_hr/types/worker_reactivated_webhook_event.py +143 -0
  298. warp_hr-0.3.0/src/warp_hr/types/worker_reveal_ssn_params.py +15 -0
  299. warp_hr-0.3.0/src/warp_hr/types/worker_reveal_ssn_response.py +10 -0
  300. warp_hr-0.3.0/src/warp_hr/types/worker_update_params.py +58 -0
  301. warp_hr-0.3.0/src/warp_hr/types/worker_update_response.py +129 -0
  302. warp_hr-0.3.0/src/warp_hr/types/worker_updated_webhook_event.py +143 -0
  303. warp_hr-0.3.0/src/warp_hr/types/workplace_create_params.py +87 -0
  304. warp_hr-0.3.0/src/warp_hr/types/workplace_create_response.py +94 -0
  305. warp_hr-0.3.0/src/warp_hr/types/workplace_list_params.py +20 -0
  306. warp_hr-0.3.0/src/warp_hr/types/workplace_list_response.py +102 -0
  307. warp_hr-0.3.0/src/warp_hr/types/workplace_update_params.py +12 -0
  308. warp_hr-0.3.0/src/warp_hr/types/workplace_update_response.py +94 -0
  309. warp_hr-0.3.0/tests/smoke-test.py +1629 -0
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: warp-python-sdk
3
+ description: "Python SDK for warp API. Use when writing Python code that calls warp API with the warp-hr package: installing it, constructing and authenticating the client, and calling API operations."
4
+ ---
5
+
6
+ # warp Python SDK
7
+
8
+ Generated Python client for warp API, published as `warp-hr`. Use the generated client instead of hand-writing HTTP requests.
9
+
10
+ ## Install
11
+
12
+ ```sh
13
+ pip install warp-hr
14
+ ```
15
+
16
+ ## Client setup and authentication
17
+
18
+ ```python
19
+ import os
20
+
21
+ from warp_hr import Warp
22
+
23
+ client = Warp(
24
+ api_key=os.environ.get("WARP_API_KEY"),
25
+ )
26
+ ```
27
+
28
+ Provide credentials using the options below. Environment variables are read automatically when the target runtime supports them:
29
+
30
+ - `api_key` (env: `WARP_API_KEY`) — Credential for the apiKey scheme.
31
+
32
+ ## Calling operations
33
+
34
+ ```python
35
+ import os
36
+
37
+ from warp_hr import Warp
38
+
39
+ client = Warp(
40
+ api_key=os.environ.get("WARP_API_KEY"),
41
+ )
42
+
43
+ health_plan = client.benefits.health_plans.list(
44
+ limit="limit",
45
+ statuses=["active"],
46
+ )
47
+
48
+ print(health_plan)
49
+ ```
50
+
51
+ Method names, parameter shapes, and response types are generated from the API description — do not guess them. Look up the exact call signature in [api.md](../../../api.md) before writing a call.
52
+
53
+ ## Error handling
54
+
55
+ Non-success responses throw generated API errors. Error objects expose status, headers, response body, and request metadata where the target runtime supports it.
56
+
57
+ ```python
58
+ from warp_hr import APIStatusError
59
+
60
+ try:
61
+ health_plan = client.benefits.health_plans.list(
62
+ limit="limit",
63
+ statuses=["active"],
64
+ )
65
+ except APIStatusError as err:
66
+ print(err.status_code, err.message)
67
+ raise
68
+ ```
69
+
70
+ ## Requirements
71
+
72
+ - Python 3.9 or newer
73
+
74
+ ## Reference files
75
+
76
+ - [README.md](../../../README.md) — full feature tour: client options, retries and timeouts, webhooks, logging.
77
+ - [api.md](../../../api.md) — complete catalogue of every operation with request and response types.
@@ -0,0 +1,127 @@
1
+ name: Release Please
2
+
3
+ on:
4
+ # A release is cut when a human merges the platform-managed release PR into
5
+ # main (the PR's base, so its diff shows the full pending release).
6
+ # Every other push here runs release-please as well — commits written straight to
7
+ # this branch included — and cuts nothing, there being no release commit at the tip.
8
+ push:
9
+ branches:
10
+ - main
11
+ # The Scalar platform pushes these workflow files straight to main to keep them
12
+ # current between releases; that is bookkeeping, never a release. Running anyway is worse
13
+ # than pointless on a branch that has not been handed a .release-please-manifest.json yet —
14
+ # release-please fails the run outright when it cannot read one. A release commit always
15
+ # rewrites the manifest and the changelog, so this filter can never swallow one.
16
+ paths-ignore:
17
+ - '.github/workflows/**'
18
+ # Manual fallback only; nothing in the automated chain depends on dispatch.
19
+ workflow_dispatch:
20
+
21
+ permissions:
22
+ contents: write
23
+ # Required to update the merged release PR's autorelease labels after tagging.
24
+ pull-requests: write
25
+
26
+ jobs:
27
+ release-please:
28
+ runs-on: ubuntu-latest
29
+ outputs:
30
+ release_created: ${{ steps.release.outputs.release_created }}
31
+ # Consumed by the publish job's checkout: without this mapping the checkout ref would be
32
+ # empty and the publish would build the triggering branch head instead of the released
33
+ # tag's exact commit.
34
+ tag_name: ${{ steps.release.outputs.tag_name }}
35
+ steps:
36
+ - uses: googleapis/release-please-action@45996ed1f6d02564a971a2fa1b5860e934307cf7 # v5.0.0
37
+ id: release
38
+ with:
39
+ target-branch: main
40
+ config-file: release-please-config.json
41
+ manifest-file: .release-please-manifest.json
42
+ # Release PRs are opened and updated by the Scalar platform with its own
43
+ # credential (so their CI runs without manual approval); this workflow only
44
+ # cuts the tag + GitHub Release once a release PR is merged.
45
+ skip-github-pull-request: true
46
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
47
+ if: ${{ steps.release.outputs.release_created == 'true' }}
48
+ with:
49
+ fetch-depth: 0
50
+ # Merging the release PR into main is itself the promotion, but the
51
+ # version bump and changelog must also land back on scalar-next, or the next
52
+ # release PR would propose this release again. A real merge (never a plain
53
+ # commit push) so a squash- or rebase-merged release PR syncs just as well; the
54
+ # non-conventional message keeps the sync commit out of future changelogs.
55
+ #
56
+ # The Scalar platform merges main into scalar-next itself when the release
57
+ # PR merges, so this step routinely races it. The sync is done once the release commit
58
+ # is an ancestor of scalar-next, whoever merged it, so that is checked before every
59
+ # attempt. A rejected push retries from a fresh fetch rather than failing the release
60
+ # run. Plain (non-force) push on purpose: a concurrent regeneration push is never
61
+ # discarded, and a sync that still cannot land after the retries fails loudly.
62
+ - name: Sync release back to scalar-next
63
+ if: ${{ steps.release.outputs.release_created == 'true' }}
64
+ env:
65
+ RELEASE_SHA: ${{ steps.release.outputs.sha }}
66
+ RELEASE_TAG: ${{ steps.release.outputs.tag_name }}
67
+ run: |
68
+ git config user.name "github-actions[bot]"
69
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
70
+ # Explicit `|| return 1`s because `set -e` does not apply inside a function called
71
+ # as a condition, and a failed merge must never fall through to a no-op push.
72
+ sync_release() {
73
+ git fetch origin scalar-next || return 1
74
+ if git merge-base --is-ancestor "$RELEASE_SHA" origin/scalar-next; then
75
+ echo "$RELEASE_TAG is already on scalar-next."
76
+ return 0
77
+ fi
78
+ git checkout -B scalar-next origin/scalar-next || return 1
79
+ if ! git merge --no-edit -m "Sync release $RELEASE_TAG back to scalar-next" "$RELEASE_SHA"; then
80
+ git merge --abort
81
+ return 1
82
+ fi
83
+ git push origin scalar-next
84
+ }
85
+ for attempt in 1 2 3; do
86
+ if sync_release; then exit 0; fi
87
+ echo "Attempt $attempt of 3 to sync $RELEASE_TAG back to scalar-next failed."
88
+ if [ "$attempt" -lt 3 ]; then sleep $((attempt * 5)); fi
89
+ done
90
+ echo "::error::Could not sync $RELEASE_TAG back to scalar-next after 3 attempts."
91
+ exit 1
92
+ publish:
93
+ needs: release-please
94
+ # `!cancelled()` keeps publishing even when the back-sync to the integration branch
95
+ # failed: a raced integration branch must not block the release from reaching its
96
+ # registry.
97
+ if: ${{ !cancelled() && needs.release-please.outputs.release_created == 'true' }}
98
+ runs-on: ubuntu-latest
99
+ # Job-level permissions replace the workflow's release-cutting grants with the publish
100
+ # floor. OIDC trusted publishing verifies this run's claims, which name this workflow
101
+ # file — register release-please.yml as the trusted publisher on the registry.
102
+ permissions:
103
+ contents: read
104
+ id-token: write
105
+ packages: write
106
+ env:
107
+ VERSIONING_POLICY: manual
108
+ steps:
109
+ # Publishing runs inline — a top-level job of this same run — rather than dispatching
110
+ # sdk-release.yml: workflow_dispatch resolves the target workflow on the repository's
111
+ # default branch only, so a dispatch would 404 whenever the release line is any other
112
+ # branch, while OIDC trusted publishing accepts this job because it stays top-level
113
+ # (never a reusable-workflow call). The release-please job cut the tag earlier in this
114
+ # run; checking it out publishes exactly the released commit, not the branch head that
115
+ # triggered the workflow.
116
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
117
+ with:
118
+ ref: ${{ needs.release-please.outputs.tag_name }}
119
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
120
+ with:
121
+ python-version: "3.11"
122
+ - run: python -m pip install --upgrade build
123
+ - run: python -m build
124
+ - name: Publish to PyPI
125
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
126
+ with:
127
+ skip-existing: true
@@ -0,0 +1,93 @@
1
+ name: Release PR Version
2
+
3
+ on:
4
+ # `edited` is not one of the default pull_request types, but it is the point of this
5
+ # workflow: retitling the release PR is how a maintainer picks an exact version, and the
6
+ # check has to re-run on the new title. The other types keep the consistency check attached
7
+ # to the PR as it evolves.
8
+ pull_request:
9
+ types: [opened, reopened, edited, synchronize]
10
+
11
+ # Read-only: the check reads the committed version, and polls the pull request while it waits
12
+ # for a re-render.
13
+ permissions:
14
+ contents: read
15
+ pull-requests: read
16
+
17
+ jobs:
18
+ version-consistency:
19
+ # Also the check name the release PR's footer tells maintainers to wait for.
20
+ name: Release PR version
21
+ # A release-shaped title against the release branch is the whole test here, with no clause
22
+ # on who opened the pull request or what branch it is rendered onto. This job only reads,
23
+ # and a pull request claiming to be a release is worth checking against the committed
24
+ # version whoever opened it. Every other pull request skips this job, which GitHub reports
25
+ # as neutral.
26
+ #
27
+ # Loose on purpose: the prefix, not the full semver pattern the script matches. A version
28
+ # typo'd into the title still reaches the script and fails there, rather than falling out
29
+ # of the guard and leaving no check at all — a missing check is not a failing one, and this
30
+ # is the check the release PR's footer tells maintainers to wait for before merging.
31
+ if: >-
32
+ ${{ github.event.pull_request.base.ref == 'main'
33
+ && startsWith(github.event.pull_request.title, 'release: ') }}
34
+ runs-on: ubuntu-latest
35
+ # Bounds the wait below with room to spare; a re-render normally lands within a minute.
36
+ timeout-minutes: 15
37
+ steps:
38
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
39
+ with:
40
+ # The version committed on the PR head is what merging would actually release.
41
+ ref: ${{ github.event.pull_request.head.sha }}
42
+ # A retitle is applied by the Scalar platform, which pushes a Release-As commit to the
43
+ # integration branch and re-renders the release PR at that version. Until it lands, the
44
+ # title and the committed version disagree, and a merge in that window would tag a release
45
+ # whose own files self-report the old version.
46
+ #
47
+ # So this waits rather than failing: the check stays pending, which blocks a merge just as
48
+ # a failure would where the check is required, but does not flash red on every retitle. It
49
+ # passes once the title and the committed version agree, and hands over once the head
50
+ # moves, since the re-render's push starts a run of its own on the new head. It never
51
+ # passes while the title still disagrees, even a newer title: the run started for that
52
+ # edit judges it, and a pass here would sit beside it on the same head. Only a re-render
53
+ # that never arrives, or a title that is not a version at all, fails it.
54
+ - name: Compare the title version with the committed version
55
+ env:
56
+ # The title is human input, so it is bound through the environment (never
57
+ # interpolated into the script) and matched against a strict semver pattern
58
+ # before it is read.
59
+ PR_TITLE: ${{ github.event.pull_request.title }}
60
+ HEAD_SHA: ${{ github.event.pull_request.head.sha }}
61
+ PR_NUMBER: ${{ github.event.pull_request.number }}
62
+ REPOSITORY: ${{ github.repository }}
63
+ GH_TOKEN: ${{ github.token }}
64
+ run: |
65
+ pattern='^release: ((0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)(-[0-9A-Za-z.-]+)?(\+[0-9A-Za-z.-]+)?)$'
66
+ if [[ ! "$PR_TITLE" =~ $pattern ]]; then
67
+ echo "::error::Release PR title must be \"release: X.Y.Z\" with a full semver version, got: $PR_TITLE"
68
+ exit 1
69
+ fi
70
+ title_version="${BASH_REMATCH[1]}"
71
+ manifest_version="$(jq -r '.["."]' .release-please-manifest.json)"
72
+ if [[ "$title_version" == "$manifest_version" ]]; then
73
+ echo "Release PR title and committed version agree on $title_version."
74
+ exit 0
75
+ fi
76
+ echo "Release PR title says $title_version but the pull request is versioned $manifest_version. Waiting for it to be re-rendered at $title_version."
77
+ # Up to ten minutes: 60 polls, 10 seconds apart.
78
+ for _ in $(seq 60); do
79
+ sleep 10
80
+ # A failed read is retried on the next poll rather than failing the check.
81
+ current="$(gh api "repos/$REPOSITORY/pulls/$PR_NUMBER" --jq '[.head.sha, .title] | @tsv')" || continue
82
+ IFS=$'\t' read -r current_sha current_title <<< "$current"
83
+ if [[ "$current_sha" != "$HEAD_SHA" ]]; then
84
+ echo "The release PR has a new head; the run for that push checks it."
85
+ exit 0
86
+ fi
87
+ if [[ "$current_title" =~ $pattern && "${BASH_REMATCH[1]}" == "$manifest_version" ]]; then
88
+ echo "Release PR title and committed version agree on $manifest_version."
89
+ exit 0
90
+ fi
91
+ done
92
+ echo "::error::Release PR title says $title_version but the pull request is still versioned $manifest_version after 10 minutes. Rebuild the SDK from the Scalar dashboard to re-render it."
93
+ exit 1
@@ -0,0 +1,27 @@
1
+ name: Python SDK CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ # Least privilege for a verification-only workflow: every job below only reads the checked-out
8
+ # tree, so the run's GITHUB_TOKEN is narrowed to that regardless of the repository's default
9
+ # grants. Declared at the workflow level so a job added later inherits the floor.
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ verify:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
18
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
19
+ with:
20
+ python-version: "3.11"
21
+ - run: python -m pip install --upgrade build
22
+ - run: python -m build
23
+ # Verification only, never auto-fix: the SDK is generated formatted, so a diff here means
24
+ # either hand-edited custom code or a regenerate that was not committed. ruff is pinned to
25
+ # the release that produced these bytes, since a formatter minor can change them.
26
+ - run: python -m pip install "ruff==0.16.8"
27
+ - run: ruff format --check .
@@ -0,0 +1,34 @@
1
+ name: Python SDK Release
2
+
3
+ on:
4
+ # Manual re-publish only: the automated publish for each release runs as the `publish` job
5
+ # inside release-please.yml, in the same run that cuts the tag (dispatching a workflow here
6
+ # instead would resolve it on the repository's default branch only, which breaks releasing
7
+ # from any other release line). Dispatch this workflow at an existing release tag to re-run
8
+ # a failed or skipped publish. A dispatched run is top-level, so OIDC trusted-publisher
9
+ # claims name this file; register it as an additional trusted publisher only when manual
10
+ # re-publishes are used. Never add a workflow_call trigger here — registries reject
11
+ # publishes from called (reusable) workflows.
12
+ workflow_dispatch:
13
+
14
+ permissions:
15
+ contents: read
16
+ id-token: write
17
+ packages: write
18
+
19
+ jobs:
20
+ release:
21
+ runs-on: ubuntu-latest
22
+ env:
23
+ VERSIONING_POLICY: manual
24
+ steps:
25
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
26
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
27
+ with:
28
+ python-version: "3.11"
29
+ - run: python -m pip install --upgrade build
30
+ - run: python -m build
31
+ - name: Publish to PyPI
32
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
33
+ with:
34
+ skip-existing: true
@@ -0,0 +1,10 @@
1
+ # Generated by Scalar SDK Generator.
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .venv/
6
+ /dist/
7
+ /build/
8
+ .mypy_cache/
9
+ .pytest_cache/
10
+ .ruff_cache/
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.3.0"
3
+ }
@@ -0,0 +1,117 @@
1
+ # Changelog
2
+
3
+ ## [0.3.0](https://github.com/TeamWarp/warp-sdk-python/compare/v0.2.0...v0.3.0) (2026-10-31)
4
+
5
+
6
+ ### ⚠ BREAKING CHANGES
7
+
8
+ * **api:** 82 breaking changes to the SDK surface.
9
+ - URL of environment `production` changed from `https://api.joinwarp.com` to `https://api.joinwarp.com/public`.
10
+ - query param `limit` on `departments.list` is now required.
11
+ - `401` error response of `departments.list` changed from `ApiKeyUnauthorized` to `api_key_unauthorized_encoded`.
12
+ - `429` error response of `departments.list` changed from `RateLimitExceeded` to `rate_limit_exceeded_encoded`.
13
+ - `401` error response of `departments.create` changed from `ApiKeyUnauthorized` to `api_key_unauthorized_encoded`.
14
+ - `409` error response of `departments.create` changed from `DepartmentAlreadyExists` to `department_already_exists_encoded`.
15
+ - `429` error response of `departments.create` changed from `RateLimitExceeded` to `rate_limit_exceeded_encoded`.
16
+ - `401` error response of `departments.update` changed from `ApiKeyUnauthorized` to `api_key_unauthorized_encoded`.
17
+ - `404` error response of `departments.update` changed from `DepartmentNotFound` to `department_not_found_encoded`.
18
+ - `409` error response of `departments.update` changed from `DepartmentAlreadyExists` to `department_already_exists_encoded`.
19
+ - `429` error response of `departments.update` changed from `RateLimitExceeded` to `rate_limit_exceeded_encoded`.
20
+ - query param `limit` on `timeOff.listAssignments` is now required.
21
+ - `401` error response of `timeOff.listAssignments` changed from `ApiKeyUnauthorized` to `api_key_unauthorized_encoded`.
22
+ - `429` error response of `timeOff.listAssignments` changed from `RateLimitExceeded` to `rate_limit_exceeded_encoded`.
23
+ - query param `limit` on `timeOff.listBalances` is now required.
24
+ - `401` error response of `timeOff.listBalances` changed from `ApiKeyUnauthorized` to `api_key_unauthorized_encoded`.
25
+ - `404` error response of `timeOff.listBalances` changed from `TimeOffPolicyNotFound` to `time_off_policy_not_found_encoded`.
26
+ - `429` error response of `timeOff.listBalances` changed from `RateLimitExceeded` to `rate_limit_exceeded_encoded`.
27
+ - query param `limit` on `timeOff.listRequests` is now required.
28
+ - `401` error response of `timeOff.listRequests` changed from `ApiKeyUnauthorized` to `api_key_unauthorized_encoded`.
29
+ - `404` error response of `timeOff.listRequests` changed from `TimeOffRequestNotFoundError` to `time_off_request_not_found_error_encoded`.
30
+ - `429` error response of `timeOff.listRequests` changed from `RateLimitExceeded` to `rate_limit_exceeded_encoded`.
31
+ - query param `limit` on `timeOff.policies.list` is now required.
32
+ - `401` error response of `timeOff.policies.list` changed from `ApiKeyUnauthorized` to `api_key_unauthorized_encoded`.
33
+ - `404` error response of `timeOff.policies.list` changed from `TimeOffPolicyNotFound` to `time_off_policy_not_found_encoded`.
34
+ - `429` error response of `timeOff.policies.list` changed from `RateLimitExceeded` to `rate_limit_exceeded_encoded`.
35
+ - `401` error response of `workers.delete` changed from `ApiKeyUnauthorized` to `api_key_unauthorized_encoded`.
36
+ - `404` error response of `workers.delete` changed from `WorkerNotFoundError` to `worker_not_found_error_encoded`.
37
+ - `409` error response of `workers.delete` changed from `CannotDeleteWorker` to `cannot_delete_worker_encoded`.
38
+ - `429` error response of `workers.delete` changed from `RateLimitExceeded` to `rate_limit_exceeded_encoded`.
39
+ - query param `limit` on `workers.list` is now required.
40
+ - `401` error response of `workers.list` changed from `ApiKeyUnauthorized` to `api_key_unauthorized_encoded`.
41
+ - `429` error response of `workers.list` changed from `RateLimitExceeded` to `rate_limit_exceeded_encoded`.
42
+ - `400` error response of `workers.createEmployee` changed from `application/json` to `state_registration_required_encoded`.
43
+ - `401` error response of `workers.createEmployee` changed from `ApiKeyUnauthorized` to `api_key_unauthorized_encoded`.
44
+ - `429` error response of `workers.createEmployee` changed from `RateLimitExceeded` to `rate_limit_exceeded_encoded`.
45
+ - `401` error response of `workers.createContractor` changed from `ApiKeyUnauthorized` to `api_key_unauthorized_encoded`.
46
+ - `429` error response of `workers.createContractor` changed from `RateLimitExceeded` to `rate_limit_exceeded_encoded`.
47
+ - `401` error response of `workers.invite` changed from `ApiKeyUnauthorized` to `api_key_unauthorized_encoded`.
48
+ - `404` error response of `workers.invite` changed from `WorkerNotFoundError` to `worker_not_found_error_encoded`.
49
+ - `429` error response of `workers.invite` changed from `RateLimitExceeded` to `rate_limit_exceeded_encoded`.
50
+ - query param `limit` on `workplaces.list` is now required.
51
+ - `401` error response of `workplaces.list` changed from `ApiKeyUnauthorized` to `api_key_unauthorized_encoded`.
52
+ - `429` error response of `workplaces.list` changed from `RateLimitExceeded` to `rate_limit_exceeded_encoded`.
53
+ - `400` error response of `workplaces.create` changed from `application/json` to `address_invalid_encoded`.
54
+ - `401` error response of `workplaces.create` changed from `ApiKeyUnauthorized` to `api_key_unauthorized_encoded`.
55
+ - `409` error response of `workplaces.create` changed from `WorkplaceAlreadyExists` to `workplace_already_exists_encoded`.
56
+ - `429` error response of `workplaces.create` changed from `RateLimitExceeded` to `rate_limit_exceeded_encoded`.
57
+ - `401` error response of `workplaces.update` changed from `ApiKeyUnauthorized` to `api_key_unauthorized_encoded`.
58
+ - `404` error response of `workplaces.update` changed from `WorkplaceNotFound` to `workplace_not_found_encoded`.
59
+ - `409` error response of `workplaces.update` changed from `WorkplaceAlreadyExists` to `workplace_already_exists_encoded`.
60
+ - `429` error response of `workplaces.update` changed from `RateLimitExceeded` to `rate_limit_exceeded_encoded`.
61
+ - Removed operation `timeOff.policies.retrieve` (`GET /v1/time_off/policies/{id}`).
62
+ - Removed operation `workers.retrieve` (`GET /v1/workers/{id}`).
63
+ - Removed schema `Date`.
64
+ - Removed schema `HttpApiDecodeError`.
65
+ - Removed schema `Issue`.
66
+ - Removed schema `PropertyKey`.
67
+ - Removed schema `InternalServerError`.
68
+ - Removed schema `ApiKeyUnauthorized`.
69
+ - Removed schema `RateLimitExceeded`.
70
+ - Removed schema `DateTimeUtc`.
71
+ - Removed schema `MissingRequiredCompanyPermissions`.
72
+ - Removed schema `ApiNotEnabled`.
73
+ - Removed schema `Trimmed`.
74
+ - Removed schema `DepartmentAlreadyExists`.
75
+ - Removed schema `DepartmentNotFound`.
76
+ - Removed schema `ManagerNotFoundError`.
77
+ - Removed schema `TimeOffPolicyNotFound`.
78
+ - Removed schema `TimeOffRequestNotFoundError`.
79
+ - Removed schema `WorkerNotFoundError`.
80
+ - Removed schema `OfficeWorkLocation`.
81
+ - Removed schema `RemoteWorkLocation`.
82
+ - Removed schema `StateRegistrationRequired`.
83
+ - Removed schema `WorkplaceNotFound`.
84
+ - Removed schema `PayScheduleNotConfigured`.
85
+ - Removed schema `SubscriptionLimitError`.
86
+ - Removed schema `InvalidWorkerStatusError`.
87
+ - Removed schema `WorkerAlreadyExistsError`.
88
+ - Removed schema `CannotDeleteWorker`.
89
+ - Removed schema `AddressInvalid`.
90
+ - Removed schema `WorkplaceAlreadyExists`.
91
+
92
+ ### Features
93
+
94
+ * **api:** update environment production (+369 more changes) ([c63939f](https://github.com/TeamWarp/warp-sdk-python/commit/c63939f401df44fb74c2b492a3b45cc5c0b5ffcc))
95
+
96
+
97
+ ### Chores
98
+
99
+ * **api:** update generated SDK content ([92d1432](https://github.com/TeamWarp/warp-sdk-python/commit/92d14323f0771d7d328dc80e559cc51124cb69d1))
100
+
101
+ ## [0.2.0](https://github.com/TeamWarp/warp-sdk-python/compare/v0.1.0...v0.2.0) (2026-07-21)
102
+
103
+
104
+ ### ⚠ BREAKING CHANGES
105
+
106
+ * **api:** Property `MissingRequiredCompanyPermissions.requiredPermissions` type changed from `Array<object>` to `Array<object>`.
107
+
108
+ ### Features
109
+
110
+ * **api:** initial SDK generation ([8e80652](https://github.com/TeamWarp/warp-sdk-python/commit/8e80652dbfd19bba60028ac25508c60f6c3b9a2c))
111
+ * **api:** update SDK surface (2 changes) ([56a6df4](https://github.com/TeamWarp/warp-sdk-python/commit/56a6df4ac79da2f80635c2922e1bf6ffa1df4695))
112
+
113
+
114
+ ### Chores
115
+
116
+ * **api:** regenerate SDK ([a5cd83d](https://github.com/TeamWarp/warp-sdk-python/commit/a5cd83dc52e0caed22292ea3555a39f88e1887ce))
117
+ * initialize SDK repository ([525c5a0](https://github.com/TeamWarp/warp-sdk-python/commit/525c5a0fb87ef6ecce6e7421814b58e51688104d))