Get Ashby job posting
Input
board requiredBoard slug in the URL jobs.ashbyhq.com/<board>, e.g. "lassie" or "ramp". Case-sensitive; a posting is only reachable under its own board.
jobId requiredPosting id, as returned by list_jobs.
Output
id requiredPosting id as the page reports it — compare with the requested jobId.
title requiredteamNames requiredDepartment chain, root first, leaf last. Boards that show sub-teams render the whole chain on the Department line; the others render just the root.
descriptionHtml requiredFull job description as the HTML the page renders, verbatim.
department optionalTop-level department — the root of teamNames, and the same value list_jobs returns.
locationName optionalPrimary location.
workplaceType optionalAshby's raw value — "OnSite", "Hybrid", "Remote" (the page's Location Type spells these "On-site" etc.). Null when the posting does not state one, and then the page shows no Location Type.
employmentType optionalAshby's raw value — "FullTime", "PartTime", "Contract", "Intern" (the page spells these "Full time" etc.).
compensationTiers optionalPay bands as the Compensation section lists them; empty when the posting shows no pay. A posting with one unnamed band has a single entry whose title is null.
applicationDeadline optionalISO instant; the page renders it as a local date and time ("Deadline to Apply"). Null when the posting has none, and then the page shows no deadline.
secondaryLocationNames optionalAdditional locations, sorted as the page sorts them (its Location line reads primary then these, joined by "; "); empty when there are none.
compensationTierSummary optionalOne-line pay range; null when the posting shows no pay.
compensationPhilosophyHtml optionalNote rendered under the pay section; null when absent.
