Migrate Opening Add Location Validation
12 days ago
opening.addLocationnow returns clearer validation errors for malformed request bodies while preserving the existing successful response shape.
opening.addLocation now returns clearer validation errors for malformed request bodies while preserving the existing successful response shape.candidate.removeProject now validates request fields against the documented API contract and returns clearer validation errors for invalid candidate or project identifiers.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.candidateTag.create, candidateTag.archive, candidateTag.list, application.delete, interviewStage.info, user endpoints, and webhook endpoints.candidateTag.list now once again accepts "true"/"false" strings for includeArchived and string representations of integers (e.g. "25") for limit. After the recent Zod validation migration these values were briefly returning invalid_input; the pre-migration contract has been restored. JSON booleans/integers continue to work unchanged.interviewStage.info now enforces request body validation via the documented schema; invalid interviewStageId values will be rejected before reaching the handler.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.applicationForm.submit now accepts application/json requests in addition to multipart/form-data. When using JSON, file field values should contain a handle obtained from file.createFileUploadHandle.file.createFileUploadHandle now supports the ApplicationForm context for uploading files that will be attached to application form submissions.multipart/form-data submissions continue to work unchanged.offer.create now returns specific error codes instead of a generic internal_server_error when the request fails due to a problem with the referenced opening:
opening_in_use — the opening is already in use by another offer.opening_state_invalid — the opening has already been closed or filled by a different application.notetakerTranscript.info now returns specific error codes instead of a generic notetaker_transcript_not_found when the request fails due to missing prerequisites:
notetaker_transcript_api_not_enabled — the endpoint has not been enabled for your organization (early access).notetaker_transcript_not_enabled — your organization does not have the AI Notetaker add-on.notetaker_transcript_expired — the transcript has expired on the free tier.notetakerTranscriptId field to the InterviewEvent object returned by interviewEvent.list and interviewSchedule.list. This field contains the ID of the AI Notetaker transcript recording for the event, or null if no transcript exists.notetakerTranscript.info endpoint (Beta) to fetch transcript metadata and a pre-signed download URL for the raw transcript JSON. The URL is valid for 5 minutes. The response includes participant information (interviewers and candidate) resolved from the interview schedule. Contact your Ashby account team to enable this feature.