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.
- warp_hr-0.3.0/.claude/skills/warp-python-sdk/SKILL.md +77 -0
- warp_hr-0.3.0/.github/workflows/release-please.yml +127 -0
- warp_hr-0.3.0/.github/workflows/release-title-edit.yml +93 -0
- warp_hr-0.3.0/.github/workflows/sdk-ci.yml +27 -0
- warp_hr-0.3.0/.github/workflows/sdk-release.yml +34 -0
- warp_hr-0.3.0/.gitignore +10 -0
- warp_hr-0.3.0/.release-please-manifest.json +3 -0
- warp_hr-0.3.0/CHANGELOG.md +117 -0
- warp_hr-0.3.0/LICENSE +201 -0
- warp_hr-0.3.0/PKG-INFO +203 -0
- warp_hr-0.3.0/README.md +183 -0
- warp_hr-0.3.0/SECURITY.md +19 -0
- warp_hr-0.3.0/SKILL.md +77 -0
- warp_hr-0.3.0/VERSIONING.md +101 -0
- warp_hr-0.3.0/api.md +1112 -0
- warp_hr-0.3.0/pyproject.toml +34 -0
- warp_hr-0.3.0/release-please-config.json +46 -0
- warp_hr-0.3.0/scalar-sdk.manifest.json +32432 -0
- warp_hr-0.3.0/src/warp_hr/__init__.py +92 -0
- warp_hr-0.3.0/src/warp_hr/_base_client.py +2235 -0
- warp_hr-0.3.0/src/warp_hr/_client.py +1020 -0
- warp_hr-0.3.0/src/warp_hr/_compat.py +226 -0
- warp_hr-0.3.0/src/warp_hr/_constants.py +14 -0
- warp_hr-0.3.0/src/warp_hr/_event_handler.py +85 -0
- warp_hr-0.3.0/src/warp_hr/_exceptions.py +145 -0
- warp_hr-0.3.0/src/warp_hr/_files.py +173 -0
- warp_hr-0.3.0/src/warp_hr/_models.py +962 -0
- warp_hr-0.3.0/src/warp_hr/_qs.py +149 -0
- warp_hr-0.3.0/src/warp_hr/_resource.py +43 -0
- warp_hr-0.3.0/src/warp_hr/_response.py +840 -0
- warp_hr-0.3.0/src/warp_hr/_send_queue.py +90 -0
- warp_hr-0.3.0/src/warp_hr/_streaming.py +350 -0
- warp_hr-0.3.0/src/warp_hr/_types.py +274 -0
- warp_hr-0.3.0/src/warp_hr/_utils/__init__.py +64 -0
- warp_hr-0.3.0/src/warp_hr/_utils/_compat.py +45 -0
- warp_hr-0.3.0/src/warp_hr/_utils/_datetime_parse.py +136 -0
- warp_hr-0.3.0/src/warp_hr/_utils/_json.py +35 -0
- warp_hr-0.3.0/src/warp_hr/_utils/_logs.py +25 -0
- warp_hr-0.3.0/src/warp_hr/_utils/_path.py +127 -0
- warp_hr-0.3.0/src/warp_hr/_utils/_proxy.py +65 -0
- warp_hr-0.3.0/src/warp_hr/_utils/_reflection.py +42 -0
- warp_hr-0.3.0/src/warp_hr/_utils/_resources_proxy.py +24 -0
- warp_hr-0.3.0/src/warp_hr/_utils/_streams.py +12 -0
- warp_hr-0.3.0/src/warp_hr/_utils/_sync.py +58 -0
- warp_hr-0.3.0/src/warp_hr/_utils/_transform.py +472 -0
- warp_hr-0.3.0/src/warp_hr/_utils/_typing.py +156 -0
- warp_hr-0.3.0/src/warp_hr/_utils/_utils.py +428 -0
- warp_hr-0.3.0/src/warp_hr/_version.py +4 -0
- warp_hr-0.3.0/src/warp_hr/_webhook_verify.py +119 -0
- warp_hr-0.3.0/src/warp_hr/py.typed +0 -0
- warp_hr-0.3.0/src/warp_hr/resources/__init__.py +207 -0
- warp_hr-0.3.0/src/warp_hr/resources/bank_accounts.py +298 -0
- warp_hr-0.3.0/src/warp_hr/resources/benefits/__init__.py +61 -0
- warp_hr-0.3.0/src/warp_hr/resources/benefits/benefits.py +153 -0
- warp_hr-0.3.0/src/warp_hr/resources/benefits/deductions.py +745 -0
- warp_hr-0.3.0/src/warp_hr/resources/benefits/health_plans.py +335 -0
- warp_hr-0.3.0/src/warp_hr/resources/benefits/retirement_plans.py +545 -0
- warp_hr-0.3.0/src/warp_hr/resources/company.py +145 -0
- warp_hr-0.3.0/src/warp_hr/resources/custom_fields.py +1422 -0
- warp_hr-0.3.0/src/warp_hr/resources/departments.py +385 -0
- warp_hr-0.3.0/src/warp_hr/resources/i9_verifications.py +296 -0
- warp_hr-0.3.0/src/warp_hr/resources/levels.py +145 -0
- warp_hr-0.3.0/src/warp_hr/resources/offers.py +692 -0
- warp_hr-0.3.0/src/warp_hr/resources/pay_rates/__init__.py +33 -0
- warp_hr-0.3.0/src/warp_hr/resources/pay_rates/pay_rates.py +339 -0
- warp_hr-0.3.0/src/warp_hr/resources/pay_rates/regular.py +440 -0
- warp_hr-0.3.0/src/warp_hr/resources/pay_splits.py +305 -0
- warp_hr-0.3.0/src/warp_hr/resources/payroll.py +615 -0
- warp_hr-0.3.0/src/warp_hr/resources/time_off/__init__.py +33 -0
- warp_hr-0.3.0/src/warp_hr/resources/time_off/policies.py +272 -0
- warp_hr-0.3.0/src/warp_hr/resources/time_off/time_off.py +541 -0
- warp_hr-0.3.0/src/warp_hr/resources/webhooks.py +165 -0
- warp_hr-0.3.0/src/warp_hr/resources/workers.py +1731 -0
- warp_hr-0.3.0/src/warp_hr/resources/workplaces.py +406 -0
- warp_hr-0.3.0/src/warp_hr/types/__init__.py +225 -0
- warp_hr-0.3.0/src/warp_hr/types/bank_account_list_params.py +27 -0
- warp_hr-0.3.0/src/warp_hr/types/bank_account_list_response.py +19 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/__init__.py +33 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/deduction_create_params.py +279 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/deduction_list_params.py +71 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/deduction_list_response.py +19 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/deduction_update_params.py +221 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/fixed_amount_benefit_calculation.py +27 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/health_plan_list_params.py +43 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/health_plan_list_response.py +19 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/health_plan_reference.py +19 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/percentage_benefit_calculation.py +23 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/percentage_contribution.py +17 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/public_benefit_deduction.py +88 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/public_benefit_deduction_1.py +88 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/public_benefit_deduction_calculation.py +11 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/public_benefit_deduction_category.py +9 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/public_benefit_deduction_plan.py +11 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/public_benefit_deduction_status.py +7 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/public_health_plan.py +58 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/public_health_plan_carrier.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/public_health_plan_status.py +7 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/public_retirement_plan.py +40 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/public_retirement_plan_1.py +40 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/public_retirement_plan_provider.py +7 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/public_retirement_plan_status.py +7 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/public_worker_reference.py +20 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/retirement_plan_create_params.py +19 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/retirement_plan_list_params.py +28 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/retirement_plan_list_response.py +19 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/retirement_plan_reference.py +19 -0
- warp_hr-0.3.0/src/warp_hr/types/benefits/retirement_plan_update_params.py +18 -0
- warp_hr-0.3.0/src/warp_hr/types/boolean_custom_field_value.py +13 -0
- warp_hr-0.3.0/src/warp_hr/types/currency_custom_field_value.py +80 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_archive_option_response.py +25 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_archive_response.py +37 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_clear_value_params.py +17 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_create_option_params.py +20 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_create_option_response.py +25 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_create_params.py +40 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_create_response.py +37 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_get_response.py +56 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_list_response.py +40 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_list_values_params.py +17 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_list_values_response.py +30 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_update_option_params.py +18 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_update_option_response.py +25 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_update_params.py +26 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_update_response.py +37 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_upsert_value_params.py +154 -0
- warp_hr-0.3.0/src/warp_hr/types/custom_field_upsert_value_response.py +24 -0
- warp_hr-0.3.0/src/warp_hr/types/date_custom_field_value.py +13 -0
- warp_hr-0.3.0/src/warp_hr/types/department_create_params.py +11 -0
- warp_hr-0.3.0/src/warp_hr/types/department_create_response.py +16 -0
- warp_hr-0.3.0/src/warp_hr/types/department_list_params.py +20 -0
- warp_hr-0.3.0/src/warp_hr/types/department_list_response.py +28 -0
- warp_hr-0.3.0/src/warp_hr/types/department_update_params.py +12 -0
- warp_hr-0.3.0/src/warp_hr/types/department_update_response.py +16 -0
- warp_hr-0.3.0/src/warp_hr/types/i9_verification_list_params.py +27 -0
- warp_hr-0.3.0/src/warp_hr/types/i9_verification_list_response.py +19 -0
- warp_hr-0.3.0/src/warp_hr/types/level_list_response.py +22 -0
- warp_hr-0.3.0/src/warp_hr/types/multi_select_custom_field_value.py +31 -0
- warp_hr-0.3.0/src/warp_hr/types/number_custom_field_value.py +14 -0
- warp_hr-0.3.0/src/warp_hr/types/offer_accepted_webhook_event.py +426 -0
- warp_hr-0.3.0/src/warp_hr/types/offer_create_params.py +429 -0
- warp_hr-0.3.0/src/warp_hr/types/offer_create_response.py +412 -0
- warp_hr-0.3.0/src/warp_hr/types/offer_created_webhook_event.py +426 -0
- warp_hr-0.3.0/src/warp_hr/types/offer_expired_webhook_event.py +426 -0
- warp_hr-0.3.0/src/warp_hr/types/offer_extend_deadline_params.py +13 -0
- warp_hr-0.3.0/src/warp_hr/types/offer_extend_deadline_response.py +412 -0
- warp_hr-0.3.0/src/warp_hr/types/offer_list_params.py +29 -0
- warp_hr-0.3.0/src/warp_hr/types/offer_list_response.py +421 -0
- warp_hr-0.3.0/src/warp_hr/types/offer_resend_response.py +412 -0
- warp_hr-0.3.0/src/warp_hr/types/offer_sent_webhook_event.py +426 -0
- warp_hr-0.3.0/src/warp_hr/types/offer_signature_requested_webhook_event.py +426 -0
- warp_hr-0.3.0/src/warp_hr/types/offer_viewed_webhook_event.py +426 -0
- warp_hr-0.3.0/src/warp_hr/types/offer_void_params.py +16 -0
- warp_hr-0.3.0/src/warp_hr/types/offer_void_response.py +412 -0
- warp_hr-0.3.0/src/warp_hr/types/offer_voided_webhook_event.py +426 -0
- warp_hr-0.3.0/src/warp_hr/types/parsed_webhook_event.py +60 -0
- warp_hr-0.3.0/src/warp_hr/types/pay_rate_created_webhook_event.py +33 -0
- warp_hr-0.3.0/src/warp_hr/types/pay_rate_deleted_webhook_event.py +33 -0
- warp_hr-0.3.0/src/warp_hr/types/pay_rate_list_params.py +34 -0
- warp_hr-0.3.0/src/warp_hr/types/pay_rate_list_response.py +19 -0
- warp_hr-0.3.0/src/warp_hr/types/pay_rates/__init__.py +9 -0
- warp_hr-0.3.0/src/warp_hr/types/pay_rates/public_create_regular_pay_rate_response.py +12 -0
- warp_hr-0.3.0/src/warp_hr/types/pay_rates/regular_create_params.py +92 -0
- warp_hr-0.3.0/src/warp_hr/types/pay_rates/regular_delete_params.py +16 -0
- warp_hr-0.3.0/src/warp_hr/types/pay_split_get_response.py +9 -0
- warp_hr-0.3.0/src/warp_hr/types/pay_split_list_params.py +32 -0
- warp_hr-0.3.0/src/warp_hr/types/pay_split_list_response.py +19 -0
- warp_hr-0.3.0/src/warp_hr/types/payroll_list_params.py +50 -0
- warp_hr-0.3.0/src/warp_hr/types/payroll_list_paychecks_params.py +63 -0
- warp_hr-0.3.0/src/warp_hr/types/percentage_custom_field_value.py +14 -0
- warp_hr-0.3.0/src/warp_hr/types/public_amount_pay_split.py +37 -0
- warp_hr-0.3.0/src/warp_hr/types/public_bank_account.py +35 -0
- warp_hr-0.3.0/src/warp_hr/types/public_bank_account_reference.py +21 -0
- warp_hr-0.3.0/src/warp_hr/types/public_boolean_worker_custom_field.py +26 -0
- warp_hr-0.3.0/src/warp_hr/types/public_company.py +234 -0
- warp_hr-0.3.0/src/warp_hr/types/public_company_address.py +78 -0
- warp_hr-0.3.0/src/warp_hr/types/public_company_business_type.py +9 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_1.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_10.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_11.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_12.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_13.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_14.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_15.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_16.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_17.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_18.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_19.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_2.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_20.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_3.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_4.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_5.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_6.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_7.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_8.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_money_amount_9.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_currency_worker_custom_field.py +95 -0
- warp_hr-0.3.0/src/warp_hr/types/public_custom_field_value_output.py +26 -0
- warp_hr-0.3.0/src/warp_hr/types/public_date_worker_custom_field.py +26 -0
- warp_hr-0.3.0/src/warp_hr/types/public_exchange_rate.py +32 -0
- warp_hr-0.3.0/src/warp_hr/types/public_exchange_rate_value.py +7 -0
- warp_hr-0.3.0/src/warp_hr/types/public_funding_payroll_totals.py +58 -0
- warp_hr-0.3.0/src/warp_hr/types/public_hourly_rate.py +28 -0
- warp_hr-0.3.0/src/warp_hr/types/public_hourly_rate_amount.py +7 -0
- warp_hr-0.3.0/src/warp_hr/types/public_i9_verification.py +33 -0
- warp_hr-0.3.0/src/warp_hr/types/public_money_amount.py +81 -0
- warp_hr-0.3.0/src/warp_hr/types/public_multi_select_worker_custom_field.py +43 -0
- warp_hr-0.3.0/src/warp_hr/types/public_number_worker_custom_field.py +26 -0
- warp_hr-0.3.0/src/warp_hr/types/public_pay_frequency.py +7 -0
- warp_hr-0.3.0/src/warp_hr/types/public_pay_period.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_pay_rate.py +109 -0
- warp_hr-0.3.0/src/warp_hr/types/public_pay_rate_per.py +7 -0
- warp_hr-0.3.0/src/warp_hr/types/public_pay_rate_type.py +7 -0
- warp_hr-0.3.0/src/warp_hr/types/public_pay_split.py +11 -0
- warp_hr-0.3.0/src/warp_hr/types/public_pay_split_allocation.py +11 -0
- warp_hr-0.3.0/src/warp_hr/types/public_pay_split_amount_allocation.py +19 -0
- warp_hr-0.3.0/src/warp_hr/types/public_pay_split_fixed_allocation.py +81 -0
- warp_hr-0.3.0/src/warp_hr/types/public_pay_split_percentage.py +16 -0
- warp_hr-0.3.0/src/warp_hr/types/public_pay_split_percentage_allocation.py +19 -0
- warp_hr-0.3.0/src/warp_hr/types/public_pay_split_remainder_allocation.py +11 -0
- warp_hr-0.3.0/src/warp_hr/types/public_pay_split_status.py +7 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_benefit.py +67 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_currency_totals.py +57 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_deduction.py +27 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_deduction_tax_treatment.py +7 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_detail.py +314 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_detail_totals.py +56 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_earning.py +74 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_list.py +17 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_payment_method.py +7 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_payroll.py +58 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_reimbursement.py +18 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_status.py +9 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_summary.py +133 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_summary_currency_totals.py +25 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_summary_totals.py +32 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_tax.py +41 -0
- warp_hr-0.3.0/src/warp_hr/types/public_paycheck_worker.py +26 -0
- warp_hr-0.3.0/src/warp_hr/types/public_payroll_currency.py +70 -0
- warp_hr-0.3.0/src/warp_hr/types/public_payroll_detail.py +133 -0
- warp_hr-0.3.0/src/warp_hr/types/public_payroll_detail_totals.py +62 -0
- warp_hr-0.3.0/src/warp_hr/types/public_payroll_funding_method.py +7 -0
- warp_hr-0.3.0/src/warp_hr/types/public_payroll_list.py +17 -0
- warp_hr-0.3.0/src/warp_hr/types/public_payroll_money_amount.py +23 -0
- warp_hr-0.3.0/src/warp_hr/types/public_payroll_money_amount_1.py +23 -0
- warp_hr-0.3.0/src/warp_hr/types/public_payroll_money_amount_2.py +23 -0
- warp_hr-0.3.0/src/warp_hr/types/public_payroll_money_amount_3.py +23 -0
- warp_hr-0.3.0/src/warp_hr/types/public_payroll_money_amount_4.py +23 -0
- warp_hr-0.3.0/src/warp_hr/types/public_payroll_money_amount_5.py +23 -0
- warp_hr-0.3.0/src/warp_hr/types/public_payroll_status.py +9 -0
- warp_hr-0.3.0/src/warp_hr/types/public_payroll_subtype.py +9 -0
- warp_hr-0.3.0/src/warp_hr/types/public_payroll_summary.py +104 -0
- warp_hr-0.3.0/src/warp_hr/types/public_payroll_timeline.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/public_payroll_type.py +7 -0
- warp_hr-0.3.0/src/warp_hr/types/public_percentage_pay_split.py +37 -0
- warp_hr-0.3.0/src/warp_hr/types/public_percentage_worker_custom_field.py +26 -0
- warp_hr-0.3.0/src/warp_hr/types/public_select_worker_custom_field.py +43 -0
- warp_hr-0.3.0/src/warp_hr/types/public_tax_payer.py +7 -0
- warp_hr-0.3.0/src/warp_hr/types/public_text_worker_custom_field.py +26 -0
- warp_hr-0.3.0/src/warp_hr/types/public_worker_address.py +277 -0
- warp_hr-0.3.0/src/warp_hr/types/public_worker_compensation.py +94 -0
- warp_hr-0.3.0/src/warp_hr/types/public_worker_custom_field.py +26 -0
- warp_hr-0.3.0/src/warp_hr/types/public_worker_manager.py +20 -0
- warp_hr-0.3.0/src/warp_hr/types/public_worker_ssn.py +17 -0
- warp_hr-0.3.0/src/warp_hr/types/select_custom_field_value.py +31 -0
- warp_hr-0.3.0/src/warp_hr/types/text_custom_field_value.py +13 -0
- warp_hr-0.3.0/src/warp_hr/types/time_off/__init__.py +7 -0
- warp_hr-0.3.0/src/warp_hr/types/time_off/policy_get_response.py +42 -0
- warp_hr-0.3.0/src/warp_hr/types/time_off/policy_list_params.py +18 -0
- warp_hr-0.3.0/src/warp_hr/types/time_off/policy_list_response.py +52 -0
- warp_hr-0.3.0/src/warp_hr/types/time_off_balance_adjusted_webhook_event.py +21 -0
- warp_hr-0.3.0/src/warp_hr/types/time_off_list_assignments_params.py +25 -0
- warp_hr-0.3.0/src/warp_hr/types/time_off_list_assignments_response.py +31 -0
- warp_hr-0.3.0/src/warp_hr/types/time_off_list_balances_params.py +29 -0
- warp_hr-0.3.0/src/warp_hr/types/time_off_list_balances_response.py +39 -0
- warp_hr-0.3.0/src/warp_hr/types/time_off_list_requests_params.py +33 -0
- warp_hr-0.3.0/src/warp_hr/types/time_off_list_requests_response.py +48 -0
- warp_hr-0.3.0/src/warp_hr/types/time_off_request_created_webhook_event.py +51 -0
- warp_hr-0.3.0/src/warp_hr/types/time_off_request_deleted_webhook_event.py +51 -0
- warp_hr-0.3.0/src/warp_hr/types/time_off_request_reviewed_webhook_event.py +51 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_create_contractor_params.py +386 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_create_contractor_response.py +129 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_create_employee_params.py +150 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_create_employee_response.py +129 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_created_webhook_event.py +143 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_deleted_webhook_event.py +143 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_get_response.py +129 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_invite_accepted_webhook_event.py +143 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_invite_response.py +129 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_invite_sent_webhook_event.py +143 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_list_params.py +26 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_list_response.py +137 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_offboarded_webhook_event.py +143 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_offboarding_started_webhook_event.py +143 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_onboarding_completed_webhook_event.py +143 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_reactivated_webhook_event.py +143 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_reveal_ssn_params.py +15 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_reveal_ssn_response.py +10 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_update_params.py +58 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_update_response.py +129 -0
- warp_hr-0.3.0/src/warp_hr/types/worker_updated_webhook_event.py +143 -0
- warp_hr-0.3.0/src/warp_hr/types/workplace_create_params.py +87 -0
- warp_hr-0.3.0/src/warp_hr/types/workplace_create_response.py +94 -0
- warp_hr-0.3.0/src/warp_hr/types/workplace_list_params.py +20 -0
- warp_hr-0.3.0/src/warp_hr/types/workplace_list_response.py +102 -0
- warp_hr-0.3.0/src/warp_hr/types/workplace_update_params.py +12 -0
- warp_hr-0.3.0/src/warp_hr/types/workplace_update_response.py +94 -0
- 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
|
warp_hr-0.3.0/.gitignore
ADDED
|
@@ -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))
|