From 3172cde1847c0aeac55a24074563b69ccab9f182 Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Mon, 8 Jun 2026 01:00:05 +0000 Subject: [PATCH] =?UTF-8?q?##=20Python=20SDK=20Changes:=20*=20`kombo.hris.?= =?UTF-8?q?get=5Femployees()`:=20=20`error.code.enum(hris.staffing=5Fentit?= =?UTF-8?q?y=5Fclosed)`=20**Added**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*?= =?UTF-8?q?=20`kombo.hris.get=5Femployee=5Fform()`:=20=20=20*=20=20`reques?= =?UTF-8?q?t`=20**Changed**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20=20=20*=20?= =?UTF-8?q?=20`error.code.enum(hris.staffing=5Fentity=5Fclosed)`=20**Added?= =?UTF-8?q?**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`kombo.hris.create?= =?UTF-8?q?=5Femployee=5Fwith=5Fform()`:=20=20=20*=20=20`request.staffing?= =?UTF-8?q?=5Fentity=5Fid`=20**Added**=20=20=20*=20=20`error.code.enum(hri?= =?UTF-8?q?s.staffing=5Fentity=5Fclosed)`=20**Added**=20(Breaking=20?= =?UTF-8?q?=E2=9A=A0=EF=B8=8F)=20*=20`kombo.hris.add=5Femployee=5Fdocument?= =?UTF-8?q?()`:=20=20`error.code.enum(hris.staffing=5Fentity=5Fclosed)`=20?= =?UTF-8?q?**Added**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`kombo.hris.g?= =?UTF-8?q?et=5Femployee=5Fdocument=5Fcategories()`:=20=20`error.code.enum?= =?UTF-8?q?(hris.staffing=5Fentity=5Fclosed)`=20**Added**=20(Breaking=20?= =?UTF-8?q?=E2=9A=A0=EF=B8=8F)=20*=20`kombo.hris.get=5Fgroups()`:=20=20`er?= =?UTF-8?q?ror.code.enum(hris.staffing=5Fentity=5Fclosed)`=20**Added**=20(?= =?UTF-8?q?Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`kombo.hris.get=5Femployme?= =?UTF-8?q?nts()`:=20=20`error.code.enum(hris.staffing=5Fentity=5Fclosed)`?= =?UTF-8?q?=20**Added**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`kombo.hri?= =?UTF-8?q?s.get=5Flocations()`:=20=20`error.code.enum(hris.staffing=5Fent?= =?UTF-8?q?ity=5Fclosed)`=20**Added**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20?= =?UTF-8?q?*=20`kombo.hris.get=5Fabsence=5Ftypes()`:=20=20`error.code.enum?= =?UTF-8?q?(hris.staffing=5Fentity=5Fclosed)`=20**Added**=20(Breaking=20?= =?UTF-8?q?=E2=9A=A0=EF=B8=8F)=20*=20`kombo.hris.get=5Ftime=5Foff=5Fbalanc?= =?UTF-8?q?es()`:=20=20`error.code.enum(hris.staffing=5Fentity=5Fclosed)`?= =?UTF-8?q?=20**Added**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`kombo.hri?= =?UTF-8?q?s.get=5Fabsences()`:=20=20`error.code.enum(hris.staffing=5Fenti?= =?UTF-8?q?ty=5Fclosed)`=20**Added**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*?= =?UTF-8?q?=20`kombo.hris.create=5Fabsence()`:=20=20`error.code.enum(hris.?= =?UTF-8?q?staffing=5Fentity=5Fclosed)`=20**Added**=20(Breaking=20?= =?UTF-8?q?=E2=9A=A0=EF=B8=8F)=20*=20`kombo.hris.delete=5Fabsence()`:=20?= =?UTF-8?q?=20`error.code.enum(hris.staffing=5Fentity=5Fclosed)`=20**Added?= =?UTF-8?q?**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`kombo.hris.get=5Fle?= =?UTF-8?q?gal=5Fentities()`:=20=20`error.code.enum(hris.staffing=5Fentity?= =?UTF-8?q?=5Fclosed)`=20**Added**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*?= =?UTF-8?q?=20`kombo.hris.get=5Ftimesheets()`:=20=20`error.code.enum(hris.?= =?UTF-8?q?staffing=5Fentity=5Fclosed)`=20**Added**=20(Breaking=20?= =?UTF-8?q?=E2=9A=A0=EF=B8=8F)=20*=20`kombo.hris.get=5Fperformance=5Frevie?= =?UTF-8?q?w=5Fcycles()`:=20=20`error.code.enum(hris.staffing=5Fentity=5Fc?= =?UTF-8?q?losed)`=20**Added**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`ko?= =?UTF-8?q?mbo.hris.get=5Fperformance=5Freviews()`:=20=20`error.code.enum(?= =?UTF-8?q?hris.staffing=5Fentity=5Fclosed)`=20**Added**=20(Breaking=20?= =?UTF-8?q?=E2=9A=A0=EF=B8=8F)=20*=20`kombo.hris.get=5Fstaffing=5Fentities?= =?UTF-8?q?()`:=20=20`error.code.enum(hris.staffing=5Fentity=5Fclosed)`=20?= =?UTF-8?q?**Added**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`kombo.ats.cr?= =?UTF-8?q?eate=5Fcandidate()`:=20=20=20*=20=20`request.remote=5Ffields.co?= =?UTF-8?q?vetorest.candidate.status`=20**Added**=20*=20`kombo.ats.create?= =?UTF-8?q?=5Fapplication()`:=20=20=20*=20=20`request.remote=5Ffields.cove?= =?UTF-8?q?torest.candidate.status`=20**Added**=20*=20`kombo.assessment.up?= =?UTF-8?q?date=5Forder=5Fresult()`:=20=20=20*=20=20`request.remote=5Ffiel?= =?UTF-8?q?ds.workday`=20**Added**=20*=20`kombo.connect.create=5Fconnectio?= =?UTF-8?q?n=5Flink()`:=20=20`request.integration=5Ftool`=20**Changed**?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .speakeasy/gen.lock | 148 +++++++++------ .speakeasy/gen.yaml | 7 +- .speakeasy/workflow.lock | 12 +- RELEASES.md | 12 +- docs/models/assesscandidatedata.md | 10 + docs/models/assesscandidatetestresultdata.md | 10 + docs/models/assessmentteststatusreference.md | 10 + docs/models/candidateassessmentdata.md | 10 + docs/models/gethrisemployeesformrequest.md | 5 +- docs/models/integrationtool.md | 4 +- docs/models/kombohriserrorcode.md | 1 + ...andidatesrequestbodycovetorestcandidate.md | 7 +- ...licationsrequestbodycovetorestcandidate.md | 7 +- .../posthrisemployeesformrequestbody.md | 1 + ...entorderidresultrequestbodyremotefields.md | 9 +- ...sessmentorderidresultrequestbodyworkday.md | 10 + docs/sdks/general/README.md | 6 + docs/sdks/hris/README.md | 13 +- pyproject.toml | 2 +- src/kombo/_version.py | 6 +- src/kombo/general.py | 12 ++ src/kombo/hris.py | 40 ++-- src/kombo/models/__init__.py | 30 +++ src/kombo/models/gethrisemployeesformop.py | 27 ++- src/kombo/models/kombohriserror.py | 1 + .../models/postatscandidatesrequestbody.py | 7 +- ...postatsjobsjobidapplicationsrequestbody.py | 7 +- .../postconnectcreatelinkrequestbody.py | 4 +- .../posthrisemployeesformrequestbody.py | 26 ++- ...rdersassessmentorderidresultrequestbody.py | 178 +++++++++++++++++- src/kombo/sdk.py | 4 +- src/kombo/types/__init__.py | 3 + src/kombo/types/base64fileinput.py | 39 ++++ src/kombo/utils/requestbodies.py | 1 + uv.lock | 2 +- 35 files changed, 549 insertions(+), 122 deletions(-) create mode 100644 docs/models/assesscandidatedata.md create mode 100644 docs/models/assesscandidatetestresultdata.md create mode 100644 docs/models/assessmentteststatusreference.md create mode 100644 docs/models/candidateassessmentdata.md create mode 100644 docs/models/putassessmentordersassessmentorderidresultrequestbodyworkday.md create mode 100644 src/kombo/types/base64fileinput.py diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 6a5045f..774e937 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,28 +1,28 @@ lockVersion: 2.0.0 id: 0c8d1667-2710-4860-aee3-7d221dbc0a60 management: - docChecksum: 77beda072f763cbbd80a7c8b94251247 + docChecksum: be5c022f6de13e02a50df9b4c318826c docVersion: 1.0.0 - speakeasyVersion: 1.762.0 - generationVersion: 2.882.0 - releaseVersion: 1.1.3 - configChecksum: 11d2b72c8bb9ed9b9feb3a4ab91f2cc7 + speakeasyVersion: 1.771.0 + generationVersion: 2.893.0 + releaseVersion: 1.2.0 + configChecksum: c4c3331ffaa1803aa7003ee9cf596fc7 repoURL: https://github.com/kombohq/python-sdk.git installationURL: https://github.com/kombohq/python-sdk.git published: true persistentEdits: - generation_id: 68612f19-7653-49de-a956-8dd3e6af9ca0 - pristine_commit_hash: ab0c638a4fbd1b137477c904fc5ef1aba041834f - pristine_tree_hash: 420392bb1821c899e17d46665d2e39917db3c6f3 + generation_id: 8376918f-2882-4652-8c06-6e1d5686c1dd + pristine_commit_hash: bf630fb39ba1f183d8d4111c242004c3338bff3b + pristine_tree_hash: ed6ab239daa1155eeee85e35248e749660a23339 features: python: - additionalDependencies: 1.0.0 + additionalDependencies: 1.1.0 constsAndDefaults: 1.0.7 - core: 6.0.21 + core: 6.0.24 defaultEnabledRetries: 0.2.0 deprecations: 3.0.2 enumUnions: 0.1.1 - envVarSecurityUsage: 0.3.2 + envVarSecurityUsage: 0.3.3 errors: 3.3.6 flatRequests: 1.0.1 flattening: 3.1.1 @@ -34,7 +34,7 @@ features: groups: 3.0.1 hiddenGlobals: 1.0.0 ignores: 3.0.1 - methodArguments: 1.0.2 + methodArguments: 1.1.0 nameOverrides: 3.0.3 nullables: 1.0.2 openEnums: 1.0.4 @@ -75,6 +75,14 @@ trackedFiles: id: 13c1c70d8b70 last_write_checksum: sha1:e0c90ec9364b2baab1e00d49c1fda754c2f97f11 pristine_git_object: 2419c02cddd3e5c8fce427a9002a37f989099f54 + docs/models/assesscandidatedata.md: + id: 1c1434b54a77 + last_write_checksum: sha1:6d5e02105835f41e8a47df7d4368779a027a9c2a + pristine_git_object: 6f0fd131c84bbd6aec7a4a7bc9024c60b825dfb2 + docs/models/assesscandidatetestresultdata.md: + id: 811e93929402 + last_write_checksum: sha1:2732aaca13c18a513fd0d93bca4cab261a2762ec + pristine_git_object: 33b45d3f265a4ced8508700a5ff4c42b3460413c docs/models/assessmentorderreceivedwebhookpayload.md: id: d92f7141ad1f last_write_checksum: sha1:6f4b6e95944b659c83a1f7c858b18325f9759288 @@ -115,6 +123,10 @@ trackedFiles: id: 833a9878b21c last_write_checksum: sha1:4e722fc59fd957e0b4fca1f74ca3a7651127e7ab pristine_git_object: 6687969b976ce7b2267300332eacd1765e9f36ce + docs/models/assessmentteststatusreference.md: + id: 69e33a64734b + last_write_checksum: sha1:46d14c98d897ccc777188b941827134205975371 + pristine_git_object: 9fef8bd29af6c983601fdd48dcaa7a2c64a7e1ac docs/models/assets.md: id: 94ece5229687 last_write_checksum: sha1:26abe2c561ab19fc1c6accc01d6ac9939054d2cb @@ -147,6 +159,10 @@ trackedFiles: id: 1e8af8837c95 last_write_checksum: sha1:d4ed7a43b316a783d4d804a26f0b6cb09403d7a0 pristine_git_object: 53a0deb246d0a737066fde5160eec15246ca5f22 + docs/models/candidateassessmentdata.md: + id: e0061a53f9b4 + last_write_checksum: sha1:fec9d01cc8a32b3fe43b7e139cf0d35371f44cfc + pristine_git_object: 126e3d9fb3c7a5ee4d3173cfde05fb2839094c3d docs/models/changedmodel.md: id: 9670ed10ecd7 last_write_checksum: sha1:9714af9d05a450e13cdc486f56f9f5711caa8b71 @@ -1233,8 +1249,8 @@ trackedFiles: pristine_git_object: a54e18e8ab4774d6aded8d0451eaaef53d82ed76 docs/models/gethrisemployeesformrequest.md: id: f457af7347b4 - last_write_checksum: sha1:1c8b0c84ec28a278b50b2bc513faafcf72acad4d - pristine_git_object: b7e261d4e9a5c34c5b55756daaed34bf40e252f7 + last_write_checksum: sha1:9f075bd9c410bb262b2d241bc22fae10941652da + pristine_git_object: fc05df4ded5f948b8c33a86e0b76ba1ea66154df docs/models/gethrisemployeesglobals.md: id: d64873057e27 last_write_checksum: sha1:e378f06ed63f9943273b5384a67ac9ea35e03635 @@ -1869,8 +1885,8 @@ trackedFiles: pristine_git_object: 95d7af043b98494373f18f3ceae6a530e7e4af71 docs/models/integrationtool.md: id: 59f82e2d180c - last_write_checksum: sha1:d00d33c192d0b6e9904e20b0c9854cae33309805 - pristine_git_object: 687560ddd101cf711b349f69b6113bdacafb34c4 + last_write_checksum: sha1:155c697eca020f2addbea35baa181b5a406813aa + pristine_git_object: a3fdc3a9b931b0b8dee0bd1eac2b0002da6b52b7 docs/models/internal/globals.md: id: 9c173b87f41f last_write_checksum: sha1:3969d44e1ad9258f466c40b241681eb82c1ac29a @@ -1921,8 +1937,8 @@ trackedFiles: pristine_git_object: 127a25c9a96aea636226a23cb413e0625dea057f docs/models/kombohriserrorcode.md: id: 9d2d92047e17 - last_write_checksum: sha1:53cb72e4fc8083ff03c7bfa1839b146cb48de04b - pristine_git_object: 119779626df97d3fabb514d4fef957beb1de9532 + last_write_checksum: sha1:aa8307247b7fa10eed4404f92bf9ec8bc7d2aa0d + pristine_git_object: 59d3b9d3428d8e2c84663ec690ebb60d0f9634e3 docs/models/kombohriserrorerror.md: id: d6f64101e2d2 last_write_checksum: sha1:dfc510521590ac86059158a1c349ff52e8747567 @@ -2505,8 +2521,8 @@ trackedFiles: pristine_git_object: 825cc4294186d38f956660ceb702f343bc8fb643 docs/models/postatscandidatesrequestbodycovetorestcandidate.md: id: 3da95f5ce314 - last_write_checksum: sha1:f6250a04fb7baaf84e1d557d8889c36425816703 - pristine_git_object: 636a51c2549de73c50dce92cba40fc3f5d20c386 + last_write_checksum: sha1:8bd175ad12a83e7bcf5826603f356d4b262d52d7 + pristine_git_object: 95eb78e5cff47ac19f472a82bddeadddce682290 docs/models/postatscandidatesrequestbodydegreereference.md: id: 80f9c5593c46 last_write_checksum: sha1:57b4c36ae98e1a1ba2ba3189ccac93dca297457d @@ -3101,8 +3117,8 @@ trackedFiles: pristine_git_object: 806f3e2cbf4f21c6cc3958a22fe3dbb9d152e23a docs/models/postatsjobsjobidapplicationsrequestbodycovetorestcandidate.md: id: b6369fa618d1 - last_write_checksum: sha1:edb6b87853fc40710edf4cf645da407a07e002b4 - pristine_git_object: 279cc9c72a6ada47182f58c85760289a28258504 + last_write_checksum: sha1:9b3a77793f8e3165dcfc691d7d4627b10c829dfc + pristine_git_object: 5cfee8656170c245508522e7629fc67c6a9dee96 docs/models/postatsjobsjobidapplicationsrequestbodydegreereference.md: id: 0691556b8773 last_write_checksum: sha1:e4fd8479dfb23366dfc26024b82a16f9472aa8d0 @@ -3473,8 +3489,8 @@ trackedFiles: pristine_git_object: f9eb2ba14635b148189beed207494b8151e7b318 docs/models/posthrisemployeesformrequestbody.md: id: 71de56df0d8c - last_write_checksum: sha1:a7519f752766e64232cb87172f3c3c35f4f56dbc - pristine_git_object: f8549d190f73bbf9936b9d822ebfbdea5d7427e4 + last_write_checksum: sha1:c64b5471bc43f3fc1c3025eb4cbe7853a8ac8d2e + pristine_git_object: 04b13d578db5224b0f1757df22c37979451be8e4 docs/models/postintegrationsintegrationidrelinkpositiveresponse.md: id: e2b532cb50a2 last_write_checksum: sha1:88daba9945c5d951ab57165699898502a8832943 @@ -3629,8 +3645,8 @@ trackedFiles: pristine_git_object: 390541cb4ed8eb384d6bfc785c8e3eb08c8d21d6 docs/models/putassessmentordersassessmentorderidresultrequestbodyremotefields.md: id: 51f8810695e9 - last_write_checksum: sha1:d55b284a8bccf9a10578c75dbf96c24573414e08 - pristine_git_object: 39f32cb7718874b6e463664dda47b5857df6d68b + last_write_checksum: sha1:5b8b33072d9845ee8547838fa824a6c2bb840a9d + pristine_git_object: 68b2a72e2c6ebf02c190eedd87f6af376d3164f0 docs/models/putassessmentordersassessmentorderidresultrequestbodysmartrecruiters.md: id: b2889dbfc3b9 last_write_checksum: sha1:5022128de544dd45593ca0c88d09533b1657c46c @@ -3639,6 +3655,10 @@ trackedFiles: id: 5851da630cb3 last_write_checksum: sha1:0e6d31ae034c54681201551fd3c8f8d87dca2a12 pristine_git_object: 6712182845218e5027054480d533ed4836d9388f + docs/models/putassessmentordersassessmentorderidresultrequestbodyworkday.md: + id: dea2f94fe9d6 + last_write_checksum: sha1:f2a05c02f6b54729e5948e669d6c429bc63cc630 + pristine_git_object: 17f3a387cfb9badf790b8cc561971a195d6057d1 docs/models/putassessmentpackagesglobals.md: id: 52f6f40ddeb0 last_write_checksum: sha1:3ce2caaf23328f82ea4abb63237a7a8571a6f54e @@ -4181,12 +4201,12 @@ trackedFiles: pristine_git_object: cb268794ca5a2389305a908323d1585a0c88d9c4 docs/sdks/general/README.md: id: ce0ada6fa2e1 - last_write_checksum: sha1:516864dfc6c5f4333276fb3a7a4d399bf9dd2cc9 - pristine_git_object: 9240a06113474422a1e0e66b8e43c906418b5205 + last_write_checksum: sha1:fc2bcb3eaca98e61519628c732230ea822daa573 + pristine_git_object: c2b2f9a2d73719786c624ce68468f7e5d0db94f7 docs/sdks/hris/README.md: id: 0baa868a038c - last_write_checksum: sha1:244152900db6c3aa475b41eea67649508fdff080 - pristine_git_object: 7fdbdd7a0df3a4236ff59bec259676bb8c6710b4 + last_write_checksum: sha1:f7f2b3d812a1b1b4097d81977cda0a7384585325 + pristine_git_object: 4d596ca48d08c86930a36c5dc1a170e507085fbe py.typed: id: 258c3ed47ae4 last_write_checksum: sha1:8efc425ffe830805ffcc0f3055871bdcdc542c60 @@ -4197,8 +4217,8 @@ trackedFiles: pristine_git_object: f456032107a9387ba6c98afd1c981df2f4b3d636 pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:6f25f1c5358d3f321a7dc5b8cf46553f96f931fc - pristine_git_object: 65803b5e0e2227abf1f65b1ea211dc0d180d4d58 + last_write_checksum: sha1:580500cc0af793786031feb5fab582372a8f9b1a + pristine_git_object: 9af6c441766a04c799f00e85cb771e1c8479df69 scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:b6ad6f0515a952d7cb052befddb6a117d4f627d8 @@ -4225,8 +4245,8 @@ trackedFiles: pristine_git_object: e589e541e5fc70d336de44780721f301d754ed72 src/kombo/_version.py: id: 45cf440ad1df - last_write_checksum: sha1:c8e19a20a137abbd45741e03f79adb07029ad65b - pristine_git_object: 55ba83ae9a9c873e5a849988c9ce16c5067f8317 + last_write_checksum: sha1:195c140de357d9f060a7ff64bc953de837f17b5e + pristine_git_object: e8690c6b73fdf6fdfc80750a56674d6616dcb68c src/kombo/assessment.py: id: aec6e8a7589f last_write_checksum: sha1:8d496d8f3b781a727642d4b4f05b598a2eb73312 @@ -4277,20 +4297,20 @@ trackedFiles: pristine_git_object: 16ac2977e80b6eabe4020aa8a21dd28e83032f9a src/kombo/general.py: id: 107ecb9f3651 - last_write_checksum: sha1:9958bdbc440cf09d3c2d4c8cd674949abee22b6a - pristine_git_object: 4a84a72ea0f090d47b0176fd0e3a1abf623f990b + last_write_checksum: sha1:ab187ee80dce4bc01acfd1c0f198d222c2f90152 + pristine_git_object: 300563cfc39258f4cef7d0f239783237c3ddf106 src/kombo/hris.py: id: 9ba1b37ab10a - last_write_checksum: sha1:7d099467a76303112c746f380bdf152c1e18ede3 - pristine_git_object: 298865d759998da0a3b958aabe7544ffc76052e2 + last_write_checksum: sha1:d1ca512354d793007457f28726e1328c33f4e07e + pristine_git_object: 8cd4b95a3689eaf1bb3a3b722dff73e155bd07e7 src/kombo/httpclient.py: id: 4e74c7821304 last_write_checksum: sha1:5e55338d6ee9f01ab648cad4380201a8a3da7dd7 pristine_git_object: 89560b566073785535643e694c112bedbd3db13d src/kombo/models/__init__.py: id: 45e6e8c7f07f - last_write_checksum: sha1:76f02b59cfda4122d7fd70f8b84fca5ee6dbf20f - pristine_git_object: 003528255e2734e59a25ef1ee79255ae51da706f + last_write_checksum: sha1:dfd0ef20f72098a755ffbba3d6c77a471a80f6e8 + pristine_git_object: be1fd21d250f0529d6d889f3c80d65d57aaff1ea src/kombo/models/assessmentorderreceivedwebhookpayload.py: id: 532c2db2ee93 last_write_checksum: sha1:a89544ec063f76ec1faa875bf51141a32963ef51 @@ -4489,8 +4509,8 @@ trackedFiles: pristine_git_object: 3c93ef1ca2595f9fc337348e931f7c0d18e7ccac src/kombo/models/gethrisemployeesformop.py: id: 72906084d85b - last_write_checksum: sha1:bfe4239b190c53e93f3550eec50caa4c907d1cee - pristine_git_object: 9db66dbde902ca8c6e235d13004787ee19adcfcb + last_write_checksum: sha1:7dab9439f64da84094016ae91b48a592dc316e97 + pristine_git_object: d77eadaabdf830e1a783d9d917b3ef816b80625a src/kombo/models/gethrisemployeesformpositiveresponse.py: id: 7f0cb7fe0d3c last_write_checksum: sha1:bb9b0d65070561b1bd6398442f5a98d3820e9207 @@ -4645,8 +4665,8 @@ trackedFiles: pristine_git_object: 165038ac7ba6bb4f14eccd053064aa88f189846f src/kombo/models/kombohriserror.py: id: 5e562dfd3678 - last_write_checksum: sha1:41a4361d65fa1fbb65eb26ddc17020573e1b61c0 - pristine_git_object: 34f801504c0f3c5ccf38542248b0c720614872c3 + last_write_checksum: sha1:69ea93be16f8e1d2443fcf975e5a102d27dd1684 + pristine_git_object: 8c0e6300a11adae05d3962d423710625504692c7 src/kombo/models/patchintegrationsintegrationidintegrationfieldsintegrationfieldidop.py: id: 68196467a356 last_write_checksum: sha1:56945e8f4f74bd29fae5594c7b138e753dbf32d0 @@ -4753,8 +4773,8 @@ trackedFiles: pristine_git_object: 7a97ad39aca8886d0999a4573a69626c1bfc5cbb src/kombo/models/postatscandidatesrequestbody.py: id: ac6e98f043e9 - last_write_checksum: sha1:181a80185c354d2b7b01ebbeb3ba9aa6bc714284 - pristine_git_object: f9ec2364ae00b07fcc71f6df9c2efa64ea451c45 + last_write_checksum: sha1:1c2a00a300c5ff1c41c1e229b27d12ffe151fe1c + pristine_git_object: 8b75b535aac4db5cc21e39e15b5741750f310f15 src/kombo/models/postatsimporttrackedapplicationop.py: id: d36d9960022a last_write_checksum: sha1:e0aa98b306d9e4852785f10e40e97c34f084efef @@ -4777,16 +4797,16 @@ trackedFiles: pristine_git_object: 20ba13411c0885c7b43e5c4c0d6ae721b13f02e1 src/kombo/models/postatsjobsjobidapplicationsrequestbody.py: id: a451a5e6b515 - last_write_checksum: sha1:aa1ef9dfa4f55cb957ccb9efd0c6ce3b887827f6 - pristine_git_object: 4b35feb58188b39de1e278979e1df8126301f576 + last_write_checksum: sha1:09db6b0487d91fec741b7ad576d7e4ea07f8d916 + pristine_git_object: 21542d5073ab790ad7230b4065c2f3ba1ef89a19 src/kombo/models/postconnectcreatelinkpositiveresponse.py: id: a3271239a82f last_write_checksum: sha1:db8f52f9bed614766c9bd4c0f1286ee5859b38f8 pristine_git_object: 91e8d75513c8015aeb3f8dd2e38e2ec090b0770c src/kombo/models/postconnectcreatelinkrequestbody.py: id: 8ae6871fd392 - last_write_checksum: sha1:c6e5d5dc2140b69e137274393d723098dbb4f2ab - pristine_git_object: a3678c34ff59587bf4ca4014f7084c396de7be68 + last_write_checksum: sha1:af4e8bf4687b98a3060358158d7b05ef8c394b31 + pristine_git_object: c0cd102fdac772f321cdbbc75528a7f0a188f11e src/kombo/models/postforcesyncop.py: id: 695738b0e4fb last_write_checksum: sha1:4288d66c5efda40419ee3602e124d5186662a99e @@ -4833,8 +4853,8 @@ trackedFiles: pristine_git_object: 57a43ed974c4d590f164230b14787396494213aa src/kombo/models/posthrisemployeesformrequestbody.py: id: cea1d0099ef3 - last_write_checksum: sha1:8e080a50a46cd22639e1bcf579e4fe1d1fe7eb03 - pristine_git_object: 95471ef13edfdbb4a5c6392ef9f53f8eddbaaa8c + last_write_checksum: sha1:a377c94e3ad50a9e9ebb1f0bbb3dbafeb1ddc7f4 + pristine_git_object: f76e7b7b2f9ec1ffd8dc4ae8f774ebec2945c6ee src/kombo/models/postintegrationsintegrationidrelinkop.py: id: 53c23a3b15fe last_write_checksum: sha1:4fed16acf3b504fd64e18ed10e313c2b9e33418d @@ -4881,8 +4901,8 @@ trackedFiles: pristine_git_object: b34ea0de9602c887e0e0354fe501e917e9ac179e src/kombo/models/putassessmentordersassessmentorderidresultrequestbody.py: id: 9752de46be3c - last_write_checksum: sha1:1f10d9c84fc8a2728d5384fe65334b56ff055c7a - pristine_git_object: 128de15e746d68d7ec4346a4732538fb1d4e57d6 + last_write_checksum: sha1:4790257a538728b6602676729495f14b35033f76 + pristine_git_object: 66ee80af92a0e82dc24286a43a9f59c8b0e514c0 src/kombo/models/putassessmentpackagesop.py: id: b33421f2efc8 last_write_checksum: sha1:2946fc1834bc5c093cf71bfc8d1f562439ae4143 @@ -5001,16 +5021,20 @@ trackedFiles: pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544 src/kombo/sdk.py: id: 61eb4ad101f4 - last_write_checksum: sha1:83e87de73b08416505e843d98f77e5848d058e1d - pristine_git_object: 9da32100c844175714bde23b6c2c3022e45671b9 + last_write_checksum: sha1:df3de0aa13aed200881e8e92f492b8d395938ef4 + pristine_git_object: fd311e5cf55a552a1918d6f89876432ccbe4af13 src/kombo/sdkconfiguration.py: id: f9376e99ec00 last_write_checksum: sha1:645b3d5c2cf5cfbd62a1ef07973a46e76f9d5ae9 pristine_git_object: 7188f27254216ca99f932804dd19ce77ce5dd395 src/kombo/types/__init__.py: id: d9aba2928678 - last_write_checksum: sha1:140ebdd01a46f92ffc710c52c958c4eba3cf68ed - pristine_git_object: fc76fe0c5505e29859b5d2bb707d48fd27661b8c + last_write_checksum: sha1:f9ad14217f832e74f594285960125add50324be9 + pristine_git_object: faa268137bc01c9d08cfadc4797017db48747a96 + src/kombo/types/base64fileinput.py: + id: 70d02f7057ad + last_write_checksum: sha1:4780e893d3853b5a6e28d9a6ca3ee102ce0f502d + pristine_git_object: 25fc53989ed497649363f983219fc58705c8bf87 src/kombo/types/basemodel.py: id: fcedd4cc094d last_write_checksum: sha1:10d84aedeb9d35edfdadf2c3020caa1d24d8b584 @@ -5061,8 +5085,8 @@ trackedFiles: pristine_git_object: c04e0db82b68eca041f2cb2614d748fbac80fd41 src/kombo/utils/requestbodies.py: id: 31996a9936a3 - last_write_checksum: sha1:41e2d2d2d3ecc394c8122ca4d4b85e1c3e03f054 - pristine_git_object: 1de32b6d26f46590232f398fdba6ce0072f1659c + last_write_checksum: sha1:e1fef575283b7fe7fe2ad392dbbb3fb105309124 + pristine_git_object: 591415af8e64baa410627b507d2740afb5387d13 src/kombo/utils/retries.py: id: bc594ff11adc last_write_checksum: sha1:471372f5c5d1dd5583239c9cf3c75f1b636e5d87 @@ -5564,7 +5588,7 @@ examples: header: X-Integration-Id: "workday:HWUTwvyx2wLoSUHphiWVrp28" requestBody: - application/json: {"properties": {"firstName": "John", "startDate": "2025-01-01T00:00:00Z", "workLocation": {"site": "8e422bf8cav", "keyNumbers": {"0": 142, "1": 525, "2": 63}}}} + application/json: {"staffing_entity_id": "26vafvWSRmbhNcxJYqjCzuJg", "properties": {"firstName": "John", "startDate": "2025-01-01T00:00:00Z", "workLocation": {"site": "8e422bf8cav", "keyNumbers": {"0": 142, "1": 525, "2": 63}}}} responses: "200": application/json: {"status": "success", "data": {"id": "26vafvWSRmbhNcxJYqjCzuJg", "remote_id": "12345", "prehire": {"remote_id": null}}, "warnings": [{"message": "This is an example warning!"}]} @@ -7690,7 +7714,7 @@ examples: default: application/json: {"status": "error", "error": {"code": "PLATFORM.RATE_LIMIT_EXCEEDED", "title": null, "message": "", "log_url": "https://married-yin.org/"}} examplesVersion: 1.0.2 -releaseNotes: "## Python SDK Changes:\n* `kombo.ats.add_application_note()`: \n * `request.remote_fields.greenhousev3` **Added**\n* `kombo.ats.reject_application()`: \n * `request.remote_fields.greenhousev3` **Added**\n* `kombo.ats.create_candidate()`: \n * `request.remote_fields.greenhousev3` **Added**\n* `kombo.ats.create_application()`: \n * `request.remote_fields.greenhousev3` **Added**\n* `kombo.ats.import_tracked_application()`: \n * `request.greenhousev3` **Added**\n * `response.data.imported_id.greenhousev3` **Added**\n" +releaseNotes: "## Python SDK Changes:\n* `kombo.hris.get_employees()`: `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.get_employee_form()`: \n * `request` **Changed** (Breaking ⚠️)\n * `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.create_employee_with_form()`: \n * `request.staffing_entity_id` **Added**\n * `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.add_employee_document()`: `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.get_employee_document_categories()`: `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.get_groups()`: `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.get_employments()`: `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.get_locations()`: `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.get_absence_types()`: `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.get_time_off_balances()`: `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.get_absences()`: `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.create_absence()`: `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.delete_absence()`: `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.get_legal_entities()`: `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.get_timesheets()`: `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.get_performance_review_cycles()`: `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.get_performance_reviews()`: `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.hris.get_staffing_entities()`: `error.code.enum(hris.staffing_entity_closed)` **Added** (Breaking ⚠️)\n* `kombo.ats.create_candidate()`: \n * `request.remote_fields.covetorest.candidate.status` **Added**\n* `kombo.ats.create_application()`: \n * `request.remote_fields.covetorest.candidate.status` **Added**\n* `kombo.assessment.update_order_result()`: \n * `request.remote_fields.workday` **Added**\n* `kombo.connect.create_connection_link()`: `request.integration_tool` **Changed**\n" generatedFiles: - .gitattributes - .vscode/settings.json diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index d89f972..aa0d58c 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -31,7 +31,7 @@ generation: generateNewTests: true skipResponseBodyAssertions: false python: - version: 1.1.3 + version: 1.2.0 additionalDependencies: dev: inline-snapshot: '>=0.13.0' @@ -46,6 +46,7 @@ python: authors: - Kombo Technologies GmbH baseErrorName: SDKError + bodyVariantOverloads: false clientServerStatusCodesAsErrors: true constFieldCasing: upper defaultErrorName: SDKDefaultError @@ -75,14 +76,18 @@ python: license: "" maxMethodParams: 999 methodArguments: infer-optional-args + methodTimeoutArgument: timeout-ms + methodTimeoutUnits: milliseconds moduleName: "" multipartArrayFormat: legacy + optionalDependencies: {} outputModelSuffix: output packageManager: uv packageName: kombo preApplyUnionDiscriminators: false pytestFilterWarnings: [] pytestTimeout: 0 + rawResponseHelpers: false responseFormat: flat sseFlatResponse: false templateVersion: v2 diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index cf9512b..7931567 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,9 +1,9 @@ -speakeasyVersion: 1.762.0 +speakeasyVersion: 1.771.0 sources: kombo-prepared-spec: sourceNamespace: kombo-api - sourceRevisionDigest: sha256:273559748e6da23885bf1eb1ff2d5011d4d849d0fe8c5e88fda4a45dfdf85520 - sourceBlobDigest: sha256:6abd3c507132e8ff9cb71193d6e74d3a4383fab33d561a3c943b87f668b9d18e + sourceRevisionDigest: sha256:26400cad28773013cca90a0c587483fb4d201d1807badde6f783b44a77d0a550 + sourceBlobDigest: sha256:b5916e82d018ffec07eae810ab9a36840e04c9ca308f46d447a48f5cf4899b59 tags: - latest - 1.0.0 @@ -11,10 +11,10 @@ targets: kombo-python: source: kombo-prepared-spec sourceNamespace: kombo-api - sourceRevisionDigest: sha256:273559748e6da23885bf1eb1ff2d5011d4d849d0fe8c5e88fda4a45dfdf85520 - sourceBlobDigest: sha256:6abd3c507132e8ff9cb71193d6e74d3a4383fab33d561a3c943b87f668b9d18e + sourceRevisionDigest: sha256:26400cad28773013cca90a0c587483fb4d201d1807badde6f783b44a77d0a550 + sourceBlobDigest: sha256:b5916e82d018ffec07eae810ab9a36840e04c9ca308f46d447a48f5cf4899b59 codeSamplesNamespace: kombo-api-python-code-samples - codeSamplesRevisionDigest: sha256:d085f42f953c9bf0421930d77b56cd8102834e54bcd55e0f29c8e2ff78137a6f + codeSamplesRevisionDigest: sha256:8c0d04c52852071bedbdec19d6148e3bf239304c7d5bd5a38ec1591a9ee58772 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/RELEASES.md b/RELEASES.md index 3dc54b3..8a1f8ef 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -208,4 +208,14 @@ Based on: ### Generated - [python v1.1.3] . ### Releases -- [PyPI v1.1.3] https://pypi.org/project/kombo/1.1.3 - . \ No newline at end of file +- [PyPI v1.1.3] https://pypi.org/project/kombo/1.1.3 - . + +## 2026-06-08 00:58:29 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.771.0 (2.893.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v1.2.0] . +### Releases +- [PyPI v1.2.0] https://pypi.org/project/kombo/1.2.0 - . \ No newline at end of file diff --git a/docs/models/assesscandidatedata.md b/docs/models/assesscandidatedata.md new file mode 100644 index 0000000..6f0fd13 --- /dev/null +++ b/docs/models/assesscandidatedata.md @@ -0,0 +1,10 @@ +# AssessCandidateData + +References to the Candidate Assessment to be created or modified along with the data to be used in the creation or modification. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `candidate_assessment_data` | [Optional[models.CandidateAssessmentData]](../models/candidateassessmentdata.md) | :heavy_minus_sign: | The data used to create or modify a Candidate Assessment. | \ No newline at end of file diff --git a/docs/models/assesscandidatetestresultdata.md b/docs/models/assesscandidatetestresultdata.md new file mode 100644 index 0000000..33b45d3 --- /dev/null +++ b/docs/models/assesscandidatetestresultdata.md @@ -0,0 +1,10 @@ +# AssessCandidateTestResultData + +Information on a set of Assessment Test Results used in concert with the Candidate Assessment. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `assessment_test_status_reference` | [Optional[models.AssessmentTestStatusReference]](../models/assessmentteststatusreference.md) | :heavy_minus_sign: | A reference to the tenant supplied status for this Assessment Test Result. For example, if the test outcome was satisfactory or not. | \ No newline at end of file diff --git a/docs/models/assessmentteststatusreference.md b/docs/models/assessmentteststatusreference.md new file mode 100644 index 0000000..9fef8bd --- /dev/null +++ b/docs/models/assessmentteststatusreference.md @@ -0,0 +1,10 @@ +# AssessmentTestStatusReference + +A reference to the tenant supplied status for this Assessment Test Result. For example, if the test outcome was satisfactory or not. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------- | ---------------------- | ---------------------- | ---------------------- | +| `assessment_status_id` | *str* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/candidateassessmentdata.md b/docs/models/candidateassessmentdata.md new file mode 100644 index 0000000..126e3d9 --- /dev/null +++ b/docs/models/candidateassessmentdata.md @@ -0,0 +1,10 @@ +# CandidateAssessmentData + +The data used to create or modify a Candidate Assessment. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `assess_candidate_test_result_data` | [Optional[models.AssessCandidateTestResultData]](../models/assesscandidatetestresultdata.md) | :heavy_minus_sign: | Information on a set of Assessment Test Results used in concert with the Candidate Assessment. | \ No newline at end of file diff --git a/docs/models/gethrisemployeesformrequest.md b/docs/models/gethrisemployeesformrequest.md index b7e261d..fc05df4 100644 --- a/docs/models/gethrisemployeesformrequest.md +++ b/docs/models/gethrisemployeesformrequest.md @@ -3,5 +3,6 @@ ## Fields -| Field | Type | Required | Description | -| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `staffing_entity_id` | *Optional[str]* | :heavy_minus_sign: | GET /hris/employees/form Parameter | \ No newline at end of file diff --git a/docs/models/integrationtool.md b/docs/models/integrationtool.md index 687560d..a3fdc3a 100644 --- a/docs/models/integrationtool.md +++ b/docs/models/integrationtool.md @@ -89,6 +89,7 @@ value: IntegrationTool = "workday" - `"hroffice"` - `"talentclue"` - `"inrecruiting"` +- `"jobadder"` - `"ubeeo"` - `"connexys"` - `"hr4you"` @@ -96,8 +97,9 @@ value: IntegrationTool = "workday" - `"zvooverecruit"` - `"odoo"` - `"comeet"` -- `"compleet"` - `"compleetpitcher"` +- `"compleetpersy"` +- `"compleet"` - `"gem"` - `"laura"` - `"covetorest"` diff --git a/docs/models/kombohriserrorcode.md b/docs/models/kombohriserrorcode.md index 1197796..59d3b9d 100644 --- a/docs/models/kombohriserrorcode.md +++ b/docs/models/kombohriserrorcode.md @@ -34,4 +34,5 @@ value: KomboHrisErrorCode = "PLATFORM.RATE_LIMIT_EXCEEDED" - `"REMOTE.RATE_LIMIT_EXCEEDED"` - `"REMOTE.INPUT_INVALID"` - `"REMOTE.UNKNOWN_HTTP_ERROR"` +- `"HRIS.STAFFING_ENTITY_CLOSED"` - `"HRIS.EMPLOYEE_ALREADY_EXISTS"` diff --git a/docs/models/postatscandidatesrequestbodycovetorestcandidate.md b/docs/models/postatscandidatesrequestbodycovetorestcandidate.md index 636a51c..95eb78e 100644 --- a/docs/models/postatscandidatesrequestbodycovetorestcandidate.md +++ b/docs/models/postatscandidatesrequestbodycovetorestcandidate.md @@ -5,6 +5,7 @@ Additional candidate fields that will be passed to the Coveto candidate creation ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | -| `mandant` | *Optional[float]* | :heavy_minus_sign: | The mandant field for the candidate in Coveto. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| `mandant` | *Optional[float]* | :heavy_minus_sign: | The mandant field for the candidate in Coveto. | +| `status` | *Optional[int]* | :heavy_minus_sign: | The numeric status ID to assign to the candidate on creation in Coveto. Refer to your Coveto `/bewerber-status` endpoint for available IDs. | \ No newline at end of file diff --git a/docs/models/postatsjobsjobidapplicationsrequestbodycovetorestcandidate.md b/docs/models/postatsjobsjobidapplicationsrequestbodycovetorestcandidate.md index 279cc9c..5cfee86 100644 --- a/docs/models/postatsjobsjobidapplicationsrequestbodycovetorestcandidate.md +++ b/docs/models/postatsjobsjobidapplicationsrequestbodycovetorestcandidate.md @@ -5,6 +5,7 @@ Additional candidate fields that will be passed to the Coveto candidate creation ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | -| `mandant` | *Optional[float]* | :heavy_minus_sign: | The mandant field for the candidate in Coveto. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | +| `mandant` | *Optional[float]* | :heavy_minus_sign: | The mandant field for the candidate in Coveto. | +| `status` | *Optional[int]* | :heavy_minus_sign: | The numeric status ID to assign to the candidate on creation in Coveto. Refer to your Coveto `/bewerber-status` endpoint for available IDs. | \ No newline at end of file diff --git a/docs/models/posthrisemployeesformrequestbody.md b/docs/models/posthrisemployeesformrequestbody.md index f8549d1..04b13d5 100644 --- a/docs/models/posthrisemployeesformrequestbody.md +++ b/docs/models/posthrisemployeesformrequestbody.md @@ -5,4 +5,5 @@ | Field | Type | Required | Description | | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| `staffing_entity_id` | *Optional[str]* | :heavy_minus_sign: | N/A | | `properties` | Dict[str, [models.Schema4](../models/schema4.md)] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/putassessmentordersassessmentorderidresultrequestbodyremotefields.md b/docs/models/putassessmentordersassessmentorderidresultrequestbodyremotefields.md index 39f32cb..68b2a72 100644 --- a/docs/models/putassessmentordersassessmentorderidresultrequestbodyremotefields.md +++ b/docs/models/putassessmentordersassessmentorderidresultrequestbodyremotefields.md @@ -5,7 +5,8 @@ Additional fields that we will pass through to specific ATS systems. ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `smartrecruiters` | [Optional[models.PutAssessmentOrdersAssessmentOrderIDResultRequestBodySmartrecruiters]](../models/putassessmentordersassessmentorderidresultrequestbodysmartrecruiters.md) | :heavy_minus_sign: | N/A | -| `recruitee` | [Optional[models.PutAssessmentOrdersAssessmentOrderIDResultRequestBodyRecruitee]](../models/putassessmentordersassessmentorderidresultrequestbodyrecruitee.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `smartrecruiters` | [Optional[models.PutAssessmentOrdersAssessmentOrderIDResultRequestBodySmartrecruiters]](../models/putassessmentordersassessmentorderidresultrequestbodysmartrecruiters.md) | :heavy_minus_sign: | N/A | +| `recruitee` | [Optional[models.PutAssessmentOrdersAssessmentOrderIDResultRequestBodyRecruitee]](../models/putassessmentordersassessmentorderidresultrequestbodyrecruitee.md) | :heavy_minus_sign: | N/A | +| `workday` | [Optional[models.PutAssessmentOrdersAssessmentOrderIDResultRequestBodyWorkday]](../models/putassessmentordersassessmentorderidresultrequestbodyworkday.md) | :heavy_minus_sign: | Fields specific to Workday's `Assess_Candidate` [operation](https://community.workday.com/sites/default/files/file-hosting/productionapi/Recruiting/v46.0/Assess_Candidate.html). | \ No newline at end of file diff --git a/docs/models/putassessmentordersassessmentorderidresultrequestbodyworkday.md b/docs/models/putassessmentordersassessmentorderidresultrequestbodyworkday.md new file mode 100644 index 0000000..17f3a38 --- /dev/null +++ b/docs/models/putassessmentordersassessmentorderidresultrequestbodyworkday.md @@ -0,0 +1,10 @@ +# PutAssessmentOrdersAssessmentOrderIDResultRequestBodyWorkday + +Fields specific to Workday's `Assess_Candidate` [operation](https://community.workday.com/sites/default/files/file-hosting/productionapi/Recruiting/v46.0/Assess_Candidate.html). + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `assess_candidate_data` | [Optional[models.AssessCandidateData]](../models/assesscandidatedata.md) | :heavy_minus_sign: | References to the Candidate Assessment to be created or modified along with the data to be used in the creation or modification. | \ No newline at end of file diff --git a/docs/sdks/general/README.md b/docs/sdks/general/README.md index 9240a06..c2b2f9a 100644 --- a/docs/sdks/general/README.md +++ b/docs/sdks/general/README.md @@ -174,8 +174,10 @@ To get started, please pick the relevant API (some tools provide multiple to due |CEGID TalentSoft FrontOffice|`talentsoft/v2`|Cegid Talentsoft Recruiting FrontOffice [API](https://developers.cegid.com/api-details). We automatically authenticate all requests using the provided credentials and use `https://\{domain\}/api/v2` as the base URL.| |Ceipal|`ceipal/v1`|We use `https://api.ceipal.com/v1` as the base URL. Find the official docs [here](https://developer.ceipal.com/ceipal-ats-version-one/ceipal-ats-v1-api-reference).| |Cezanne HR|`cezannehr/dataservice`|[CezanneHR's v7 dataservice API](https://api.cezannehr.com/).We automatically authenticate all requests and use the base URL `https://subdomain.cezanneondemand.com/cezanneondemand/v7/dataservice.svc`| +|Compleet (Persy)|`compleetpersy/api`|Compleet Persy [REST API](https://persy-api.refined.site/space/PAPI/450166808/Requirements+Jobfeed+%2F+Anforderungen+f%C3%BCr+Jobfeeds). We automatically authenticate all requests and use `https://www.germanpersonnel.de/persy/api/v1` as the base URL.| |Compleet|`compleetpitcher/pitcher`|Compleet's Pitcher API. We automatically authenticate all requests and use the configured base URL.| |Connexys By Bullhorn|`connexys/api`|[Connexy's API](https://api.conexsys.com/client/v2/docs/#section/Overview). We automatically authenticate all requests and use `https://\{connexys_domain\}/` as the base URL.| +|Cornerstone OnDemand|`cornerstoneondemand/core-hr`|Cornerstone's [Core HR API](https://csod.dev/reference/core-hr/). We automatically authenticate all requests using the client ID and secret and use `https://\{your_domain\}.csod.com/services/api` as the base URL.| |Cornerstone OnDemand|`cornerstoneondemand/learning`|Cornerstone's [Learning API](https://csod.dev/reference/learning/). We automatically authenticate all requests using the client ID and secret and use `https://\{your_domain\}.csod.com/services/api` as the base URL.| |Cornerstone OnDemand|`cornerstoneondemand/recruiting`|Cornerstone's [Recruiting API](https://csod.dev/reference/recruiting/). We automatically authenticate all requests using the client ID and secret and use `https://\{your_domain\}.csod.com/services/api` as the base URL.| |Cornerstone TalentLink|`cornerstonetalentlink/apply`|Cornerstone TalentLink's Apply API. We automatically authenticate all requests using the provided credentials and API key, and use `https://apiproxy.shared.lumessetalentlink.com/apply` as the base URL.| @@ -208,10 +210,13 @@ To get started, please pick the relevant API (some tools provide multiple to due |Gem|`gem/api`|Gem's [ATS API](https://api.gem.com/ats/v0/reference) We automatically authenticate all requests.| |Google Workspace|`googleworkspace/admin`|[Googles's API](https://developers.google.com/admin-sdk/directory/reference/rest). We automatically authenticate all requests and use 'https://admin.googleapis.com' as the base URL.| |Google Workspace|`googleworkspace/people`|[Googles's API](https://developers.google.com/people/api/rest). We automatically authenticate all requests and use 'https://people.googleapis.com' as the base URL.| +|Greenhouse (V1)|`greenhouse/harvest-v2`|Greenhouse [Harvest API v2](https://developers.greenhouse.io/harvest.html). We automatically authenticate all requests using the API key and use `https://harvest.greenhouse.io/v2` as the base URL.| +|Greenhouse (V1)|`greenhouse/harvest`|Greenhouse [Harvest API v1](https://developers.greenhouse.io/harvest.html). We automatically authenticate all requests using the API key and use `https://harvest.greenhouse.io/v1` as the base URL.| |Greenhouse (V3)|`greenhousev3/harvestv3`|We use `https://harvest.greenhouse.io/v3` as the base URL. Find the official docs [here](https://harvestdocs.greenhouse.io/reference/).| |Greenhouse Job Board|`greenhousejobboard/boards-api`|[Greenhouse Job Board API](https://developers.greenhouse.io/job-board). We automatically authenticate all requests and use 'https://boards-api.greenhouse.io/v1/boards/\{job_board_token\}' as the base URL. Optionally, you can provide a custom job_board_token to use a different job board.| |Greenhouse|`greenhouse/harvest-v2`|Greenhouse [Harvest API v2](https://developers.greenhouse.io/harvest.html). We automatically authenticate all requests using the API key and use `https://harvest.greenhouse.io/v2` as the base URL.| |Greenhouse|`greenhouse/harvest`|Greenhouse [Harvest API v1](https://developers.greenhouse.io/harvest.html). We automatically authenticate all requests using the API key and use `https://harvest.greenhouse.io/v1` as the base URL.| +|Greenhouse|`greenhouse/harvestv3`|We use `https://harvest.greenhouse.io/v3` as the base URL. Find the official docs [here](https://harvestdocs.greenhouse.io/reference/).| |GuideCom|`guidecom/api`|GuideCom's API. We automatically authenticate all requests and use the configured API base URL.| |Gusto|`gusto/v1`|[Gusto API](https://docs.gusto.com/app-integrations/docs/introduction). We automatically authenticate all requests with OAuth and use `\{api_base_url\}/v1` as the base URL (`https://api.gusto.com/v1` in production, `https://api.gusto-demo.com/v1` in development).| |Hailey HR|`haileyhr/api`|Hailey HR's [API](https://api.haileyhr.app/docs/index.html). We automatically authenticate all requests using the provided credentials and use `https://api.haileyhr.app` as the base URL. Connections created against the `DEMO` remote environment are routed to `https://api.demo.haileyhr.app` instead.| @@ -232,6 +237,7 @@ To get started, please pick the relevant API (some tools provide multiple to due |Insperity|`insperity/api`|Insperity [APIs](https://developer.insperity.com/) We automatically authenticate all requests and use `https://api.insperity.com` as the base URL. For staging environments, we use `https://apistage.insperity.com`. Note that all requests require the company ID to be specified in the path or body.| |IRIS Cascade|`iriscascade/v2`|IRIS Cascade HR [API](https://swagger.hrapi.co.uk/). We automatically authenticate all requests using the provided credentials and use `https://api.iris.co.uk/hr/v2` as the base URL.| |JazzHR|`jazzhr/v1`|[JazzHR's v1 API](https://www.resumatorapi.com/v1/#!`).We automatically authenticate all requests and use "https://api.resumatorapi.com/v1/" as the base URL.| +|JobAdder|`jobadder/api`|We use `https://api.jobadder.com/v2` as the base URL. Find the official docs [here](https://api.jobadder.com/v2/docs).| |JobDiva|`jobdiva/api`|We automatically authenticate all requests and use `https://api.jobdiva.com` as the base URL.| |Jobvite|`jobvite/api`|We automatically authenticate all requests and use 'https://api.jobvite.com/api/v2' as the base URL.| |Jobvite|`jobvite/v2`|We use `https://api.jobvite.com/api/v2` as the base URL. Find the official docs [here](https://help.jobvite.com/hc/en-us/articles/8870636608925-Jobvite-API).| diff --git a/docs/sdks/hris/README.md b/docs/sdks/hris/README.md index 7fdbdd7..4d596ca 100644 --- a/docs/sdks/hris/README.md +++ b/docs/sdks/hris/README.md @@ -88,6 +88,7 @@ with Kombo( Get the form for creating an employee. This form can be rendered dynamically on your frontend to allow your customers to create employees in their HRIS. Follow our [create employee guide here](/hris/features/create-employee) to learn how this form is generated and how you can use it. +The usage and impact of the staffing_entity_id parameter is described in the our [Create Employee Form with Staffing Entities guide](/hris/implementation-guide/staffing-entities-in-create-employee). ### Example Form ```json @@ -185,10 +186,10 @@ with Kombo( ### Parameters -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `request` | [models.GetHrisEmployeesFormRequest](../../models/gethrisemployeesformrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `staffing_entity_id` | *Optional[str]* | :heavy_minus_sign: | GET /hris/employees/form Parameter | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -213,6 +214,7 @@ Create an employee, based on the form schema. ```json { + "staffing_entity_id": "26vafvWSRmbhNcxJYqjCzuJg", "properties": { "firstName": "John", "startDate": "2025-01-01", @@ -291,7 +293,7 @@ with Kombo( "2": 63, }, }, - }) + }, staffing_entity_id="26vafvWSRmbhNcxJYqjCzuJg") # Handle response print(res) @@ -303,6 +305,7 @@ with Kombo( | Parameter | Type | Required | Description | | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | | `properties` | Dict[str, [models.Schema4](../../models/schema4.md)] | :heavy_check_mark: | N/A | +| `staffing_entity_id` | *Optional[str]* | :heavy_minus_sign: | N/A | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response diff --git a/pyproject.toml b/pyproject.toml index 65803b5..9af6c44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "kombo" -version = "1.1.3" +version = "1.2.0" description = "The official Python SDK for the Kombo Unified API" authors = [{ name = "Kombo Technologies GmbH" },] readme = "README-PYPI.md" diff --git a/src/kombo/_version.py b/src/kombo/_version.py index 55ba83a..e8690c6 100644 --- a/src/kombo/_version.py +++ b/src/kombo/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "kombo" -__version__: str = "1.1.3" +__version__: str = "1.2.0" __openapi_doc_version__: str = "1.0.0" -__gen_version__: str = "2.882.0" -__user_agent__: str = "speakeasy-sdk/python 1.1.3 2.882.0 1.0.0 kombo" +__gen_version__: str = "2.893.0" +__user_agent__: str = "speakeasy-sdk/python 1.2.0 2.893.0 1.0.0 kombo" try: if __package__ is not None: diff --git a/src/kombo/general.py b/src/kombo/general.py index 4a84a72..300563c 100644 --- a/src/kombo/general.py +++ b/src/kombo/general.py @@ -415,8 +415,10 @@ def send_passthrough_request( |CEGID TalentSoft FrontOffice|`talentsoft/v2`|Cegid Talentsoft Recruiting FrontOffice [API](https://developers.cegid.com/api-details). We automatically authenticate all requests using the provided credentials and use `https://\{domain\}/api/v2` as the base URL.| |Ceipal|`ceipal/v1`|We use `https://api.ceipal.com/v1` as the base URL. Find the official docs [here](https://developer.ceipal.com/ceipal-ats-version-one/ceipal-ats-v1-api-reference).| |Cezanne HR|`cezannehr/dataservice`|[CezanneHR's v7 dataservice API](https://api.cezannehr.com/).We automatically authenticate all requests and use the base URL `https://subdomain.cezanneondemand.com/cezanneondemand/v7/dataservice.svc`| + |Compleet (Persy)|`compleetpersy/api`|Compleet Persy [REST API](https://persy-api.refined.site/space/PAPI/450166808/Requirements+Jobfeed+%2F+Anforderungen+f%C3%BCr+Jobfeeds). We automatically authenticate all requests and use `https://www.germanpersonnel.de/persy/api/v1` as the base URL.| |Compleet|`compleetpitcher/pitcher`|Compleet's Pitcher API. We automatically authenticate all requests and use the configured base URL.| |Connexys By Bullhorn|`connexys/api`|[Connexy's API](https://api.conexsys.com/client/v2/docs/#section/Overview). We automatically authenticate all requests and use `https://\{connexys_domain\}/` as the base URL.| + |Cornerstone OnDemand|`cornerstoneondemand/core-hr`|Cornerstone's [Core HR API](https://csod.dev/reference/core-hr/). We automatically authenticate all requests using the client ID and secret and use `https://\{your_domain\}.csod.com/services/api` as the base URL.| |Cornerstone OnDemand|`cornerstoneondemand/learning`|Cornerstone's [Learning API](https://csod.dev/reference/learning/). We automatically authenticate all requests using the client ID and secret and use `https://\{your_domain\}.csod.com/services/api` as the base URL.| |Cornerstone OnDemand|`cornerstoneondemand/recruiting`|Cornerstone's [Recruiting API](https://csod.dev/reference/recruiting/). We automatically authenticate all requests using the client ID and secret and use `https://\{your_domain\}.csod.com/services/api` as the base URL.| |Cornerstone TalentLink|`cornerstonetalentlink/apply`|Cornerstone TalentLink's Apply API. We automatically authenticate all requests using the provided credentials and API key, and use `https://apiproxy.shared.lumessetalentlink.com/apply` as the base URL.| @@ -449,10 +451,13 @@ def send_passthrough_request( |Gem|`gem/api`|Gem's [ATS API](https://api.gem.com/ats/v0/reference) We automatically authenticate all requests.| |Google Workspace|`googleworkspace/admin`|[Googles's API](https://developers.google.com/admin-sdk/directory/reference/rest). We automatically authenticate all requests and use 'https://admin.googleapis.com' as the base URL.| |Google Workspace|`googleworkspace/people`|[Googles's API](https://developers.google.com/people/api/rest). We automatically authenticate all requests and use 'https://people.googleapis.com' as the base URL.| + |Greenhouse (V1)|`greenhouse/harvest-v2`|Greenhouse [Harvest API v2](https://developers.greenhouse.io/harvest.html). We automatically authenticate all requests using the API key and use `https://harvest.greenhouse.io/v2` as the base URL.| + |Greenhouse (V1)|`greenhouse/harvest`|Greenhouse [Harvest API v1](https://developers.greenhouse.io/harvest.html). We automatically authenticate all requests using the API key and use `https://harvest.greenhouse.io/v1` as the base URL.| |Greenhouse (V3)|`greenhousev3/harvestv3`|We use `https://harvest.greenhouse.io/v3` as the base URL. Find the official docs [here](https://harvestdocs.greenhouse.io/reference/).| |Greenhouse Job Board|`greenhousejobboard/boards-api`|[Greenhouse Job Board API](https://developers.greenhouse.io/job-board). We automatically authenticate all requests and use 'https://boards-api.greenhouse.io/v1/boards/\{job_board_token\}' as the base URL. Optionally, you can provide a custom job_board_token to use a different job board.| |Greenhouse|`greenhouse/harvest-v2`|Greenhouse [Harvest API v2](https://developers.greenhouse.io/harvest.html). We automatically authenticate all requests using the API key and use `https://harvest.greenhouse.io/v2` as the base URL.| |Greenhouse|`greenhouse/harvest`|Greenhouse [Harvest API v1](https://developers.greenhouse.io/harvest.html). We automatically authenticate all requests using the API key and use `https://harvest.greenhouse.io/v1` as the base URL.| + |Greenhouse|`greenhouse/harvestv3`|We use `https://harvest.greenhouse.io/v3` as the base URL. Find the official docs [here](https://harvestdocs.greenhouse.io/reference/).| |GuideCom|`guidecom/api`|GuideCom's API. We automatically authenticate all requests and use the configured API base URL.| |Gusto|`gusto/v1`|[Gusto API](https://docs.gusto.com/app-integrations/docs/introduction). We automatically authenticate all requests with OAuth and use `\{api_base_url\}/v1` as the base URL (`https://api.gusto.com/v1` in production, `https://api.gusto-demo.com/v1` in development).| |Hailey HR|`haileyhr/api`|Hailey HR's [API](https://api.haileyhr.app/docs/index.html). We automatically authenticate all requests using the provided credentials and use `https://api.haileyhr.app` as the base URL. Connections created against the `DEMO` remote environment are routed to `https://api.demo.haileyhr.app` instead.| @@ -473,6 +478,7 @@ def send_passthrough_request( |Insperity|`insperity/api`|Insperity [APIs](https://developer.insperity.com/) We automatically authenticate all requests and use `https://api.insperity.com` as the base URL. For staging environments, we use `https://apistage.insperity.com`. Note that all requests require the company ID to be specified in the path or body.| |IRIS Cascade|`iriscascade/v2`|IRIS Cascade HR [API](https://swagger.hrapi.co.uk/). We automatically authenticate all requests using the provided credentials and use `https://api.iris.co.uk/hr/v2` as the base URL.| |JazzHR|`jazzhr/v1`|[JazzHR's v1 API](https://www.resumatorapi.com/v1/#!`).We automatically authenticate all requests and use \"https://api.resumatorapi.com/v1/\" as the base URL.| + |JobAdder|`jobadder/api`|We use `https://api.jobadder.com/v2` as the base URL. Find the official docs [here](https://api.jobadder.com/v2/docs).| |JobDiva|`jobdiva/api`|We automatically authenticate all requests and use `https://api.jobdiva.com` as the base URL.| |Jobvite|`jobvite/api`|We automatically authenticate all requests and use 'https://api.jobvite.com/api/v2' as the base URL.| |Jobvite|`jobvite/v2`|We use `https://api.jobvite.com/api/v2` as the base URL. Find the official docs [here](https://help.jobvite.com/hc/en-us/articles/8870636608925-Jobvite-API).| @@ -747,8 +753,10 @@ async def send_passthrough_request_async( |CEGID TalentSoft FrontOffice|`talentsoft/v2`|Cegid Talentsoft Recruiting FrontOffice [API](https://developers.cegid.com/api-details). We automatically authenticate all requests using the provided credentials and use `https://\{domain\}/api/v2` as the base URL.| |Ceipal|`ceipal/v1`|We use `https://api.ceipal.com/v1` as the base URL. Find the official docs [here](https://developer.ceipal.com/ceipal-ats-version-one/ceipal-ats-v1-api-reference).| |Cezanne HR|`cezannehr/dataservice`|[CezanneHR's v7 dataservice API](https://api.cezannehr.com/).We automatically authenticate all requests and use the base URL `https://subdomain.cezanneondemand.com/cezanneondemand/v7/dataservice.svc`| + |Compleet (Persy)|`compleetpersy/api`|Compleet Persy [REST API](https://persy-api.refined.site/space/PAPI/450166808/Requirements+Jobfeed+%2F+Anforderungen+f%C3%BCr+Jobfeeds). We automatically authenticate all requests and use `https://www.germanpersonnel.de/persy/api/v1` as the base URL.| |Compleet|`compleetpitcher/pitcher`|Compleet's Pitcher API. We automatically authenticate all requests and use the configured base URL.| |Connexys By Bullhorn|`connexys/api`|[Connexy's API](https://api.conexsys.com/client/v2/docs/#section/Overview). We automatically authenticate all requests and use `https://\{connexys_domain\}/` as the base URL.| + |Cornerstone OnDemand|`cornerstoneondemand/core-hr`|Cornerstone's [Core HR API](https://csod.dev/reference/core-hr/). We automatically authenticate all requests using the client ID and secret and use `https://\{your_domain\}.csod.com/services/api` as the base URL.| |Cornerstone OnDemand|`cornerstoneondemand/learning`|Cornerstone's [Learning API](https://csod.dev/reference/learning/). We automatically authenticate all requests using the client ID and secret and use `https://\{your_domain\}.csod.com/services/api` as the base URL.| |Cornerstone OnDemand|`cornerstoneondemand/recruiting`|Cornerstone's [Recruiting API](https://csod.dev/reference/recruiting/). We automatically authenticate all requests using the client ID and secret and use `https://\{your_domain\}.csod.com/services/api` as the base URL.| |Cornerstone TalentLink|`cornerstonetalentlink/apply`|Cornerstone TalentLink's Apply API. We automatically authenticate all requests using the provided credentials and API key, and use `https://apiproxy.shared.lumessetalentlink.com/apply` as the base URL.| @@ -781,10 +789,13 @@ async def send_passthrough_request_async( |Gem|`gem/api`|Gem's [ATS API](https://api.gem.com/ats/v0/reference) We automatically authenticate all requests.| |Google Workspace|`googleworkspace/admin`|[Googles's API](https://developers.google.com/admin-sdk/directory/reference/rest). We automatically authenticate all requests and use 'https://admin.googleapis.com' as the base URL.| |Google Workspace|`googleworkspace/people`|[Googles's API](https://developers.google.com/people/api/rest). We automatically authenticate all requests and use 'https://people.googleapis.com' as the base URL.| + |Greenhouse (V1)|`greenhouse/harvest-v2`|Greenhouse [Harvest API v2](https://developers.greenhouse.io/harvest.html). We automatically authenticate all requests using the API key and use `https://harvest.greenhouse.io/v2` as the base URL.| + |Greenhouse (V1)|`greenhouse/harvest`|Greenhouse [Harvest API v1](https://developers.greenhouse.io/harvest.html). We automatically authenticate all requests using the API key and use `https://harvest.greenhouse.io/v1` as the base URL.| |Greenhouse (V3)|`greenhousev3/harvestv3`|We use `https://harvest.greenhouse.io/v3` as the base URL. Find the official docs [here](https://harvestdocs.greenhouse.io/reference/).| |Greenhouse Job Board|`greenhousejobboard/boards-api`|[Greenhouse Job Board API](https://developers.greenhouse.io/job-board). We automatically authenticate all requests and use 'https://boards-api.greenhouse.io/v1/boards/\{job_board_token\}' as the base URL. Optionally, you can provide a custom job_board_token to use a different job board.| |Greenhouse|`greenhouse/harvest-v2`|Greenhouse [Harvest API v2](https://developers.greenhouse.io/harvest.html). We automatically authenticate all requests using the API key and use `https://harvest.greenhouse.io/v2` as the base URL.| |Greenhouse|`greenhouse/harvest`|Greenhouse [Harvest API v1](https://developers.greenhouse.io/harvest.html). We automatically authenticate all requests using the API key and use `https://harvest.greenhouse.io/v1` as the base URL.| + |Greenhouse|`greenhouse/harvestv3`|We use `https://harvest.greenhouse.io/v3` as the base URL. Find the official docs [here](https://harvestdocs.greenhouse.io/reference/).| |GuideCom|`guidecom/api`|GuideCom's API. We automatically authenticate all requests and use the configured API base URL.| |Gusto|`gusto/v1`|[Gusto API](https://docs.gusto.com/app-integrations/docs/introduction). We automatically authenticate all requests with OAuth and use `\{api_base_url\}/v1` as the base URL (`https://api.gusto.com/v1` in production, `https://api.gusto-demo.com/v1` in development).| |Hailey HR|`haileyhr/api`|Hailey HR's [API](https://api.haileyhr.app/docs/index.html). We automatically authenticate all requests using the provided credentials and use `https://api.haileyhr.app` as the base URL. Connections created against the `DEMO` remote environment are routed to `https://api.demo.haileyhr.app` instead.| @@ -805,6 +816,7 @@ async def send_passthrough_request_async( |Insperity|`insperity/api`|Insperity [APIs](https://developer.insperity.com/) We automatically authenticate all requests and use `https://api.insperity.com` as the base URL. For staging environments, we use `https://apistage.insperity.com`. Note that all requests require the company ID to be specified in the path or body.| |IRIS Cascade|`iriscascade/v2`|IRIS Cascade HR [API](https://swagger.hrapi.co.uk/). We automatically authenticate all requests using the provided credentials and use `https://api.iris.co.uk/hr/v2` as the base URL.| |JazzHR|`jazzhr/v1`|[JazzHR's v1 API](https://www.resumatorapi.com/v1/#!`).We automatically authenticate all requests and use \"https://api.resumatorapi.com/v1/\" as the base URL.| + |JobAdder|`jobadder/api`|We use `https://api.jobadder.com/v2` as the base URL. Find the official docs [here](https://api.jobadder.com/v2/docs).| |JobDiva|`jobdiva/api`|We automatically authenticate all requests and use `https://api.jobdiva.com` as the base URL.| |Jobvite|`jobvite/api`|We automatically authenticate all requests and use 'https://api.jobvite.com/api/v2' as the base URL.| |Jobvite|`jobvite/v2`|We use `https://api.jobvite.com/api/v2` as the base URL. Find the official docs [here](https://help.jobvite.com/hc/en-us/articles/8870636608925-Jobvite-API).| diff --git a/src/kombo/hris.py b/src/kombo/hris.py index 298865d..8cd4b95 100644 --- a/src/kombo/hris.py +++ b/src/kombo/hris.py @@ -5,9 +5,9 @@ from jsonpath import JSONPath from kombo import errors, models, utils from kombo._hooks import HookContext -from kombo.types import BaseModel, Nullable, OptionalNullable, UNSET +from kombo.types import Nullable, OptionalNullable, UNSET from kombo.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Awaitable, Dict, List, Mapping, Optional, Union, cast +from typing import Any, Awaitable, Dict, List, Mapping, Optional, Union class Hris(BaseSDK): @@ -393,10 +393,7 @@ async def empty_result(): def get_employee_form( self, *, - request: Union[ - models.GetHrisEmployeesFormRequest, - models.GetHrisEmployeesFormRequestTypedDict, - ] = models.GetHrisEmployeesFormRequest(), + staffing_entity_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -407,6 +404,7 @@ def get_employee_form( Get the form for creating an employee. This form can be rendered dynamically on your frontend to allow your customers to create employees in their HRIS. Follow our [create employee guide here](/hris/features/create-employee) to learn how this form is generated and how you can use it. + The usage and impact of the staffing_entity_id parameter is described in the our [Create Employee Form with Staffing Entities guide](/hris/implementation-guide/staffing-entities-in-create-employee). ### Example Form ```json @@ -483,7 +481,7 @@ def get_employee_form( } ``` - :param request: The request object to send. + :param staffing_entity_id: GET /hris/employees/form Parameter :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -499,9 +497,9 @@ def get_employee_form( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, models.GetHrisEmployeesFormRequest) - request = cast(models.GetHrisEmployeesFormRequest, request) + request = models.GetHrisEmployeesFormRequest( + staffing_entity_id=staffing_entity_id, + ) req = self._build_request( method="GET", @@ -558,10 +556,7 @@ def get_employee_form( async def get_employee_form_async( self, *, - request: Union[ - models.GetHrisEmployeesFormRequest, - models.GetHrisEmployeesFormRequestTypedDict, - ] = models.GetHrisEmployeesFormRequest(), + staffing_entity_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -572,6 +567,7 @@ async def get_employee_form_async( Get the form for creating an employee. This form can be rendered dynamically on your frontend to allow your customers to create employees in their HRIS. Follow our [create employee guide here](/hris/features/create-employee) to learn how this form is generated and how you can use it. + The usage and impact of the staffing_entity_id parameter is described in the our [Create Employee Form with Staffing Entities guide](/hris/implementation-guide/staffing-entities-in-create-employee). ### Example Form ```json @@ -648,7 +644,7 @@ async def get_employee_form_async( } ``` - :param request: The request object to send. + :param staffing_entity_id: GET /hris/employees/form Parameter :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -664,9 +660,9 @@ async def get_employee_form_async( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, models.GetHrisEmployeesFormRequest) - request = cast(models.GetHrisEmployeesFormRequest, request) + request = models.GetHrisEmployeesFormRequest( + staffing_entity_id=staffing_entity_id, + ) req = self._build_request_async( method="GET", @@ -726,6 +722,7 @@ def create_employee_with_form( properties: Union[ Dict[str, models.Schema4], Dict[str, models.Schema4TypedDict] ], + staffing_entity_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -743,6 +740,7 @@ def create_employee_with_form( ```json { + \"staffing_entity_id\": \"26vafvWSRmbhNcxJYqjCzuJg\", \"properties\": { \"firstName\": \"John\", \"startDate\": \"2025-01-01\", @@ -759,6 +757,7 @@ def create_employee_with_form( ``` :param properties: + :param staffing_entity_id: :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -778,6 +777,7 @@ def create_employee_with_form( base_url = self._get_url(base_url, url_variables) request = models.PostHrisEmployeesFormRequestBody( + staffing_entity_id=staffing_entity_id, properties=properties, ) @@ -842,6 +842,7 @@ async def create_employee_with_form_async( properties: Union[ Dict[str, models.Schema4], Dict[str, models.Schema4TypedDict] ], + staffing_entity_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -859,6 +860,7 @@ async def create_employee_with_form_async( ```json { + \"staffing_entity_id\": \"26vafvWSRmbhNcxJYqjCzuJg\", \"properties\": { \"firstName\": \"John\", \"startDate\": \"2025-01-01\", @@ -875,6 +877,7 @@ async def create_employee_with_form_async( ``` :param properties: + :param staffing_entity_id: :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -894,6 +897,7 @@ async def create_employee_with_form_async( base_url = self._get_url(base_url, url_variables) request = models.PostHrisEmployeesFormRequestBody( + staffing_entity_id=staffing_entity_id, properties=properties, ) diff --git a/src/kombo/models/__init__.py b/src/kombo/models/__init__.py index 0035282..be1fd21 100644 --- a/src/kombo/models/__init__.py +++ b/src/kombo/models/__init__.py @@ -2014,6 +2014,12 @@ PutAssessmentOrdersAssessmentOrderIDResultPositiveResponseWarningTypedDict, ) from .putassessmentordersassessmentorderidresultrequestbody import ( + AssessCandidateData, + AssessCandidateDataTypedDict, + AssessCandidateTestResultData, + AssessCandidateTestResultDataTypedDict, + AssessmentTestStatusReference, + AssessmentTestStatusReferenceTypedDict, Attribute, AttributeStatus, AttributeSubResult, @@ -2021,6 +2027,8 @@ AttributeText, AttributeTextTypedDict, AttributeTypedDict, + CandidateAssessmentData, + CandidateAssessmentDataTypedDict, PutAssessmentOrdersAssessmentOrderIDResultRequestBody, PutAssessmentOrdersAssessmentOrderIDResultRequestBodyAttachment, PutAssessmentOrdersAssessmentOrderIDResultRequestBodyAttachmentTypedDict, @@ -2032,6 +2040,8 @@ PutAssessmentOrdersAssessmentOrderIDResultRequestBodySmartrecruitersTypedDict, PutAssessmentOrdersAssessmentOrderIDResultRequestBodyStatus, PutAssessmentOrdersAssessmentOrderIDResultRequestBodyTypedDict, + PutAssessmentOrdersAssessmentOrderIDResultRequestBodyWorkday, + PutAssessmentOrdersAssessmentOrderIDResultRequestBodyWorkdayTypedDict, Score, ScoreTypedDict, ) @@ -2221,6 +2231,10 @@ __all__ = [ "A3innuvanomina", "A3innuvanominaTypedDict", + "AssessCandidateData", + "AssessCandidateDataTypedDict", + "AssessCandidateTestResultData", + "AssessCandidateTestResultDataTypedDict", "AssessmentOrderReceivedWebhookPayload", "AssessmentOrderReceivedWebhookPayloadApplication", "AssessmentOrderReceivedWebhookPayloadApplicationTypedDict", @@ -2238,6 +2252,8 @@ "AssessmentOrderReceivedWebhookPayloadStatus", "AssessmentOrderReceivedWebhookPayloadType", "AssessmentOrderReceivedWebhookPayloadTypedDict", + "AssessmentTestStatusReference", + "AssessmentTestStatusReferenceTypedDict", "Assets", "AssetsTypedDict", "Attribute", @@ -2252,6 +2268,8 @@ "BenefitTypeID", "Break", "BreakTypedDict", + "CandidateAssessmentData", + "CandidateAssessmentDataTypedDict", "ChangedModel", "ChangedModelTypedDict", "ConnectionFlowFailedWebhookPayload", @@ -3855,6 +3873,8 @@ "PutAssessmentOrdersAssessmentOrderIDResultRequestBodySmartrecruitersTypedDict", "PutAssessmentOrdersAssessmentOrderIDResultRequestBodyStatus", "PutAssessmentOrdersAssessmentOrderIDResultRequestBodyTypedDict", + "PutAssessmentOrdersAssessmentOrderIDResultRequestBodyWorkday", + "PutAssessmentOrdersAssessmentOrderIDResultRequestBodyWorkdayTypedDict", "PutAssessmentOrdersAssessmentOrderIDResultRequestTypedDict", "PutAssessmentPackagesGlobals", "PutAssessmentPackagesGlobalsTypedDict", @@ -5751,6 +5771,12 @@ "PutAssessmentOrdersAssessmentOrderIDResultPositiveResponseTypedDict": ".putassessmentordersassessmentorderidresultpositiveresponse", "PutAssessmentOrdersAssessmentOrderIDResultPositiveResponseWarning": ".putassessmentordersassessmentorderidresultpositiveresponse", "PutAssessmentOrdersAssessmentOrderIDResultPositiveResponseWarningTypedDict": ".putassessmentordersassessmentorderidresultpositiveresponse", + "AssessCandidateData": ".putassessmentordersassessmentorderidresultrequestbody", + "AssessCandidateDataTypedDict": ".putassessmentordersassessmentorderidresultrequestbody", + "AssessCandidateTestResultData": ".putassessmentordersassessmentorderidresultrequestbody", + "AssessCandidateTestResultDataTypedDict": ".putassessmentordersassessmentorderidresultrequestbody", + "AssessmentTestStatusReference": ".putassessmentordersassessmentorderidresultrequestbody", + "AssessmentTestStatusReferenceTypedDict": ".putassessmentordersassessmentorderidresultrequestbody", "Attribute": ".putassessmentordersassessmentorderidresultrequestbody", "AttributeStatus": ".putassessmentordersassessmentorderidresultrequestbody", "AttributeSubResult": ".putassessmentordersassessmentorderidresultrequestbody", @@ -5758,6 +5784,8 @@ "AttributeText": ".putassessmentordersassessmentorderidresultrequestbody", "AttributeTextTypedDict": ".putassessmentordersassessmentorderidresultrequestbody", "AttributeTypedDict": ".putassessmentordersassessmentorderidresultrequestbody", + "CandidateAssessmentData": ".putassessmentordersassessmentorderidresultrequestbody", + "CandidateAssessmentDataTypedDict": ".putassessmentordersassessmentorderidresultrequestbody", "PutAssessmentOrdersAssessmentOrderIDResultRequestBody": ".putassessmentordersassessmentorderidresultrequestbody", "PutAssessmentOrdersAssessmentOrderIDResultRequestBodyAttachment": ".putassessmentordersassessmentorderidresultrequestbody", "PutAssessmentOrdersAssessmentOrderIDResultRequestBodyAttachmentTypedDict": ".putassessmentordersassessmentorderidresultrequestbody", @@ -5769,6 +5797,8 @@ "PutAssessmentOrdersAssessmentOrderIDResultRequestBodySmartrecruitersTypedDict": ".putassessmentordersassessmentorderidresultrequestbody", "PutAssessmentOrdersAssessmentOrderIDResultRequestBodyStatus": ".putassessmentordersassessmentorderidresultrequestbody", "PutAssessmentOrdersAssessmentOrderIDResultRequestBodyTypedDict": ".putassessmentordersassessmentorderidresultrequestbody", + "PutAssessmentOrdersAssessmentOrderIDResultRequestBodyWorkday": ".putassessmentordersassessmentorderidresultrequestbody", + "PutAssessmentOrdersAssessmentOrderIDResultRequestBodyWorkdayTypedDict": ".putassessmentordersassessmentorderidresultrequestbody", "Score": ".putassessmentordersassessmentorderidresultrequestbody", "ScoreTypedDict": ".putassessmentordersassessmentorderidresultrequestbody", "PutAssessmentPackagesGlobals": ".putassessmentpackagesop", diff --git a/src/kombo/models/gethrisemployeesformop.py b/src/kombo/models/gethrisemployeesformop.py index 9db66db..d77eada 100644 --- a/src/kombo/models/gethrisemployeesformop.py +++ b/src/kombo/models/gethrisemployeesformop.py @@ -2,7 +2,7 @@ from __future__ import annotations from kombo.types import BaseModel, UNSET_SENTINEL -from kombo.utils import FieldMetadata, HeaderMetadata +from kombo.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata import pydantic from pydantic import model_serializer from typing import Optional @@ -40,8 +40,29 @@ def serialize_model(self, handler): class GetHrisEmployeesFormRequestTypedDict(TypedDict): - pass + staffing_entity_id: NotRequired[str] + r"""GET /hris/employees/form Parameter""" class GetHrisEmployeesFormRequest(BaseModel): - pass + staffing_entity_id: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""GET /hris/employees/form Parameter""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["staffing_entity_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/kombo/models/kombohriserror.py b/src/kombo/models/kombohriserror.py index 34f8015..8c0e630 100644 --- a/src/kombo/models/kombohriserror.py +++ b/src/kombo/models/kombohriserror.py @@ -33,6 +33,7 @@ "REMOTE.RATE_LIMIT_EXCEEDED", "REMOTE.INPUT_INVALID", "REMOTE.UNKNOWN_HTTP_ERROR", + "HRIS.STAFFING_ENTITY_CLOSED", "HRIS.EMPLOYEE_ALREADY_EXISTS", ] r"""Some errors include an error code that can be used to identify their cause. See the [Error Handling Docs](https://docs.kombo.dev/guides/errors) for more information. For your error handling logic please use the error `code` instead of other properties (e.g. message, http status code, ...).""" diff --git a/src/kombo/models/postatscandidatesrequestbody.py b/src/kombo/models/postatscandidatesrequestbody.py index f9ec236..8b75b53 100644 --- a/src/kombo/models/postatscandidatesrequestbody.py +++ b/src/kombo/models/postatscandidatesrequestbody.py @@ -2405,6 +2405,8 @@ class PostAtsCandidatesRequestBodyCovetorestCandidateTypedDict(TypedDict): mandant: NotRequired[float] r"""The mandant field for the candidate in Coveto.""" + status: NotRequired[int] + r"""The numeric status ID to assign to the candidate on creation in Coveto. Refer to your Coveto `/bewerber-status` endpoint for available IDs.""" class PostAtsCandidatesRequestBodyCovetorestCandidate(BaseModel): @@ -2413,9 +2415,12 @@ class PostAtsCandidatesRequestBodyCovetorestCandidate(BaseModel): mandant: Optional[float] = None r"""The mandant field for the candidate in Coveto.""" + status: Optional[int] = None + r"""The numeric status ID to assign to the candidate on creation in Coveto. Refer to your Coveto `/bewerber-status` endpoint for available IDs.""" + @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["mandant"]) + optional_fields = set(["mandant", "status"]) serialized = handler(self) m = {} diff --git a/src/kombo/models/postatsjobsjobidapplicationsrequestbody.py b/src/kombo/models/postatsjobsjobidapplicationsrequestbody.py index 4b35feb..21542d5 100644 --- a/src/kombo/models/postatsjobsjobidapplicationsrequestbody.py +++ b/src/kombo/models/postatsjobsjobidapplicationsrequestbody.py @@ -2254,6 +2254,8 @@ class PostAtsJobsJobIDApplicationsRequestBodyCovetorestCandidateTypedDict(TypedD mandant: NotRequired[float] r"""The mandant field for the candidate in Coveto.""" + status: NotRequired[int] + r"""The numeric status ID to assign to the candidate on creation in Coveto. Refer to your Coveto `/bewerber-status` endpoint for available IDs.""" class PostAtsJobsJobIDApplicationsRequestBodyCovetorestCandidate(BaseModel): @@ -2262,9 +2264,12 @@ class PostAtsJobsJobIDApplicationsRequestBodyCovetorestCandidate(BaseModel): mandant: Optional[float] = None r"""The mandant field for the candidate in Coveto.""" + status: Optional[int] = None + r"""The numeric status ID to assign to the candidate on creation in Coveto. Refer to your Coveto `/bewerber-status` endpoint for available IDs.""" + @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["mandant"]) + optional_fields = set(["mandant", "status"]) serialized = handler(self) m = {} diff --git a/src/kombo/models/postconnectcreatelinkrequestbody.py b/src/kombo/models/postconnectcreatelinkrequestbody.py index a3678c3..c0cd102 100644 --- a/src/kombo/models/postconnectcreatelinkrequestbody.py +++ b/src/kombo/models/postconnectcreatelinkrequestbody.py @@ -94,6 +94,7 @@ "hroffice", "talentclue", "inrecruiting", + "jobadder", "ubeeo", "connexys", "hr4you", @@ -101,8 +102,9 @@ "zvooverecruit", "odoo", "comeet", - "compleet", "compleetpitcher", + "compleetpersy", + "compleet", "gem", "laura", "covetorest", diff --git a/src/kombo/models/posthrisemployeesformrequestbody.py b/src/kombo/models/posthrisemployeesformrequestbody.py index 95471ef..f76e7b7 100644 --- a/src/kombo/models/posthrisemployeesformrequestbody.py +++ b/src/kombo/models/posthrisemployeesformrequestbody.py @@ -2,14 +2,34 @@ from __future__ import annotations from .schema4 import Schema4, Schema4TypedDict -from kombo.types import BaseModel -from typing import Dict -from typing_extensions import TypedDict +from kombo.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Dict, Optional +from typing_extensions import NotRequired, TypedDict class PostHrisEmployeesFormRequestBodyTypedDict(TypedDict): properties: Dict[str, Schema4TypedDict] + staffing_entity_id: NotRequired[str] class PostHrisEmployeesFormRequestBody(BaseModel): properties: Dict[str, Schema4] + + staffing_entity_id: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["staffing_entity_id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/kombo/models/putassessmentordersassessmentorderidresultrequestbody.py b/src/kombo/models/putassessmentordersassessmentorderidresultrequestbody.py index 128de15..66ee80a 100644 --- a/src/kombo/models/putassessmentordersassessmentorderidresultrequestbody.py +++ b/src/kombo/models/putassessmentordersassessmentorderidresultrequestbody.py @@ -214,6 +214,153 @@ def serialize_model(self, handler): return m +class AssessmentTestStatusReferenceTypedDict(TypedDict): + r"""A reference to the tenant supplied status for this Assessment Test Result. For example, if the test outcome was satisfactory or not.""" + + assessment_status_id: str + + +class AssessmentTestStatusReference(BaseModel): + r"""A reference to the tenant supplied status for this Assessment Test Result. For example, if the test outcome was satisfactory or not.""" + + assessment_status_id: Annotated[str, pydantic.Field(alias="Assessment_Status_ID")] + + +class AssessCandidateTestResultDataTypedDict(TypedDict): + r"""Information on a set of Assessment Test Results used in concert with the Candidate Assessment.""" + + assessment_test_status_reference: NotRequired[ + AssessmentTestStatusReferenceTypedDict + ] + r"""A reference to the tenant supplied status for this Assessment Test Result. For example, if the test outcome was satisfactory or not.""" + + +class AssessCandidateTestResultData(BaseModel): + r"""Information on a set of Assessment Test Results used in concert with the Candidate Assessment.""" + + assessment_test_status_reference: Annotated[ + Optional[AssessmentTestStatusReference], + pydantic.Field(alias="Assessment_Test_Status_Reference"), + ] = None + r"""A reference to the tenant supplied status for this Assessment Test Result. For example, if the test outcome was satisfactory or not.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["Assessment_Test_Status_Reference"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class CandidateAssessmentDataTypedDict(TypedDict): + r"""The data used to create or modify a Candidate Assessment.""" + + assess_candidate_test_result_data: NotRequired[ + AssessCandidateTestResultDataTypedDict + ] + r"""Information on a set of Assessment Test Results used in concert with the Candidate Assessment.""" + + +class CandidateAssessmentData(BaseModel): + r"""The data used to create or modify a Candidate Assessment.""" + + assess_candidate_test_result_data: Annotated[ + Optional[AssessCandidateTestResultData], + pydantic.Field(alias="Assess_Candidate_Test_Result_Data"), + ] = None + r"""Information on a set of Assessment Test Results used in concert with the Candidate Assessment.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["Assess_Candidate_Test_Result_Data"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class AssessCandidateDataTypedDict(TypedDict): + r"""References to the Candidate Assessment to be created or modified along with the data to be used in the creation or modification.""" + + candidate_assessment_data: NotRequired[CandidateAssessmentDataTypedDict] + r"""The data used to create or modify a Candidate Assessment.""" + + +class AssessCandidateData(BaseModel): + r"""References to the Candidate Assessment to be created or modified along with the data to be used in the creation or modification.""" + + candidate_assessment_data: Annotated[ + Optional[CandidateAssessmentData], + pydantic.Field(alias="Candidate_Assessment_Data"), + ] = None + r"""The data used to create or modify a Candidate Assessment.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["Candidate_Assessment_Data"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +class PutAssessmentOrdersAssessmentOrderIDResultRequestBodyWorkdayTypedDict(TypedDict): + r"""Fields specific to Workday's `Assess_Candidate` [operation](https://community.workday.com/sites/default/files/file-hosting/productionapi/Recruiting/v46.0/Assess_Candidate.html).""" + + assess_candidate_data: NotRequired[AssessCandidateDataTypedDict] + r"""References to the Candidate Assessment to be created or modified along with the data to be used in the creation or modification.""" + + +class PutAssessmentOrdersAssessmentOrderIDResultRequestBodyWorkday(BaseModel): + r"""Fields specific to Workday's `Assess_Candidate` [operation](https://community.workday.com/sites/default/files/file-hosting/productionapi/Recruiting/v46.0/Assess_Candidate.html).""" + + assess_candidate_data: Annotated[ + Optional[AssessCandidateData], pydantic.Field(alias="Assess_Candidate_Data") + ] = None + r"""References to the Candidate Assessment to be created or modified along with the data to be used in the creation or modification.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["Assess_Candidate_Data"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + class PutAssessmentOrdersAssessmentOrderIDResultRequestBodyRemoteFieldsTypedDict( TypedDict ): @@ -225,6 +372,10 @@ class PutAssessmentOrdersAssessmentOrderIDResultRequestBodyRemoteFieldsTypedDict recruitee: NotRequired[ PutAssessmentOrdersAssessmentOrderIDResultRequestBodyRecruiteeTypedDict ] + workday: NotRequired[ + PutAssessmentOrdersAssessmentOrderIDResultRequestBodyWorkdayTypedDict + ] + r"""Fields specific to Workday's `Assess_Candidate` [operation](https://community.workday.com/sites/default/files/file-hosting/productionapi/Recruiting/v46.0/Assess_Candidate.html).""" class PutAssessmentOrdersAssessmentOrderIDResultRequestBodyRemoteFields(BaseModel): @@ -238,9 +389,14 @@ class PutAssessmentOrdersAssessmentOrderIDResultRequestBodyRemoteFields(BaseMode PutAssessmentOrdersAssessmentOrderIDResultRequestBodyRecruitee ] = None + workday: Optional[PutAssessmentOrdersAssessmentOrderIDResultRequestBodyWorkday] = ( + None + ) + r"""Fields specific to Workday's `Assess_Candidate` [operation](https://community.workday.com/sites/default/files/file-hosting/productionapi/Recruiting/v46.0/Assess_Candidate.html).""" + @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["smartrecruiters", "recruitee"]) + optional_fields = set(["smartrecruiters", "recruitee", "workday"]) serialized = handler(self) m = {} @@ -359,3 +515,23 @@ def serialize_model(self, handler): PutAssessmentOrdersAssessmentOrderIDResultRequestBodySmartrecruiters.model_rebuild() except NameError: pass +try: + AssessmentTestStatusReference.model_rebuild() +except NameError: + pass +try: + AssessCandidateTestResultData.model_rebuild() +except NameError: + pass +try: + CandidateAssessmentData.model_rebuild() +except NameError: + pass +try: + AssessCandidateData.model_rebuild() +except NameError: + pass +try: + PutAssessmentOrdersAssessmentOrderIDResultRequestBodyWorkday.model_rebuild() +except NameError: + pass diff --git a/src/kombo/sdk.py b/src/kombo/sdk.py index 9da3210..fd311e5 100644 --- a/src/kombo/sdk.py +++ b/src/kombo/sdk.py @@ -84,7 +84,9 @@ def __init__( ), "The provided async_client must implement the AsyncHttpClient protocol." security: Any = None - if callable(api_key): + if api_key is None: + security = None + elif callable(api_key): # pylint: disable=unnecessary-lambda-assignment security = lambda: models.Security(api_key=api_key()) else: diff --git a/src/kombo/types/__init__.py b/src/kombo/types/__init__.py index fc76fe0..faa2681 100644 --- a/src/kombo/types/__init__.py +++ b/src/kombo/types/__init__.py @@ -1,5 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" +from .base64fileinput import Base64EncodedString, Base64FileInput from .basemodel import ( BaseModel, Nullable, @@ -11,6 +12,8 @@ ) __all__ = [ + "Base64EncodedString", + "Base64FileInput", "BaseModel", "Nullable", "OptionalNullable", diff --git a/src/kombo/types/base64fileinput.py b/src/kombo/types/base64fileinput.py new file mode 100644 index 0000000..25fc539 --- /dev/null +++ b/src/kombo/types/base64fileinput.py @@ -0,0 +1,39 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations + +import base64 +import io +from os import PathLike +from typing import IO, Any, Union + +from pydantic.functional_validators import BeforeValidator +from typing_extensions import Annotated + + +Base64FileInput = Union[IO[bytes], PathLike[str]] + + +def encode_base64_file_input(value: Any) -> Any: + """Convert PathLike or IO[bytes] inputs to a base64 string. All standard binary streams + that inherit from io.IOBase are handled. Other values pass through. + """ + if isinstance(value, (PathLike, io.IOBase)): + if isinstance(value, PathLike): + with open(value, "rb") as fh: + binary = fh.read() + else: + binary = value.read() + if isinstance(binary, str): + binary = binary.encode() + if not isinstance(binary, (bytes, bytearray)): + raise TypeError( + f"Base64FileInput expected binary IO returning bytes; got {type(binary).__name__}" + ) + return base64.b64encode(binary).decode("ascii") + return value + + +# Non-str inputs are converted to base64 by the BeforeValidator at construction time. +# Callers can also pass a pre-encoded base64 str. +Base64EncodedString = Annotated[str, BeforeValidator(encode_base64_file_input)] diff --git a/src/kombo/utils/requestbodies.py b/src/kombo/utils/requestbodies.py index 1de32b6..591415a 100644 --- a/src/kombo/utils/requestbodies.py +++ b/src/kombo/utils/requestbodies.py @@ -46,6 +46,7 @@ def serialize_request_body( if re.match(r"^(application|text)\/([^+]+\+)*json.*", media_type) is not None: serialized_request_body.content = marshal_json(request_body, request_body_type) + elif re.match(r"^multipart\/.*", media_type) is not None: ( serialized_request_body.media_type, diff --git a/uv.lock b/uv.lock index 5fb3028..2f5a745 100644 --- a/uv.lock +++ b/uv.lock @@ -191,7 +191,7 @@ wheels = [ [[package]] name = "kombo" -version = "1.1.3" +version = "1.2.0" source = { editable = "." } dependencies = [ { name = "httpcore" },