···447447448448You can customize the naming and casing pattern for `requests` and `responses` schemas using the `.name` and `.case` options.
449449450450+### Schemas
451451+452452+Sometimes your schema names are auto-generated or follow a naming convention that produces verbose or awkward type names. The `schemas` transform allows you to rename schema component keys throughout the specification, automatically updating all `$ref` pointers.
453453+454454+This is useful for:
455455+456456+- Stripping version markers from schema names
457457+- Removing vendor prefixes
458458+- Converting naming conventions
459459+- Shortening deeply qualified names
460460+461461+::: code-group
462462+463463+```js [function]
464464+export default {
465465+ input: 'hey-api/backend', // sign up at app.heyapi.dev
466466+ output: 'src/client',
467467+ parser: {
468468+ transforms: {
469469+ schemas: {
470470+ name: (name) => {
471471+ // Strip version markers: ServiceRoot_v1_20_0_ServiceRoot → ServiceRoot
472472+ let clean = name.replace(/([A-Za-z\d]+)_v\d+_\d+_\d+_([A-Za-z\d]*)/g, (_, p1, p2) =>
473473+ p2.startsWith(p1) ? p2 : p1 + p2,
474474+ );
475475+ // Deduplicate prefixes: Foo_Foo → Foo
476476+ const m = clean.match(/^([A-Za-z\d]+)_\1([A-Za-z\d]*)$/);
477477+ if (m) clean = m[1] + m[2];
478478+ return clean;
479479+ },
480480+ },
481481+ },
482482+ },
483483+};
484484+```
485485+486486+```js [template]
487487+export default {
488488+ input: 'hey-api/backend', // sign up at app.heyapi.dev
489489+ output: 'src/client',
490490+ parser: {
491491+ transforms: {
492492+ schemas: {
493493+ name: 'Api{{name}}', // Add "Api" prefix to all schemas
494494+ },
495495+ },
496496+ },
497497+};
498498+```
499499+500500+```js [disabled]
501501+export default {
502502+ input: 'hey-api/backend', // sign up at app.heyapi.dev
503503+ output: 'src/client',
504504+ parser: {
505505+ transforms: {
506506+ schemas: false, // [!code ++]
507507+ },
508508+ },
509509+};
510510+```
511511+512512+:::
513513+514514+::: tip Name Collisions
515515+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.
516516+:::
517517+450518## Pagination
451519452520Paginated 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`.