Skip to content

feat: sync with the 2026-10-14 API release - #30

Merged
ibadus merged 4 commits into
mainfrom
tallinn/sdk-is_recent_hire-update
Oct 15, 2026
Merged

ibadus merged 4 commits into
mainfrom
tallinn/sdk-is_recent_hire-update

Conversation

@ibadus

@ibadus ibadus commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Syncs the SDK with the 2026-10-14/15 API releases: is_recent_hire, include_active_jobs and include_past_jobs sit inside people on search.people (is_recent_hire only on company.tam_by_people) and inside each cascade tier on search.waterfall_icp, with a top-level is_recent_hire on search.employee_finder and the two distribution methods, plus company.mx.provider (new generated 66-value MxProvider enum), people.education.start_year/end_year, found on both distribution responses, and the new mx MX-records field on enrichment.company and enrichment.email (the latter is in the spec but in no changelog entry). mx is the one list that is not coerced through blitzList, because null (no MX data) and [] (domain takes no mail) mean different things; this is an exception to the rule in CLAUDE.md that needs a maintainer decision. Wrong flag placements are compile errors because the API 422s on unknown fields, and docs cover [brackets] exact match, the Location/HQ/Company.mx expected-difference list, the MX exclude wording fix and decision-log entries in docs/CONTEXT.md, along with a README example. Tests cover request bodies, models, compile-time placement and the 422 body, and a field-by-field and kind-level diff against the latest live spec is clean apart from those documented differences (checked against the spec and changelog only; no live API calls).

RetriggerView in GreptileConfidence Score: 5/5

No new blocking code issue was found.

Summary

Syncs request filters, generated provider values, and response fields with the October API release.

  • People searches can filter recent hires, past jobs, and education years.
  • Company filters can match domains by their mail provider.
  • Enrichment results now show MX records and whether distributions found a company.

Reviews (4) · Last reviewed commit: "feat: add the mx response field and sync..." · Reviewed by Greptile

Request side: top-level `is_recent_hire` on search.people, company.tam_by_people,
search.employee_finder, search.waterfall_icp and both company_distribution_by_*
methods; `include_active_jobs`/`include_past_jobs` on search.people and
search.waterfall_icp; `company.mx.provider` (new generated `MxProvider` enum, 66
values) on search.companies, search.people and company.tam_by_people; and
`people.education.start_year`/`end_year` range filters. The distribution methods
get their own `CompanyDistributionParams` so the flag stays off enrichment.company,
since the API now 422s on unknown fields.

Response side: `found` on both distribution responses; country `count` and
`total_employees` now count people, not jobs.

Docs: `[brackets]` exact match on job.title, company.hq.city/state and cascade
titles; the matched past job's `job_is_current`; the 422/503 notes, the Location/HQ
superset list and the decision log in docs/CONTEXT.md; a README example.

Tests: request-body, model, compile-time (@ts-expect-error) and 422-body coverage.
Comment thread src/types/filters.ts Resolved
The MxProviderFilter comment said exclude: ["any"] keeps companies with no MX data,
then said exclude never drops them unless you use "any". The second clause was copied
from the runtime spec's mx description, which contradicts its own provider description.
Follow the provider text and its worked example, and record the upstream ambiguity in
docs/CONTEXT.md.
…e tiers

At the API owner's direction, `is_recent_hire`, `include_active_jobs` and
`include_past_jobs` now sit inside the `people` object on search.people and inside
each `cascade` tier on search.waterfall_icp; company.tam_by_people takes
`people.is_recent_hire` only. search.employee_finder and both
company_distribution_by_* methods keep a top-level `is_recent_hire`.

`PeopleFilter` gains `is_recent_hire`; a new `PeopleSearchFilter` carries the
job-history flags so they stay off tam_by_people, and `CascadeTier` carries all three.
The mixins are renamed RecentHireFlag / JobHistoryFlags now that they sit in filter
objects. The runtime spec still publishes the top-level form, so a request-side diff
shows exactly that placement difference until upstream republishes; it is recorded in
docs/CONTEXT.md.

Compile-time guards flip to reject the old placement, and the request tests annotate
their bodies with the params types so excess-property checks apply.
Re-pulled the runtime spec: the flags now published inside `people` and each `cascade`
item, matching the SDK, so the request-side diff is empty again.

New response field `mx` (MX records, `{ priority, host }`, at most 10) on
`enrichment.company` (`Company.mx`) and `enrichment.email` (`mx` and `all_emails[].mx`).
The email one is in the spec but in no changelog entry. `mx` is declared once as
`MxRecords` and is not coerced through `blitzList`: `null` means no MX data and `[]`
means the domain takes no mail, so collapsing them would lose information.

Tests pin that null, [] and absent stay distinct; docs/CONTEXT.md records the exception
to the blitzList rule and the new expected spec-vs-SDK difference (`Company.mx` on search
and TAM results, which share the model).
@ibadus
ibadus merged commit 8bbb76a into main Oct 15, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant