Skip to content

docs(openapi): pin Worker schema field lengths to match the validators#276

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

docs(openapi): pin Worker schema field lengths to match the validators#276
CryptoJones merged 1 commit into
masterfrom
docs/openapi-worker-component-field-lengths

Conversation

@CryptoJones
Copy link
Copy Markdown
Owner

Summary

Same pattern as #270 (Customer) and #272 (Company).

worker.schema.js validates workerFName, workerLName, and 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 both the minimum-1 floor and the 255 ceiling.

What changed

Set minLength: 1, maxLength: 255 on each name field. No behavior change.

Test plan

  • npm run lint && npm test — 760 passing

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

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: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@CryptoJones CryptoJones merged commit 866a8ef into master May 19, 2026
3 checks passed
@CryptoJones CryptoJones deleted the docs/openapi-worker-component-field-lengths branch May 19, 2026 14:59
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