Skip to content

Align the 2.17 and Preview custom object instance endpoints with what the API does - #754

Open
markdennis22 wants to merge 4 commits into
mainfrom
markdennis/2-17-custom-object-instance
Open

markdennis22 wants to merge 4 commits into
mainfrom
markdennis/2-17-custom-object-instance

Conversation

@markdennis22

@markdennis22 markdennis22 commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Why?

The 2.17 spec for the custom object instance endpoints didn't match the API. The two delete operations had each other's operationIds, the create request typed every custom attribute as a string, and several error responses were missing. The Preview spec had the same problems, and the next version is cut from Preview, so it needs the same fixes.

How?

Corrects the custom object instance endpoints and their request schema to match the API's current behaviour, and adds the OAuth scopes each endpoint accepts to its description. The same changes go into the Preview spec, keeping content that only applies to Preview, such as the {id} path parameter name.

Risks

The Preview SDKs are generated from this spec, so these changes affect generated Preview types:

Change Could SDK code stop compiling? Did that code work before?
The two delete operationIds swap, so each matches its path: deleteCustomObjectInstancesById takes id instead of external_id, and deleteCustomObjectInstancesByExternalId the reverse Yes Yes. Each method deleted through the endpoint it called; only the names were swapped
Create request: custom_attributes values become a new CreateOrUpdateCustomObjectInstanceRequestCustomAttributesValue union of string, integer, number, boolean and array of strings In Java, yes: a value typed as a string has to be wrapped in the union. TypeScript, Python and PHP still accept strings Only for string attributes
List custom object instances returns a new ListCustomObjectInstancesResponse union of the list, a single instance and the not-found body, instead of CustomObjectInstancesPaginatedList Yes, because the return type becomes a union Only without external_id. With it, the API already returned a single object
New 400 errors on create and list No —
Notes for reviewers
  • fern check shows 0 errors and the same 317 warnings as main. There are no new dangling refs, and the only operationId change is the delete swap.

Generated with Claude Code

markdennis22 and others added 4 commits October 22, 2026 09:50
Swaps the two delete operationIds so each matches its path, types custom_attributes values in the create request, documents the 400s and the delete 404s the API returns, explains the external_id lookup, and adds the accepted OAuth scopes to each operation.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
A list body also matches the single-instance schema, which requires no properties, so oneOf would reject an ordinary list response.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…attributes

Reference attributes take an array of ids, so the create request's custom_attributes union now allows an array of strings. The description says datetime attributes take a Unix timestamp or date string, list attributes take an option label or id and clear on a value that matches no option, and an unmatched reference id is skipped.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Applies the same 2.17 changes to the Preview spec, merged operation by operation so Preview-only content stays, such as the `{id}` path parameter name. The next version is cut from Preview, and the Preview SDKs are generated from it.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@markdennis22 markdennis22 changed the title Align the 2.17 custom object instance endpoints with what the API does Align the 2.17 and Preview custom object instance endpoints with what the API does Oct 23, 2026

This branch has not been deployed

No deployments
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