@curviate/sdk 0.20.2 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -9,6 +9,95 @@ Versioning: semantic. Minor for additive changes, patch for bug fixes; no stabil
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [0.22.0] - 2026-08-17
13
+
14
+ Regeneration against the deployed, served OpenAPI document at server commit
15
+ `7bdf0af7` (`https://api.curviate.com/.well-known/openapi.json`). Nothing was
16
+ hand-edited.
17
+
18
+ **Minor, not patch, because the section arrays gained declared item shapes.**
19
+ No method, path, or response was added or removed, nothing became required,
20
+ and every new field is optional on a type that still carries an open
21
+ `[key: string]: unknown` index signature, so reading code that compiled
22
+ against 0.21.0 continues to compile. Code that *constructs* one of these
23
+ objects with a field whose type conflicts with the declared one (a hand-rolled
24
+ test fixture, most likely) will now be rejected, which is the only way this
25
+ release can break a consumer.
26
+
27
+ ### Changed
28
+
29
+ - **Recruiter and Sales Navigator profile section arrays now declare their item
30
+ shape.** `skills`, `experience`, `education`, `certifications`, `languages`,
31
+ `projects`, `recommendations`, and `volunteering` were typed as bare
32
+ `{ [key: string]: unknown }[]`; each entry now carries its known fields
33
+ (`name`, `endorsement_count`, `company`, `title`, and so on) intersected with
34
+ the same open index signature. Each field's description states where the
35
+ shape came from: these are declared from the classic profile's live-measured
36
+ shape for the same underlying section, not from a Recruiter- or Sales
37
+ Navigator-specific capture, so confirm field-for-field against a real
38
+ response before treating an inferred or absent field as fact.
39
+ - **Every paginated endpoint's 400 description now names a malformed cursor.**
40
+ An undecodable cursor is rejected with a 400 rather than silently serving
41
+ page 1. Documentation only; the response types are unchanged.
42
+
43
+ ## [0.21.0] - 2026-08-13
44
+
45
+ Regeneration against the deployed, served OpenAPI document at server commit
46
+ `d468b90f` (`https://api.staging.curviate.com/.well-known/openapi.json`).
47
+ Nothing was hand-edited.
48
+
49
+ **Minor, not patch, because two of the mirrored changes are breaking for a
50
+ typed consumer**, even though nothing in this package's own source changed:
51
+ existing code that compiles against 0.20.2's types will not compile against
52
+ these without changes. A `^0.20.x`-pinned consumer will not receive this
53
+ release, by design; that is what the minor bump is for.
54
+
55
+ ### Changed (breaking)
56
+
57
+ - **`total_count` on a people-search page is now `number | null`** (was
58
+ `number`): the server stopped reporting a total once results are served
59
+ cursor-natively, rather than reporting a number that no longer meant
60
+ "how many pages remain." A consumer that read `total_count` as a bare
61
+ number must now narrow it.
62
+ - **`profile_url` on a search result's `user` object is now `string | null`**
63
+ (was `string`), for the same reason as above: the platform does not always
64
+ surface a public profile URL, and the type now says so instead of lying.
65
+ A new optional `public_identifier` field (present only when requested via
66
+ `expand=public_identifier`) is the additive companion to this change.
67
+ - **Profile section arrays (`experience`, `education`, `languages`,
68
+ `certifications`, `volunteer_experience`, `projects`)** on the classic and
69
+ Recruiter-enriched profile shapes went from opaque `{}[]` to fully described
70
+ per-entry shapes. Any consumer that was indexing into these arrays without a
71
+ described shape gains real fields; one that had hand-rolled its own local
72
+ type for these arrays now has a mismatch to reconcile.
73
+
74
+ ### Added
75
+
76
+ - **`PAGE_TRUNCATED`** joins the people-search `notices[].code` enum
77
+ (`FILTER_VALUE_UNRESOLVED` / `FILTER_VALUE_UNCHECKED` / `SOME_RESULTS_HIDDEN`
78
+ / `ALL_RESULTS_HIDDEN`), reporting when a page is short because upstream
79
+ fetching stopped, not because results ran out; follow `cursor` and treat
80
+ only a `null` cursor as the end.
81
+ - **`POST /v1/webhooks/{id}/test`**, for firing a synthetic delivery at a
82
+ registered webhook without waiting on a real trigger.
83
+ - **`expand=public_identifier`** query parameter on the four message-detail /
84
+ chat-detail endpoints, resolving a vanity slug alongside the existing
85
+ fields for up to 25 people per request.
86
+
87
+ ### Fixed
88
+
89
+ - **The quota family description no longer describes itself as a
90
+ "usage-safety recommendation."** `total` is documented as "a substrate
91
+ capacity ceiling, not a safe sustained rate," and the throttle-hint enum
92
+ spells out exactly which values are advisory (`none` / `slow_down` /
93
+ `backoff`, none of which ever block a request) versus the one binding limit
94
+ (`stop`, `account.per_minute` only, enforced with HTTP 429): a capacity
95
+ framing, replacing the old safety framing.
96
+ - Quota example values now mirror the live raised ceilings (`messages.daily`
97
+ 400, `connection_requests.daily` 480, `profile_views.daily` 400,
98
+ `inmail.daily` 60, `profile.endorse` 160), not the retired 100/120/100/40
99
+ set.
100
+
12
101
  ## [0.20.2] - 2026-08-10
13
102
 
14
103
  Published as a patch, not a minor, for the same reason 0.20.1 was: it satisfies