Removed the POST /location.updateRemoteStatus endpoint. Use POST /location.updateWorkplaceType instead to set a location's remote status via the workplaceType field (Remote, Hybrid, or OnSite).
Added candidate.removeTag endpoint to remove a tag from a candidate. Accepts candidateId and tagId and returns the updated candidate. If the tag was not on the candidate, the request succeeds and returns the candidate unchanged.
Added approvalStatus field to the OfferVersion object returned by offer.info and offer.list. Possible values are Approved, WaitingOnApprovals, Declined, or null (when no approval process has been configured for the offer version).
offer.list now accepts an approvalStatus array filter parameter to return only offers whose latest version has one of the specified approval statuses.
Added file.createFileUploadHandle endpoint to create a presigned upload URL for uploading files directly to storage. This improves upload reliability and reduces latency for large files.
Updated candidate.uploadResume to accept a resumeHandle via application/json as an alternative to the existing multipart/form-data upload. The multipart upload mode is now deprecated.
Updated candidate.uploadFile to accept a fileHandle via application/json as an alternative to the existing multipart/form-data upload. The multipart upload mode is now deprecated.
customField.list now correctly returns private Offer custom fields regardless of the "Allow access to non-offer private fields?" API key permission. Previously, Offer custom fields were incorrectly excluded when this permission was not enabled.
Added isPaused field to the qualifiedMembers and trainees arrays returned by interviewerPool.info to indicate whether each member is currently paused from interviewing.