Changelog

Make Request Coercion Schema-Aware

  • Zod-validated Public API endpoints now apply legacy request body coercion based on each field's documented schema before running validation. String-encoded booleans and integers continue to be accepted for boolean and integer fields (for example, candidateTag.list still accepts "true" for includeArchived and "25" for limit), while numeric-looking strings sent to free-text fields are preserved as strings instead of being rewritten and rejected as invalid_input.
  • This affects endpoints on the Zod validation path, including candidateTag.create, candidateTag.archive, candidateTag.list, application.delete, interviewStage.info, user endpoints, and webhook endpoints.

Fix applicationForm.submit Rejecting Null utmData Fields

  • applicationForm.submit now correctly accepts null for utmData and its individual fields (utm_source, utm_medium, utm_campaign, utm_term, utm_content) again. Sending {"utmData": {"utm_source": null}} or {"utmData": null} was returning invalid_input after Zod validation was added in the presigned file upload release on April 14; this has been fixed. Omitting utmData or passing valid string values continues to work as before.