Skip to content

docs(openapi): pin Company schema field lengths to match the validators#272

Merged
CryptoJones merged 1 commit into
masterfrom
docs/openapi-company-component-field-lengths
May 19, 2026
Merged

docs(openapi): pin Company schema field lengths to match the validators#272
CryptoJones merged 1 commit into
masterfrom
docs/openapi-company-component-field-lengths

Conversation

@CryptoJones
Copy link
Copy Markdown
Owner

Summary

Mirror of the customer fix in #270.

The OpenAPI Company component schema had compState with maxLength: 2 already, but the other fields were unbounded — even though company.schema.js validates them with concrete .min/.max constraints (and the DB columns underneath cap compPhone at varchar(32)).

What changed

Aligned every string field with the runtime contract:

  • compName: minLength: 1, maxLength: 255 (per zod min(1).max(255))
  • compAddress1/2, compCity, compEmail: maxLength: 255
  • compState: minLength: 2, maxLength: 2
  • compZip, compPhone: maxLength: 32

SDK generators (openapi-typescript et al.) now carry the bounds into client types.

Test plan

  • npm run lint && npm test — 760 passing
  • Pure spec metadata; no behavior change.

Proudly Made in Nebraska. Go Big Red! 🌽 https://xkcd.com/2347/

Mirror of the customer fix in #270. The OpenAPI Company component
schema had compState with maxLength: 2 already, but the other
fields were unbounded — even though company.schema.js validates
them with concrete .min/.max constraints (and the DB columns
underneath cap compPhone at varchar(32)).

Aligned every string field with the runtime contract:
  - compName: minLength: 1, maxLength: 255  (per zod min(1).max(255))
  - compAddress1/2 / compCity / compEmail:  maxLength: 255
  - compState:                              minLength: 2, maxLength: 2
  - compZip / compPhone:                    maxLength: 32

SDK generators (openapi-typescript et al.) now carry the bounds
into client types. No behavior change. 760 tests still pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@CryptoJones CryptoJones merged commit 1534eba into master May 19, 2026
3 checks passed
@CryptoJones CryptoJones deleted the docs/openapi-company-component-field-lengths branch May 19, 2026 14:33
CryptoJones added a commit that referenced this pull request May 19, 2026
#276)

Same pattern as the customer fix (#270) and company fix (#272).

\`worker.schema.js\` validates workerFName / workerLName / workerTitle
each as \`z.string().min(1).max(255)\`. The OpenAPI Worker component
had them as bare \`type: 'string'\` with no bounds; SDK generators
(openapi-typescript et al.) couldn't surface the constraint, so
clients generated from the spec missed the minimum-1-char floor and
the 255-char ceiling.

Set \`minLength: 1, maxLength: 255\` on each name field. No
behavior change. 760 tests still pass.

Co-authored-by: Aaron K. Clark <akclark@thenetwerk.net>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
CryptoJones added a commit that referenced this pull request May 19, 2026
…ts (#290)

Extends the field-length / numeric-bound pinning sweep started in
#270 (Customer), #272 (Company), and #276 (Worker) to the two
remaining single-table entity components.

  BillingType:
    - btName: minLength: 1, maxLength: 255  (per zod min(1).max(255))
    - btHourlyRate: minimum: 0              (per zod nonnegative())
  InventoryItem:
    - invitDescription: minLength: 1, maxLength: 1000
                                            (per zod min(1).max(1000))

\`finite\` is implicit in OpenAPI's number type per the spec (no
NaN / Infinity in JSON), so no extra annotation is needed there.

SDK generators now carry the bounds into client-side types for
these two entities, matching the rest of the spec. No behavior
change. 760 tests still pass.

Co-authored-by: Aaron K. Clark <akclark@thenetwerk.net>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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