···447447448448You can customize the naming and casing pattern for `requests` and `responses` schemas using the `.name` and `.case` options.
449449450450+### Schema Name
451451+452452+Sometimes your schema names are auto-generated or follow a naming convention that produces verbose or awkward type names. You can rename schema component keys throughout the specification, automatically updating all `$ref` pointers. For example, stripping version markers from schema names, removing vendor prefixes, converting naming conventions, or shortening deeply qualified names.
453453+454454+::: code-group
455455+456456+<!-- prettier-ignore-start -->
457457+```js [function]
458458+export default {
459459+ input: 'hey-api/backend', // sign up at app.heyapi.dev
460460+ output: 'src/client',
461461+ parser: {
462462+ transforms: {
463463+ schemaName: (name) => { // [!code ++]
464464+ // Strip version markers: ServiceRoot_v1_20_0_ServiceRoot → ServiceRoot // [!code ++]
465465+ let clean = name.replace(/([A-Za-z\d]+)_v\d+_\d+_\d+_([A-Za-z\d]*)/g, (_, p1, p2) => // [!code ++]
466466+ p2.startsWith(p1) ? p2 : p1 + p2, // [!code ++]
467467+ ); // [!code ++]
468468+ // Deduplicate prefixes: Foo_Foo → Foo // [!code ++]
469469+ const m = clean.match(/^([A-Za-z\d]+)_\1([A-Za-z\d]*)$/); // [!code ++]
470470+ if (m) clean = m[1] + m[2]; // [!code ++]
471471+ return clean; // [!code ++]
472472+ }, // [!code ++]
473473+ },
474474+ },
475475+};
476476+```
477477+<!-- prettier-ignore-end -->
478478+479479+```js [template]
480480+export default {
481481+ input: 'hey-api/backend', // sign up at app.heyapi.dev
482482+ output: 'src/client',
483483+ parser: {
484484+ transforms: {
485485+ schemaName: 'Api{{name}}', // [!code ++]
486486+ },
487487+ },
488488+};
489489+```
490490+491491+:::
492492+493493+::: tip Name Collisions
494494+If a transformed schema name conflicts with an existing schema, the rename is skipped for that schema to prevent overwrites. The original name is preserved.
495495+:::
496496+450497## Pagination
451498452499Paginated operations are detected by having a pagination keyword in its parameters or request body. By default, we consider the following to be pagination keywords: `after`, `before`, `cursor`, `offset`, `page`, and `start`.
···11+// This file is auto-generated by @hey-api/openapi-ts
22+33+export type { ClientOptions, Comment, GetUsersData, GetUsersResponse, GetUsersResponses, Post, PostPostsData, PostPostsResponse, PostPostsResponses, User, UserProfile } from './types.gen';
···11+// This file is auto-generated by @hey-api/openapi-ts
22+33+export type { ClientOptions, GetTestData, GetTestResponse, GetTestResponses, User, UserV1User, UserV2User } from './types.gen';
···11+// This file is auto-generated by @hey-api/openapi-ts
22+33+export type { ClientOptions, Comment, GetUsersData, GetUsersResponse, GetUsersResponses, Post, PostPostsData, PostPostsResponse, PostPostsResponses, User, UserProfile } from './types.gen';
···11+// This file is auto-generated by @hey-api/openapi-ts
22+33+export type { ClientOptions, Comment, GetUsersData, GetUsersResponse, GetUsersResponses, Post, PostPostsData, PostPostsResponse, PostPostsResponses, User, UserProfile } from './types.gen';