Summary
The partner SDK reference pages disagree with each other about which numeric entitlement fields
accept -1 as an "unlimited" sentinel. A reader following one page gets a different mental model
than a reader following another.
The contradiction
docs/SDKs/partner-go.md:693 states it exclusively:
Every counter except CurrentAICredits floors at 0. Only CurrentAICredits accepts -1, meaning unlimited.
But docs/SDKs/partner-javascript.md:617 and docs/SDKs/partner-python.md:605 both document
a second field as accepting it:
maxUsers | number | Maximum users allowed (-1 = unlimited)
Both cannot be right. Testing against a live API confirms the Go page is the inaccurate one — at least
one field besides CurrentAICredits accepts -1 and returns 200.
The gap
Separately, no page states which numeric fields reject -1. maxStorage is documented only as:
maxStorage | number | Maximum storage in bytes
That line is not wrong, and no example tells a reader to send maxStorage: -1 — so nothing published
is actively broken. But given that neighbouring fields in the same table are annotated
(-1 = unlimited), a reader can reasonably infer the sentinel is universal across the numeric
entitlements. It is not: sending -1 for storage fails.
Suggested fix
Make the unlimited-sentinel rule explicit and consistent across all six partner SDK pages
(partner-{javascript,python,go,php,java,ruby}.md):
Happy to supply the verified per-field matrix once the API side confirms the intended semantics —
there's a corresponding API-side issue open to pin those down.
Summary
The partner SDK reference pages disagree with each other about which numeric entitlement fields
accept
-1as an "unlimited" sentinel. A reader following one page gets a different mental modelthan a reader following another.
The contradiction
docs/SDKs/partner-go.md:693states it exclusively:But
docs/SDKs/partner-javascript.md:617anddocs/SDKs/partner-python.md:605both documenta second field as accepting it:
Both cannot be right. Testing against a live API confirms the Go page is the inaccurate one — at least
one field besides
CurrentAICreditsaccepts-1and returns200.The gap
Separately, no page states which numeric fields reject
-1.maxStorageis documented only as:That line is not wrong, and no example tells a reader to send
maxStorage: -1— so nothing publishedis actively broken. But given that neighbouring fields in the same table are annotated
(-1 = unlimited), a reader can reasonably infer the sentinel is universal across the numericentitlements. It is not: sending
-1for storage fails.Suggested fix
Make the unlimited-sentinel rule explicit and consistent across all six partner SDK pages
(
partner-{javascript,python,go,php,java,ruby}.md):-1is accepted — rather than annotatingsome fields and leaving others ambiguous.
partner-go.md:693.-1is not valid, so the omission reads as deliberaterather than as an oversight.
Happy to supply the verified per-field matrix once the API side confirms the intended semantics —
there's a corresponding API-side issue open to pin those down.