{"owner":"apostrophecms","repo":"apostrophe","hasSkills":true,"totalSkillsCount":242,"totalTokensCount":250267,"categories":["plugin-manifest","anthropic-skill"],"hasMcp":false,"mcpConfig":null,"found":["packages/ai-helper/README.md","packages/ai-helper/skills/provider-creator.md","packages/anchors/README.md","packages/apostrophe-astro/README.md","packages/apostrophe/README.md","packages/apostrophecms-openapi/README.md","packages/apostrophecms-openapi/apostrophecms-openapi.yaml","packages/apostrophecms-openapi/examples/typescript/README.md","packages/apostrophecms-openapi/examples/typescript/docs/ApiError.md","packages/apostrophecms-openapi/examples/typescript/docs/AreaField.md","packages/apostrophecms-openapi/examples/typescript/docs/AreaOptions.md","packages/apostrophecms-openapi/examples/typescript/docs/AreaWidgetGroup.md","packages/apostrophecms-openapi/examples/typescript/docs/ArrayField.md","packages/apostrophecms-openapi/examples/typescript/docs/Attachment.md","packages/apostrophecms-openapi/examples/typescript/docs/AttachmentCropRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/AttachmentCropRequestCrop.md","packages/apostrophecms-openapi/examples/typescript/docs/AttachmentField.md","packages/apostrophecms-openapi/examples/typescript/docs/AttachmentFieldAllOfAccept.md","packages/apostrophecms-openapi/examples/typescript/docs/AttachmentsApi.md","packages/apostrophecms-openapi/examples/typescript/docs/AuthContext200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/AuthContextPost200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/AuthLogin200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/AuthLoginRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/AuthLogout200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/AuthReset200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/AuthReset410Response.md","packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequest200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequestRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/AuthWhoAmI200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/AuthenticationApi.md","packages/apostrophecms-openapi/examples/typescript/docs/BaseField.md","packages/apostrophecms-openapi/examples/typescript/docs/BooleanField.md","packages/apostrophecms-openapi/examples/typescript/docs/BooleanFieldAllOfToggle.md","packages/apostrophecms-openapi/examples/typescript/docs/BooleanFieldAllOfToggleOneOf.md","packages/apostrophecms-openapi/examples/typescript/docs/BulkOperationRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/BulkOperationResponse.md","packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesField.md","packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfChoices.md","packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfDef.md","packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfFollowing.md","packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfFollowingIgnore.md","packages/apostrophecms-openapi/examples/typescript/docs/ColorField.md","packages/apostrophecms-openapi/examples/typescript/docs/CreatePieceRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/DateAndTimeField.md","packages/apostrophecms-openapi/examples/typescript/docs/DateBoundaryOptions.md","packages/apostrophecms-openapi/examples/typescript/docs/DateField.md","packages/apostrophecms-openapi/examples/typescript/docs/DateTimeBoundaryOptions.md","packages/apostrophecms-openapi/examples/typescript/docs/DifferentHostnameResponse.md","packages/apostrophecms-openapi/examples/typescript/docs/EmailField.md","packages/apostrophecms-openapi/examples/typescript/docs/Error.md","packages/apostrophecms-openapi/examples/typescript/docs/ExistInLocaleRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/ExistInLocaleResponse.md","packages/apostrophecms-openapi/examples/typescript/docs/FieldDefinition.md","packages/apostrophecms-openapi/examples/typescript/docs/FieldPredicate.md","packages/apostrophecms-openapi/examples/typescript/docs/Fieldset.md","packages/apostrophecms-openapi/examples/typescript/docs/File.md","packages/apostrophecms-openapi/examples/typescript/docs/FileAttachment.md","packages/apostrophecms-openapi/examples/typescript/docs/FileGet200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/FileObject.md","packages/apostrophecms-openapi/examples/typescript/docs/FileObjectAttachment.md","packages/apostrophecms-openapi/examples/typescript/docs/FilePatchByIdRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/FilePostRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/FileTag.md","packages/apostrophecms-openapi/examples/typescript/docs/FileTagArchiveRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/FileTagGet200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/FileTagLocalizeRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/FileTagPatchByIdRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/FileTagPostRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/FileTagPublishRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/FileTagPutByIdRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/FileTagRestoreRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/FlatPageResponse.md","packages/apostrophecms-openapi/examples/typescript/docs/FlatPageResponseResultsInner.md","packages/apostrophecms-openapi/examples/typescript/docs/FloatField.md","packages/apostrophecms-openapi/examples/typescript/docs/Global.md","packages/apostrophecms-openapi/examples/typescript/docs/GlobalContentApi.md","packages/apostrophecms-openapi/examples/typescript/docs/GlobalGet200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/GlobalPatch.md","packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequestContactInfo.md","packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequestSiteSettings.md","packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequestSocialMedia.md","packages/apostrophecms-openapi/examples/typescript/docs/I18nLocalePost200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/Image.md","packages/apostrophecms-openapi/examples/typescript/docs/ImageArchiveRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/ImageAttachment.md","packages/apostrophecms-openapi/examples/typescript/docs/ImageAutocropRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/ImageGet200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/ImageGetSrcById200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/ImageLocalizeRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/ImagePatchByIdRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/ImagePostRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/ImagePublishRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/ImageRestoreRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/ImageTag.md","packages/apostrophecms-openapi/examples/typescript/docs/ImageTagGet200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/ImageTagPatchByIdRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/ImageTagPostRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/ImageTagRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject.md","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject1.md","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject2.md","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject3.md","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject4.md","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject5.md","packages/apostrophecms-openapi/examples/typescript/docs/IntegerField.md","packages/apostrophecms-openapi/examples/typescript/docs/InternationalizationApi.md","packages/apostrophecms-openapi/examples/typescript/docs/LocaleRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/LocalesResponseValue.md","packages/apostrophecms-openapi/examples/typescript/docs/MediaApi.md","packages/apostrophecms-openapi/examples/typescript/docs/NumericRangeOptions.md","packages/apostrophecms-openapi/examples/typescript/docs/ObjectField.md","packages/apostrophecms-openapi/examples/typescript/docs/OembedField.md","packages/apostrophecms-openapi/examples/typescript/docs/OperatorObject.md","packages/apostrophecms-openapi/examples/typescript/docs/Page.md","packages/apostrophecms-openapi/examples/typescript/docs/PageArchive200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/PageArchiveRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/PageCreateRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/PageCreateRequestPosition.md","packages/apostrophecms-openapi/examples/typescript/docs/PageDeleteById400Response.md","packages/apostrophecms-openapi/examples/typescript/docs/PageDotNotationUpdateValue.md","packages/apostrophecms-openapi/examples/typescript/docs/PageGet200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/PageGetLocalesById200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/PageGetLocalesById200ResponseResultsInner.md","packages/apostrophecms-openapi/examples/typescript/docs/PageLocaleResult.md","packages/apostrophecms-openapi/examples/typescript/docs/PageLocalesResponse.md","packages/apostrophecms-openapi/examples/typescript/docs/PageLocalizeByIdRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/PageLocalizeRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/PageMain.md","packages/apostrophecms-openapi/examples/typescript/docs/PageMainItemsInner.md","packages/apostrophecms-openapi/examples/typescript/docs/PagePatchByIdRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/PagePublishRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/PagePutByIdRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/PageRestoreRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/PageSeoFields.md","packages/apostrophecms-openapi/examples/typescript/docs/PageSeoFieldsOgImage.md","packages/apostrophecms-openapi/examples/typescript/docs/PageSeoFieldsOgImageAttachment.md","packages/apostrophecms-openapi/examples/typescript/docs/PageSummary.md","packages/apostrophecms-openapi/examples/typescript/docs/PageTreeResponse.md","packages/apostrophecms-openapi/examples/typescript/docs/PageUpdateRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/PageUpdateRequestPosition.md","packages/apostrophecms-openapi/examples/typescript/docs/PagesApi.md","packages/apostrophecms-openapi/examples/typescript/docs/PaginatedResponse.md","packages/apostrophecms-openapi/examples/typescript/docs/PaginatedResponseData.md","packages/apostrophecms-openapi/examples/typescript/docs/PasswordField.md","packages/apostrophecms-openapi/examples/typescript/docs/PieceResponse.md","packages/apostrophecms-openapi/examples/typescript/docs/RadioField.md","packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfChoices.md","packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfDef.md","packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfFollowing.md","packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfFollowingIgnore.md","packages/apostrophecms-openapi/examples/typescript/docs/RangeField.md","packages/apostrophecms-openapi/examples/typescript/docs/RelationshipEntry.md","packages/apostrophecms-openapi/examples/typescript/docs/RelationshipField.md","packages/apostrophecms-openapi/examples/typescript/docs/RelationshipReverseField.md","packages/apostrophecms-openapi/examples/typescript/docs/SameHostnameResponse.md","packages/apostrophecms-openapi/examples/typescript/docs/SelectChoice.md","packages/apostrophecms-openapi/examples/typescript/docs/SelectChoiceValue.md","packages/apostrophecms-openapi/examples/typescript/docs/SelectField.md","packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfChoices.md","packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfDef.md","packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfFollowing.md","packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfFollowingIgnore.md","packages/apostrophecms-openapi/examples/typescript/docs/SlugField.md","packages/apostrophecms-openapi/examples/typescript/docs/StringField.md","packages/apostrophecms-openapi/examples/typescript/docs/StringFieldAllOfFollowing.md","packages/apostrophecms-openapi/examples/typescript/docs/StringFieldAllOfFollowingIgnore.md","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraft.md","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftArchive200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftGet200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftLocalize200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPatchByIdRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPostRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPublish200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPutByIdRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftRestore200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftsApi.md","packages/apostrophecms-openapi/examples/typescript/docs/TimeField.md","packages/apostrophecms-openapi/examples/typescript/docs/UiCondition.md","packages/apostrophecms-openapi/examples/typescript/docs/UrlField.md","packages/apostrophecms-openapi/examples/typescript/docs/User.md","packages/apostrophecms-openapi/examples/typescript/docs/UserCreateRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/UserList200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/UserPatchByIdRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/UserPutByIdRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/UserUniqueUsername200Response.md","packages/apostrophecms-openapi/examples/typescript/docs/UserUniqueUsernameRequest.md","packages/apostrophecms-openapi/examples/typescript/docs/UsersApi.md","packages/apostrophecms-openapi/examples/typescript/docs/Widget.md","packages/apostrophecms-openapi/examples/typescript/docs/WidgetImport.md","packages/blog/README.md","packages/boring/README.md","packages/broadband/README.md","packages/cache-on-demand/README.md","packages/cache-redis/README.md","packages/cli/README.md","packages/create-apostrophe/README.md","packages/csv-to-zone-file/README.md","packages/db-connect/README.md","packages/db-connect/docs/aggregation.md","packages/db-connect/docs/collections.md","packages/db-connect/docs/database.md","packages/db-connect/docs/dump-restore.md","packages/db-connect/docs/indexes.md","packages/db-connect/docs/queries.md","packages/db-connect/docs/updates.md","packages/emulate-mongo-3-driver/README.md","packages/eslint-config-apostrophe/README.md","packages/event/README.md","packages/express-cache-on-demand/README.md","packages/favicon/README.md","packages/font-size/README.md","packages/form-submission-google/README.md","packages/form/README.md","packages/i18n-static/README.md","packages/import-export-xlsx/README.md","packages/import-export/README.md","packages/launder/README.md","packages/login-hcaptcha/README.md","packages/login-recaptcha/README.md","packages/login-totp/README.md","packages/mongodb-snapshot/README.md","packages/moog-require/README.md","packages/oembetter/README.md","packages/open-graph/README.md","packages/openapi-generator/README.md","packages/passport-bridge/README.md","packages/postcss-viewport-to-container-toggle/README.md","packages/random-words/README.md","packages/redirect/README.md","packages/sanitize-html/README.md","packages/scheduled-publishing/README.md","packages/security-headers/README.md","packages/seo/README.md","packages/sitemap/README.md","packages/sluggo/README.md","packages/stylelint-config-apostrophe/README.md","packages/stylelint-no-mixed-decls/README.md","packages/svg-sprite/README.md","packages/uploadfs/README.md","packages/vite/README.md"],"skills":{"packages/ai-helper/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fai-helper%2FREADME.md -->","packages/ai-helper/skills/provider-creator.md":"# AI Provider Creator (ApostropheCMS)\n\nCreate a **project-level** provider registration module + a provider **factory** for `@apostrophecms/ai-helper`.\n\nThis guide is optimized for an LLM to generate files.\n\n---\n\n## What you are generating\n\nYou will generate **two files**:\n\n1. **Provider factory file** (ESM)\n\n* Exports a function that returns a provider object (text/image methods + optional `validate`).\n\n2. **Provider registration module** (ESM Apostrophe module)\n\n* Extends `registerProviders()` and calls `self.registerProvider(...)` to register the factory.\n\n> Note: `@apostrophecms/ai-helper` is CommonJS internally, but **project-level code examples here are ESM**.\n\n---\n\n## Core behavior you must match\n\n### Two-phase provider flow\n\n1. **Registration phase**\n   You register provider factories with metadata using:\n\n* `self.registerProvider(name, factory, capabilities)`\n\n2. **Activation phase**\n   `@apostrophecms/ai-helper` instantiates only the providers named in project options and (optionally) calls `provider.validate()`.\n\n### Capabilities: source of truth\n\nCapabilities are taken from the **registration metadata** (the `capabilities` argument to `registerProvider`), not from any `provider.capabilities` property.\n\nCapabilities shape:\n\n```js\n{\n  text: boolean,\n  image: boolean,\n  imageVariation: boolean\n}\n```\n\n### validate(): optional\n\n`validate()` is optional. If you provide it, it will be called at activation time **unless** mock mode is enabled (`APOS_AI_HELPER_MOCK`).\n\n---\n\n## Where the files live (recommended)\n\n* Provider factory: `lib/ai-providers/<provider-name>.js`\n* Registration module: `modules/<provider-name>-provider/index.js`\n\n---\n\n## Step 1 — Create the provider factory (ESM)\n\nCreate `lib/ai-providers/<provider-name>.js`\n\n### Factory signature (required)\n\n```js\nexport default function createProvider(apos, textOptions = {}, imageOptions = {}) {\n  return {\n    // optional\n    validate() {},\n\n    // optional depending on capabilities\n    async generateText(req, prompt, options) {},\n    async generateImage(req, prompt, options) {},\n    async generateImageVariation(req, image, prompt, options) {}\n  };\n}\n```\n\n### Method return formats (required)\n\n#### Text\n\n`generateText()` must resolve to:\n\n```js\n{\n  content: \"string\",\n  metadata: {\n    model: \"string?\",\n    usage: {\n      inputTokens: number?,\n      outputTokens: number?\n    }\n  }\n}\n```\n\n#### Images\n\n`generateImage()` and `generateImageVariation()` must resolve to an **array** of:\n\n```js\n[\n  {\n    type: \"png\" | \"jpg\" | \"webp\" | \"gif\",\n    data: \"<base64 string>\",   // base64 of the image bytes\n    metadata: {\n      model: \"string?\",\n      usage: {\n        inputTokens: number?,\n        outputTokens: number?\n      }\n    }\n  }\n]\n```\n\n> If your upstream API returns a URL or binary data, you must convert it to base64 and return the standardized object(s).\n\n### Error rules (recommended, not enforced)\n\n* Prefer `throw apos.error(code, message)` so callers can classify errors.\n* Recommended codes:\n\n  * `invalid` (bad input/options)\n  * `forbidden` (auth/permission)\n  * `notfound` (model/asset missing)\n  * `error` (generic)\n* Messages can be developer-facing; UI should map codes to i18n strings.\n\n### Retry rules (recommended)\n\n* Retry: network errors, timeouts, 408, 429, 5xx\n* Do not retry: 400, 401, 403 (and other non-transient 4xx)\n\n---\n\n## Step 2 — Create the provider registration module (ESM)\n\nCreate `modules/<provider-name>-provider/index.js`\n\nThis module’s job is only to **register** the provider factory under a unique name.\n\n```js\nimport createProvider from '../../lib/ai-providers/<provider-name>.js';\n\nexport default {\n  improve: '@apostrophecms/ai-helper',\n\n  extendMethods(self) {\n    return {\n      registerProviders(_super) {\n        _super();\n\n        self.registerProvider(\n          '<providerName>',       // the name used in project options\n          createProvider,         // factory(apos, textOptions, imageOptions) => provider\n          {\n            text: true,           // set to true if provider supports text\n            image: true,          // set to true if provider supports image generation\n            imageVariation: true  // set true only if provider supports variations/edits\n          }\n        );\n      }\n    };\n  }\n};\n```\n\n### Override behavior (required knowledge)\n\nIf a project registers a provider with the same name as a built-in provider, it **replaces** that provider for activation purposes.\n\n---\n\n## Step 3 — Enable the registration module in the project (ESM)\n\nIn your project’s `app.js` (ESM), include the module:\n\n```js\nexport default {\n  modules: {\n    '<provider-name>-provider': {}\n  }\n};\n```\n\n---\n\n## Step 4 — Configure `@apostrophecms/ai-helper` to use it (ESM)\n\nIn `app.js`, configure the provider name(s) and options:\n\n```js\nexport default {\n  modules: {\n    '@apostrophecms/ai-helper': {\n      options: {\n        // pick names registered via registerProvider(...)\n        textProvider: '<providerName>',\n        imageProvider: '<providerName>',\n\n        // passed into the provider factory as:\n        // createProvider(apos, textProviderOptions, imageProviderOptions)\n        textProviderOptions: {\n          // provider-specific\n        },\n        imageProviderOptions: {\n          // provider-specific\n        }\n      }\n    },\n\n    '<provider-name>-provider': {}\n  }\n};\n```\n\n> `textProviderOptions` and `imageProviderOptions` are provider-defined. Your factory must read these and/or environment variables.\n\n---\n\n## Minimal template you can emit (copy/paste)\n\n### `lib/ai-providers/<provider-name>.js`\n\n```js\nexport default function createProvider(apos, textOptions = {}, imageOptions = {}) {\n  const { apiKey } = textOptions;\n\n  return {\n    validate() {\n      if (!process.env.APOS_AI_HELPER_MOCK && !apiKey) {\n        throw apos.error('invalid', 'Missing required apiKey for <providerName>.');\n      }\n    },\n\n    async generateText(req, prompt, options = {}) {\n      // TODO call upstream API\n      return {\n        content: 'TODO',\n        metadata: {\n          model: options.model,\n          usage: {}\n        }\n      };\n    }\n  };\n}\n```\n\n### `modules/<provider-name>-provider/index.js`\n\n```js\nimport createProvider from '../../lib/ai-providers/<provider-name>.js';\n\nexport default {\n  improve: '@apostrophecms/ai-helper',\n  extendMethods(self) {\n    return {\n      registerProviders(_super) {\n        _super();\n        self.registerProvider('<providerName>', createProvider, {\n          text: true,\n          image: false,\n          imageVariation: false\n        });\n      }\n    };\n  }\n};\n```\n","packages/anchors/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fanchors%2FREADME.md -->","packages/apostrophe-astro/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophe-astro%2FREADME.md -->","packages/apostrophe/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophe%2FREADME.md -->","packages/apostrophecms-openapi/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2FREADME.md -->","packages/apostrophecms-openapi/apostrophecms-openapi.yaml":"openapi: 3.1.0\ninfo:\n  title: ApostropheCMS REST API\n  description: |\n    **🚀 Developer freedom. Editor happiness. It just works.**\n\n    **For production use:** Download this YAML file and update the server URL\n    and cookie names to match your setup.\n\n    The ApostropheCMS REST API allows you to create, read, update, and delete content programmatically.\n    Perfect for building modern websites, mobile apps, and any digital experience that needs flexible content management.\n\n    ## Quick Start Guide\n    1. **Authentication**: Use the login endpoint to get a bearer token or session cookie\n    2. **Get Content**: Start with `/@apostrophecms/page` to fetch your page structure\n    3. **Media Files**: Upload files via `/@apostrophecms/attachment/upload`\n    4. **Internationalization**: Use `/@apostrophecms/i18n` to localize your content\n\n    ## Content Architecture\n    ApostropheCMS uses a flexible \"pieces\" system for content types. While the core system provides\n    essential pieces like users and global content, most projects define custom piece types like\n    articles, events, or products using the `@apostrophecms/piece-type` module.\n\n    ## Built-in Piece Types\n    - `@apostrophecms/user` - User accounts and profiles\n    - `@apostrophecms/global` - Site-wide content (customizable with additional fields)\n    - `@apostrophecms/image` - Image file management\n    - `@apostrophecms/file` - General file management (PDFs, documents, etc.)\n\n    ## Built-in Tag Types\n    - `@apostrophecms/image-tag` - Tags for organizing images\n    - `@apostrophecms/file-tag` - Tags for organizing files\n\n    ## Authentication Methods\n    - **Bearer Token**: Recommended for API clients and SPAs\n    - **Session Cookie**: For traditional web applications\n    - **API Key**: For server-to-server communication\n\n    ## Rate Limiting\n    API requests are rate-limited to prevent abuse. See response headers for current limits.\n\n  version: 1.0.0\n  contact:\n    name: ApostropheCMS Support\n    url: https://apostrophecms.com\n    email: support@apostrophecms.com\n  license:\n    name: MIT\n    url: https://github.com/apostrophecms/apostrophe/blob/main/LICENSE.md\n\nexternalDocs:\n  description: Full Documentation\n  url: \"https://docs.apostrophecms.org\"\n\nx-apostrophe:\n  cmsVersion: \">=4.20.0\"\n  notes: |\n    Spec versioning follows semver independently of CMS releases.\n  isCore: true\n\n  # Used by the expander to control localization flags & nicer names.\n  pieceTypes:\n    standard:\n      - '@apostrophecms/image'\n      - '@apostrophecms/file'\n      - '@apostrophecms/image-tag'\n      - '@apostrophecms/file-tag'\n      - '@apostrophecms/submitted-draft'\n\n    nonLocalizable:\n      - '@apostrophecms/user'\n      - '@apostrophecms/global'\n\n  marketingTags:\n    '@apostrophecms/image': Media\n    '@apostrophecms/file': Media\n    '@apostrophecms/image-tag': Media\n    '@apostrophecms/file-tag': Media\n    '@apostrophecms/user': Users\n    '@apostrophecms/global': Global Content\n    '@apostrophecms/submitted-draft': Submitted Draft\n\n  # 👇 fallback for any piece not listed above\n  defaultPieceMarketingTag: Custom\n\n  # adds the module name as a second tag\n  includeTechnicalTag: true\n\nsecurity:\n  # adds session authentication as the default\n  - SessionAuth: []\n\nservers:\n  - url: http://localhost:3000/api/v1\n    description: Development server\n  - url: https://your-site.com/api/v1\n    description: Production server (not for online use)\n\ntags:\n  - name: Authentication\n    description: 🚀 Login, logout, and session management for API access - start here!\n  - name: Pages\n    description: 🚀 Essential for headless sites - page structure, content, and navigation\n  - name: Users\n    description: Built-in user management and authentication\n  - name: Global Content\n    description: Site-wide settings and content that appears across pages\n  - name: Styles\n    description: Site-wide styling controls\n  - name: Submitted Drafts\n    description: Draft submission workflow and review queue management\n  - name: Media\n    description: File uploads, image management, and media organization\n  - name: Attachments\n    description: File upload utilities and image processing\n  - name: Internationalization\n    description: Multi-language support and locale management\n  - name: Custom\n    description: Project-defined piece types (your own content models)\n\nx-tagGroups:\n  - name: Start Here\n    tags: [Authentication]\n  - name: Content & Media\n    tags: [Pages, Global Content, Submitted Draft, Media, Attachments]\n  - name: People\n    tags: [Users]\n  - name: Internationalization\n    tags: [Internationalization]\n  - name: Custom\n    tags: [Custom]\n\ncomponents:\n  securitySchemes:\n    ApiKeyAuth:\n      type: apiKey\n      in: query\n      name: apikey\n      description: |\n        **Server-to-server authentication** - API key for server-to-server communication.\n        Use as query parameter: ?apikey=your-api-key-here\n\n        Configure in app.js:\n        ```javascript\n        '@apostrophecms/express': {\n          options: {\n            apiKeys: {\n              'myapikey1029384756': { role: 'admin' }\n            }\n          }\n        }\n        ```\n\n    BearerAuth:\n      type: http\n      scheme: bearer\n      description: |\n        Bearer token authentication (recommended for API clients).\n\n        **Step 1:** Close this dialog box and generate a bearer token using the `POST /@apostrophecms/login/login` endpoint below with:\n        ```json\n        {\n          \"username\": \"your-username\",\n          \"password\": \"your-password\"\n        }\n        ```\n\n        **Step 2:** Copy **only the token value** from the response (not the full JSON)\n        Example: if response is `{\"token\": \"abc123\"}`, paste only `abc123`\n        The token will be sent as: Authorization: Bearer {your-token}\n\n        **Step 3:** Reopen this dialog and paste the token value into the value field.\n\n    SessionAuth:\n      type: apiKey\n      in: cookie\n      name: project-shortname.sid\n      description: |\n        ⚠️ **For testing after download only:** Change \"project-shortname\" in the `SessionAuth` to your actual ApostropheCMS shortname (e.g., \"myapp.sid\").\n\n        💡 This authentication won't work when testing in the online ApostropheCMS sandbox. However, you can use the login route to set a cookie you can examine in your browser DevTools.\n        It will be named `project-shortname.sid`.\n\n        **Step 1:** Close this dialog and use the `POST /@apostrophecms/login/login` endpoint below with:\n        ```json\n        {\n          \"username\": \"your-username\",\n          \"password\": \"your-password\",\n          \"session\": true\n        }\n        ```\n\n        **Step 2:** Copy the session cookie value from your browser's dev tools\n        and paste it into the \"Value\" field.\n\n  parameters:\n    Page:\n      name: page\n      in: query\n      description: Page number for pagination (1-based)\n      required: false\n      schema:\n        type: integer\n        minimum: 1\n        default: 1\n      example: 2\n\n    PerPage:\n      name: perPage\n      in: query\n      description: Number of items per page\n      required: false\n      schema:\n        type: integer\n        minimum: 1\n        maximum: 100\n        default: 10\n      example: 25\n\n    Search:\n      name: search\n      in: query\n      description: Search term for filtering results\n      required: false\n      schema:\n        type: string\n      example: \"headless cms\"\n\n    Autocomplete:\n      name: autocomplete\n      in: query\n      description: Partial word search for autocomplete functionality\n      required: false\n      schema:\n        type: string\n      example: \"apost\"\n\n    AposMode:\n      name: aposMode\n      in: query\n      description: Request draft or published version of content\n      required: false\n      schema:\n        type: string\n        enum: [draft, published]\n        default: published\n      example: \"published\"\n\n    AposLocale:\n      name: aposLocale\n      in: query\n      description: Locale for internationalization (e.g., 'en', 'fr', 'es')\n      required: false\n      schema:\n        type: string\n        example: \"fr\"\n\n    ToLocale:\n      name: toLocale\n      in: path\n      required: true\n      description: Target locale code (e.g., en:us:published)\n      schema:\n        type: string\n        pattern: '^[a-z]{2}(-[A-Z]{2})?$'\n        example: en\n\n    RenderAreas:\n      name: render-areas\n      in: query\n      description: 💡 Render widget areas as HTML instead of returning raw widget data - useful for hybrid architectures\n      required: false\n      schema:\n        type: boolean\n        default: false\n      example: true\n\n    DocumentId:\n      name: _id\n      in: path\n      required: true\n      description: Computed document ID (can optionally include mode and locale, e.g., id:en:published)\n      schema:\n        type: string\n        pattern: '^\\S+$'\n        example: \"ckitdo5oq004pu69kr6oxo6fr:en:published\"\n\n    AposDocId:\n      name: aposDocId\n      in: path\n      required: true\n      description: ApostropheCMS document identifier\n      schema:\n        type: string\n        pattern: '^[a-zA-Z0-9]+$'\n        example: \"ckitdo5oq004pu69kr6oxo6fr\"\n\n    ImageDocId:\n      name: imageId\n      in: path\n      required: true\n      description: ApostropheCMS document identifier for an image\n      schema:\n        type: string\n        pattern: '^[a-zA-Z0-9]+$'\n        example: \"ck9x8v7w2000001l6h8q9d5f0\"\n\n    AllPages:\n      name: all\n      in: query\n      description: Return all pages the requester can see (system/orphan pages included). Use with caution for large sites. Default is 0.\n      schema:\n        type: integer\n        enum: [0,1]\n        default: 0\n      example: 1\n\n    FlatResponse:\n      name: flat\n      in: query\n      description: 💡 Return pages in flat array instead of tree structure - easier for some use cases. Default is 0 (nested).\n      schema:\n        type: integer\n        enum: [0,1]\n        default: 0\n      example: 1\n\n    ChildrenParam:\n      name: children\n      in: query\n      description: Include children array in response (set to 'false' to exclude). Default is true.\n      schema:\n        type: boolean\n        default: true\n      example: false\n\n  schemas:\n    _Overview_Fields:\n      type: object\n      description: |\n        # Field Types (editor-facing)\n\n        - `StringField` — basic text\n        - `IntegerField`, `FloatField` — numbers\n        - `SelectField`, `RadioField`, `CheckboxesField` — choices\n        - `AreaField`, `ArrayField`, `ObjectField`\n        - `AttachmentField`, `RelationshipField`, `RelationshipReverseField`\n\n        👉 See also: **FieldDefinition** (discriminator: `type`).\n      externalDocs:\n        description: ApostropheCMS Field Guide\n        url: https://docs.apostrophecms.org/reference/field-types/\n      title: _Overview_Fields\n    _Overview_Primitives:\n      type: object\n      description: |\n        # Content Primitives (payload-level)\n\n        These are the “data atoms” for requests and responses.\n\n        - `AposString`, `AposSlug`, `AposUrl`, `AposEmail`\n        - `AposDateTime`, `AposDate`, `AposTime`\n        - Arrays: `AposStringArray`, `AposIntegerArray`, etc.\n\n        👉 Defined under **AposPrimitives**.\n      title: _Overview_Primitives\n    _Overview_Advanced:\n      type: object\n      description: |\n        # Advanced / Internal\n\n        Used by OpenAPI for schema defs:\n        - `UiCondition` (for `if`/`requiredIf`)\n        - `OperatorObject` (query operators)\n        - `AreaOptions`, `ArrayOptions`, and other config helpers\n      title: _Overview_Advanced\n    AreaField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - area\n            description: Apostrophe field type id.\n          options:\n            $ref: '#/components/schemas/AreaOptions'\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - options\n        examples:\n        - type: area\n          label: Main content\n          options:\n            max: 3\n            expanded: true\n            widgets:\n              '@apostrophecms/image': {}\n              '@apostrophecms/rich-text':\n                toolbar:\n                - bold\n                - italic\n              '@apostrophecms/video': {}\n              '@apostrophecms/html': {}\n            groups:\n              basics:\n                label: Basic Content\n                columns: 3\n                widgets:\n                  '@apostrophecms/rich-text':\n                    toolbar:\n                    - bold\n                  '@apostrophecms/image': {}\n              embeds:\n                label: Embeds\n                columns: 2\n                widgets:\n                  '@apostrophecms/video': {}\n                  '@apostrophecms/html': {}\n      title: AreaField\n    AreaOptions:\n      type: object\n      additionalProperties: false\n      properties:\n        widgets:\n          description: |\n            Allowed widget types for this area. Keys are widget module names (e.g., \"@apostrophecms/rich-text\"). Values are per-widget options that apply *only* in this area.\n          type: object\n          additionalProperties:\n            type: object\n        groups:\n          description: |\n            Organize widgets into groups for the expanded preview menu.\n            Each group has a label, optional columns (1–4, default 3), and its own widgets map (same shape as `widgets`).\n          type: object\n          additionalProperties:\n            $ref: '#/components/schemas/AreaWidgetGroup'\n        max:\n          type: integer\n          description: Maximum number of widgets allowed in this area.\n        expanded:\n          type: boolean\n          description: Use the expanded preview menu UX.\n      required:\n      - widgets\n      title: AreaOptions\n    AreaWidgetGroup:\n      type: object\n      additionalProperties: false\n      properties:\n        label:\n          type: string\n        columns:\n          type: integer\n          minimum: 1\n          maximum: 4\n          description: Number of widget previews per row (default 3).\n        widgets:\n          type: object\n          additionalProperties:\n            type: object\n      required:\n      - label\n      - widgets\n      title: AreaWidgetGroup\n    ArrayField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: A repeatable list of objects, each with its own field schema.\n        properties:\n          type:\n            type: string\n            enum:\n            - array\n            description: Apostrophe field type id.\n          fields:\n            $ref: '#/components/schemas/Fieldset'\n          min:\n            type: integer\n            description: Minimum number of items (inclusive).\n          max:\n            type: integer\n            description: Maximum number of items (inclusive).\n          titleField:\n            type: string\n            description: Field name in each item used as the item label in the UI.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - fields\n        examples:\n        - type: array\n          label: Tasks\n          min: 0\n          max: 50\n          titleField: title\n          items:\n            type: object\n            properties:\n              title:\n                type: string\n              priority:\n                type: string\n          fields:\n            add:\n              title:\n                type: string\n                label: Task Title\n              priority:\n                type: select\n                label: Priority\n                choices:\n                - label: Low\n                  value: low\n                - label: High\n                  value: high\n      title: ArrayField\n    AttachmentField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: |\n          Lets editors upload a single file (image, PDF, etc.).\n          Use an ArrayField of AttachmentField if you need multiple files.\n        properties:\n          type:\n            type: string\n            enum:\n            - attachment\n            description: Apostrophe field type id.\n          accept:\n            oneOf:\n            - type: string\n              description: HTML \"accept\" string (e.g., \"image/*,.pdf\"). Use to limitby MIME type and/or extension.\n            - type: array\n              items:\n                type: string\n              description: List of MIME types and/or extensions (e.g., [\"image/*\",\n                \".pdf\"]).\n          maxSize:\n            type: integer\n            description: Optional max file size in bytes (documentation-only hint).\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: attachment\n          label: Resume (PDF)\n          accept:\n          - .pdf\n          required: true\n        - type: attachment\n          label: Hero Image\n          accept: image/*\n      title: AttachmentField\n    BooleanField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - boolean\n            description: Apostrophe field type id.\n          def:\n            type: boolean\n            description: Default value shown in the editor UI.\n          toggle:\n            oneOf:\n            - type: boolean\n              description: |\n                If true, use the alternate \"toggle\" UI. \n                Labels default to the field label and standard true/false text.\n            - type: object\n              additionalProperties: false\n              description: Configure custom labels for the toggle UI.\n              properties:\n                'true':\n                  type: string\n                  description: Label to display when value is true.\n                'false':\n                  type: string\n                  description: Label to display when value is false.\n        required:\n        - type\n        - label\n        examples:\n        - type: boolean\n          label: Is this a special item?\n          def: false\n        - type: boolean\n          label: Show related articles?\n          toggle:\n            'true': Show related articles\n            'false': Hide related articles\n      title: BooleanField\n    CheckboxesField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - checkboxes\n            description: Apostrophe field type id.\n          def:\n            type: array\n            items:\n              oneOf:\n              - type: string\n              - type: number\n              - type: boolean\n            description: Default selected values.\n          choices:\n            oneOf:\n            - type: array\n              description: Static choices for the checkboxes.\n              items:\n                $ref: '#/components/schemas/SelectChoice'\n            - type: string\n              description: Method name that provides choices dynamically.\n          following:\n            oneOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n            description: Populate dynamically based on other fields (supports `<` parent prefixes).\n          followingIgnore:\n            oneOf:\n            - type: boolean\n            - type: array\n              items:\n                type: string\n            description: Ignore some or all followed fields when generating values.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - choices\n        examples:\n        - type: checkboxes\n          label: Tags\n          choices:\n          - label: News\n            value: news\n          - label: Blog\n            value: blog\n          - label: Events\n            value: events\n          def:\n          - news\n          - events\n      title: CheckboxesField\n    ColorField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - color\n            description: Apostrophe field type id.\n          def:\n            type: string\n            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$\n            description: Default hex color (e.g. \"#ff0000\").\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: color\n          label: Theme Color\n          def: '#336699'\n      title: ColorField\n    DateField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/DateBoundaryOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - date\n            description: Apostrophe field type id.\n          def:\n            type: string\n            format: date\n            description: Default date shown in the editor UI (YYYY-MM-DD).\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: date\n          label: Publish Date\n          def: '2025-01-01'\n          min: '2020-01-01'\n          max: '2030-12-31'\n        - type: date\n          label: Event Date\n          if:\n            status:\n              $eq: scheduled\n      title: DateField\n    DateAndTimeField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/DateTimeBoundaryOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - dateAndTime\n            description: Apostrophe field type id.\n          def:\n            type: string\n            format: date-time\n            description: Default timestamp in RFC 3339 format (e.g., 2025-08-29T13:00:00Z).\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: dateAndTime\n          label: Starts At\n          def: '2025-08-29T13:00:00Z'\n          min: '2024-01-01T00:00:00Z'\n          max: '2026-12-31T23:59:59Z'\n        - type: dateAndTime\n          label: Reminder At\n          requiredIf:\n            remindersEnabled: true\n      title: DateAndTimeField\n    EmailField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - email\n            description: Apostrophe field type id.\n          def:\n            type: string\n            format: email\n            description: Default email address shown in the editor UI.\n          pattern:\n            type: string\n            description: Optional regex for stricter validation (in addition to HTML5\n              email validation).\n          autocomplete:\n            type: string\n            description: Value for the HTML autocomplete attribute. Common values are\n              \"email\" or \"off\".\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: email\n          label: Contact Email\n          def: info@example.com\n        - type: email\n          label: Support Email\n          autocomplete: email\n          requiredIf:\n            supportEnabled: true\n      title: EmailField\n    FloatField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/NumericRangeOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - float\n          format:\n            type: string\n            enum:\n            - float\n            description: OpenAPI hint for tooling; always \"float\".\n          def:\n            type: number\n            format: float\n            description: Default decimal value.\n        examples:\n        - type: float\n          label: Price (USD)\n          help: Enter a decimal price.\n          def: 0.0\n          min: 0\n          max: 99999.99\n          required: true\n      title: FloatField\n    IntegerField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/NumericRangeOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - integer\n            description: Apostrophe field type id.\n          def:\n            type: integer\n            description: Default integer value shown in the editor UI.\n        required:\n        - type\n        - label\n        examples:\n        - type: integer\n          label: Age\n          min: 0\n          max: 120\n          def: 18\n        - type: integer\n          label: Estimated Hours\n          min: 1\n          max: 999\n      title: IntegerField\n    ObjectField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: A nested object with its own field schema.\n        properties:\n          type:\n            type: string\n            enum:\n            - object\n          fields:\n            $ref: '#/components/schemas/Fieldset'\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - fields\n      title: ObjectField\n    OembedField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - oembed\n            description: Apostrophe field type id.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        description: |\n          Lets editors paste a media URL from an oEmbed-compatible host.\n          The editor shows an immediate preview once a valid URL is entered.\n          Stored value is an object snapshot (url/title/thumbnail).\n        examples:\n        - type: oembed\n          label: Featured video\n      title: OembedField\n    PasswordField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - password\n            description: Apostrophe field type id.\n          def:\n            type: string\n            description: Default password value (generally not used).\n          min:\n            type: integer\n            description: Minimum number of characters required.\n          max:\n            type: integer\n            description: Maximum number of characters allowed.\n          pattern:\n            type: string\n            description: Regex to enforce password rules (e.g., at least one number).\n          autocomplete:\n            type: string\n            description: HTML autocomplete attribute, usually \"new-password\" or \"current-password\".\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: password\n          label: Account Password\n          min: 8\n          autocomplete: new-password\n      title: PasswordField\n    RadioField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - radio\n            description: Apostrophe field type id.\n          def:\n            oneOf:\n            - type: string\n            - type: number\n            - type: boolean\n            description: Default selected value.\n          choices:\n            oneOf:\n            - type: array\n              description: Static choices to render as radio buttons.\n              items:\n                $ref: '#/components/schemas/SelectChoice'\n            - type: string\n              description: Method name that provides choices (e.g. \"statusChoices\").\n          following:\n            oneOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n            description: Populate dynamically based on other fields (supports `<` parent prefixes).\n          followingIgnore:\n            oneOf:\n            - type: boolean\n            - type: array\n              items:\n                type: string\n            description: Ignore some or all followed fields when generating values.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - choices\n        examples:\n        - type: radio\n          label: Priority\n          choices:\n          - label: Low\n            value: low\n          - label: High\n            value: high\n          def: low\n        - type: radio\n          label: Status\n          choices: statusChoices\n      title: RadioField\n    RangeField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/NumericRangeOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - range\n            description: Apostrophe field type id.\n          def:\n            type: number\n            description: Default slider value in the editor UI.\n          step:\n            type: number\n            description: Increment step for the slider. If omitted, defaults to 1.\n          min:\n            type: number\n            description: Minimum value for the slider.\n          max:\n            type: number\n            description: Maximum value for the slider.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: range\n          label: Satisfaction\n          min: 1\n          max: 10\n          step: 1\n          def: 5\n        - type: range\n          label: Volume\n          min: 0\n          max: 100\n          step: 5\n          def: 50\n      title: RangeField\n    RelationshipField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: |\n          Relate this document to one or more docs of another type (pieces/pages).\n          Use `max: 1` for a single-select join; omit `max` (or set >1) for multi-select.\n        properties:\n          type:\n            type: string\n            enum:\n            - relationship\n            description: Apostrophe field type id.\n          withType:\n            type: string\n            description: Module name of the related doc type (e.g., \"article\", \"@apostrophecms/image\").\n          min:\n            type: integer\n            description: Minimum number of related docs required (inclusive).\n          max:\n            type: integer\n            description: Maximum number of related docs allowed (inclusive).\n          fields:\n            $ref: '#/components/schemas/Fieldset'\n          builders:\n            type: object\n            additionalProperties: true\n            description: |\n              Apostrophe cursor builders for the related query (e.g., {project: { title: 1 }, sort: { title: 1 } }).\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - withType\n        examples:\n        - type: relationship\n          label: Author\n          withType: person\n          max: 1\n          builders:\n            project:\n              title: 1\n              _url: 1\n        - type: relationship\n          label: Related Articles\n          withType: article\n          min: 0\n          max: 5\n          fields:\n            add:\n              relationshipRole:\n                type: select\n                label: Role\n                choices:\n                - label: Primary\n                  value: primary\n                - label: Secondary\n                  value: secondary\n          builders:\n            project:\n              title: 1\n              _url: 1\n            sort:\n              title: 1\n      title: RelationshipField\n    RelationshipReverseField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: |\n          Read-only reverse side of a forward `relationship` field defined on another type.\n          Use this to show “referenced by” links without storing ids here.\n        properties:\n          type:\n            type: string\n            enum:\n            - relationshipReverse\n            description: Apostrophe field type id.\n          withType:\n            type: string\n            description: Module name that holds the forward relationship.\n          reverseOf:\n            type: string\n            description: |\n              Name of the forward relationship field on `withType` (e.g.,\"_authors\" on \"article\").\n          builders:\n            type: object\n            additionalProperties: true\n            description: Cursor builders applied when populating the reverse join.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - withType\n        - reverseOf\n        examples:\n        - type: relationshipReverse\n          label: Articles referencing this person\n          withType: article\n          reverseOf: _authors\n          builders:\n            project:\n              title: 1\n              _url: 1\n      title: RelationshipReverseField\n    SelectField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - select\n            description: Apostrophe field type id.\n          def:\n            oneOf:\n            - type: string\n            - type: number\n            - type: boolean\n            - type: array\n              items:\n                oneOf:\n                - type: string\n                - type: number\n                - type: boolean\n            description: |\n              Default value. If `multiple: true`, this should be an array.\n          multiple:\n            type: boolean\n            description: Allow selecting multiple values (stores an array).\n          choices:\n            oneOf:\n            - type: array\n              description: Static choices for the select dropdown.\n              items:\n                $ref: '#/components/schemas/SelectChoice'\n            - type: string\n              description: |\n                Name of a method that returns choices (e.g. \"sponsorNames\").\n                May be \"module:method\" to reference another module.\n          following:\n            oneOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n            description: Populate dynamically based on other fields’ values (supports `<` parent prefixes).\n          followingIgnore:\n            oneOf:\n            - type: boolean\n            - type: array\n              items:\n                type: string\n            description: Ignore some or all followed fields when generating values.\n        required:\n        - type\n        - label\n        examples:\n        - type: select\n          label: Task Priority\n          choices:\n          - label: Low\n            value: low\n          - label: Medium\n            value: medium\n          - label: High\n            value: high\n          - label: Critical\n            value: critical\n          def: medium\n        - type: select\n          label: Tags\n          multiple: true\n          choices:\n          - label: News\n            value: news\n          - label: Blog\n            value: blog\n          - label: Events\n            value: events\n          def:\n          - news\n          - events\n        - type: select\n          label: Sponsor\n          choices: sponsorNames\n          following:\n          - <projectType\n      title: SelectField\n    SelectChoice:\n      type: object\n      additionalProperties: false\n      properties:\n        label:\n          type: string\n          description: Human-friendly label shown in UI.\n        value:\n          oneOf:\n          - type: string\n          - type: number\n          - type: boolean\n          description: The stored value for this choice.\n        disabled:\n          type: boolean\n          description: If true, show but disable this option.\n      required:\n      - label\n      - value\n      title: SelectChoice\n    SlugField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - slug\n            description: Apostrophe field type id.\n          def:\n            type: string\n            description: Default slug value shown in the editor UI.\n          prefix:\n            type: string\n            description: Optional prefix automatically prepended when generating the slug.\n          source:\n            type: string\n            description: |\n              Name of the field this slug should follow (usually \"title\").\n              Works with `following`/`followingIgnore`.\n          unique:\n            type: boolean\n            description: If true, ensures slug is unique across docs of this type.\n          pattern:\n            type: string\n            description: Optional regex to further constrain allowed slugs.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: slug\n          label: URL Slug\n          source: title\n          unique: true\n          prefix: blog/\n        - type: slug\n          label: Custom Slug\n          def: my-custom-page\n      title: SlugField\n    StringField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - string\n            description: Apostrophe field type id.\n          def:\n            type: string\n            description: Default value shown in the editor UI.\n          textarea:\n            type: boolean\n            description: If true, renders a multiline textarea UI.\n          min:\n            type: integer\n            description: Minimum number of characters allowed.\n          max:\n            type: integer\n            description: Maximum number of characters allowed.\n          pattern:\n            type: string\n            description: |\n              Regular expression (string form) to validate the input.\n              Only matching values are allowed.\n          autocomplete:\n            type: string\n            description: |\n              Value of the HTML autocomplete attribute (see MDN). Use `\"off\"` to disable autocomplete.\n          following:\n            oneOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n            description: Field(s) to follow for automatic value generation. Supports `<` prefixes to access parent fields.\n          followingIgnore:\n            oneOf:\n            - type: boolean\n            - type: array\n              items:\n                type: string\n            description: Controls which `following` values are ignored.\n          sortify:\n            type: boolean\n            description: If true, creates a parallel “sortified” version of this field for case- and punctuation-insensitive sorting.\n        required:\n        - type\n        - label\n        examples:\n        - type: string\n          label: Dog Name\n          def: Fido\n        - type: string\n          label: Biography\n          textarea: true\n          max: 800\n        - type: string\n          label: Meta Description\n          following:\n          - title\n          - featured\n          followingIgnore:\n          - featured\n          if:\n            featured: true\n      title: StringField\n    TimeField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - time\n            description: Apostrophe field type id.\n          def:\n            type: string\n            pattern: ^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$\n            description: |\n              Default value in HH:MM:SS (24-hour).\n              If not set and not required, defaults to the current time.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: time\n          label: Event Time\n          def: '14:30:00'\n        - type: time\n          label: Reminder Time\n      title: TimeField\n    UrlField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - url\n            description: Apostrophe field type id.\n          def:\n            type: string\n            format: uri\n            description: Default URL shown in the editor UI.\n          pattern:\n            type: string\n            description: Optional regex for stricter validation of allowed URLs (in addition to standard URI syntax).\n          autocomplete:\n            type: string\n            description: Value for the HTML autocomplete attribute. Common values include \"url\" or \"off\".\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: url\n          label: Website\n          def: https://example.com\n        - type: url\n          label: LinkedIn Profile\n          autocomplete: url\n          requiredIf:\n            hasLinkedIn: true\n      title: UrlField\n    Page:\n      type: object\n      description: An ApostropheCMS page document with hierarchical structure and content\n        areas\n      properties:\n        _id:\n          type: string\n          description: Unique document identifier, may include mode and locale (e.g.,\n            \"id:en:published\")\n          example: ckhdscx5900054z9k88uqs16w:en:published\n        aposDocId:\n          type: string\n          description: Base document ID without mode/locale qualifiers\n          example: ckhdscx5900054z9k88uqs16w\n        aposLocale:\n          type: string\n          description: Document locale code\n          example: en\n        aposMode:\n          type: string\n          description: Document mode (draft or published)\n          enum:\n          - draft\n          - published\n          example: published\n        archived:\n          type: boolean\n          description: Whether the page is archived\n          default: false\n        createdAt:\n          type: string\n          format: date-time\n          description: Page creation timestamp\n          example: '2023-01-15T10:30:00.000Z'\n        updatedAt:\n          type: string\n          format: date-time\n          description: Page last update timestamp\n          example: '2024-12-18T14:20:00.000Z'\n        titleSortified:\n          type: string\n          description: Sortable version of the page title\n          example: about us\n        slug:\n          type: string\n          description: URL slug for the page\n          example: /about-us\n        path:\n          type: string\n          description: Full hierarchical path in the page tree\n          example: /about-us\n        rank:\n          type: integer\n          description: Sort order within parent page\n          example: 0\n        level:\n          type: integer\n          description: Depth level in the page tree (0 = root level)\n          example: 1\n        orphan:\n          type: boolean\n          description: Whether page is orphaned (not in tree structure)\n          default: false\n        parked:\n          type: array\n          description: Array of parking lot configurations if page is parked\n          items:\n            type: string\n          example: []\n        visibility:\n          type: string\n          description: Page visibility setting\n          enum:\n          - public\n          - loginRequired\n          - private\n          default: public\n          example: public\n        type:\n          type: string\n          description: Page type module name\n          example: '@apostrophecms/page'\n        title:\n          type: string\n          description: Page title\n          example: About Us\n          maxLength: 100\n        main:\n          type: object\n          description: Main content area with rich content widgets\n          properties:\n            metaType:\n              type: string\n              example: area\n            items:\n              type: array\n              items:\n                type: object\n                properties:\n                  metaType:\n                    type: string\n                    example: widget\n                  type:\n                    type: string\n                    example: '@apostrophecms/rich-text'\n                  aposPlaceholder:\n                    type: boolean\n                    default: false\n                  content:\n                    type: string\n                    description: Widget content (varies by widget type)\n                    example: <p>Welcome to our website!</p>\n                  _id:\n                    type: string\n                    example: widget-id-123\n        seoFields:\n          type: object\n          description: SEO metadata for the page\n          properties:\n            metaDescription:\n              type: string\n              description: Meta description for search engines\n              maxLength: 160\n              example: Learn about our company, mission, and values\n            metaKeywords:\n              type: string\n              description: Meta keywords (legacy, rarely used)\n              example: about, company, mission\n            ogTitle:\n              type: string\n              description: Open Graph title for social sharing\n              example: About Our Company\n            ogDescription:\n              type: string\n              description: Open Graph description for social sharing\n              example: Discover our story and what drives us forward\n            ogImage:\n              type: object\n              description: Open Graph image for social sharing\n              properties:\n                _id:\n                  type: string\n                  example: image-id-456\n                title:\n                  type: string\n                  example: Company Photo\n                attachment:\n                  type: object\n                  properties:\n                    _id:\n                      type: string\n                      example: attachment-789\n                    name:\n                      type: string\n                      example: company-photo\n                    extension:\n                      type: string\n                      example: jpg\n                    _url:\n                      type: string\n                      example: /uploads/attachments/company-photo.jpg\n        _ancestors:\n          type: array\n          description: Array of ancestor page IDs in the page tree hierarchy\n          items:\n            type: string\n          example:\n          - root-page-id\n        _children:\n          type: array\n          description: Array of child pages (when requested with children parameter)\n          items:\n            $ref: '#/components/schemas/Page'\n          example: []\n        _url:\n          type: string\n          description: Full URL to the page\n          example: https://example.com/about-us\n          format: uri\n        _edit:\n          type: boolean\n          description: Whether current user ca\n\n<!-- [TRUNCATED AT 50KB] -->","packages/apostrophecms-openapi/examples/typescript/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2FREADME.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ApiError.md":"# ApiError\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**status** | **number** | HTTP status code, e.g., 401 | [optional] [default to undefined]\n**code** | **string** | Application error code (optional) | [optional] [default to undefined]\n**message** | **string** | Human-readable error message | [default to undefined]\n**details** | **{ [key: string]: any; }** | Extra context about the error | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ApiError } from 'apostrophecms-client';\n\nconst instance: ApiError = {\n    status,\n    code,\n    message,\n    details,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AreaField.md":"# AreaField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**_options** | [**AreaOptions**](AreaOptions.md) |  | [default to undefined]\n\n## Example\n\n```typescript\nimport { AreaField } from 'apostrophecms-client';\n\nconst instance: AreaField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    _options,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AreaOptions.md":"# AreaOptions\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**widgets** | **{ [key: string]: object; }** | Allowed widget types for this area. Keys are widget module names (e.g., \\&quot;@apostrophecms/rich-text\\&quot;). Values are per-widget options that apply *only* in this area.  | [default to undefined]\n**groups** | [**{ [key: string]: AreaWidgetGroup; }**](AreaWidgetGroup.md) | Organize widgets into groups for the expanded preview menu. Each group has a label, optional columns (1–4, default 3), and its own widgets map (same shape as &#x60;widgets&#x60;).  | [optional] [default to undefined]\n**max** | **number** | Maximum number of widgets allowed in this area. | [optional] [default to undefined]\n**expanded** | **boolean** | Use the expanded preview menu UX. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AreaOptions } from 'apostrophecms-client';\n\nconst instance: AreaOptions = {\n    widgets,\n    groups,\n    max,\n    expanded,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AreaWidgetGroup.md":"# AreaWidgetGroup\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**label** | **string** |  | [default to undefined]\n**columns** | **number** | Number of widget previews per row (default 3). | [optional] [default to undefined]\n**widgets** | **{ [key: string]: object; }** |  | [default to undefined]\n\n## Example\n\n```typescript\nimport { AreaWidgetGroup } from 'apostrophecms-client';\n\nconst instance: AreaWidgetGroup = {\n    label,\n    columns,\n    widgets,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/ArrayField.md":"# ArrayField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**fields** | [**Fieldset**](Fieldset.md) |  | [default to undefined]\n**min** | **number** | Minimum number of items (inclusive). | [optional] [default to undefined]\n**max** | **number** | Maximum number of items (inclusive). | [optional] [default to undefined]\n**titleField** | **string** | Field name in each item used as the item label in the UI. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ArrayField } from 'apostrophecms-client';\n\nconst instance: ArrayField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    fields,\n    min,\n    max,\n    titleField,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/Attachment.md":"# Attachment\n\nFile attachment information from upload endpoint\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_id** | **string** | Unique attachment identifier | [optional] [default to undefined]\n**_url** | **string** | URL to the original file | [optional] [default to undefined]\n**_urls** | **{ [key: string]: string; }** | URLs for different image sizes (images only) | [optional] [default to undefined]\n**name** | **string** | Slugified filename | [optional] [default to undefined]\n**title** | **string** | Sortified filename | [optional] [default to undefined]\n**extension** | **string** | File extension | [optional] [default to undefined]\n**type** | **string** |  | [optional] [default to undefined]\n**group** | **string** | File group type | [optional] [default to undefined]\n**length** | **number** | File size in bytes | [optional] [default to undefined]\n**md5** | **string** | MD5 checksum | [optional] [default to undefined]\n**width** | **number** | Image width in pixels (images only) | [optional] [default to undefined]\n**height** | **number** | Image height in pixels (images only) | [optional] [default to undefined]\n**landscape** | **boolean** | Whether image is landscape orientation (images only) | [optional] [default to undefined]\n**portrait** | **boolean** | Whether image is portrait orientation (images only) | [optional] [default to undefined]\n**docIds** | **Array&lt;string&gt;** | IDs of documents using this attachment | [optional] [default to undefined]\n**archivedDocIds** | **Array&lt;string&gt;** | IDs of archived documents using this attachment | [optional] [default to undefined]\n**createdAt** | **string** |  | [optional] [default to undefined]\n**updatedAt** | **string** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { Attachment } from 'apostrophecms-client';\n\nconst instance: Attachment = {\n    _id,\n    _url,\n    _urls,\n    name,\n    title,\n    extension,\n    type,\n    group,\n    length,\n    md5,\n    width,\n    height,\n    landscape,\n    portrait,\n    docIds,\n    archivedDocIds,\n    createdAt,\n    updatedAt,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AttachmentCropRequest.md":"# AttachmentCropRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_id** | **string** | The _id property of an existing image attachment document | [default to undefined]\n**crop** | [**AttachmentCropRequestCrop**](AttachmentCropRequestCrop.md) |  | [default to undefined]\n\n## Example\n\n```typescript\nimport { AttachmentCropRequest } from 'apostrophecms-client';\n\nconst instance: AttachmentCropRequest = {\n    _id,\n    crop,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AttachmentCropRequestCrop.md":"# AttachmentCropRequestCrop\n\nCrop coordinates and dimensions\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**top** | **number** | Top coordinate of the crop area (pixels) | [default to undefined]\n**left** | **number** | Left coordinate of the crop area (pixels) | [default to undefined]\n**width** | **number** | Width of the crop area (pixels) | [default to undefined]\n**height** | **number** | Height of the crop area (pixels) | [default to undefined]\n\n## Example\n\n```typescript\nimport { AttachmentCropRequestCrop } from 'apostrophecms-client';\n\nconst instance: AttachmentCropRequestCrop = {\n    top,\n    left,\n    width,\n    height,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AttachmentField.md":"# AttachmentField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**accept** | [**AttachmentFieldAllOfAccept**](AttachmentFieldAllOfAccept.md) |  | [optional] [default to undefined]\n**maxSize** | **number** | Optional max file size in bytes (documentation-only hint). | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AttachmentField } from 'apostrophecms-client';\n\nconst instance: AttachmentField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    accept,\n    maxSize,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AttachmentFieldAllOfAccept.md":"# AttachmentFieldAllOfAccept\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n\n## Example\n\n```typescript\nimport { AttachmentFieldAllOfAccept } from 'apostrophecms-client';\n\nconst instance: AttachmentFieldAllOfAccept = {\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AttachmentsApi.md":"# AttachmentsApi\n\nAll URIs are relative to *http://localhost:3000/api/v1*\n\n|Method | HTTP request | Description|\n|------------- | ------------- | -------------|\n|[**attachmentCrop**](#attachmentcrop) | **POST** /@apostrophecms/attachment/crop | Crop image attachment|\n|[**attachmentUpload**](#attachmentupload) | **POST** /@apostrophecms/attachment/upload | Upload media file|\n\n# **attachmentCrop**\n> boolean attachmentCrop(attachmentCropRequest)\n\nCreate a cropped version of an existing image attachment. The crop object is appended to the crops array property of the attachment document. The newly uploaded image file will be stored with a filename using the crop properties: {_id}-{name}.{top}.{left}.{width}.{height}.{extension} \n\n### Example\n\n```typescript\nimport {\n    AttachmentsApi,\n    Configuration,\n    AttachmentCropRequest\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AttachmentsApi(configuration);\n\nlet attachmentCropRequest: AttachmentCropRequest; //\nlet aposMode: 'draft' | 'published'; //Request draft or published version of content (optional) (default to 'published')\nlet aposLocale: string; //Locale for internationalization (e.g., \\'en\\', \\'fr\\', \\'es\\') (optional) (default to undefined)\n\nconst { status, data } = await apiInstance.attachmentCrop(\n    attachmentCropRequest,\n    aposMode,\n    aposLocale\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **attachmentCropRequest** | **AttachmentCropRequest**|  | |\n| **aposMode** | [**&#39;draft&#39; | &#39;published&#39;**]**Array<&#39;draft&#39; &#124; &#39;published&#39;>** | Request draft or published version of content | (optional) defaults to 'published'|\n| **aposLocale** | [**string**] | Locale for internationalization (e.g., \\&#39;en\\&#39;, \\&#39;fr\\&#39;, \\&#39;es\\&#39;) | (optional) defaults to undefined|\n\n\n### Return type\n\n**boolean**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: application/json\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Image cropped successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**401** | Authentication required |  -  |\n|**404** | Resource not found |  -  |\n|**422** | Unprocessable entity - crop coordinates exceed image bounds |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **attachmentUpload**\n> Attachment attachmentUpload()\n\nUpload a media file to create an attachment. The uploaded file can then be used to create image or file documents. Uses multipart/form-data encoding with the file uploaded under the name \\'file\\'. \n\n### Example\n\n```typescript\nimport {\n    AttachmentsApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AttachmentsApi(configuration);\n\nlet file: File; //The file to upload (default to undefined)\nlet aposMode: 'draft' | 'published'; //Request draft or published version of content (optional) (default to 'published')\nlet aposLocale: string; //Locale for internationalization (e.g., \\'en\\', \\'fr\\', \\'es\\') (optional) (default to undefined)\n\nconst { status, data } = await apiInstance.attachmentUpload(\n    file,\n    aposMode,\n    aposLocale\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **file** | [**File**] | The file to upload | defaults to undefined|\n| **aposMode** | [**&#39;draft&#39; | &#39;published&#39;**]**Array<&#39;draft&#39; &#124; &#39;published&#39;>** | Request draft or published version of content | (optional) defaults to 'published'|\n| **aposLocale** | [**string**] | Locale for internationalization (e.g., \\&#39;en\\&#39;, \\&#39;fr\\&#39;, \\&#39;es\\&#39;) | (optional) defaults to undefined|\n\n\n### Return type\n\n**Attachment**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: multipart/form-data\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | File uploaded successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**401** | Authentication required |  -  |\n|**413** | File too large |  -  |\n|**415** | Unsupported file type |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthContext200Response.md":"# AuthContext200Response\n\nAdditional context based on configuration\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**localLogin** | **boolean** | Whether local login is enabled | [optional] [default to undefined]\n**passwordReset** | **boolean** | Whether password reset is enabled | [optional] [default to undefined]\n**loginUrl** | **string** | The configured login URL | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthContext200Response } from 'apostrophecms-client';\n\nconst instance: AuthContext200Response = {\n    localLogin,\n    passwordReset,\n    loginUrl,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthContextPost200Response.md":"# AuthContextPost200Response\n\nAdditional context based on configuration\\\"\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**localLogin** | **boolean** | Whether local login is enabled | [optional] [default to undefined]\n**passwordReset** | **boolean** | Whether password reset is enabled | [optional] [default to undefined]\n**loginUrl** | **string** | The configured login URL | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthContextPost200Response } from 'apostrophecms-client';\n\nconst instance: AuthContextPost200Response = {\n    localLogin,\n    passwordReset,\n    loginUrl,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthLogin200Response.md":"# AuthLogin200Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**token** | **string** | Bearer token (only present when session is false/omitted) | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthLogin200Response } from 'apostrophecms-client';\n\nconst instance: AuthLogin200Response = {\n    token,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthLoginRequest.md":"# AuthLoginRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**username** | **string** | User\\&#39;s login username | [default to undefined]\n**password** | **string** | User\\&#39;s password | [default to undefined]\n**session** | **boolean** | Set to true to receive session cookie instead of bearer token | [optional] [default to false]\n\n## Example\n\n```typescript\nimport { AuthLoginRequest } from 'apostrophecms-client';\n\nconst instance: AuthLoginRequest = {\n    username,\n    password,\n    session,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthLogout200Response.md":"# AuthLogout200Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**success** | **boolean** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthLogout200Response } from 'apostrophecms-client';\n\nconst instance: AuthLogout200Response = {\n    success,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthReset200Response.md":"# AuthReset200Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**success** | **boolean** |  | [optional] [default to undefined]\n**message** | **string** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthReset200Response } from 'apostrophecms-client';\n\nconst instance: AuthReset200Response = {\n    success,\n    message,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthReset410Response.md":"# AuthReset410Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**error** | **string** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthReset410Response } from 'apostrophecms-client';\n\nconst instance: AuthReset410Response = {\n    error,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequest.md":"# AuthResetRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**token** | **string** | Reset token from the password reset email | [default to undefined]\n**password** | **string** | New password for the user account | [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthResetRequest } from 'apostrophecms-client';\n\nconst instance: AuthResetRequest = {\n    token,\n    password,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequest200Response.md":"# AuthResetRequest200Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**success** | **boolean** |  | [optional] [default to undefined]\n**message** | **string** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthResetRequest200Response } from 'apostrophecms-client';\n\nconst instance: AuthResetRequest200Response = {\n    success,\n    message,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequestRequest.md":"# AuthResetRequestRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**email** | **string** | Email address of the user requesting password reset | [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthResetRequestRequest } from 'apostrophecms-client';\n\nconst instance: AuthResetRequestRequest = {\n    email,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthWhoAmI200Response.md":"# AuthWhoAmI200Response\n\nAdditional fields based on whoamiFields configuration\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_id** | **string** | User\\&#39;s unique identifier | [optional] [default to undefined]\n**username** | **string** | User\\&#39;s login username | [optional] [default to undefined]\n**title** | **string** | User\\&#39;s display name | [optional] [default to undefined]\n**email** | **string** | User\\&#39;s email address (if configured in whoamiFields) | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthWhoAmI200Response } from 'apostrophecms-client';\n\nconst instance: AuthWhoAmI200Response = {\n    _id,\n    username,\n    title,\n    email,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthenticationApi.md":"# AuthenticationApi\n\nAll URIs are relative to *http://localhost:3000/api/v1*\n\n|Method | HTTP request | Description|\n|------------- | ------------- | -------------|\n|[**authContext**](#authcontext) | **GET** /@apostrophecms/login/context | Get login context information|\n|[**authContextPost**](#authcontextpost) | **POST** /@apostrophecms/login/context | Get login context information|\n|[**authLogin**](#authlogin) | **POST** /@apostrophecms/login/login | Login to get authentication token|\n|[**authLogout**](#authlogout) | **POST** /@apostrophecms/login/logout | Logout and invalidate session|\n|[**authReset**](#authreset) | **POST** /@apostrophecms/login/reset | Complete password reset|\n|[**authResetRequest**](#authresetrequest) | **POST** /@apostrophecms/login/reset-request | Request password reset|\n|[**authWhoAmI**](#authwhoami) | **GET** /@apostrophecms/login/whoami | Get current user information|\n|[**authWhoAmIPost**](#authwhoamipost) | **POST** /@apostrophecms/login/whoami | Get current user information|\n\n# **authContext**\n> AuthContext200Response authContext()\n\n**⚠️ DEPRECATED:** This GET endpoint is deprecated due to caching issues. Use the POST method instead.  Returns login context information including environment and requirements. This endpoint provides information about the login system configuration.  **Useful for:** - Understanding available login methods - Checking if password reset is enabled - Getting login system configuration \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authContext();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthContext200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Login context retrieved successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authContextPost**\n> AuthContextPost200Response authContextPost()\n\nReturns login context information including environment and requirements. This endpoint provides information about the login system configuration.  **Note:** POST method is recommended for this endpoint to avoid caching issues.  **Useful for:** - Understanding available login methods - Checking if password reset is enabled - Getting login system configuration \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authContextPost();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthContextPost200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Login context retrieved successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authLogin**\n> AuthLogin200Response authLogin(authLoginRequest)\n\n🚀 **Start here!** Authenticate and receive either a bearer token or session cookie for subsequent API requests.  **Perfect for:** - Getting started with the API - Setting up authentication for your app - Testing API access  **Choose your authentication method:** - **Bearer Token** (recommended): omit `session` field or set to `false` - **Session Cookie**: set `session` to `true` and include `credentials: \\'include\\'` in fetch \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration,\n    AuthLoginRequest\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nlet authLoginRequest: AuthLoginRequest; //\n\nconst { status, data } = await apiInstance.authLogin(\n    authLoginRequest\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **authLoginRequest** | **AuthLoginRequest**|  | |\n\n\n### Return type\n\n**AuthLogin200Response**\n\n### Authorization\n\nNo authorization required\n\n### HTTP request headers\n\n - **Content-Type**: application/json\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Login successful |  * Set-Cookie - Session cookie (only when session&#x3D;true) <br>  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**401** | Authentication required |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authLogout**\n> AuthLogout200Response authLogout()\n\nEnd the current session or invalidate the bearer token.  **For bearer token**: include Authorization header **For session cookie**: include credentials in request \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authLogout();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthLogout200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Logout successful |  -  |\n|**401** | Authentication required |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authReset**\n> AuthReset200Response authReset(authResetRequest)\n\nCompletes a password reset using the token provided in the reset email.  **⚠️ Note:** This endpoint is only available when `passwordReset` is enabled in the login module configuration.  Reset tokens are valid for the number of hours specified in `passwordResetHours` (default: 48 hours). \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration,\n    AuthResetRequest\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nlet authResetRequest: AuthResetRequest; //\n\nconst { status, data } = await apiInstance.authReset(\n    authResetRequest\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **authResetRequest** | **AuthResetRequest**|  | |\n\n\n### Return type\n\n**AuthReset200Response**\n\n### Authorization\n\nNo authorization required\n\n### HTTP request headers\n\n - **Content-Type**: application/json\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Password reset completed successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**404** | Resource not found |  -  |\n|**410** | Reset token expired |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authResetRequest**\n> AuthResetRequest200Response authResetRequest(authResetRequestRequest)\n\nInitiates a password reset process by sending a reset link to the user\\'s email address.  **⚠️ Note:** This endpoint is only available when `passwordReset` is enabled in the login module configuration.  **Security feature:** The user will not be notified if the email check fails or if the email fails to send. However, debug information will be output in the server terminal. \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration,\n    AuthResetRequestRequest\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nlet authResetRequestRequest: AuthResetRequestRequest; //\n\nconst { status, data } = await apiInstance.authResetRequest(\n    authResetRequestRequest\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **authResetRequestRequest** | **AuthResetRequestRequest**|  | |\n\n\n### Return type\n\n**AuthResetRequest200Response**\n\n### Authorization\n\nNo authorization required\n\n### HTTP request headers\n\n - **Content-Type**: application/json\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Password reset request processed (always returns success for security) |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**404** | Resource not found |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authWhoAmI**\n> AuthWhoAmI200Response authWhoAmI()\n\n**⚠️ DEPRECATED:** This GET endpoint is deprecated due to caching issues. Use the POST method instead.  Returns information about the currently authenticated user.  **Security note:** Only explicitly configured fields are returned, never the complete user object. This prevents accidental exposure of sensitive user data. \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authWhoAmI();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthWhoAmI200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Current user information retrieved successfully |  -  |\n|**401** | Authentication required |  -  |\n|**404** | Resource not found |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authWhoAmIPost**\n> AuthWhoAmI200Response authWhoAmIPost()\n\nReturns information about the currently authenticated user.  **Note:** POST method is recommended for this endpoint to avoid caching issues.  **Perfect for:** - Checking if authentication is working - Getting user details for your app - Validating permissions  **Security note:** Only explicitly configured fields are returned,  never the complete user object. This prevents accidental exposure  of sensitive user data. \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authWhoAmIPost();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthWhoAmI200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Current user information retrieved successfully |  -  |\n|**401** | Authentication required |  -  |\n|**404** | Resource not found |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n","packages/apostrophecms-openapi/examples/typescript/docs/BaseField.md":"# BaseField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id (e.g., \\&quot;float\\&quot;, \\&quot;string\\&quot;, \\&quot;boolean\\&quot;). | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BaseField } from 'apostrophecms-client';\n\nconst instance: BaseField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/BooleanField.md":"# BooleanField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **boolean** | Default value shown in the editor UI. | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**toggle** | [**BooleanFieldAllOfToggle**](BooleanFieldAllOfToggle.md) |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BooleanField } from 'apostrophecms-client';\n\nconst instance: BooleanField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    toggle,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/BooleanFieldAllOfToggle.md":"# BooleanFieldAllOfToggle\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_true** | **string** | Label to display when value is true. | [optional] [default to undefined]\n**_false** | **string** | Label to display when value is false. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BooleanFieldAllOfToggle } from 'apostrophecms-client';\n\nconst instance: BooleanFieldAllOfToggle = {\n    _true,\n    _false,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/BooleanFieldAllOfToggleOneOf.md":"# BooleanFieldAllOfToggleOneOf\n\nConfigure custom labels for the toggle UI.\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_true** | **string** | Label to display when value is true. | [optional] [default to undefined]\n**_false** | **string** | Label to display when value is false. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BooleanFieldAllOfToggleOneOf } from 'apostrophecms-client';\n\nconst instance: BooleanFieldAllOfToggleOneOf = {\n    _true,\n    _false,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/BulkOperationRequest.md":"# BulkOperationRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_ids** | **Array&lt;string&gt;** | Array of document IDs to operate on | [default to undefined]\n\n## Example\n\n```typescript\nimport { BulkOperationRequest } from 'apostrophecms-client';\n\nconst instance: BulkOperationRequest = {\n    _ids,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/BulkOperationResponse.md":"# BulkOperationResponse\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**success** | **boolean** |  | [optional] [default to undefined]\n**modified** | **number** | Number of documents affected | [optional] [default to undefined]\n**errors** | **Array&lt;string&gt;** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BulkOperationResponse } from 'apostrophecms-client';\n\nconst instance: BulkOperationResponse = {\n    success,\n    modified,\n    errors,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesField.md":"# CheckboxesField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | [**Array&lt;CheckboxesFieldAllOfDef&gt;**](CheckboxesFieldAllOfDef.md) | Default selected values. | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**choices** | [**CheckboxesFieldAllOfChoices**](CheckboxesFieldAllOfChoices.md) |  | [default to undefined]\n**following** | [**CheckboxesFieldAllOfFollowing**](CheckboxesFieldAllOfFollowing.md) |  | [optional] [default to undefined]\n**followingIgnore** | [**CheckboxesFieldAllOfFollowingIgnore**](CheckboxesFieldAllOfFollowingIgnore.md) |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { CheckboxesField } from 'apostrophecms-client';\n\nconst instance: CheckboxesField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    choices,\n    following,\n    followingIgnore,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfChoices.md":"# CheckboxesFieldAllOfChoices\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n\n## Example\n\n```typescript\nimport { CheckboxesFieldAllOfChoices } from 'apostrophecms-client';\n\nconst instance: CheckboxesFieldAllOfChoices = {\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfDef.md":"# CheckboxesFieldAllOfDef\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n\n## Example\n\n```typescript\nimport { CheckboxesFieldAllOfDef } from 'apostrophecms-client';\n\nconst instance: CheckboxesFieldAllOfDef = {\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfFollowing.md":"# CheckboxesFieldAllOfFollowing\n\nPopulate dynamically based on other fields (supports `<` parent prefixes).\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n\n## Example\n\n```typescript\nimport { CheckboxesFieldAllOfFollowing } from 'apostrophecms-client';\n\nconst instance: CheckboxesFieldAllOfFollowing = {\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfFollowingIgnore.md":"# CheckboxesFieldAllOfFollowingIgnore\n\nIgnore some or all followed fields when generating values.\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n\n## Example\n\n```typescript\nimport { CheckboxesFieldAllOfFollowingIgnore } from 'apostrophecms-client';\n\nconst instance: CheckboxesFieldAllOfFollowingIgnore = {\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/ColorField.md":"# ColorField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **string** | Default hex color (e.g. \\&quot;#ff0000\\&quot;). | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ColorField } from 'apostrophecms-client';\n\nconst instance: ColorField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/CreatePieceRequest.md":"# CreatePieceRequest\n\nGeneric structure for creating any piece type\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**title** | **string** | Piece title (required for all piece types) | [default to undefined]\n**slug** | **string** | URL slug (auto-generated from title if not provided) | [optional] [default to undefined]\n**visibility** | **string** | Visibility setting | [optional] [default to VisibilityEnum_Public]\n**archived** | **boolean** | Whether the piece is archived | [optional] [default to false]\n\n## Example\n\n```typescript\nimport { CreatePieceRequest } from 'apostrophecms-client';\n\nconst instance: CreatePieceRequest = {\n    title,\n    slug,\n    visibility,\n    archived,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/DateAndTimeField.md":"# DateAndTimeField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **string** | Default timestamp in RFC 3339 format (e.g., 2025-08-29T13:00:00Z). | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**min** | **string** | Minimum allowed timestamp (inclusive), RFC 3339. | [optional] [default to undefined]\n**max** | **string** | Maximum allowed timestamp (inclusive), RFC 3339. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { DateAndTimeField } from 'apostrophecms-client';\n\nconst instance: DateAndTimeField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    min,\n    max,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/DateBoundaryOptions.md":"# DateBoundaryOptions\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**min** | **string** | Minimum allowed date (inclusive), ISO-8601 (YYYY-MM-DD). | [optional] [default to undefined]\n**max** | **string** | Maximum allowed date (inclusive), ISO-8601 (YYYY-MM-DD). | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { DateBoundaryOptions } from 'apostrophecms-client';\n\nconst instance: DateBoundaryOptions = {\n    min,\n    max,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/DateField.md":"# DateField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **string** | Default date shown in the editor UI (YYYY-MM-DD). | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**min** | **string** | Minimum allowed date (inclusive), ISO-8601 (YYYY-MM-DD). | [optional] [default to undefined]\n**max** | **string** | Maximum allowed date (inclusive), ISO-8601 (YYYY-MM-DD). | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { DateField } from 'apostrophecms-client';\n\nconst instance: DateField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    min,\n    max,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/DateTimeBoundaryOptions.md":"# DateTimeBoundaryOptions\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**min** | **string** | Minimum allowed timestamp (inclusive), RFC 3339. | [optional] [default to undefined]\n**max** | **string** | Maximum allowed timestamp (inclusive), RFC 3339. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { DateTimeBoundaryOptions } from 'apostrophecms-client';\n\nconst instance: DateTimeBoundaryOptions = {\n    min,\n    max,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/DifferentHostnameResponse.md":"# DifferentHostnameResponse\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**redirectTo** | **string** | Full URL to redirect to with cross-domain session token | [default to undefined]\n\n## Example\n\n```typescript\nimport { DifferentHostnameResponse } from 'apostrophecms-client';\n\nconst instance: DifferentHostnameResponse = {\n    redirectTo,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/EmailField.md":"# EmailField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **string** | Default email address shown in the editor UI. | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**pattern** | **string** | Optional regex for stricter validation (in addition to HTML5 email validation). | [optional] [default to undefined]\n**autocomplete** | **string** | Value for the HTML autocomplete attribute. Common values are \\&quot;email\\&quot; or \\&quot;off\\&quot;. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { EmailField } from 'apostrophecms-client';\n\nconst instance: EmailField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    pattern,\n    autocomplete,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/Error.md":"# ModelError\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**status** | **number** | HTTP status code, e.g., 401 | [optional] [default to undefined]\n**code** | **string** | Application error code (optional) | [optional] [default to undefined]\n**message** | **string** | Human-readable error message | [default to undefined]\n**details** | **{ [key: string]: any; }** | Extra context about the error | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ModelError } from 'apostrophecms-client';\n\nconst instance: ModelError = {\n    status,\n    code,\n    message,\n    details,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/ExistInLocaleRequest.md":"# ExistInLocaleRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**ids** | **Array&lt;string&gt;** | Array of document IDs to check | [default to undefined]\n**locale** | **string** | Locale to check documents in | [default to undefined]\n**mode** | **string** | Mode to check documents in | [default to undefined]\n\n## Example\n\n```typescript\nimport { ExistInLocaleRequest } from 'apostrophecms-client';\n\nconst instance: ExistInLocaleRequest = {\n    ids,\n    locale,\n    mode,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/ExistInLocaleResponse.md":"# ExistInLocaleResponse\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**originalLocaleIds** | **Array&lt;string&gt;** | Array of document IDs in the original locale and mode | [optional] [default to undefined]\n**newLocaleIds** | **Array&lt;string&gt;** | Array of document IDs in the new locale | [optional] [default to undefined]\n**aposDocIds** | **Array&lt;string&gt;** | Array of aposDocId values for the documents | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ExistInLocaleResponse } from 'apostrophecms-client';\n\nconst instance: ExistInLocaleResponse = {\n    originalLocaleIds,\n    newLocaleIds,\n    aposDocIds,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/FieldDefinition.md":"# FieldDefinition\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**toggle** | [**BooleanFieldAllOfToggle**](BooleanFieldAllOfToggle.md) |  | [optional] [default to undefined]\n**textarea** | **boolean** | If true, renders a multiline textarea UI. | [optional] [default to undefined]\n**min** | **number** | Minimum number of related docs required (inclusive). | [optional] [default to undefined]\n**max** | **number** | Maximum number of related docs allowed (inclusive). | [optional] [default to undefined]\n**pattern** | **string** | Optional regex to further constrain allowed slugs. | [optional] [default to undefined]\n**autocomplete** | **string** | Value for the HTML autocomplete attribute. Common values include \\&quot;url\\&quot; or \\&quot;off\\&quot;. | [optional] [default to undefined]\n**following** | [**CheckboxesFieldAllOfFollowing**](CheckboxesFieldAllOfFollowing.md) |  | [optional] [default to undefined]\n**followingIgnore** | [**CheckboxesFieldAllOfFollowingIgnore**](CheckboxesFieldAllOfFollowingIgnore.md) |  | [optional] [default to undefined]\n**sortify** | **boolean** | If true, creates a parallel “sortified” version of this field for case- and punctuation-insensitive sorting. | [optional] [default to undefined]\n**format** | **string** | OpenAPI hint for tooling; always \\&quot;float\\&quot;. | [optional] [default to undefined]\n**multiple** | **boolean** | Allow selecting multiple values (stores an array). | [optional] [default to undefined]\n**choices** | [**CheckboxesFieldAllOfChoices**](CheckboxesFieldAllOfChoices.md) |  | [default to undefined]\n**prefix** | **string** | Optional prefix automatically prepended when generating the slug. | [optional] [default to undefined]\n**source** | **string** | Name of the field this slug should follow (usually \\&quot;title\\&quot;). Works with &#x60;following&#x60;/&#x60;followingIgnore&#x60;.  | [optional] [default to undefined]\n**unique** | **boolean** | If true, ensures slug is unique across docs of this type. | [optional] [default to undefined]\n**step** | **number** | Increment step for the slider. If omitted, defaults to 1. | [optional] [default to undefined]\n**fields** | [**Fieldset**](Fieldset.md) |  | [default to undefined]\n**titleField** | **string** | Field name in each item used as the item label in the UI. | [optional] [default to undefined]\n**_options** | [**AreaOptions**](AreaOptions.md) |  | [default to undefined]\n**accept** | [**AttachmentFieldAllOfAccept**](AttachmentFieldAllOfAccept.md) |  | [optional] [default to undefined]\n**maxSize** | **number** | Optional max file size in bytes (documentation-only hint). | [optional] [default to undefined]\n**withType** | **string** | Module name that holds the forward relationship. | [default to undefined]\n**builders** | **{ [key: string]: any; }** | Cursor builders applied when populating the reverse join. | [optional] [default to undefined]\n**reverseOf** | **string** | Name of the forward relationship field on &#x60;withType&#x60; (e.g.,\\&quot;_authors\\&quot; on \\&quot;article\\&quot;).  | [default to undefined]\n\n## Example\n\n```typescript\nimport { FieldDefinition } from 'apostrophecms-client';\n\nconst instance: FieldDefinition = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    toggle,\n    textarea,\n    min,\n    max,\n    pattern,\n    autocomplete,\n    following,\n    followingIgnore,\n    sortify,\n    format,\n    multiple,\n    choices,\n    prefix,\n    source,\n    unique,\n    step,\n    fields,\n    titleField,\n    _options,\n    accept,\n    maxSize,\n    withType,\n    builders,\n    reverseOf,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/FieldPredicate.md":"# FieldPredicate\n\nA simple equality (primitive) or an OperatorObject. :contentReference[oaicite:5]{index=5}\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**$eq** | **any** |  | [optional] [default to undefined]\n**$ne** | **any** |  | [optional] [default to undefined]\n**$gt** | **number** |  | [optional] [default to undefined]\n**$gte** | **number** |  | [optional] [default to undefined]\n**$lt** | **number** |  | [optional] [default to undefined]\n**$lte** | **number** |  | [optional] [default to undefined]\n**$in** | **Array&lt;any&gt;** |  | [optional] [default to undefined]\n**$nin** | **Array&lt;any&gt;** |  | [optional] [default to undefined]\n**$exists** | **boolean** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { FieldPredicate } from 'apostrophecms-client';\n\nconst instance: FieldPredicate = {\n    $eq,\n    $ne,\n    $gt,\n    $gte,\n    $lt,\n    $lte,\n    $in,\n    $nin,\n    $exists,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/Fieldset.md":"# Fieldset\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**add** | [**{ [key: string]: FieldDefinition; }**](FieldDefinition.md) |  | [default to undefined]\n\n## Example\n\n```typescript\nimport { Fieldset } from 'apostrophecms-client';\n\nconst instance: Fieldset = {\n    add,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/File.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFile.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileAttachment.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileAttachment.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileGet200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileGet200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileObject.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileObject.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileObjectAttachment.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileObjectAttachment.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FilePatchByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFilePatchByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FilePostRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFilePostRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTag.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTag.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTagArchiveRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagArchiveRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTagGet200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagGet200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTagLocalizeRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagLocalizeRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTagPatchByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagPatchByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTagPostRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagPostRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTagPublishRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagPublishRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTagPutByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagPutByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTagRestoreRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagRestoreRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FlatPageResponse.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFlatPageResponse.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FlatPageResponseResultsInner.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFlatPageResponseResultsInner.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FloatField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFloatField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/Global.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobal.md -->","packages/apostrophecms-openapi/examples/typescript/docs/GlobalContentApi.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalContentApi.md -->","packages/apostrophecms-openapi/examples/typescript/docs/GlobalGet200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalGet200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/GlobalPatch.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalPatch.md -->","packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalPostRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequestContactInfo.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalPostRequestContactInfo.md -->","packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequestSiteSettings.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalPostRequestSiteSettings.md -->","packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequestSocialMedia.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalPostRequestSocialMedia.md -->","packages/apostrophecms-openapi/examples/typescript/docs/I18nLocalePost200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FI18nLocalePost200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/Image.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImage.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageArchiveRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageArchiveRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageAttachment.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageAttachment.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageAutocropRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageAutocropRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageGet200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageGet200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageGetSrcById200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageGetSrcById200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageLocalizeRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageLocalizeRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImagePatchByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImagePatchByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImagePostRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImagePostRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImagePublishRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImagePublishRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageRestoreRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageRestoreRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageTag.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageTag.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageTagGet200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageTagGet200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageTagPatchByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageTagPatchByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageTagPostRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageTagPostRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageTagRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageTagRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject.md -->","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject1.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject1.md -->","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject2.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject2.md -->","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject3.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject3.md -->","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject4.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject4.md -->","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject5.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject5.md -->","packages/apostrophecms-openapi/examples/typescript/docs/IntegerField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FIntegerField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/InternationalizationApi.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInternationalizationApi.md -->","packages/apostrophecms-openapi/examples/typescript/docs/LocaleRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FLocaleRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/LocalesResponseValue.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FLocalesResponseValue.md -->","packages/apostrophecms-openapi/examples/typescript/docs/MediaApi.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FMediaApi.md -->","packages/apostrophecms-openapi/examples/typescript/docs/NumericRangeOptions.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FNumericRangeOptions.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ObjectField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FObjectField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/OembedField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FOembedField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/OperatorObject.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FOperatorObject.md -->","packages/apostrophecms-openapi/examples/typescript/docs/Page.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPage.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageArchive200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageArchive200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageArchiveRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageArchiveRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageCreateRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageCreateRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageCreateRequestPosition.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageCreateRequestPosition.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageDeleteById400Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageDeleteById400Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageDotNotationUpdateValue.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageDotNotationUpdateValue.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageGet200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageGet200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageGetLocalesById200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageGetLocalesById200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageGetLocalesById200ResponseResultsInner.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageGetLocalesById200ResponseResultsInner.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageLocaleResult.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageLocaleResult.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageLocalesResponse.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageLocalesResponse.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageLocalizeByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageLocalizeByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageLocalizeRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageLocalizeRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageMain.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageMain.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageMainItemsInner.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageMainItemsInner.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PagePatchByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPagePatchByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PagePublishRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPagePublishRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PagePutByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPagePutByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageRestoreRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageRestoreRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageSeoFields.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageSeoFields.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageSeoFieldsOgImage.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageSeoFieldsOgImage.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageSeoFieldsOgImageAttachment.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageSeoFieldsOgImageAttachment.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageSummary.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageSummary.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageTreeResponse.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageTreeResponse.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageUpdateRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageUpdateRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageUpdateRequestPosition.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageUpdateRequestPosition.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PagesApi.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPagesApi.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PaginatedResponse.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPaginatedResponse.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PaginatedResponseData.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPaginatedResponseData.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PasswordField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPasswordField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PieceResponse.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPieceResponse.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RadioField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRadioField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfChoices.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRadioFieldAllOfChoices.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfDef.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRadioFieldAllOfDef.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfFollowing.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRadioFieldAllOfFollowing.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfFollowingIgnore.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRadioFieldAllOfFollowingIgnore.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RangeField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRangeField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RelationshipEntry.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRelationshipEntry.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RelationshipField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRelationshipField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RelationshipReverseField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRelationshipReverseField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SameHostnameResponse.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSameHostnameResponse.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SelectChoice.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectChoice.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SelectChoiceValue.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectChoiceValue.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SelectField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfChoices.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectFieldAllOfChoices.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfDef.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectFieldAllOfDef.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfFollowing.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectFieldAllOfFollowing.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfFollowingIgnore.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectFieldAllOfFollowingIgnore.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SlugField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSlugField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/StringField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FStringField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/StringFieldAllOfFollowing.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FStringFieldAllOfFollowing.md -->","packages/apostrophecms-openapi/examples/typescript/docs/StringFieldAllOfFollowingIgnore.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FStringFieldAllOfFollowingIgnore.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraft.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraft.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftArchive200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftArchive200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftGet200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftGet200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftLocalize200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftLocalize200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPatchByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftPatchByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPostRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftPostRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPublish200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftPublish200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPutByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftPutByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftRestore200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftRestore200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftsApi.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftsApi.md -->","packages/apostrophecms-openapi/examples/typescript/docs/TimeField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FTimeField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UiCondition.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUiCondition.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UrlField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUrlField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/User.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUser.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UserCreateRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserCreateRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UserList200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserList200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UserPatchByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserPatchByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UserPutByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserPutByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UserUniqueUsername200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserUniqueUsername200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UserUniqueUsernameRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserUniqueUsernameRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UsersApi.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUsersApi.md -->","packages/apostrophecms-openapi/examples/typescript/docs/Widget.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FWidget.md -->","packages/apostrophecms-openapi/examples/typescript/docs/WidgetImport.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FWidgetImport.md -->","packages/blog/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fblog%2FREADME.md -->","packages/boring/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fboring%2FREADME.md -->","packages/broadband/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fbroadband%2FREADME.md -->","packages/cache-on-demand/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fcache-on-demand%2FREADME.md -->","packages/cache-redis/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fcache-redis%2FREADME.md -->","packages/cli/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fcli%2FREADME.md -->","packages/create-apostrophe/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fcreate-apostrophe%2FREADME.md -->","packages/csv-to-zone-file/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fcsv-to-zone-file%2FREADME.md -->","packages/db-connect/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2FREADME.md -->","packages/db-connect/docs/aggregation.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Faggregation.md -->","packages/db-connect/docs/collections.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Fcollections.md -->","packages/db-connect/docs/database.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Fdatabase.md -->","packages/db-connect/docs/dump-restore.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Fdump-restore.md -->","packages/db-connect/docs/indexes.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Findexes.md -->","packages/db-connect/docs/queries.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Fqueries.md -->","packages/db-connect/docs/updates.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Fupdates.md -->","packages/emulate-mongo-3-driver/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Femulate-mongo-3-driver%2FREADME.md -->","packages/eslint-config-apostrophe/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Feslint-config-apostrophe%2FREADME.md -->","packages/event/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fevent%2FREADME.md -->","packages/express-cache-on-demand/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fexpress-cache-on-demand%2FREADME.md -->","packages/favicon/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Ffavicon%2FREADME.md -->","packages/font-size/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Ffont-size%2FREADME.md -->","packages/form-submission-google/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fform-submission-google%2FREADME.md -->","packages/form/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fform%2FREADME.md -->","packages/i18n-static/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fi18n-static%2FREADME.md -->","packages/import-export-xlsx/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fimport-export-xlsx%2FREADME.md -->","packages/import-export/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fimport-export%2FREADME.md -->","packages/launder/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Flaunder%2FREADME.md -->","packages/login-hcaptcha/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Flogin-hcaptcha%2FREADME.md -->","packages/login-recaptcha/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Flogin-recaptcha%2FREADME.md -->","packages/login-totp/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Flogin-totp%2FREADME.md -->","packages/mongodb-snapshot/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fmongodb-snapshot%2FREADME.md -->","packages/moog-require/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fmoog-require%2FREADME.md -->","packages/oembetter/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Foembetter%2FREADME.md -->","packages/open-graph/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fopen-graph%2FREADME.md -->","packages/openapi-generator/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fopenapi-generator%2FREADME.md -->","packages/passport-bridge/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fpassport-bridge%2FREADME.md -->","packages/postcss-viewport-to-container-toggle/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fpostcss-viewport-to-container-toggle%2FREADME.md -->","packages/random-words/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Frandom-words%2FREADME.md -->","packages/redirect/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fredirect%2FREADME.md -->","packages/sanitize-html/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fsanitize-html%2FREADME.md -->","packages/scheduled-publishing/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fscheduled-publishing%2FREADME.md -->","packages/security-headers/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fsecurity-headers%2FREADME.md -->","packages/seo/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fseo%2FREADME.md -->","packages/sitemap/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fsitemap%2FREADME.md -->","packages/sluggo/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fsluggo%2FREADME.md -->","packages/stylelint-config-apostrophe/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fstylelint-config-apostrophe%2FREADME.md -->","packages/stylelint-no-mixed-decls/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fstylelint-no-mixed-decls%2FREADME.md -->","packages/svg-sprite/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fsvg-sprite%2FREADME.md -->","packages/uploadfs/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fuploadfs%2FREADME.md -->","packages/vite/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fvite%2FREADME.md -->"},"files":{"packages/ai-helper/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fai-helper%2FREADME.md -->","packages/ai-helper/skills/provider-creator.md":"# AI Provider Creator (ApostropheCMS)\n\nCreate a **project-level** provider registration module + a provider **factory** for `@apostrophecms/ai-helper`.\n\nThis guide is optimized for an LLM to generate files.\n\n---\n\n## What you are generating\n\nYou will generate **two files**:\n\n1. **Provider factory file** (ESM)\n\n* Exports a function that returns a provider object (text/image methods + optional `validate`).\n\n2. **Provider registration module** (ESM Apostrophe module)\n\n* Extends `registerProviders()` and calls `self.registerProvider(...)` to register the factory.\n\n> Note: `@apostrophecms/ai-helper` is CommonJS internally, but **project-level code examples here are ESM**.\n\n---\n\n## Core behavior you must match\n\n### Two-phase provider flow\n\n1. **Registration phase**\n   You register provider factories with metadata using:\n\n* `self.registerProvider(name, factory, capabilities)`\n\n2. **Activation phase**\n   `@apostrophecms/ai-helper` instantiates only the providers named in project options and (optionally) calls `provider.validate()`.\n\n### Capabilities: source of truth\n\nCapabilities are taken from the **registration metadata** (the `capabilities` argument to `registerProvider`), not from any `provider.capabilities` property.\n\nCapabilities shape:\n\n```js\n{\n  text: boolean,\n  image: boolean,\n  imageVariation: boolean\n}\n```\n\n### validate(): optional\n\n`validate()` is optional. If you provide it, it will be called at activation time **unless** mock mode is enabled (`APOS_AI_HELPER_MOCK`).\n\n---\n\n## Where the files live (recommended)\n\n* Provider factory: `lib/ai-providers/<provider-name>.js`\n* Registration module: `modules/<provider-name>-provider/index.js`\n\n---\n\n## Step 1 — Create the provider factory (ESM)\n\nCreate `lib/ai-providers/<provider-name>.js`\n\n### Factory signature (required)\n\n```js\nexport default function createProvider(apos, textOptions = {}, imageOptions = {}) {\n  return {\n    // optional\n    validate() {},\n\n    // optional depending on capabilities\n    async generateText(req, prompt, options) {},\n    async generateImage(req, prompt, options) {},\n    async generateImageVariation(req, image, prompt, options) {}\n  };\n}\n```\n\n### Method return formats (required)\n\n#### Text\n\n`generateText()` must resolve to:\n\n```js\n{\n  content: \"string\",\n  metadata: {\n    model: \"string?\",\n    usage: {\n      inputTokens: number?,\n      outputTokens: number?\n    }\n  }\n}\n```\n\n#### Images\n\n`generateImage()` and `generateImageVariation()` must resolve to an **array** of:\n\n```js\n[\n  {\n    type: \"png\" | \"jpg\" | \"webp\" | \"gif\",\n    data: \"<base64 string>\",   // base64 of the image bytes\n    metadata: {\n      model: \"string?\",\n      usage: {\n        inputTokens: number?,\n        outputTokens: number?\n      }\n    }\n  }\n]\n```\n\n> If your upstream API returns a URL or binary data, you must convert it to base64 and return the standardized object(s).\n\n### Error rules (recommended, not enforced)\n\n* Prefer `throw apos.error(code, message)` so callers can classify errors.\n* Recommended codes:\n\n  * `invalid` (bad input/options)\n  * `forbidden` (auth/permission)\n  * `notfound` (model/asset missing)\n  * `error` (generic)\n* Messages can be developer-facing; UI should map codes to i18n strings.\n\n### Retry rules (recommended)\n\n* Retry: network errors, timeouts, 408, 429, 5xx\n* Do not retry: 400, 401, 403 (and other non-transient 4xx)\n\n---\n\n## Step 2 — Create the provider registration module (ESM)\n\nCreate `modules/<provider-name>-provider/index.js`\n\nThis module’s job is only to **register** the provider factory under a unique name.\n\n```js\nimport createProvider from '../../lib/ai-providers/<provider-name>.js';\n\nexport default {\n  improve: '@apostrophecms/ai-helper',\n\n  extendMethods(self) {\n    return {\n      registerProviders(_super) {\n        _super();\n\n        self.registerProvider(\n          '<providerName>',       // the name used in project options\n          createProvider,         // factory(apos, textOptions, imageOptions) => provider\n          {\n            text: true,           // set to true if provider supports text\n            image: true,          // set to true if provider supports image generation\n            imageVariation: true  // set true only if provider supports variations/edits\n          }\n        );\n      }\n    };\n  }\n};\n```\n\n### Override behavior (required knowledge)\n\nIf a project registers a provider with the same name as a built-in provider, it **replaces** that provider for activation purposes.\n\n---\n\n## Step 3 — Enable the registration module in the project (ESM)\n\nIn your project’s `app.js` (ESM), include the module:\n\n```js\nexport default {\n  modules: {\n    '<provider-name>-provider': {}\n  }\n};\n```\n\n---\n\n## Step 4 — Configure `@apostrophecms/ai-helper` to use it (ESM)\n\nIn `app.js`, configure the provider name(s) and options:\n\n```js\nexport default {\n  modules: {\n    '@apostrophecms/ai-helper': {\n      options: {\n        // pick names registered via registerProvider(...)\n        textProvider: '<providerName>',\n        imageProvider: '<providerName>',\n\n        // passed into the provider factory as:\n        // createProvider(apos, textProviderOptions, imageProviderOptions)\n        textProviderOptions: {\n          // provider-specific\n        },\n        imageProviderOptions: {\n          // provider-specific\n        }\n      }\n    },\n\n    '<provider-name>-provider': {}\n  }\n};\n```\n\n> `textProviderOptions` and `imageProviderOptions` are provider-defined. Your factory must read these and/or environment variables.\n\n---\n\n## Minimal template you can emit (copy/paste)\n\n### `lib/ai-providers/<provider-name>.js`\n\n```js\nexport default function createProvider(apos, textOptions = {}, imageOptions = {}) {\n  const { apiKey } = textOptions;\n\n  return {\n    validate() {\n      if (!process.env.APOS_AI_HELPER_MOCK && !apiKey) {\n        throw apos.error('invalid', 'Missing required apiKey for <providerName>.');\n      }\n    },\n\n    async generateText(req, prompt, options = {}) {\n      // TODO call upstream API\n      return {\n        content: 'TODO',\n        metadata: {\n          model: options.model,\n          usage: {}\n        }\n      };\n    }\n  };\n}\n```\n\n### `modules/<provider-name>-provider/index.js`\n\n```js\nimport createProvider from '../../lib/ai-providers/<provider-name>.js';\n\nexport default {\n  improve: '@apostrophecms/ai-helper',\n  extendMethods(self) {\n    return {\n      registerProviders(_super) {\n        _super();\n        self.registerProvider('<providerName>', createProvider, {\n          text: true,\n          image: false,\n          imageVariation: false\n        });\n      }\n    };\n  }\n};\n```\n","packages/anchors/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fanchors%2FREADME.md -->","packages/apostrophe-astro/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophe-astro%2FREADME.md -->","packages/apostrophe/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophe%2FREADME.md -->","packages/apostrophecms-openapi/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2FREADME.md -->","packages/apostrophecms-openapi/apostrophecms-openapi.yaml":"openapi: 3.1.0\ninfo:\n  title: ApostropheCMS REST API\n  description: |\n    **🚀 Developer freedom. Editor happiness. It just works.**\n\n    **For production use:** Download this YAML file and update the server URL\n    and cookie names to match your setup.\n\n    The ApostropheCMS REST API allows you to create, read, update, and delete content programmatically.\n    Perfect for building modern websites, mobile apps, and any digital experience that needs flexible content management.\n\n    ## Quick Start Guide\n    1. **Authentication**: Use the login endpoint to get a bearer token or session cookie\n    2. **Get Content**: Start with `/@apostrophecms/page` to fetch your page structure\n    3. **Media Files**: Upload files via `/@apostrophecms/attachment/upload`\n    4. **Internationalization**: Use `/@apostrophecms/i18n` to localize your content\n\n    ## Content Architecture\n    ApostropheCMS uses a flexible \"pieces\" system for content types. While the core system provides\n    essential pieces like users and global content, most projects define custom piece types like\n    articles, events, or products using the `@apostrophecms/piece-type` module.\n\n    ## Built-in Piece Types\n    - `@apostrophecms/user` - User accounts and profiles\n    - `@apostrophecms/global` - Site-wide content (customizable with additional fields)\n    - `@apostrophecms/image` - Image file management\n    - `@apostrophecms/file` - General file management (PDFs, documents, etc.)\n\n    ## Built-in Tag Types\n    - `@apostrophecms/image-tag` - Tags for organizing images\n    - `@apostrophecms/file-tag` - Tags for organizing files\n\n    ## Authentication Methods\n    - **Bearer Token**: Recommended for API clients and SPAs\n    - **Session Cookie**: For traditional web applications\n    - **API Key**: For server-to-server communication\n\n    ## Rate Limiting\n    API requests are rate-limited to prevent abuse. See response headers for current limits.\n\n  version: 1.0.0\n  contact:\n    name: ApostropheCMS Support\n    url: https://apostrophecms.com\n    email: support@apostrophecms.com\n  license:\n    name: MIT\n    url: https://github.com/apostrophecms/apostrophe/blob/main/LICENSE.md\n\nexternalDocs:\n  description: Full Documentation\n  url: \"https://docs.apostrophecms.org\"\n\nx-apostrophe:\n  cmsVersion: \">=4.20.0\"\n  notes: |\n    Spec versioning follows semver independently of CMS releases.\n  isCore: true\n\n  # Used by the expander to control localization flags & nicer names.\n  pieceTypes:\n    standard:\n      - '@apostrophecms/image'\n      - '@apostrophecms/file'\n      - '@apostrophecms/image-tag'\n      - '@apostrophecms/file-tag'\n      - '@apostrophecms/submitted-draft'\n\n    nonLocalizable:\n      - '@apostrophecms/user'\n      - '@apostrophecms/global'\n\n  marketingTags:\n    '@apostrophecms/image': Media\n    '@apostrophecms/file': Media\n    '@apostrophecms/image-tag': Media\n    '@apostrophecms/file-tag': Media\n    '@apostrophecms/user': Users\n    '@apostrophecms/global': Global Content\n    '@apostrophecms/submitted-draft': Submitted Draft\n\n  # 👇 fallback for any piece not listed above\n  defaultPieceMarketingTag: Custom\n\n  # adds the module name as a second tag\n  includeTechnicalTag: true\n\nsecurity:\n  # adds session authentication as the default\n  - SessionAuth: []\n\nservers:\n  - url: http://localhost:3000/api/v1\n    description: Development server\n  - url: https://your-site.com/api/v1\n    description: Production server (not for online use)\n\ntags:\n  - name: Authentication\n    description: 🚀 Login, logout, and session management for API access - start here!\n  - name: Pages\n    description: 🚀 Essential for headless sites - page structure, content, and navigation\n  - name: Users\n    description: Built-in user management and authentication\n  - name: Global Content\n    description: Site-wide settings and content that appears across pages\n  - name: Styles\n    description: Site-wide styling controls\n  - name: Submitted Drafts\n    description: Draft submission workflow and review queue management\n  - name: Media\n    description: File uploads, image management, and media organization\n  - name: Attachments\n    description: File upload utilities and image processing\n  - name: Internationalization\n    description: Multi-language support and locale management\n  - name: Custom\n    description: Project-defined piece types (your own content models)\n\nx-tagGroups:\n  - name: Start Here\n    tags: [Authentication]\n  - name: Content & Media\n    tags: [Pages, Global Content, Submitted Draft, Media, Attachments]\n  - name: People\n    tags: [Users]\n  - name: Internationalization\n    tags: [Internationalization]\n  - name: Custom\n    tags: [Custom]\n\ncomponents:\n  securitySchemes:\n    ApiKeyAuth:\n      type: apiKey\n      in: query\n      name: apikey\n      description: |\n        **Server-to-server authentication** - API key for server-to-server communication.\n        Use as query parameter: ?apikey=your-api-key-here\n\n        Configure in app.js:\n        ```javascript\n        '@apostrophecms/express': {\n          options: {\n            apiKeys: {\n              'myapikey1029384756': { role: 'admin' }\n            }\n          }\n        }\n        ```\n\n    BearerAuth:\n      type: http\n      scheme: bearer\n      description: |\n        Bearer token authentication (recommended for API clients).\n\n        **Step 1:** Close this dialog box and generate a bearer token using the `POST /@apostrophecms/login/login` endpoint below with:\n        ```json\n        {\n          \"username\": \"your-username\",\n          \"password\": \"your-password\"\n        }\n        ```\n\n        **Step 2:** Copy **only the token value** from the response (not the full JSON)\n        Example: if response is `{\"token\": \"abc123\"}`, paste only `abc123`\n        The token will be sent as: Authorization: Bearer {your-token}\n\n        **Step 3:** Reopen this dialog and paste the token value into the value field.\n\n    SessionAuth:\n      type: apiKey\n      in: cookie\n      name: project-shortname.sid\n      description: |\n        ⚠️ **For testing after download only:** Change \"project-shortname\" in the `SessionAuth` to your actual ApostropheCMS shortname (e.g., \"myapp.sid\").\n\n        💡 This authentication won't work when testing in the online ApostropheCMS sandbox. However, you can use the login route to set a cookie you can examine in your browser DevTools.\n        It will be named `project-shortname.sid`.\n\n        **Step 1:** Close this dialog and use the `POST /@apostrophecms/login/login` endpoint below with:\n        ```json\n        {\n          \"username\": \"your-username\",\n          \"password\": \"your-password\",\n          \"session\": true\n        }\n        ```\n\n        **Step 2:** Copy the session cookie value from your browser's dev tools\n        and paste it into the \"Value\" field.\n\n  parameters:\n    Page:\n      name: page\n      in: query\n      description: Page number for pagination (1-based)\n      required: false\n      schema:\n        type: integer\n        minimum: 1\n        default: 1\n      example: 2\n\n    PerPage:\n      name: perPage\n      in: query\n      description: Number of items per page\n      required: false\n      schema:\n        type: integer\n        minimum: 1\n        maximum: 100\n        default: 10\n      example: 25\n\n    Search:\n      name: search\n      in: query\n      description: Search term for filtering results\n      required: false\n      schema:\n        type: string\n      example: \"headless cms\"\n\n    Autocomplete:\n      name: autocomplete\n      in: query\n      description: Partial word search for autocomplete functionality\n      required: false\n      schema:\n        type: string\n      example: \"apost\"\n\n    AposMode:\n      name: aposMode\n      in: query\n      description: Request draft or published version of content\n      required: false\n      schema:\n        type: string\n        enum: [draft, published]\n        default: published\n      example: \"published\"\n\n    AposLocale:\n      name: aposLocale\n      in: query\n      description: Locale for internationalization (e.g., 'en', 'fr', 'es')\n      required: false\n      schema:\n        type: string\n        example: \"fr\"\n\n    ToLocale:\n      name: toLocale\n      in: path\n      required: true\n      description: Target locale code (e.g., en:us:published)\n      schema:\n        type: string\n        pattern: '^[a-z]{2}(-[A-Z]{2})?$'\n        example: en\n\n    RenderAreas:\n      name: render-areas\n      in: query\n      description: 💡 Render widget areas as HTML instead of returning raw widget data - useful for hybrid architectures\n      required: false\n      schema:\n        type: boolean\n        default: false\n      example: true\n\n    DocumentId:\n      name: _id\n      in: path\n      required: true\n      description: Computed document ID (can optionally include mode and locale, e.g., id:en:published)\n      schema:\n        type: string\n        pattern: '^\\S+$'\n        example: \"ckitdo5oq004pu69kr6oxo6fr:en:published\"\n\n    AposDocId:\n      name: aposDocId\n      in: path\n      required: true\n      description: ApostropheCMS document identifier\n      schema:\n        type: string\n        pattern: '^[a-zA-Z0-9]+$'\n        example: \"ckitdo5oq004pu69kr6oxo6fr\"\n\n    ImageDocId:\n      name: imageId\n      in: path\n      required: true\n      description: ApostropheCMS document identifier for an image\n      schema:\n        type: string\n        pattern: '^[a-zA-Z0-9]+$'\n        example: \"ck9x8v7w2000001l6h8q9d5f0\"\n\n    AllPages:\n      name: all\n      in: query\n      description: Return all pages the requester can see (system/orphan pages included). Use with caution for large sites. Default is 0.\n      schema:\n        type: integer\n        enum: [0,1]\n        default: 0\n      example: 1\n\n    FlatResponse:\n      name: flat\n      in: query\n      description: 💡 Return pages in flat array instead of tree structure - easier for some use cases. Default is 0 (nested).\n      schema:\n        type: integer\n        enum: [0,1]\n        default: 0\n      example: 1\n\n    ChildrenParam:\n      name: children\n      in: query\n      description: Include children array in response (set to 'false' to exclude). Default is true.\n      schema:\n        type: boolean\n        default: true\n      example: false\n\n  schemas:\n    _Overview_Fields:\n      type: object\n      description: |\n        # Field Types (editor-facing)\n\n        - `StringField` — basic text\n        - `IntegerField`, `FloatField` — numbers\n        - `SelectField`, `RadioField`, `CheckboxesField` — choices\n        - `AreaField`, `ArrayField`, `ObjectField`\n        - `AttachmentField`, `RelationshipField`, `RelationshipReverseField`\n\n        👉 See also: **FieldDefinition** (discriminator: `type`).\n      externalDocs:\n        description: ApostropheCMS Field Guide\n        url: https://docs.apostrophecms.org/reference/field-types/\n      title: _Overview_Fields\n    _Overview_Primitives:\n      type: object\n      description: |\n        # Content Primitives (payload-level)\n\n        These are the “data atoms” for requests and responses.\n\n        - `AposString`, `AposSlug`, `AposUrl`, `AposEmail`\n        - `AposDateTime`, `AposDate`, `AposTime`\n        - Arrays: `AposStringArray`, `AposIntegerArray`, etc.\n\n        👉 Defined under **AposPrimitives**.\n      title: _Overview_Primitives\n    _Overview_Advanced:\n      type: object\n      description: |\n        # Advanced / Internal\n\n        Used by OpenAPI for schema defs:\n        - `UiCondition` (for `if`/`requiredIf`)\n        - `OperatorObject` (query operators)\n        - `AreaOptions`, `ArrayOptions`, and other config helpers\n      title: _Overview_Advanced\n    AreaField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - area\n            description: Apostrophe field type id.\n          options:\n            $ref: '#/components/schemas/AreaOptions'\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - options\n        examples:\n        - type: area\n          label: Main content\n          options:\n            max: 3\n            expanded: true\n            widgets:\n              '@apostrophecms/image': {}\n              '@apostrophecms/rich-text':\n                toolbar:\n                - bold\n                - italic\n              '@apostrophecms/video': {}\n              '@apostrophecms/html': {}\n            groups:\n              basics:\n                label: Basic Content\n                columns: 3\n                widgets:\n                  '@apostrophecms/rich-text':\n                    toolbar:\n                    - bold\n                  '@apostrophecms/image': {}\n              embeds:\n                label: Embeds\n                columns: 2\n                widgets:\n                  '@apostrophecms/video': {}\n                  '@apostrophecms/html': {}\n      title: AreaField\n    AreaOptions:\n      type: object\n      additionalProperties: false\n      properties:\n        widgets:\n          description: |\n            Allowed widget types for this area. Keys are widget module names (e.g., \"@apostrophecms/rich-text\"). Values are per-widget options that apply *only* in this area.\n          type: object\n          additionalProperties:\n            type: object\n        groups:\n          description: |\n            Organize widgets into groups for the expanded preview menu.\n            Each group has a label, optional columns (1–4, default 3), and its own widgets map (same shape as `widgets`).\n          type: object\n          additionalProperties:\n            $ref: '#/components/schemas/AreaWidgetGroup'\n        max:\n          type: integer\n          description: Maximum number of widgets allowed in this area.\n        expanded:\n          type: boolean\n          description: Use the expanded preview menu UX.\n      required:\n      - widgets\n      title: AreaOptions\n    AreaWidgetGroup:\n      type: object\n      additionalProperties: false\n      properties:\n        label:\n          type: string\n        columns:\n          type: integer\n          minimum: 1\n          maximum: 4\n          description: Number of widget previews per row (default 3).\n        widgets:\n          type: object\n          additionalProperties:\n            type: object\n      required:\n      - label\n      - widgets\n      title: AreaWidgetGroup\n    ArrayField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: A repeatable list of objects, each with its own field schema.\n        properties:\n          type:\n            type: string\n            enum:\n            - array\n            description: Apostrophe field type id.\n          fields:\n            $ref: '#/components/schemas/Fieldset'\n          min:\n            type: integer\n            description: Minimum number of items (inclusive).\n          max:\n            type: integer\n            description: Maximum number of items (inclusive).\n          titleField:\n            type: string\n            description: Field name in each item used as the item label in the UI.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - fields\n        examples:\n        - type: array\n          label: Tasks\n          min: 0\n          max: 50\n          titleField: title\n          items:\n            type: object\n            properties:\n              title:\n                type: string\n              priority:\n                type: string\n          fields:\n            add:\n              title:\n                type: string\n                label: Task Title\n              priority:\n                type: select\n                label: Priority\n                choices:\n                - label: Low\n                  value: low\n                - label: High\n                  value: high\n      title: ArrayField\n    AttachmentField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: |\n          Lets editors upload a single file (image, PDF, etc.).\n          Use an ArrayField of AttachmentField if you need multiple files.\n        properties:\n          type:\n            type: string\n            enum:\n            - attachment\n            description: Apostrophe field type id.\n          accept:\n            oneOf:\n            - type: string\n              description: HTML \"accept\" string (e.g., \"image/*,.pdf\"). Use to limitby MIME type and/or extension.\n            - type: array\n              items:\n                type: string\n              description: List of MIME types and/or extensions (e.g., [\"image/*\",\n                \".pdf\"]).\n          maxSize:\n            type: integer\n            description: Optional max file size in bytes (documentation-only hint).\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: attachment\n          label: Resume (PDF)\n          accept:\n          - .pdf\n          required: true\n        - type: attachment\n          label: Hero Image\n          accept: image/*\n      title: AttachmentField\n    BooleanField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - boolean\n            description: Apostrophe field type id.\n          def:\n            type: boolean\n            description: Default value shown in the editor UI.\n          toggle:\n            oneOf:\n            - type: boolean\n              description: |\n                If true, use the alternate \"toggle\" UI. \n                Labels default to the field label and standard true/false text.\n            - type: object\n              additionalProperties: false\n              description: Configure custom labels for the toggle UI.\n              properties:\n                'true':\n                  type: string\n                  description: Label to display when value is true.\n                'false':\n                  type: string\n                  description: Label to display when value is false.\n        required:\n        - type\n        - label\n        examples:\n        - type: boolean\n          label: Is this a special item?\n          def: false\n        - type: boolean\n          label: Show related articles?\n          toggle:\n            'true': Show related articles\n            'false': Hide related articles\n      title: BooleanField\n    CheckboxesField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - checkboxes\n            description: Apostrophe field type id.\n          def:\n            type: array\n            items:\n              oneOf:\n              - type: string\n              - type: number\n              - type: boolean\n            description: Default selected values.\n          choices:\n            oneOf:\n            - type: array\n              description: Static choices for the checkboxes.\n              items:\n                $ref: '#/components/schemas/SelectChoice'\n            - type: string\n              description: Method name that provides choices dynamically.\n          following:\n            oneOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n            description: Populate dynamically based on other fields (supports `<` parent prefixes).\n          followingIgnore:\n            oneOf:\n            - type: boolean\n            - type: array\n              items:\n                type: string\n            description: Ignore some or all followed fields when generating values.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - choices\n        examples:\n        - type: checkboxes\n          label: Tags\n          choices:\n          - label: News\n            value: news\n          - label: Blog\n            value: blog\n          - label: Events\n            value: events\n          def:\n          - news\n          - events\n      title: CheckboxesField\n    ColorField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - color\n            description: Apostrophe field type id.\n          def:\n            type: string\n            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$\n            description: Default hex color (e.g. \"#ff0000\").\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: color\n          label: Theme Color\n          def: '#336699'\n      title: ColorField\n    DateField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/DateBoundaryOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - date\n            description: Apostrophe field type id.\n          def:\n            type: string\n            format: date\n            description: Default date shown in the editor UI (YYYY-MM-DD).\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: date\n          label: Publish Date\n          def: '2025-01-01'\n          min: '2020-01-01'\n          max: '2030-12-31'\n        - type: date\n          label: Event Date\n          if:\n            status:\n              $eq: scheduled\n      title: DateField\n    DateAndTimeField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/DateTimeBoundaryOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - dateAndTime\n            description: Apostrophe field type id.\n          def:\n            type: string\n            format: date-time\n            description: Default timestamp in RFC 3339 format (e.g., 2025-08-29T13:00:00Z).\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: dateAndTime\n          label: Starts At\n          def: '2025-08-29T13:00:00Z'\n          min: '2024-01-01T00:00:00Z'\n          max: '2026-12-31T23:59:59Z'\n        - type: dateAndTime\n          label: Reminder At\n          requiredIf:\n            remindersEnabled: true\n      title: DateAndTimeField\n    EmailField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - email\n            description: Apostrophe field type id.\n          def:\n            type: string\n            format: email\n            description: Default email address shown in the editor UI.\n          pattern:\n            type: string\n            description: Optional regex for stricter validation (in addition to HTML5\n              email validation).\n          autocomplete:\n            type: string\n            description: Value for the HTML autocomplete attribute. Common values are\n              \"email\" or \"off\".\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: email\n          label: Contact Email\n          def: info@example.com\n        - type: email\n          label: Support Email\n          autocomplete: email\n          requiredIf:\n            supportEnabled: true\n      title: EmailField\n    FloatField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/NumericRangeOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - float\n          format:\n            type: string\n            enum:\n            - float\n            description: OpenAPI hint for tooling; always \"float\".\n          def:\n            type: number\n            format: float\n            description: Default decimal value.\n        examples:\n        - type: float\n          label: Price (USD)\n          help: Enter a decimal price.\n          def: 0.0\n          min: 0\n          max: 99999.99\n          required: true\n      title: FloatField\n    IntegerField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/NumericRangeOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - integer\n            description: Apostrophe field type id.\n          def:\n            type: integer\n            description: Default integer value shown in the editor UI.\n        required:\n        - type\n        - label\n        examples:\n        - type: integer\n          label: Age\n          min: 0\n          max: 120\n          def: 18\n        - type: integer\n          label: Estimated Hours\n          min: 1\n          max: 999\n      title: IntegerField\n    ObjectField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: A nested object with its own field schema.\n        properties:\n          type:\n            type: string\n            enum:\n            - object\n          fields:\n            $ref: '#/components/schemas/Fieldset'\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - fields\n      title: ObjectField\n    OembedField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - oembed\n            description: Apostrophe field type id.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        description: |\n          Lets editors paste a media URL from an oEmbed-compatible host.\n          The editor shows an immediate preview once a valid URL is entered.\n          Stored value is an object snapshot (url/title/thumbnail).\n        examples:\n        - type: oembed\n          label: Featured video\n      title: OembedField\n    PasswordField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - password\n            description: Apostrophe field type id.\n          def:\n            type: string\n            description: Default password value (generally not used).\n          min:\n            type: integer\n            description: Minimum number of characters required.\n          max:\n            type: integer\n            description: Maximum number of characters allowed.\n          pattern:\n            type: string\n            description: Regex to enforce password rules (e.g., at least one number).\n          autocomplete:\n            type: string\n            description: HTML autocomplete attribute, usually \"new-password\" or \"current-password\".\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: password\n          label: Account Password\n          min: 8\n          autocomplete: new-password\n      title: PasswordField\n    RadioField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - radio\n            description: Apostrophe field type id.\n          def:\n            oneOf:\n            - type: string\n            - type: number\n            - type: boolean\n            description: Default selected value.\n          choices:\n            oneOf:\n            - type: array\n              description: Static choices to render as radio buttons.\n              items:\n                $ref: '#/components/schemas/SelectChoice'\n            - type: string\n              description: Method name that provides choices (e.g. \"statusChoices\").\n          following:\n            oneOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n            description: Populate dynamically based on other fields (supports `<` parent prefixes).\n          followingIgnore:\n            oneOf:\n            - type: boolean\n            - type: array\n              items:\n                type: string\n            description: Ignore some or all followed fields when generating values.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - choices\n        examples:\n        - type: radio\n          label: Priority\n          choices:\n          - label: Low\n            value: low\n          - label: High\n            value: high\n          def: low\n        - type: radio\n          label: Status\n          choices: statusChoices\n      title: RadioField\n    RangeField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/NumericRangeOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - range\n            description: Apostrophe field type id.\n          def:\n            type: number\n            description: Default slider value in the editor UI.\n          step:\n            type: number\n            description: Increment step for the slider. If omitted, defaults to 1.\n          min:\n            type: number\n            description: Minimum value for the slider.\n          max:\n            type: number\n            description: Maximum value for the slider.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: range\n          label: Satisfaction\n          min: 1\n          max: 10\n          step: 1\n          def: 5\n        - type: range\n          label: Volume\n          min: 0\n          max: 100\n          step: 5\n          def: 50\n      title: RangeField\n    RelationshipField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: |\n          Relate this document to one or more docs of another type (pieces/pages).\n          Use `max: 1` for a single-select join; omit `max` (or set >1) for multi-select.\n        properties:\n          type:\n            type: string\n            enum:\n            - relationship\n            description: Apostrophe field type id.\n          withType:\n            type: string\n            description: Module name of the related doc type (e.g., \"article\", \"@apostrophecms/image\").\n          min:\n            type: integer\n            description: Minimum number of related docs required (inclusive).\n          max:\n            type: integer\n            description: Maximum number of related docs allowed (inclusive).\n          fields:\n            $ref: '#/components/schemas/Fieldset'\n          builders:\n            type: object\n            additionalProperties: true\n            description: |\n              Apostrophe cursor builders for the related query (e.g., {project: { title: 1 }, sort: { title: 1 } }).\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - withType\n        examples:\n        - type: relationship\n          label: Author\n          withType: person\n          max: 1\n          builders:\n            project:\n              title: 1\n              _url: 1\n        - type: relationship\n          label: Related Articles\n          withType: article\n          min: 0\n          max: 5\n          fields:\n            add:\n              relationshipRole:\n                type: select\n                label: Role\n                choices:\n                - label: Primary\n                  value: primary\n                - label: Secondary\n                  value: secondary\n          builders:\n            project:\n              title: 1\n              _url: 1\n            sort:\n              title: 1\n      title: RelationshipField\n    RelationshipReverseField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: |\n          Read-only reverse side of a forward `relationship` field defined on another type.\n          Use this to show “referenced by” links without storing ids here.\n        properties:\n          type:\n            type: string\n            enum:\n            - relationshipReverse\n            description: Apostrophe field type id.\n          withType:\n            type: string\n            description: Module name that holds the forward relationship.\n          reverseOf:\n            type: string\n            description: |\n              Name of the forward relationship field on `withType` (e.g.,\"_authors\" on \"article\").\n          builders:\n            type: object\n            additionalProperties: true\n            description: Cursor builders applied when populating the reverse join.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - withType\n        - reverseOf\n        examples:\n        - type: relationshipReverse\n          label: Articles referencing this person\n          withType: article\n          reverseOf: _authors\n          builders:\n            project:\n              title: 1\n              _url: 1\n      title: RelationshipReverseField\n    SelectField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - select\n            description: Apostrophe field type id.\n          def:\n            oneOf:\n            - type: string\n            - type: number\n            - type: boolean\n            - type: array\n              items:\n                oneOf:\n                - type: string\n                - type: number\n                - type: boolean\n            description: |\n              Default value. If `multiple: true`, this should be an array.\n          multiple:\n            type: boolean\n            description: Allow selecting multiple values (stores an array).\n          choices:\n            oneOf:\n            - type: array\n              description: Static choices for the select dropdown.\n              items:\n                $ref: '#/components/schemas/SelectChoice'\n            - type: string\n              description: |\n                Name of a method that returns choices (e.g. \"sponsorNames\").\n                May be \"module:method\" to reference another module.\n          following:\n            oneOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n            description: Populate dynamically based on other fields’ values (supports `<` parent prefixes).\n          followingIgnore:\n            oneOf:\n            - type: boolean\n            - type: array\n              items:\n                type: string\n            description: Ignore some or all followed fields when generating values.\n        required:\n        - type\n        - label\n        examples:\n        - type: select\n          label: Task Priority\n          choices:\n          - label: Low\n            value: low\n          - label: Medium\n            value: medium\n          - label: High\n            value: high\n          - label: Critical\n            value: critical\n          def: medium\n        - type: select\n          label: Tags\n          multiple: true\n          choices:\n          - label: News\n            value: news\n          - label: Blog\n            value: blog\n          - label: Events\n            value: events\n          def:\n          - news\n          - events\n        - type: select\n          label: Sponsor\n          choices: sponsorNames\n          following:\n          - <projectType\n      title: SelectField\n    SelectChoice:\n      type: object\n      additionalProperties: false\n      properties:\n        label:\n          type: string\n          description: Human-friendly label shown in UI.\n        value:\n          oneOf:\n          - type: string\n          - type: number\n          - type: boolean\n          description: The stored value for this choice.\n        disabled:\n          type: boolean\n          description: If true, show but disable this option.\n      required:\n      - label\n      - value\n      title: SelectChoice\n    SlugField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - slug\n            description: Apostrophe field type id.\n          def:\n            type: string\n            description: Default slug value shown in the editor UI.\n          prefix:\n            type: string\n            description: Optional prefix automatically prepended when generating the slug.\n          source:\n            type: string\n            description: |\n              Name of the field this slug should follow (usually \"title\").\n              Works with `following`/`followingIgnore`.\n          unique:\n            type: boolean\n            description: If true, ensures slug is unique across docs of this type.\n          pattern:\n            type: string\n            description: Optional regex to further constrain allowed slugs.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: slug\n          label: URL Slug\n          source: title\n          unique: true\n          prefix: blog/\n        - type: slug\n          label: Custom Slug\n          def: my-custom-page\n      title: SlugField\n    StringField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - string\n            description: Apostrophe field type id.\n          def:\n            type: string\n            description: Default value shown in the editor UI.\n          textarea:\n            type: boolean\n            description: If true, renders a multiline textarea UI.\n          min:\n            type: integer\n            description: Minimum number of characters allowed.\n          max:\n            type: integer\n            description: Maximum number of characters allowed.\n          pattern:\n            type: string\n            description: |\n              Regular expression (string form) to validate the input.\n              Only matching values are allowed.\n          autocomplete:\n            type: string\n            description: |\n              Value of the HTML autocomplete attribute (see MDN). Use `\"off\"` to disable autocomplete.\n          following:\n            oneOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n            description: Field(s) to follow for automatic value generation. Supports `<` prefixes to access parent fields.\n          followingIgnore:\n            oneOf:\n            - type: boolean\n            - type: array\n              items:\n                type: string\n            description: Controls which `following` values are ignored.\n          sortify:\n            type: boolean\n            description: If true, creates a parallel “sortified” version of this field for case- and punctuation-insensitive sorting.\n        required:\n        - type\n        - label\n        examples:\n        - type: string\n          label: Dog Name\n          def: Fido\n        - type: string\n          label: Biography\n          textarea: true\n          max: 800\n        - type: string\n          label: Meta Description\n          following:\n          - title\n          - featured\n          followingIgnore:\n          - featured\n          if:\n            featured: true\n      title: StringField\n    TimeField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - time\n            description: Apostrophe field type id.\n          def:\n            type: string\n            pattern: ^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$\n            description: |\n              Default value in HH:MM:SS (24-hour).\n              If not set and not required, defaults to the current time.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: time\n          label: Event Time\n          def: '14:30:00'\n        - type: time\n          label: Reminder Time\n      title: TimeField\n    UrlField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - url\n            description: Apostrophe field type id.\n          def:\n            type: string\n            format: uri\n            description: Default URL shown in the editor UI.\n          pattern:\n            type: string\n            description: Optional regex for stricter validation of allowed URLs (in addition to standard URI syntax).\n          autocomplete:\n            type: string\n            description: Value for the HTML autocomplete attribute. Common values include \"url\" or \"off\".\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: url\n          label: Website\n          def: https://example.com\n        - type: url\n          label: LinkedIn Profile\n          autocomplete: url\n          requiredIf:\n            hasLinkedIn: true\n      title: UrlField\n    Page:\n      type: object\n      description: An ApostropheCMS page document with hierarchical structure and content\n        areas\n      properties:\n        _id:\n          type: string\n          description: Unique document identifier, may include mode and locale (e.g.,\n            \"id:en:published\")\n          example: ckhdscx5900054z9k88uqs16w:en:published\n        aposDocId:\n          type: string\n          description: Base document ID without mode/locale qualifiers\n          example: ckhdscx5900054z9k88uqs16w\n        aposLocale:\n          type: string\n          description: Document locale code\n          example: en\n        aposMode:\n          type: string\n          description: Document mode (draft or published)\n          enum:\n          - draft\n          - published\n          example: published\n        archived:\n          type: boolean\n          description: Whether the page is archived\n          default: false\n        createdAt:\n          type: string\n          format: date-time\n          description: Page creation timestamp\n          example: '2023-01-15T10:30:00.000Z'\n        updatedAt:\n          type: string\n          format: date-time\n          description: Page last update timestamp\n          example: '2024-12-18T14:20:00.000Z'\n        titleSortified:\n          type: string\n          description: Sortable version of the page title\n          example: about us\n        slug:\n          type: string\n          description: URL slug for the page\n          example: /about-us\n        path:\n          type: string\n          description: Full hierarchical path in the page tree\n          example: /about-us\n        rank:\n          type: integer\n          description: Sort order within parent page\n          example: 0\n        level:\n          type: integer\n          description: Depth level in the page tree (0 = root level)\n          example: 1\n        orphan:\n          type: boolean\n          description: Whether page is orphaned (not in tree structure)\n          default: false\n        parked:\n          type: array\n          description: Array of parking lot configurations if page is parked\n          items:\n            type: string\n          example: []\n        visibility:\n          type: string\n          description: Page visibility setting\n          enum:\n          - public\n          - loginRequired\n          - private\n          default: public\n          example: public\n        type:\n          type: string\n          description: Page type module name\n          example: '@apostrophecms/page'\n        title:\n          type: string\n          description: Page title\n          example: About Us\n          maxLength: 100\n        main:\n          type: object\n          description: Main content area with rich content widgets\n          properties:\n            metaType:\n              type: string\n              example: area\n            items:\n              type: array\n              items:\n                type: object\n                properties:\n                  metaType:\n                    type: string\n                    example: widget\n                  type:\n                    type: string\n                    example: '@apostrophecms/rich-text'\n                  aposPlaceholder:\n                    type: boolean\n                    default: false\n                  content:\n                    type: string\n                    description: Widget content (varies by widget type)\n                    example: <p>Welcome to our website!</p>\n                  _id:\n                    type: string\n                    example: widget-id-123\n        seoFields:\n          type: object\n          description: SEO metadata for the page\n          properties:\n            metaDescription:\n              type: string\n              description: Meta description for search engines\n              maxLength: 160\n              example: Learn about our company, mission, and values\n            metaKeywords:\n              type: string\n              description: Meta keywords (legacy, rarely used)\n              example: about, company, mission\n            ogTitle:\n              type: string\n              description: Open Graph title for social sharing\n              example: About Our Company\n            ogDescription:\n              type: string\n              description: Open Graph description for social sharing\n              example: Discover our story and what drives us forward\n            ogImage:\n              type: object\n              description: Open Graph image for social sharing\n              properties:\n                _id:\n                  type: string\n                  example: image-id-456\n                title:\n                  type: string\n                  example: Company Photo\n                attachment:\n                  type: object\n                  properties:\n                    _id:\n                      type: string\n                      example: attachment-789\n                    name:\n                      type: string\n                      example: company-photo\n                    extension:\n                      type: string\n                      example: jpg\n                    _url:\n                      type: string\n                      example: /uploads/attachments/company-photo.jpg\n        _ancestors:\n          type: array\n          description: Array of ancestor page IDs in the page tree hierarchy\n          items:\n            type: string\n          example:\n          - root-page-id\n        _children:\n          type: array\n          description: Array of child pages (when requested with children parameter)\n          items:\n            $ref: '#/components/schemas/Page'\n          example: []\n        _url:\n          type: string\n          description: Full URL to the page\n          example: https://example.com/about-us\n          format: uri\n        _edit:\n          type: boolean\n          description: Whether current user ca\n\n<!-- [TRUNCATED AT 50KB] -->","packages/apostrophecms-openapi/examples/typescript/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2FREADME.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ApiError.md":"# ApiError\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**status** | **number** | HTTP status code, e.g., 401 | [optional] [default to undefined]\n**code** | **string** | Application error code (optional) | [optional] [default to undefined]\n**message** | **string** | Human-readable error message | [default to undefined]\n**details** | **{ [key: string]: any; }** | Extra context about the error | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ApiError } from 'apostrophecms-client';\n\nconst instance: ApiError = {\n    status,\n    code,\n    message,\n    details,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AreaField.md":"# AreaField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**_options** | [**AreaOptions**](AreaOptions.md) |  | [default to undefined]\n\n## Example\n\n```typescript\nimport { AreaField } from 'apostrophecms-client';\n\nconst instance: AreaField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    _options,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AreaOptions.md":"# AreaOptions\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**widgets** | **{ [key: string]: object; }** | Allowed widget types for this area. Keys are widget module names (e.g., \\&quot;@apostrophecms/rich-text\\&quot;). Values are per-widget options that apply *only* in this area.  | [default to undefined]\n**groups** | [**{ [key: string]: AreaWidgetGroup; }**](AreaWidgetGroup.md) | Organize widgets into groups for the expanded preview menu. Each group has a label, optional columns (1–4, default 3), and its own widgets map (same shape as &#x60;widgets&#x60;).  | [optional] [default to undefined]\n**max** | **number** | Maximum number of widgets allowed in this area. | [optional] [default to undefined]\n**expanded** | **boolean** | Use the expanded preview menu UX. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AreaOptions } from 'apostrophecms-client';\n\nconst instance: AreaOptions = {\n    widgets,\n    groups,\n    max,\n    expanded,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AreaWidgetGroup.md":"# AreaWidgetGroup\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**label** | **string** |  | [default to undefined]\n**columns** | **number** | Number of widget previews per row (default 3). | [optional] [default to undefined]\n**widgets** | **{ [key: string]: object; }** |  | [default to undefined]\n\n## Example\n\n```typescript\nimport { AreaWidgetGroup } from 'apostrophecms-client';\n\nconst instance: AreaWidgetGroup = {\n    label,\n    columns,\n    widgets,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/ArrayField.md":"# ArrayField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**fields** | [**Fieldset**](Fieldset.md) |  | [default to undefined]\n**min** | **number** | Minimum number of items (inclusive). | [optional] [default to undefined]\n**max** | **number** | Maximum number of items (inclusive). | [optional] [default to undefined]\n**titleField** | **string** | Field name in each item used as the item label in the UI. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ArrayField } from 'apostrophecms-client';\n\nconst instance: ArrayField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    fields,\n    min,\n    max,\n    titleField,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/Attachment.md":"# Attachment\n\nFile attachment information from upload endpoint\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_id** | **string** | Unique attachment identifier | [optional] [default to undefined]\n**_url** | **string** | URL to the original file | [optional] [default to undefined]\n**_urls** | **{ [key: string]: string; }** | URLs for different image sizes (images only) | [optional] [default to undefined]\n**name** | **string** | Slugified filename | [optional] [default to undefined]\n**title** | **string** | Sortified filename | [optional] [default to undefined]\n**extension** | **string** | File extension | [optional] [default to undefined]\n**type** | **string** |  | [optional] [default to undefined]\n**group** | **string** | File group type | [optional] [default to undefined]\n**length** | **number** | File size in bytes | [optional] [default to undefined]\n**md5** | **string** | MD5 checksum | [optional] [default to undefined]\n**width** | **number** | Image width in pixels (images only) | [optional] [default to undefined]\n**height** | **number** | Image height in pixels (images only) | [optional] [default to undefined]\n**landscape** | **boolean** | Whether image is landscape orientation (images only) | [optional] [default to undefined]\n**portrait** | **boolean** | Whether image is portrait orientation (images only) | [optional] [default to undefined]\n**docIds** | **Array&lt;string&gt;** | IDs of documents using this attachment | [optional] [default to undefined]\n**archivedDocIds** | **Array&lt;string&gt;** | IDs of archived documents using this attachment | [optional] [default to undefined]\n**createdAt** | **string** |  | [optional] [default to undefined]\n**updatedAt** | **string** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { Attachment } from 'apostrophecms-client';\n\nconst instance: Attachment = {\n    _id,\n    _url,\n    _urls,\n    name,\n    title,\n    extension,\n    type,\n    group,\n    length,\n    md5,\n    width,\n    height,\n    landscape,\n    portrait,\n    docIds,\n    archivedDocIds,\n    createdAt,\n    updatedAt,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AttachmentCropRequest.md":"# AttachmentCropRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_id** | **string** | The _id property of an existing image attachment document | [default to undefined]\n**crop** | [**AttachmentCropRequestCrop**](AttachmentCropRequestCrop.md) |  | [default to undefined]\n\n## Example\n\n```typescript\nimport { AttachmentCropRequest } from 'apostrophecms-client';\n\nconst instance: AttachmentCropRequest = {\n    _id,\n    crop,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AttachmentCropRequestCrop.md":"# AttachmentCropRequestCrop\n\nCrop coordinates and dimensions\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**top** | **number** | Top coordinate of the crop area (pixels) | [default to undefined]\n**left** | **number** | Left coordinate of the crop area (pixels) | [default to undefined]\n**width** | **number** | Width of the crop area (pixels) | [default to undefined]\n**height** | **number** | Height of the crop area (pixels) | [default to undefined]\n\n## Example\n\n```typescript\nimport { AttachmentCropRequestCrop } from 'apostrophecms-client';\n\nconst instance: AttachmentCropRequestCrop = {\n    top,\n    left,\n    width,\n    height,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AttachmentField.md":"# AttachmentField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**accept** | [**AttachmentFieldAllOfAccept**](AttachmentFieldAllOfAccept.md) |  | [optional] [default to undefined]\n**maxSize** | **number** | Optional max file size in bytes (documentation-only hint). | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AttachmentField } from 'apostrophecms-client';\n\nconst instance: AttachmentField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    accept,\n    maxSize,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AttachmentFieldAllOfAccept.md":"# AttachmentFieldAllOfAccept\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n\n## Example\n\n```typescript\nimport { AttachmentFieldAllOfAccept } from 'apostrophecms-client';\n\nconst instance: AttachmentFieldAllOfAccept = {\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AttachmentsApi.md":"# AttachmentsApi\n\nAll URIs are relative to *http://localhost:3000/api/v1*\n\n|Method | HTTP request | Description|\n|------------- | ------------- | -------------|\n|[**attachmentCrop**](#attachmentcrop) | **POST** /@apostrophecms/attachment/crop | Crop image attachment|\n|[**attachmentUpload**](#attachmentupload) | **POST** /@apostrophecms/attachment/upload | Upload media file|\n\n# **attachmentCrop**\n> boolean attachmentCrop(attachmentCropRequest)\n\nCreate a cropped version of an existing image attachment. The crop object is appended to the crops array property of the attachment document. The newly uploaded image file will be stored with a filename using the crop properties: {_id}-{name}.{top}.{left}.{width}.{height}.{extension} \n\n### Example\n\n```typescript\nimport {\n    AttachmentsApi,\n    Configuration,\n    AttachmentCropRequest\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AttachmentsApi(configuration);\n\nlet attachmentCropRequest: AttachmentCropRequest; //\nlet aposMode: 'draft' | 'published'; //Request draft or published version of content (optional) (default to 'published')\nlet aposLocale: string; //Locale for internationalization (e.g., \\'en\\', \\'fr\\', \\'es\\') (optional) (default to undefined)\n\nconst { status, data } = await apiInstance.attachmentCrop(\n    attachmentCropRequest,\n    aposMode,\n    aposLocale\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **attachmentCropRequest** | **AttachmentCropRequest**|  | |\n| **aposMode** | [**&#39;draft&#39; | &#39;published&#39;**]**Array<&#39;draft&#39; &#124; &#39;published&#39;>** | Request draft or published version of content | (optional) defaults to 'published'|\n| **aposLocale** | [**string**] | Locale for internationalization (e.g., \\&#39;en\\&#39;, \\&#39;fr\\&#39;, \\&#39;es\\&#39;) | (optional) defaults to undefined|\n\n\n### Return type\n\n**boolean**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: application/json\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Image cropped successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**401** | Authentication required |  -  |\n|**404** | Resource not found |  -  |\n|**422** | Unprocessable entity - crop coordinates exceed image bounds |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **attachmentUpload**\n> Attachment attachmentUpload()\n\nUpload a media file to create an attachment. The uploaded file can then be used to create image or file documents. Uses multipart/form-data encoding with the file uploaded under the name \\'file\\'. \n\n### Example\n\n```typescript\nimport {\n    AttachmentsApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AttachmentsApi(configuration);\n\nlet file: File; //The file to upload (default to undefined)\nlet aposMode: 'draft' | 'published'; //Request draft or published version of content (optional) (default to 'published')\nlet aposLocale: string; //Locale for internationalization (e.g., \\'en\\', \\'fr\\', \\'es\\') (optional) (default to undefined)\n\nconst { status, data } = await apiInstance.attachmentUpload(\n    file,\n    aposMode,\n    aposLocale\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **file** | [**File**] | The file to upload | defaults to undefined|\n| **aposMode** | [**&#39;draft&#39; | &#39;published&#39;**]**Array<&#39;draft&#39; &#124; &#39;published&#39;>** | Request draft or published version of content | (optional) defaults to 'published'|\n| **aposLocale** | [**string**] | Locale for internationalization (e.g., \\&#39;en\\&#39;, \\&#39;fr\\&#39;, \\&#39;es\\&#39;) | (optional) defaults to undefined|\n\n\n### Return type\n\n**Attachment**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: multipart/form-data\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | File uploaded successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**401** | Authentication required |  -  |\n|**413** | File too large |  -  |\n|**415** | Unsupported file type |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthContext200Response.md":"# AuthContext200Response\n\nAdditional context based on configuration\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**localLogin** | **boolean** | Whether local login is enabled | [optional] [default to undefined]\n**passwordReset** | **boolean** | Whether password reset is enabled | [optional] [default to undefined]\n**loginUrl** | **string** | The configured login URL | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthContext200Response } from 'apostrophecms-client';\n\nconst instance: AuthContext200Response = {\n    localLogin,\n    passwordReset,\n    loginUrl,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthContextPost200Response.md":"# AuthContextPost200Response\n\nAdditional context based on configuration\\\"\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**localLogin** | **boolean** | Whether local login is enabled | [optional] [default to undefined]\n**passwordReset** | **boolean** | Whether password reset is enabled | [optional] [default to undefined]\n**loginUrl** | **string** | The configured login URL | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthContextPost200Response } from 'apostrophecms-client';\n\nconst instance: AuthContextPost200Response = {\n    localLogin,\n    passwordReset,\n    loginUrl,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthLogin200Response.md":"# AuthLogin200Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**token** | **string** | Bearer token (only present when session is false/omitted) | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthLogin200Response } from 'apostrophecms-client';\n\nconst instance: AuthLogin200Response = {\n    token,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthLoginRequest.md":"# AuthLoginRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**username** | **string** | User\\&#39;s login username | [default to undefined]\n**password** | **string** | User\\&#39;s password | [default to undefined]\n**session** | **boolean** | Set to true to receive session cookie instead of bearer token | [optional] [default to false]\n\n## Example\n\n```typescript\nimport { AuthLoginRequest } from 'apostrophecms-client';\n\nconst instance: AuthLoginRequest = {\n    username,\n    password,\n    session,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthLogout200Response.md":"# AuthLogout200Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**success** | **boolean** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthLogout200Response } from 'apostrophecms-client';\n\nconst instance: AuthLogout200Response = {\n    success,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthReset200Response.md":"# AuthReset200Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**success** | **boolean** |  | [optional] [default to undefined]\n**message** | **string** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthReset200Response } from 'apostrophecms-client';\n\nconst instance: AuthReset200Response = {\n    success,\n    message,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthReset410Response.md":"# AuthReset410Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**error** | **string** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthReset410Response } from 'apostrophecms-client';\n\nconst instance: AuthReset410Response = {\n    error,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequest.md":"# AuthResetRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**token** | **string** | Reset token from the password reset email | [default to undefined]\n**password** | **string** | New password for the user account | [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthResetRequest } from 'apostrophecms-client';\n\nconst instance: AuthResetRequest = {\n    token,\n    password,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequest200Response.md":"# AuthResetRequest200Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**success** | **boolean** |  | [optional] [default to undefined]\n**message** | **string** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthResetRequest200Response } from 'apostrophecms-client';\n\nconst instance: AuthResetRequest200Response = {\n    success,\n    message,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequestRequest.md":"# AuthResetRequestRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**email** | **string** | Email address of the user requesting password reset | [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthResetRequestRequest } from 'apostrophecms-client';\n\nconst instance: AuthResetRequestRequest = {\n    email,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthWhoAmI200Response.md":"# AuthWhoAmI200Response\n\nAdditional fields based on whoamiFields configuration\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_id** | **string** | User\\&#39;s unique identifier | [optional] [default to undefined]\n**username** | **string** | User\\&#39;s login username | [optional] [default to undefined]\n**title** | **string** | User\\&#39;s display name | [optional] [default to undefined]\n**email** | **string** | User\\&#39;s email address (if configured in whoamiFields) | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthWhoAmI200Response } from 'apostrophecms-client';\n\nconst instance: AuthWhoAmI200Response = {\n    _id,\n    username,\n    title,\n    email,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/AuthenticationApi.md":"# AuthenticationApi\n\nAll URIs are relative to *http://localhost:3000/api/v1*\n\n|Method | HTTP request | Description|\n|------------- | ------------- | -------------|\n|[**authContext**](#authcontext) | **GET** /@apostrophecms/login/context | Get login context information|\n|[**authContextPost**](#authcontextpost) | **POST** /@apostrophecms/login/context | Get login context information|\n|[**authLogin**](#authlogin) | **POST** /@apostrophecms/login/login | Login to get authentication token|\n|[**authLogout**](#authlogout) | **POST** /@apostrophecms/login/logout | Logout and invalidate session|\n|[**authReset**](#authreset) | **POST** /@apostrophecms/login/reset | Complete password reset|\n|[**authResetRequest**](#authresetrequest) | **POST** /@apostrophecms/login/reset-request | Request password reset|\n|[**authWhoAmI**](#authwhoami) | **GET** /@apostrophecms/login/whoami | Get current user information|\n|[**authWhoAmIPost**](#authwhoamipost) | **POST** /@apostrophecms/login/whoami | Get current user information|\n\n# **authContext**\n> AuthContext200Response authContext()\n\n**⚠️ DEPRECATED:** This GET endpoint is deprecated due to caching issues. Use the POST method instead.  Returns login context information including environment and requirements. This endpoint provides information about the login system configuration.  **Useful for:** - Understanding available login methods - Checking if password reset is enabled - Getting login system configuration \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authContext();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthContext200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Login context retrieved successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authContextPost**\n> AuthContextPost200Response authContextPost()\n\nReturns login context information including environment and requirements. This endpoint provides information about the login system configuration.  **Note:** POST method is recommended for this endpoint to avoid caching issues.  **Useful for:** - Understanding available login methods - Checking if password reset is enabled - Getting login system configuration \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authContextPost();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthContextPost200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Login context retrieved successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authLogin**\n> AuthLogin200Response authLogin(authLoginRequest)\n\n🚀 **Start here!** Authenticate and receive either a bearer token or session cookie for subsequent API requests.  **Perfect for:** - Getting started with the API - Setting up authentication for your app - Testing API access  **Choose your authentication method:** - **Bearer Token** (recommended): omit `session` field or set to `false` - **Session Cookie**: set `session` to `true` and include `credentials: \\'include\\'` in fetch \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration,\n    AuthLoginRequest\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nlet authLoginRequest: AuthLoginRequest; //\n\nconst { status, data } = await apiInstance.authLogin(\n    authLoginRequest\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **authLoginRequest** | **AuthLoginRequest**|  | |\n\n\n### Return type\n\n**AuthLogin200Response**\n\n### Authorization\n\nNo authorization required\n\n### HTTP request headers\n\n - **Content-Type**: application/json\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Login successful |  * Set-Cookie - Session cookie (only when session&#x3D;true) <br>  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**401** | Authentication required |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authLogout**\n> AuthLogout200Response authLogout()\n\nEnd the current session or invalidate the bearer token.  **For bearer token**: include Authorization header **For session cookie**: include credentials in request \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authLogout();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthLogout200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Logout successful |  -  |\n|**401** | Authentication required |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authReset**\n> AuthReset200Response authReset(authResetRequest)\n\nCompletes a password reset using the token provided in the reset email.  **⚠️ Note:** This endpoint is only available when `passwordReset` is enabled in the login module configuration.  Reset tokens are valid for the number of hours specified in `passwordResetHours` (default: 48 hours). \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration,\n    AuthResetRequest\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nlet authResetRequest: AuthResetRequest; //\n\nconst { status, data } = await apiInstance.authReset(\n    authResetRequest\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **authResetRequest** | **AuthResetRequest**|  | |\n\n\n### Return type\n\n**AuthReset200Response**\n\n### Authorization\n\nNo authorization required\n\n### HTTP request headers\n\n - **Content-Type**: application/json\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Password reset completed successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**404** | Resource not found |  -  |\n|**410** | Reset token expired |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authResetRequest**\n> AuthResetRequest200Response authResetRequest(authResetRequestRequest)\n\nInitiates a password reset process by sending a reset link to the user\\'s email address.  **⚠️ Note:** This endpoint is only available when `passwordReset` is enabled in the login module configuration.  **Security feature:** The user will not be notified if the email check fails or if the email fails to send. However, debug information will be output in the server terminal. \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration,\n    AuthResetRequestRequest\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nlet authResetRequestRequest: AuthResetRequestRequest; //\n\nconst { status, data } = await apiInstance.authResetRequest(\n    authResetRequestRequest\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **authResetRequestRequest** | **AuthResetRequestRequest**|  | |\n\n\n### Return type\n\n**AuthResetRequest200Response**\n\n### Authorization\n\nNo authorization required\n\n### HTTP request headers\n\n - **Content-Type**: application/json\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Password reset request processed (always returns success for security) |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**404** | Resource not found |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authWhoAmI**\n> AuthWhoAmI200Response authWhoAmI()\n\n**⚠️ DEPRECATED:** This GET endpoint is deprecated due to caching issues. Use the POST method instead.  Returns information about the currently authenticated user.  **Security note:** Only explicitly configured fields are returned, never the complete user object. This prevents accidental exposure of sensitive user data. \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authWhoAmI();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthWhoAmI200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Current user information retrieved successfully |  -  |\n|**401** | Authentication required |  -  |\n|**404** | Resource not found |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authWhoAmIPost**\n> AuthWhoAmI200Response authWhoAmIPost()\n\nReturns information about the currently authenticated user.  **Note:** POST method is recommended for this endpoint to avoid caching issues.  **Perfect for:** - Checking if authentication is working - Getting user details for your app - Validating permissions  **Security note:** Only explicitly configured fields are returned,  never the complete user object. This prevents accidental exposure  of sensitive user data. \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authWhoAmIPost();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthWhoAmI200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Current user information retrieved successfully |  -  |\n|**401** | Authentication required |  -  |\n|**404** | Resource not found |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n","packages/apostrophecms-openapi/examples/typescript/docs/BaseField.md":"# BaseField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id (e.g., \\&quot;float\\&quot;, \\&quot;string\\&quot;, \\&quot;boolean\\&quot;). | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BaseField } from 'apostrophecms-client';\n\nconst instance: BaseField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/BooleanField.md":"# BooleanField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **boolean** | Default value shown in the editor UI. | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**toggle** | [**BooleanFieldAllOfToggle**](BooleanFieldAllOfToggle.md) |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BooleanField } from 'apostrophecms-client';\n\nconst instance: BooleanField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    toggle,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/BooleanFieldAllOfToggle.md":"# BooleanFieldAllOfToggle\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_true** | **string** | Label to display when value is true. | [optional] [default to undefined]\n**_false** | **string** | Label to display when value is false. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BooleanFieldAllOfToggle } from 'apostrophecms-client';\n\nconst instance: BooleanFieldAllOfToggle = {\n    _true,\n    _false,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/BooleanFieldAllOfToggleOneOf.md":"# BooleanFieldAllOfToggleOneOf\n\nConfigure custom labels for the toggle UI.\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_true** | **string** | Label to display when value is true. | [optional] [default to undefined]\n**_false** | **string** | Label to display when value is false. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BooleanFieldAllOfToggleOneOf } from 'apostrophecms-client';\n\nconst instance: BooleanFieldAllOfToggleOneOf = {\n    _true,\n    _false,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/BulkOperationRequest.md":"# BulkOperationRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_ids** | **Array&lt;string&gt;** | Array of document IDs to operate on | [default to undefined]\n\n## Example\n\n```typescript\nimport { BulkOperationRequest } from 'apostrophecms-client';\n\nconst instance: BulkOperationRequest = {\n    _ids,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/BulkOperationResponse.md":"# BulkOperationResponse\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**success** | **boolean** |  | [optional] [default to undefined]\n**modified** | **number** | Number of documents affected | [optional] [default to undefined]\n**errors** | **Array&lt;string&gt;** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BulkOperationResponse } from 'apostrophecms-client';\n\nconst instance: BulkOperationResponse = {\n    success,\n    modified,\n    errors,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesField.md":"# CheckboxesField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | [**Array&lt;CheckboxesFieldAllOfDef&gt;**](CheckboxesFieldAllOfDef.md) | Default selected values. | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**choices** | [**CheckboxesFieldAllOfChoices**](CheckboxesFieldAllOfChoices.md) |  | [default to undefined]\n**following** | [**CheckboxesFieldAllOfFollowing**](CheckboxesFieldAllOfFollowing.md) |  | [optional] [default to undefined]\n**followingIgnore** | [**CheckboxesFieldAllOfFollowingIgnore**](CheckboxesFieldAllOfFollowingIgnore.md) |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { CheckboxesField } from 'apostrophecms-client';\n\nconst instance: CheckboxesField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    choices,\n    following,\n    followingIgnore,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfChoices.md":"# CheckboxesFieldAllOfChoices\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n\n## Example\n\n```typescript\nimport { CheckboxesFieldAllOfChoices } from 'apostrophecms-client';\n\nconst instance: CheckboxesFieldAllOfChoices = {\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfDef.md":"# CheckboxesFieldAllOfDef\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n\n## Example\n\n```typescript\nimport { CheckboxesFieldAllOfDef } from 'apostrophecms-client';\n\nconst instance: CheckboxesFieldAllOfDef = {\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfFollowing.md":"# CheckboxesFieldAllOfFollowing\n\nPopulate dynamically based on other fields (supports `<` parent prefixes).\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n\n## Example\n\n```typescript\nimport { CheckboxesFieldAllOfFollowing } from 'apostrophecms-client';\n\nconst instance: CheckboxesFieldAllOfFollowing = {\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfFollowingIgnore.md":"# CheckboxesFieldAllOfFollowingIgnore\n\nIgnore some or all followed fields when generating values.\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n\n## Example\n\n```typescript\nimport { CheckboxesFieldAllOfFollowingIgnore } from 'apostrophecms-client';\n\nconst instance: CheckboxesFieldAllOfFollowingIgnore = {\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/ColorField.md":"# ColorField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **string** | Default hex color (e.g. \\&quot;#ff0000\\&quot;). | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ColorField } from 'apostrophecms-client';\n\nconst instance: ColorField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/CreatePieceRequest.md":"# CreatePieceRequest\n\nGeneric structure for creating any piece type\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**title** | **string** | Piece title (required for all piece types) | [default to undefined]\n**slug** | **string** | URL slug (auto-generated from title if not provided) | [optional] [default to undefined]\n**visibility** | **string** | Visibility setting | [optional] [default to VisibilityEnum_Public]\n**archived** | **boolean** | Whether the piece is archived | [optional] [default to false]\n\n## Example\n\n```typescript\nimport { CreatePieceRequest } from 'apostrophecms-client';\n\nconst instance: CreatePieceRequest = {\n    title,\n    slug,\n    visibility,\n    archived,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/DateAndTimeField.md":"# DateAndTimeField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **string** | Default timestamp in RFC 3339 format (e.g., 2025-08-29T13:00:00Z). | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**min** | **string** | Minimum allowed timestamp (inclusive), RFC 3339. | [optional] [default to undefined]\n**max** | **string** | Maximum allowed timestamp (inclusive), RFC 3339. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { DateAndTimeField } from 'apostrophecms-client';\n\nconst instance: DateAndTimeField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    min,\n    max,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/DateBoundaryOptions.md":"# DateBoundaryOptions\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**min** | **string** | Minimum allowed date (inclusive), ISO-8601 (YYYY-MM-DD). | [optional] [default to undefined]\n**max** | **string** | Maximum allowed date (inclusive), ISO-8601 (YYYY-MM-DD). | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { DateBoundaryOptions } from 'apostrophecms-client';\n\nconst instance: DateBoundaryOptions = {\n    min,\n    max,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/DateField.md":"# DateField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **string** | Default date shown in the editor UI (YYYY-MM-DD). | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**min** | **string** | Minimum allowed date (inclusive), ISO-8601 (YYYY-MM-DD). | [optional] [default to undefined]\n**max** | **string** | Maximum allowed date (inclusive), ISO-8601 (YYYY-MM-DD). | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { DateField } from 'apostrophecms-client';\n\nconst instance: DateField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    min,\n    max,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/DateTimeBoundaryOptions.md":"# DateTimeBoundaryOptions\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**min** | **string** | Minimum allowed timestamp (inclusive), RFC 3339. | [optional] [default to undefined]\n**max** | **string** | Maximum allowed timestamp (inclusive), RFC 3339. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { DateTimeBoundaryOptions } from 'apostrophecms-client';\n\nconst instance: DateTimeBoundaryOptions = {\n    min,\n    max,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/DifferentHostnameResponse.md":"# DifferentHostnameResponse\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**redirectTo** | **string** | Full URL to redirect to with cross-domain session token | [default to undefined]\n\n## Example\n\n```typescript\nimport { DifferentHostnameResponse } from 'apostrophecms-client';\n\nconst instance: DifferentHostnameResponse = {\n    redirectTo,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/EmailField.md":"# EmailField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **string** | Default email address shown in the editor UI. | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**pattern** | **string** | Optional regex for stricter validation (in addition to HTML5 email validation). | [optional] [default to undefined]\n**autocomplete** | **string** | Value for the HTML autocomplete attribute. Common values are \\&quot;email\\&quot; or \\&quot;off\\&quot;. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { EmailField } from 'apostrophecms-client';\n\nconst instance: EmailField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    pattern,\n    autocomplete,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/Error.md":"# ModelError\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**status** | **number** | HTTP status code, e.g., 401 | [optional] [default to undefined]\n**code** | **string** | Application error code (optional) | [optional] [default to undefined]\n**message** | **string** | Human-readable error message | [default to undefined]\n**details** | **{ [key: string]: any; }** | Extra context about the error | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ModelError } from 'apostrophecms-client';\n\nconst instance: ModelError = {\n    status,\n    code,\n    message,\n    details,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/ExistInLocaleRequest.md":"# ExistInLocaleRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**ids** | **Array&lt;string&gt;** | Array of document IDs to check | [default to undefined]\n**locale** | **string** | Locale to check documents in | [default to undefined]\n**mode** | **string** | Mode to check documents in | [default to undefined]\n\n## Example\n\n```typescript\nimport { ExistInLocaleRequest } from 'apostrophecms-client';\n\nconst instance: ExistInLocaleRequest = {\n    ids,\n    locale,\n    mode,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/ExistInLocaleResponse.md":"# ExistInLocaleResponse\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**originalLocaleIds** | **Array&lt;string&gt;** | Array of document IDs in the original locale and mode | [optional] [default to undefined]\n**newLocaleIds** | **Array&lt;string&gt;** | Array of document IDs in the new locale | [optional] [default to undefined]\n**aposDocIds** | **Array&lt;string&gt;** | Array of aposDocId values for the documents | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ExistInLocaleResponse } from 'apostrophecms-client';\n\nconst instance: ExistInLocaleResponse = {\n    originalLocaleIds,\n    newLocaleIds,\n    aposDocIds,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/FieldDefinition.md":"# FieldDefinition\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**toggle** | [**BooleanFieldAllOfToggle**](BooleanFieldAllOfToggle.md) |  | [optional] [default to undefined]\n**textarea** | **boolean** | If true, renders a multiline textarea UI. | [optional] [default to undefined]\n**min** | **number** | Minimum number of related docs required (inclusive). | [optional] [default to undefined]\n**max** | **number** | Maximum number of related docs allowed (inclusive). | [optional] [default to undefined]\n**pattern** | **string** | Optional regex to further constrain allowed slugs. | [optional] [default to undefined]\n**autocomplete** | **string** | Value for the HTML autocomplete attribute. Common values include \\&quot;url\\&quot; or \\&quot;off\\&quot;. | [optional] [default to undefined]\n**following** | [**CheckboxesFieldAllOfFollowing**](CheckboxesFieldAllOfFollowing.md) |  | [optional] [default to undefined]\n**followingIgnore** | [**CheckboxesFieldAllOfFollowingIgnore**](CheckboxesFieldAllOfFollowingIgnore.md) |  | [optional] [default to undefined]\n**sortify** | **boolean** | If true, creates a parallel “sortified” version of this field for case- and punctuation-insensitive sorting. | [optional] [default to undefined]\n**format** | **string** | OpenAPI hint for tooling; always \\&quot;float\\&quot;. | [optional] [default to undefined]\n**multiple** | **boolean** | Allow selecting multiple values (stores an array). | [optional] [default to undefined]\n**choices** | [**CheckboxesFieldAllOfChoices**](CheckboxesFieldAllOfChoices.md) |  | [default to undefined]\n**prefix** | **string** | Optional prefix automatically prepended when generating the slug. | [optional] [default to undefined]\n**source** | **string** | Name of the field this slug should follow (usually \\&quot;title\\&quot;). Works with &#x60;following&#x60;/&#x60;followingIgnore&#x60;.  | [optional] [default to undefined]\n**unique** | **boolean** | If true, ensures slug is unique across docs of this type. | [optional] [default to undefined]\n**step** | **number** | Increment step for the slider. If omitted, defaults to 1. | [optional] [default to undefined]\n**fields** | [**Fieldset**](Fieldset.md) |  | [default to undefined]\n**titleField** | **string** | Field name in each item used as the item label in the UI. | [optional] [default to undefined]\n**_options** | [**AreaOptions**](AreaOptions.md) |  | [default to undefined]\n**accept** | [**AttachmentFieldAllOfAccept**](AttachmentFieldAllOfAccept.md) |  | [optional] [default to undefined]\n**maxSize** | **number** | Optional max file size in bytes (documentation-only hint). | [optional] [default to undefined]\n**withType** | **string** | Module name that holds the forward relationship. | [default to undefined]\n**builders** | **{ [key: string]: any; }** | Cursor builders applied when populating the reverse join. | [optional] [default to undefined]\n**reverseOf** | **string** | Name of the forward relationship field on &#x60;withType&#x60; (e.g.,\\&quot;_authors\\&quot; on \\&quot;article\\&quot;).  | [default to undefined]\n\n## Example\n\n```typescript\nimport { FieldDefinition } from 'apostrophecms-client';\n\nconst instance: FieldDefinition = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    toggle,\n    textarea,\n    min,\n    max,\n    pattern,\n    autocomplete,\n    following,\n    followingIgnore,\n    sortify,\n    format,\n    multiple,\n    choices,\n    prefix,\n    source,\n    unique,\n    step,\n    fields,\n    titleField,\n    _options,\n    accept,\n    maxSize,\n    withType,\n    builders,\n    reverseOf,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/FieldPredicate.md":"# FieldPredicate\n\nA simple equality (primitive) or an OperatorObject. :contentReference[oaicite:5]{index=5}\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**$eq** | **any** |  | [optional] [default to undefined]\n**$ne** | **any** |  | [optional] [default to undefined]\n**$gt** | **number** |  | [optional] [default to undefined]\n**$gte** | **number** |  | [optional] [default to undefined]\n**$lt** | **number** |  | [optional] [default to undefined]\n**$lte** | **number** |  | [optional] [default to undefined]\n**$in** | **Array&lt;any&gt;** |  | [optional] [default to undefined]\n**$nin** | **Array&lt;any&gt;** |  | [optional] [default to undefined]\n**$exists** | **boolean** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { FieldPredicate } from 'apostrophecms-client';\n\nconst instance: FieldPredicate = {\n    $eq,\n    $ne,\n    $gt,\n    $gte,\n    $lt,\n    $lte,\n    $in,\n    $nin,\n    $exists,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/Fieldset.md":"# Fieldset\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**add** | [**{ [key: string]: FieldDefinition; }**](FieldDefinition.md) |  | [default to undefined]\n\n## Example\n\n```typescript\nimport { Fieldset } from 'apostrophecms-client';\n\nconst instance: Fieldset = {\n    add,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","packages/apostrophecms-openapi/examples/typescript/docs/File.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFile.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileAttachment.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileAttachment.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileGet200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileGet200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileObject.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileObject.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileObjectAttachment.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileObjectAttachment.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FilePatchByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFilePatchByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FilePostRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFilePostRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTag.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTag.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTagArchiveRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagArchiveRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTagGet200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagGet200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTagLocalizeRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagLocalizeRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTagPatchByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagPatchByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTagPostRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagPostRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTagPublishRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagPublishRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTagPutByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagPutByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FileTagRestoreRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagRestoreRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FlatPageResponse.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFlatPageResponse.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FlatPageResponseResultsInner.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFlatPageResponseResultsInner.md -->","packages/apostrophecms-openapi/examples/typescript/docs/FloatField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFloatField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/Global.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobal.md -->","packages/apostrophecms-openapi/examples/typescript/docs/GlobalContentApi.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalContentApi.md -->","packages/apostrophecms-openapi/examples/typescript/docs/GlobalGet200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalGet200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/GlobalPatch.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalPatch.md -->","packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalPostRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequestContactInfo.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalPostRequestContactInfo.md -->","packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequestSiteSettings.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalPostRequestSiteSettings.md -->","packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequestSocialMedia.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalPostRequestSocialMedia.md -->","packages/apostrophecms-openapi/examples/typescript/docs/I18nLocalePost200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FI18nLocalePost200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/Image.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImage.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageArchiveRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageArchiveRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageAttachment.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageAttachment.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageAutocropRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageAutocropRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageGet200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageGet200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageGetSrcById200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageGetSrcById200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageLocalizeRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageLocalizeRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImagePatchByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImagePatchByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImagePostRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImagePostRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImagePublishRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImagePublishRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageRestoreRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageRestoreRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageTag.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageTag.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageTagGet200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageTagGet200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageTagPatchByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageTagPatchByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageTagPostRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageTagPostRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ImageTagRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageTagRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject.md -->","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject1.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject1.md -->","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject2.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject2.md -->","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject3.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject3.md -->","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject4.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject4.md -->","packages/apostrophecms-openapi/examples/typescript/docs/InlineObject5.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject5.md -->","packages/apostrophecms-openapi/examples/typescript/docs/IntegerField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FIntegerField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/InternationalizationApi.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInternationalizationApi.md -->","packages/apostrophecms-openapi/examples/typescript/docs/LocaleRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FLocaleRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/LocalesResponseValue.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FLocalesResponseValue.md -->","packages/apostrophecms-openapi/examples/typescript/docs/MediaApi.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FMediaApi.md -->","packages/apostrophecms-openapi/examples/typescript/docs/NumericRangeOptions.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FNumericRangeOptions.md -->","packages/apostrophecms-openapi/examples/typescript/docs/ObjectField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FObjectField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/OembedField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FOembedField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/OperatorObject.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FOperatorObject.md -->","packages/apostrophecms-openapi/examples/typescript/docs/Page.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPage.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageArchive200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageArchive200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageArchiveRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageArchiveRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageCreateRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageCreateRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageCreateRequestPosition.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageCreateRequestPosition.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageDeleteById400Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageDeleteById400Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageDotNotationUpdateValue.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageDotNotationUpdateValue.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageGet200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageGet200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageGetLocalesById200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageGetLocalesById200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageGetLocalesById200ResponseResultsInner.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageGetLocalesById200ResponseResultsInner.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageLocaleResult.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageLocaleResult.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageLocalesResponse.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageLocalesResponse.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageLocalizeByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageLocalizeByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageLocalizeRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageLocalizeRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageMain.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageMain.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageMainItemsInner.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageMainItemsInner.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PagePatchByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPagePatchByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PagePublishRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPagePublishRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PagePutByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPagePutByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageRestoreRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageRestoreRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageSeoFields.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageSeoFields.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageSeoFieldsOgImage.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageSeoFieldsOgImage.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageSeoFieldsOgImageAttachment.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageSeoFieldsOgImageAttachment.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageSummary.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageSummary.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageTreeResponse.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageTreeResponse.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageUpdateRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageUpdateRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PageUpdateRequestPosition.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageUpdateRequestPosition.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PagesApi.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPagesApi.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PaginatedResponse.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPaginatedResponse.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PaginatedResponseData.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPaginatedResponseData.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PasswordField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPasswordField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/PieceResponse.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPieceResponse.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RadioField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRadioField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfChoices.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRadioFieldAllOfChoices.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfDef.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRadioFieldAllOfDef.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfFollowing.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRadioFieldAllOfFollowing.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfFollowingIgnore.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRadioFieldAllOfFollowingIgnore.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RangeField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRangeField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RelationshipEntry.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRelationshipEntry.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RelationshipField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRelationshipField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/RelationshipReverseField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRelationshipReverseField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SameHostnameResponse.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSameHostnameResponse.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SelectChoice.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectChoice.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SelectChoiceValue.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectChoiceValue.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SelectField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfChoices.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectFieldAllOfChoices.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfDef.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectFieldAllOfDef.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfFollowing.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectFieldAllOfFollowing.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfFollowingIgnore.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectFieldAllOfFollowingIgnore.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SlugField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSlugField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/StringField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FStringField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/StringFieldAllOfFollowing.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FStringFieldAllOfFollowing.md -->","packages/apostrophecms-openapi/examples/typescript/docs/StringFieldAllOfFollowingIgnore.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FStringFieldAllOfFollowingIgnore.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraft.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraft.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftArchive200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftArchive200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftGet200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftGet200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftLocalize200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftLocalize200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPatchByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftPatchByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPostRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftPostRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPublish200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftPublish200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPutByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftPutByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftRestore200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftRestore200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftsApi.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftsApi.md -->","packages/apostrophecms-openapi/examples/typescript/docs/TimeField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FTimeField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UiCondition.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUiCondition.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UrlField.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUrlField.md -->","packages/apostrophecms-openapi/examples/typescript/docs/User.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUser.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UserCreateRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserCreateRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UserList200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserList200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UserPatchByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserPatchByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UserPutByIdRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserPutByIdRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UserUniqueUsername200Response.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserUniqueUsername200Response.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UserUniqueUsernameRequest.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserUniqueUsernameRequest.md -->","packages/apostrophecms-openapi/examples/typescript/docs/UsersApi.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUsersApi.md -->","packages/apostrophecms-openapi/examples/typescript/docs/Widget.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FWidget.md -->","packages/apostrophecms-openapi/examples/typescript/docs/WidgetImport.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FWidgetImport.md -->","packages/blog/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fblog%2FREADME.md -->","packages/boring/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fboring%2FREADME.md -->","packages/broadband/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fbroadband%2FREADME.md -->","packages/cache-on-demand/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fcache-on-demand%2FREADME.md -->","packages/cache-redis/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fcache-redis%2FREADME.md -->","packages/cli/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fcli%2FREADME.md -->","packages/create-apostrophe/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fcreate-apostrophe%2FREADME.md -->","packages/csv-to-zone-file/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fcsv-to-zone-file%2FREADME.md -->","packages/db-connect/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2FREADME.md -->","packages/db-connect/docs/aggregation.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Faggregation.md -->","packages/db-connect/docs/collections.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Fcollections.md -->","packages/db-connect/docs/database.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Fdatabase.md -->","packages/db-connect/docs/dump-restore.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Fdump-restore.md -->","packages/db-connect/docs/indexes.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Findexes.md -->","packages/db-connect/docs/queries.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Fqueries.md -->","packages/db-connect/docs/updates.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Fupdates.md -->","packages/emulate-mongo-3-driver/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Femulate-mongo-3-driver%2FREADME.md -->","packages/eslint-config-apostrophe/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Feslint-config-apostrophe%2FREADME.md -->","packages/event/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fevent%2FREADME.md -->","packages/express-cache-on-demand/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fexpress-cache-on-demand%2FREADME.md -->","packages/favicon/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Ffavicon%2FREADME.md -->","packages/font-size/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Ffont-size%2FREADME.md -->","packages/form-submission-google/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fform-submission-google%2FREADME.md -->","packages/form/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fform%2FREADME.md -->","packages/i18n-static/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fi18n-static%2FREADME.md -->","packages/import-export-xlsx/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fimport-export-xlsx%2FREADME.md -->","packages/import-export/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fimport-export%2FREADME.md -->","packages/launder/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Flaunder%2FREADME.md -->","packages/login-hcaptcha/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Flogin-hcaptcha%2FREADME.md -->","packages/login-recaptcha/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Flogin-recaptcha%2FREADME.md -->","packages/login-totp/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Flogin-totp%2FREADME.md -->","packages/mongodb-snapshot/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fmongodb-snapshot%2FREADME.md -->","packages/moog-require/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fmoog-require%2FREADME.md -->","packages/oembetter/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Foembetter%2FREADME.md -->","packages/open-graph/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fopen-graph%2FREADME.md -->","packages/openapi-generator/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fopenapi-generator%2FREADME.md -->","packages/passport-bridge/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fpassport-bridge%2FREADME.md -->","packages/postcss-viewport-to-container-toggle/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fpostcss-viewport-to-container-toggle%2FREADME.md -->","packages/random-words/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Frandom-words%2FREADME.md -->","packages/redirect/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fredirect%2FREADME.md -->","packages/sanitize-html/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fsanitize-html%2FREADME.md -->","packages/scheduled-publishing/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fscheduled-publishing%2FREADME.md -->","packages/security-headers/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fsecurity-headers%2FREADME.md -->","packages/seo/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fseo%2FREADME.md -->","packages/sitemap/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fsitemap%2FREADME.md -->","packages/sluggo/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fsluggo%2FREADME.md -->","packages/stylelint-config-apostrophe/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fstylelint-config-apostrophe%2FREADME.md -->","packages/stylelint-no-mixed-decls/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fstylelint-no-mixed-decls%2FREADME.md -->","packages/svg-sprite/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fsvg-sprite%2FREADME.md -->","packages/uploadfs/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fuploadfs%2FREADME.md -->","packages/vite/README.md":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fvite%2FREADME.md -->"},"items":[{"name":"provider-creator.md","path":"packages/ai-helper/skills/provider-creator.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/ai-helper/skills/provider-creator.md","title":"Skills Skill","category":"anthropic-skill","format":"markdown","content":"# AI Provider Creator (ApostropheCMS)\n\nCreate a **project-level** provider registration module + a provider **factory** for `@apostrophecms/ai-helper`.\n\nThis guide is optimized for an LLM to generate files.\n\n---\n\n## What you are generating\n\nYou will generate **two files**:\n\n1. **Provider factory file** (ESM)\n\n* Exports a function that returns a provider object (text/image methods + optional `validate`).\n\n2. **Provider registration module** (ESM Apostrophe module)\n\n* Extends `registerProviders()` and calls `self.registerProvider(...)` to register the factory.\n\n> Note: `@apostrophecms/ai-helper` is CommonJS internally, but **project-level code examples here are ESM**.\n\n---\n\n## Core behavior you must match\n\n### Two-phase provider flow\n\n1. **Registration phase**\n   You register provider factories with metadata using:\n\n* `self.registerProvider(name, factory, capabilities)`\n\n2. **Activation phase**\n   `@apostrophecms/ai-helper` instantiates only the providers named in project options and (optionally) calls `provider.validate()`.\n\n### Capabilities: source of truth\n\nCapabilities are taken from the **registration metadata** (the `capabilities` argument to `registerProvider`), not from any `provider.capabilities` property.\n\nCapabilities shape:\n\n```js\n{\n  text: boolean,\n  image: boolean,\n  imageVariation: boolean\n}\n```\n\n### validate(): optional\n\n`validate()` is optional. If you provide it, it will be called at activation time **unless** mock mode is enabled (`APOS_AI_HELPER_MOCK`).\n\n---\n\n## Where the files live (recommended)\n\n* Provider factory: `lib/ai-providers/<provider-name>.js`\n* Registration module: `modules/<provider-name>-provider/index.js`\n\n---\n\n## Step 1 — Create the provider factory (ESM)\n\nCreate `lib/ai-providers/<provider-name>.js`\n\n### Factory signature (required)\n\n```js\nexport default function createProvider(apos, textOptions = {}, imageOptions = {}) {\n  return {\n    // optional\n    validate() {},\n\n    // optional depending on capabilities\n    async generateText(req, prompt, options) {},\n    async generateImage(req, prompt, options) {},\n    async generateImageVariation(req, image, prompt, options) {}\n  };\n}\n```\n\n### Method return formats (required)\n\n#### Text\n\n`generateText()` must resolve to:\n\n```js\n{\n  content: \"string\",\n  metadata: {\n    model: \"string?\",\n    usage: {\n      inputTokens: number?,\n      outputTokens: number?\n    }\n  }\n}\n```\n\n#### Images\n\n`generateImage()` and `generateImageVariation()` must resolve to an **array** of:\n\n```js\n[\n  {\n    type: \"png\" | \"jpg\" | \"webp\" | \"gif\",\n    data: \"<base64 string>\",   // base64 of the image bytes\n    metadata: {\n      model: \"string?\",\n      usage: {\n        inputTokens: number?,\n        outputTokens: number?\n      }\n    }\n  }\n]\n```\n\n> If your upstream API returns a URL or binary data, you must convert it to base64 and return the standardized object(s).\n\n### Error rules (recommended, not enforced)\n\n* Prefer `throw apos.error(code, message)` so callers can classify errors.\n* Recommended codes:\n\n  * `invalid` (bad input/options)\n  * `forbidden` (auth/permission)\n  * `notfound` (model/asset missing)\n  * `error` (generic)\n* Messages can be developer-facing; UI should map codes to i18n strings.\n\n### Retry rules (recommended)\n\n* Retry: network errors, timeouts, 408, 429, 5xx\n* Do not retry: 400, 401, 403 (and other non-transient 4xx)\n\n---\n\n## Step 2 — Create the provider registration module (ESM)\n\nCreate `modules/<provider-name>-provider/index.js`\n\nThis module’s job is only to **register** the provider factory under a unique name.\n\n```js\nimport createProvider from '../../lib/ai-providers/<provider-name>.js';\n\nexport default {\n  improve: '@apostrophecms/ai-helper',\n\n  extendMethods(self) {\n    return {\n      registerProviders(_super) {\n        _super();\n\n        self.registerProvider(\n          '<providerName>',       // the name used in project options\n          createProvider,         // factory(apos, textOptions, imageOptions) => provider\n          {\n            text: true,           // set to true if provider supports text\n            image: true,          // set to true if provider supports image generation\n            imageVariation: true  // set true only if provider supports variations/edits\n          }\n        );\n      }\n    };\n  }\n};\n```\n\n### Override behavior (required knowledge)\n\nIf a project registers a provider with the same name as a built-in provider, it **replaces** that provider for activation purposes.\n\n---\n\n## Step 3 — Enable the registration module in the project (ESM)\n\nIn your project’s `app.js` (ESM), include the module:\n\n```js\nexport default {\n  modules: {\n    '<provider-name>-provider': {}\n  }\n};\n```\n\n---\n\n## Step 4 — Configure `@apostrophecms/ai-helper` to use it (ESM)\n\nIn `app.js`, configure the provider name(s) and options:\n\n```js\nexport default {\n  modules: {\n    '@apostrophecms/ai-helper': {\n      options: {\n        // pick names registered via registerProvider(...)\n        textProvider: '<providerName>',\n        imageProvider: '<providerName>',\n\n        // passed into the provider factory as:\n        // createProvider(apos, textProviderOptions, imageProviderOptions)\n        textProviderOptions: {\n          // provider-specific\n        },\n        imageProviderOptions: {\n          // provider-specific\n        }\n      }\n    },\n\n    '<provider-name>-provider': {}\n  }\n};\n```\n\n> `textProviderOptions` and `imageProviderOptions` are provider-defined. Your factory must read these and/or environment variables.\n\n---\n\n## Minimal template you can emit (copy/paste)\n\n### `lib/ai-providers/<provider-name>.js`\n\n```js\nexport default function createProvider(apos, textOptions = {}, imageOptions = {}) {\n  const { apiKey } = textOptions;\n\n  return {\n    validate() {\n      if (!process.env.APOS_AI_HELPER_MOCK && !apiKey) {\n        throw apos.error('invalid', 'Missing required apiKey for <providerName>.');\n      }\n    },\n\n    async generateText(req, prompt, options = {}) {\n      // TODO call upstream API\n      return {\n        content: 'TODO',\n        metadata: {\n          model: options.model,\n          usage: {}\n        }\n      };\n    }\n  };\n}\n```\n\n### `modules/<provider-name>-provider/index.js`\n\n```js\nimport createProvider from '../../lib/ai-providers/<provider-name>.js';\n\nexport default {\n  improve: '@apostrophecms/ai-helper',\n  extendMethods(self) {\n    return {\n      registerProviders(_super) {\n        _super();\n        self.registerProvider('<providerName>', createProvider, {\n          text: true,\n          image: false,\n          imageVariation: false\n        });\n      }\n    };\n  }\n};\n```\n","isInternal":false,"tokens":1546,"sizeBytes":6589},{"name":"apostrophecms-openapi.yaml","path":"packages/apostrophecms-openapi/apostrophecms-openapi.yaml","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/apostrophecms-openapi.yaml","title":"Apostrophecms-openapi Skill","category":"anthropic-skill","format":"yaml","content":"openapi: 3.1.0\ninfo:\n  title: ApostropheCMS REST API\n  description: |\n    **🚀 Developer freedom. Editor happiness. It just works.**\n\n    **For production use:** Download this YAML file and update the server URL\n    and cookie names to match your setup.\n\n    The ApostropheCMS REST API allows you to create, read, update, and delete content programmatically.\n    Perfect for building modern websites, mobile apps, and any digital experience that needs flexible content management.\n\n    ## Quick Start Guide\n    1. **Authentication**: Use the login endpoint to get a bearer token or session cookie\n    2. **Get Content**: Start with `/@apostrophecms/page` to fetch your page structure\n    3. **Media Files**: Upload files via `/@apostrophecms/attachment/upload`\n    4. **Internationalization**: Use `/@apostrophecms/i18n` to localize your content\n\n    ## Content Architecture\n    ApostropheCMS uses a flexible \"pieces\" system for content types. While the core system provides\n    essential pieces like users and global content, most projects define custom piece types like\n    articles, events, or products using the `@apostrophecms/piece-type` module.\n\n    ## Built-in Piece Types\n    - `@apostrophecms/user` - User accounts and profiles\n    - `@apostrophecms/global` - Site-wide content (customizable with additional fields)\n    - `@apostrophecms/image` - Image file management\n    - `@apostrophecms/file` - General file management (PDFs, documents, etc.)\n\n    ## Built-in Tag Types\n    - `@apostrophecms/image-tag` - Tags for organizing images\n    - `@apostrophecms/file-tag` - Tags for organizing files\n\n    ## Authentication Methods\n    - **Bearer Token**: Recommended for API clients and SPAs\n    - **Session Cookie**: For traditional web applications\n    - **API Key**: For server-to-server communication\n\n    ## Rate Limiting\n    API requests are rate-limited to prevent abuse. See response headers for current limits.\n\n  version: 1.0.0\n  contact:\n    name: ApostropheCMS Support\n    url: https://apostrophecms.com\n    email: support@apostrophecms.com\n  license:\n    name: MIT\n    url: https://github.com/apostrophecms/apostrophe/blob/main/LICENSE.md\n\nexternalDocs:\n  description: Full Documentation\n  url: \"https://docs.apostrophecms.org\"\n\nx-apostrophe:\n  cmsVersion: \">=4.20.0\"\n  notes: |\n    Spec versioning follows semver independently of CMS releases.\n  isCore: true\n\n  # Used by the expander to control localization flags & nicer names.\n  pieceTypes:\n    standard:\n      - '@apostrophecms/image'\n      - '@apostrophecms/file'\n      - '@apostrophecms/image-tag'\n      - '@apostrophecms/file-tag'\n      - '@apostrophecms/submitted-draft'\n\n    nonLocalizable:\n      - '@apostrophecms/user'\n      - '@apostrophecms/global'\n\n  marketingTags:\n    '@apostrophecms/image': Media\n    '@apostrophecms/file': Media\n    '@apostrophecms/image-tag': Media\n    '@apostrophecms/file-tag': Media\n    '@apostrophecms/user': Users\n    '@apostrophecms/global': Global Content\n    '@apostrophecms/submitted-draft': Submitted Draft\n\n  # 👇 fallback for any piece not listed above\n  defaultPieceMarketingTag: Custom\n\n  # adds the module name as a second tag\n  includeTechnicalTag: true\n\nsecurity:\n  # adds session authentication as the default\n  - SessionAuth: []\n\nservers:\n  - url: http://localhost:3000/api/v1\n    description: Development server\n  - url: https://your-site.com/api/v1\n    description: Production server (not for online use)\n\ntags:\n  - name: Authentication\n    description: 🚀 Login, logout, and session management for API access - start here!\n  - name: Pages\n    description: 🚀 Essential for headless sites - page structure, content, and navigation\n  - name: Users\n    description: Built-in user management and authentication\n  - name: Global Content\n    description: Site-wide settings and content that appears across pages\n  - name: Styles\n    description: Site-wide styling controls\n  - name: Submitted Drafts\n    description: Draft submission workflow and review queue management\n  - name: Media\n    description: File uploads, image management, and media organization\n  - name: Attachments\n    description: File upload utilities and image processing\n  - name: Internationalization\n    description: Multi-language support and locale management\n  - name: Custom\n    description: Project-defined piece types (your own content models)\n\nx-tagGroups:\n  - name: Start Here\n    tags: [Authentication]\n  - name: Content & Media\n    tags: [Pages, Global Content, Submitted Draft, Media, Attachments]\n  - name: People\n    tags: [Users]\n  - name: Internationalization\n    tags: [Internationalization]\n  - name: Custom\n    tags: [Custom]\n\ncomponents:\n  securitySchemes:\n    ApiKeyAuth:\n      type: apiKey\n      in: query\n      name: apikey\n      description: |\n        **Server-to-server authentication** - API key for server-to-server communication.\n        Use as query parameter: ?apikey=your-api-key-here\n\n        Configure in app.js:\n        ```javascript\n        '@apostrophecms/express': {\n          options: {\n            apiKeys: {\n              'myapikey1029384756': { role: 'admin' }\n            }\n          }\n        }\n        ```\n\n    BearerAuth:\n      type: http\n      scheme: bearer\n      description: |\n        Bearer token authentication (recommended for API clients).\n\n        **Step 1:** Close this dialog box and generate a bearer token using the `POST /@apostrophecms/login/login` endpoint below with:\n        ```json\n        {\n          \"username\": \"your-username\",\n          \"password\": \"your-password\"\n        }\n        ```\n\n        **Step 2:** Copy **only the token value** from the response (not the full JSON)\n        Example: if response is `{\"token\": \"abc123\"}`, paste only `abc123`\n        The token will be sent as: Authorization: Bearer {your-token}\n\n        **Step 3:** Reopen this dialog and paste the token value into the value field.\n\n    SessionAuth:\n      type: apiKey\n      in: cookie\n      name: project-shortname.sid\n      description: |\n        ⚠️ **For testing after download only:** Change \"project-shortname\" in the `SessionAuth` to your actual ApostropheCMS shortname (e.g., \"myapp.sid\").\n\n        💡 This authentication won't work when testing in the online ApostropheCMS sandbox. However, you can use the login route to set a cookie you can examine in your browser DevTools.\n        It will be named `project-shortname.sid`.\n\n        **Step 1:** Close this dialog and use the `POST /@apostrophecms/login/login` endpoint below with:\n        ```json\n        {\n          \"username\": \"your-username\",\n          \"password\": \"your-password\",\n          \"session\": true\n        }\n        ```\n\n        **Step 2:** Copy the session cookie value from your browser's dev tools\n        and paste it into the \"Value\" field.\n\n  parameters:\n    Page:\n      name: page\n      in: query\n      description: Page number for pagination (1-based)\n      required: false\n      schema:\n        type: integer\n        minimum: 1\n        default: 1\n      example: 2\n\n    PerPage:\n      name: perPage\n      in: query\n      description: Number of items per page\n      required: false\n      schema:\n        type: integer\n        minimum: 1\n        maximum: 100\n        default: 10\n      example: 25\n\n    Search:\n      name: search\n      in: query\n      description: Search term for filtering results\n      required: false\n      schema:\n        type: string\n      example: \"headless cms\"\n\n    Autocomplete:\n      name: autocomplete\n      in: query\n      description: Partial word search for autocomplete functionality\n      required: false\n      schema:\n        type: string\n      example: \"apost\"\n\n    AposMode:\n      name: aposMode\n      in: query\n      description: Request draft or published version of content\n      required: false\n      schema:\n        type: string\n        enum: [draft, published]\n        default: published\n      example: \"published\"\n\n    AposLocale:\n      name: aposLocale\n      in: query\n      description: Locale for internationalization (e.g., 'en', 'fr', 'es')\n      required: false\n      schema:\n        type: string\n        example: \"fr\"\n\n    ToLocale:\n      name: toLocale\n      in: path\n      required: true\n      description: Target locale code (e.g., en:us:published)\n      schema:\n        type: string\n        pattern: '^[a-z]{2}(-[A-Z]{2})?$'\n        example: en\n\n    RenderAreas:\n      name: render-areas\n      in: query\n      description: 💡 Render widget areas as HTML instead of returning raw widget data - useful for hybrid architectures\n      required: false\n      schema:\n        type: boolean\n        default: false\n      example: true\n\n    DocumentId:\n      name: _id\n      in: path\n      required: true\n      description: Computed document ID (can optionally include mode and locale, e.g., id:en:published)\n      schema:\n        type: string\n        pattern: '^\\S+$'\n        example: \"ckitdo5oq004pu69kr6oxo6fr:en:published\"\n\n    AposDocId:\n      name: aposDocId\n      in: path\n      required: true\n      description: ApostropheCMS document identifier\n      schema:\n        type: string\n        pattern: '^[a-zA-Z0-9]+$'\n        example: \"ckitdo5oq004pu69kr6oxo6fr\"\n\n    ImageDocId:\n      name: imageId\n      in: path\n      required: true\n      description: ApostropheCMS document identifier for an image\n      schema:\n        type: string\n        pattern: '^[a-zA-Z0-9]+$'\n        example: \"ck9x8v7w2000001l6h8q9d5f0\"\n\n    AllPages:\n      name: all\n      in: query\n      description: Return all pages the requester can see (system/orphan pages included). Use with caution for large sites. Default is 0.\n      schema:\n        type: integer\n        enum: [0,1]\n        default: 0\n      example: 1\n\n    FlatResponse:\n      name: flat\n      in: query\n      description: 💡 Return pages in flat array instead of tree structure - easier for some use cases. Default is 0 (nested).\n      schema:\n        type: integer\n        enum: [0,1]\n        default: 0\n      example: 1\n\n    ChildrenParam:\n      name: children\n      in: query\n      description: Include children array in response (set to 'false' to exclude). Default is true.\n      schema:\n        type: boolean\n        default: true\n      example: false\n\n  schemas:\n    _Overview_Fields:\n      type: object\n      description: |\n        # Field Types (editor-facing)\n\n        - `StringField` — basic text\n        - `IntegerField`, `FloatField` — numbers\n        - `SelectField`, `RadioField`, `CheckboxesField` — choices\n        - `AreaField`, `ArrayField`, `ObjectField`\n        - `AttachmentField`, `RelationshipField`, `RelationshipReverseField`\n\n        👉 See also: **FieldDefinition** (discriminator: `type`).\n      externalDocs:\n        description: ApostropheCMS Field Guide\n        url: https://docs.apostrophecms.org/reference/field-types/\n      title: _Overview_Fields\n    _Overview_Primitives:\n      type: object\n      description: |\n        # Content Primitives (payload-level)\n\n        These are the “data atoms” for requests and responses.\n\n        - `AposString`, `AposSlug`, `AposUrl`, `AposEmail`\n        - `AposDateTime`, `AposDate`, `AposTime`\n        - Arrays: `AposStringArray`, `AposIntegerArray`, etc.\n\n        👉 Defined under **AposPrimitives**.\n      title: _Overview_Primitives\n    _Overview_Advanced:\n      type: object\n      description: |\n        # Advanced / Internal\n\n        Used by OpenAPI for schema defs:\n        - `UiCondition` (for `if`/`requiredIf`)\n        - `OperatorObject` (query operators)\n        - `AreaOptions`, `ArrayOptions`, and other config helpers\n      title: _Overview_Advanced\n    AreaField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - area\n            description: Apostrophe field type id.\n          options:\n            $ref: '#/components/schemas/AreaOptions'\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - options\n        examples:\n        - type: area\n          label: Main content\n          options:\n            max: 3\n            expanded: true\n            widgets:\n              '@apostrophecms/image': {}\n              '@apostrophecms/rich-text':\n                toolbar:\n                - bold\n                - italic\n              '@apostrophecms/video': {}\n              '@apostrophecms/html': {}\n            groups:\n              basics:\n                label: Basic Content\n                columns: 3\n                widgets:\n                  '@apostrophecms/rich-text':\n                    toolbar:\n                    - bold\n                  '@apostrophecms/image': {}\n              embeds:\n                label: Embeds\n                columns: 2\n                widgets:\n                  '@apostrophecms/video': {}\n                  '@apostrophecms/html': {}\n      title: AreaField\n    AreaOptions:\n      type: object\n      additionalProperties: false\n      properties:\n        widgets:\n          description: |\n            Allowed widget types for this area. Keys are widget module names (e.g., \"@apostrophecms/rich-text\"). Values are per-widget options that apply *only* in this area.\n          type: object\n          additionalProperties:\n            type: object\n        groups:\n          description: |\n            Organize widgets into groups for the expanded preview menu.\n            Each group has a label, optional columns (1–4, default 3), and its own widgets map (same shape as `widgets`).\n          type: object\n          additionalProperties:\n            $ref: '#/components/schemas/AreaWidgetGroup'\n        max:\n          type: integer\n          description: Maximum number of widgets allowed in this area.\n        expanded:\n          type: boolean\n          description: Use the expanded preview menu UX.\n      required:\n      - widgets\n      title: AreaOptions\n    AreaWidgetGroup:\n      type: object\n      additionalProperties: false\n      properties:\n        label:\n          type: string\n        columns:\n          type: integer\n          minimum: 1\n          maximum: 4\n          description: Number of widget previews per row (default 3).\n        widgets:\n          type: object\n          additionalProperties:\n            type: object\n      required:\n      - label\n      - widgets\n      title: AreaWidgetGroup\n    ArrayField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: A repeatable list of objects, each with its own field schema.\n        properties:\n          type:\n            type: string\n            enum:\n            - array\n            description: Apostrophe field type id.\n          fields:\n            $ref: '#/components/schemas/Fieldset'\n          min:\n            type: integer\n            description: Minimum number of items (inclusive).\n          max:\n            type: integer\n            description: Maximum number of items (inclusive).\n          titleField:\n            type: string\n            description: Field name in each item used as the item label in the UI.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - fields\n        examples:\n        - type: array\n          label: Tasks\n          min: 0\n          max: 50\n          titleField: title\n          items:\n            type: object\n            properties:\n              title:\n                type: string\n              priority:\n                type: string\n          fields:\n            add:\n              title:\n                type: string\n                label: Task Title\n              priority:\n                type: select\n                label: Priority\n                choices:\n                - label: Low\n                  value: low\n                - label: High\n                  value: high\n      title: ArrayField\n    AttachmentField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: |\n          Lets editors upload a single file (image, PDF, etc.).\n          Use an ArrayField of AttachmentField if you need multiple files.\n        properties:\n          type:\n            type: string\n            enum:\n            - attachment\n            description: Apostrophe field type id.\n          accept:\n            oneOf:\n            - type: string\n              description: HTML \"accept\" string (e.g., \"image/*,.pdf\"). Use to limitby MIME type and/or extension.\n            - type: array\n              items:\n                type: string\n              description: List of MIME types and/or extensions (e.g., [\"image/*\",\n                \".pdf\"]).\n          maxSize:\n            type: integer\n            description: Optional max file size in bytes (documentation-only hint).\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: attachment\n          label: Resume (PDF)\n          accept:\n          - .pdf\n          required: true\n        - type: attachment\n          label: Hero Image\n          accept: image/*\n      title: AttachmentField\n    BooleanField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - boolean\n            description: Apostrophe field type id.\n          def:\n            type: boolean\n            description: Default value shown in the editor UI.\n          toggle:\n            oneOf:\n            - type: boolean\n              description: |\n                If true, use the alternate \"toggle\" UI. \n                Labels default to the field label and standard true/false text.\n            - type: object\n              additionalProperties: false\n              description: Configure custom labels for the toggle UI.\n              properties:\n                'true':\n                  type: string\n                  description: Label to display when value is true.\n                'false':\n                  type: string\n                  description: Label to display when value is false.\n        required:\n        - type\n        - label\n        examples:\n        - type: boolean\n          label: Is this a special item?\n          def: false\n        - type: boolean\n          label: Show related articles?\n          toggle:\n            'true': Show related articles\n            'false': Hide related articles\n      title: BooleanField\n    CheckboxesField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - checkboxes\n            description: Apostrophe field type id.\n          def:\n            type: array\n            items:\n              oneOf:\n              - type: string\n              - type: number\n              - type: boolean\n            description: Default selected values.\n          choices:\n            oneOf:\n            - type: array\n              description: Static choices for the checkboxes.\n              items:\n                $ref: '#/components/schemas/SelectChoice'\n            - type: string\n              description: Method name that provides choices dynamically.\n          following:\n            oneOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n            description: Populate dynamically based on other fields (supports `<` parent prefixes).\n          followingIgnore:\n            oneOf:\n            - type: boolean\n            - type: array\n              items:\n                type: string\n            description: Ignore some or all followed fields when generating values.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - choices\n        examples:\n        - type: checkboxes\n          label: Tags\n          choices:\n          - label: News\n            value: news\n          - label: Blog\n            value: blog\n          - label: Events\n            value: events\n          def:\n          - news\n          - events\n      title: CheckboxesField\n    ColorField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - color\n            description: Apostrophe field type id.\n          def:\n            type: string\n            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$\n            description: Default hex color (e.g. \"#ff0000\").\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: color\n          label: Theme Color\n          def: '#336699'\n      title: ColorField\n    DateField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/DateBoundaryOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - date\n            description: Apostrophe field type id.\n          def:\n            type: string\n            format: date\n            description: Default date shown in the editor UI (YYYY-MM-DD).\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: date\n          label: Publish Date\n          def: '2025-01-01'\n          min: '2020-01-01'\n          max: '2030-12-31'\n        - type: date\n          label: Event Date\n          if:\n            status:\n              $eq: scheduled\n      title: DateField\n    DateAndTimeField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/DateTimeBoundaryOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - dateAndTime\n            description: Apostrophe field type id.\n          def:\n            type: string\n            format: date-time\n            description: Default timestamp in RFC 3339 format (e.g., 2025-08-29T13:00:00Z).\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: dateAndTime\n          label: Starts At\n          def: '2025-08-29T13:00:00Z'\n          min: '2024-01-01T00:00:00Z'\n          max: '2026-12-31T23:59:59Z'\n        - type: dateAndTime\n          label: Reminder At\n          requiredIf:\n            remindersEnabled: true\n      title: DateAndTimeField\n    EmailField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - email\n            description: Apostrophe field type id.\n          def:\n            type: string\n            format: email\n            description: Default email address shown in the editor UI.\n          pattern:\n            type: string\n            description: Optional regex for stricter validation (in addition to HTML5\n              email validation).\n          autocomplete:\n            type: string\n            description: Value for the HTML autocomplete attribute. Common values are\n              \"email\" or \"off\".\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: email\n          label: Contact Email\n          def: info@example.com\n        - type: email\n          label: Support Email\n          autocomplete: email\n          requiredIf:\n            supportEnabled: true\n      title: EmailField\n    FloatField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/NumericRangeOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - float\n          format:\n            type: string\n            enum:\n            - float\n            description: OpenAPI hint for tooling; always \"float\".\n          def:\n            type: number\n            format: float\n            description: Default decimal value.\n        examples:\n        - type: float\n          label: Price (USD)\n          help: Enter a decimal price.\n          def: 0.0\n          min: 0\n          max: 99999.99\n          required: true\n      title: FloatField\n    IntegerField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/NumericRangeOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - integer\n            description: Apostrophe field type id.\n          def:\n            type: integer\n            description: Default integer value shown in the editor UI.\n        required:\n        - type\n        - label\n        examples:\n        - type: integer\n          label: Age\n          min: 0\n          max: 120\n          def: 18\n        - type: integer\n          label: Estimated Hours\n          min: 1\n          max: 999\n      title: IntegerField\n    ObjectField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: A nested object with its own field schema.\n        properties:\n          type:\n            type: string\n            enum:\n            - object\n          fields:\n            $ref: '#/components/schemas/Fieldset'\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - fields\n      title: ObjectField\n    OembedField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - oembed\n            description: Apostrophe field type id.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        description: |\n          Lets editors paste a media URL from an oEmbed-compatible host.\n          The editor shows an immediate preview once a valid URL is entered.\n          Stored value is an object snapshot (url/title/thumbnail).\n        examples:\n        - type: oembed\n          label: Featured video\n      title: OembedField\n    PasswordField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - password\n            description: Apostrophe field type id.\n          def:\n            type: string\n            description: Default password value (generally not used).\n          min:\n            type: integer\n            description: Minimum number of characters required.\n          max:\n            type: integer\n            description: Maximum number of characters allowed.\n          pattern:\n            type: string\n            description: Regex to enforce password rules (e.g., at least one number).\n          autocomplete:\n            type: string\n            description: HTML autocomplete attribute, usually \"new-password\" or \"current-password\".\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: password\n          label: Account Password\n          min: 8\n          autocomplete: new-password\n      title: PasswordField\n    RadioField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - radio\n            description: Apostrophe field type id.\n          def:\n            oneOf:\n            - type: string\n            - type: number\n            - type: boolean\n            description: Default selected value.\n          choices:\n            oneOf:\n            - type: array\n              description: Static choices to render as radio buttons.\n              items:\n                $ref: '#/components/schemas/SelectChoice'\n            - type: string\n              description: Method name that provides choices (e.g. \"statusChoices\").\n          following:\n            oneOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n            description: Populate dynamically based on other fields (supports `<` parent prefixes).\n          followingIgnore:\n            oneOf:\n            - type: boolean\n            - type: array\n              items:\n                type: string\n            description: Ignore some or all followed fields when generating values.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - choices\n        examples:\n        - type: radio\n          label: Priority\n          choices:\n          - label: Low\n            value: low\n          - label: High\n            value: high\n          def: low\n        - type: radio\n          label: Status\n          choices: statusChoices\n      title: RadioField\n    RangeField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/NumericRangeOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - range\n            description: Apostrophe field type id.\n          def:\n            type: number\n            description: Default slider value in the editor UI.\n          step:\n            type: number\n            description: Increment step for the slider. If omitted, defaults to 1.\n          min:\n            type: number\n            description: Minimum value for the slider.\n          max:\n            type: number\n            description: Maximum value for the slider.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: range\n          label: Satisfaction\n          min: 1\n          max: 10\n          step: 1\n          def: 5\n        - type: range\n          label: Volume\n          min: 0\n          max: 100\n          step: 5\n          def: 50\n      title: RangeField\n    RelationshipField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: |\n          Relate this document to one or more docs of another type (pieces/pages).\n          Use `max: 1` for a single-select join; omit `max` (or set >1) for multi-select.\n        properties:\n          type:\n            type: string\n            enum:\n            - relationship\n            description: Apostrophe field type id.\n          withType:\n            type: string\n            description: Module name of the related doc type (e.g., \"article\", \"@apostrophecms/image\").\n          min:\n            type: integer\n            description: Minimum number of related docs required (inclusive).\n          max:\n            type: integer\n            description: Maximum number of related docs allowed (inclusive).\n          fields:\n            $ref: '#/components/schemas/Fieldset'\n          builders:\n            type: object\n            additionalProperties: true\n            description: |\n              Apostrophe cursor builders for the related query (e.g., {project: { title: 1 }, sort: { title: 1 } }).\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - withType\n        examples:\n        - type: relationship\n          label: Author\n          withType: person\n          max: 1\n          builders:\n            project:\n              title: 1\n              _url: 1\n        - type: relationship\n          label: Related Articles\n          withType: article\n          min: 0\n          max: 5\n          fields:\n            add:\n              relationshipRole:\n                type: select\n                label: Role\n                choices:\n                - label: Primary\n                  value: primary\n                - label: Secondary\n                  value: secondary\n          builders:\n            project:\n              title: 1\n              _url: 1\n            sort:\n              title: 1\n      title: RelationshipField\n    RelationshipReverseField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: |\n          Read-only reverse side of a forward `relationship` field defined on another type.\n          Use this to show “referenced by” links without storing ids here.\n        properties:\n          type:\n            type: string\n            enum:\n            - relationshipReverse\n            description: Apostrophe field type id.\n          withType:\n            type: string\n            description: Module name that holds the forward relationship.\n          reverseOf:\n            type: string\n            description: |\n              Name of the forward relationship field on `withType` (e.g.,\"_authors\" on \"article\").\n          builders:\n            type: object\n            additionalProperties: true\n            description: Cursor builders applied when populating the reverse join.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - withType\n        - reverseOf\n        examples:\n        - type: relationshipReverse\n          label: Articles referencing this person\n          withType: article\n          reverseOf: _authors\n          builders:\n            project:\n              title: 1\n              _url: 1\n      title: RelationshipReverseField\n    SelectField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - select\n            description: Apostrophe field type id.\n          def:\n            oneOf:\n            - type: string\n            - type: number\n            - type: boolean\n            - type: array\n              items:\n                oneOf:\n                - type: string\n                - type: number\n                - type: boolean\n            description: |\n              Default value. If `multiple: true`, this should be an array.\n          multiple:\n            type: boolean\n            description: Allow selecting multiple values (stores an array).\n          choices:\n            oneOf:\n            - type: array\n              description: Static choices for the select dropdown.\n              items:\n                $ref: '#/components/schemas/SelectChoice'\n            - type: string\n              description: |\n                Name of a method that returns choices (e.g. \"sponsorNames\").\n                May be \"module:method\" to reference another module.\n          following:\n            oneOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n            description: Populate dynamically based on other fields’ values (supports `<` parent prefixes).\n          followingIgnore:\n            oneOf:\n            - type: boolean\n            - type: array\n              items:\n                type: string\n            description: Ignore some or all followed fields when generating values.\n        required:\n        - type\n        - label\n        examples:\n        - type: select\n          label: Task Priority\n          choices:\n          - label: Low\n            value: low\n          - label: Medium\n            value: medium\n          - label: High\n            value: high\n          - label: Critical\n            value: critical\n          def: medium\n        - type: select\n          label: Tags\n          multiple: true\n          choices:\n          - label: News\n            value: news\n          - label: Blog\n            value: blog\n          - label: Events\n            value: events\n          def:\n          - news\n          - events\n        - type: select\n          label: Sponsor\n          choices: sponsorNames\n          following:\n          - <projectType\n      title: SelectField\n    SelectChoice:\n      type: object\n      additionalProperties: false\n      properties:\n        label:\n          type: string\n          description: Human-friendly label shown in UI.\n        value:\n          oneOf:\n          - type: string\n          - type: number\n          - type: boolean\n          description: The stored value for this choice.\n        disabled:\n          type: boolean\n          description: If true, show but disable this option.\n      required:\n      - label\n      - value\n      title: SelectChoice\n    SlugField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - slug\n            description: Apostrophe field type id.\n          def:\n            type: string\n            description: Default slug value shown in the editor UI.\n          prefix:\n            type: string\n            description: Optional prefix automatically prepended when generating the slug.\n          source:\n            type: string\n            description: |\n              Name of the field this slug should follow (usually \"title\").\n              Works with `following`/`followingIgnore`.\n          unique:\n            type: boolean\n            description: If true, ensures slug is unique across docs of this type.\n          pattern:\n            type: string\n            description: Optional regex to further constrain allowed slugs.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: slug\n          label: URL Slug\n          source: title\n          unique: true\n          prefix: blog/\n        - type: slug\n          label: Custom Slug\n          def: my-custom-page\n      title: SlugField\n    StringField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - string\n            description: Apostrophe field type id.\n          def:\n            type: string\n            description: Default value shown in the editor UI.\n          textarea:\n            type: boolean\n            description: If true, renders a multiline textarea UI.\n          min:\n            type: integer\n            description: Minimum number of characters allowed.\n          max:\n            type: integer\n            description: Maximum number of characters allowed.\n          pattern:\n            type: string\n            description: |\n              Regular expression (string form) to validate the input.\n              Only matching values are allowed.\n          autocomplete:\n            type: string\n            description: |\n              Value of the HTML autocomplete attribute (see MDN). Use `\"off\"` to disable autocomplete.\n          following:\n            oneOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n            description: Field(s) to follow for automatic value generation. Supports `<` prefixes to access parent fields.\n          followingIgnore:\n            oneOf:\n            - type: boolean\n            - type: array\n              items:\n                type: string\n            description: Controls which `following` values are ignored.\n          sortify:\n            type: boolean\n            description: If true, creates a parallel “sortified” version of this field for case- and punctuation-insensitive sorting.\n        required:\n        - type\n        - label\n        examples:\n        - type: string\n          label: Dog Name\n          def: Fido\n        - type: string\n          label: Biography\n          textarea: true\n          max: 800\n        - type: string\n          label: Meta Description\n          following:\n          - title\n          - featured\n          followingIgnore:\n          - featured\n          if:\n            featured: true\n      title: StringField\n    TimeField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - time\n            description: Apostrophe field type id.\n          def:\n            type: string\n            pattern: ^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$\n            description: |\n              Default value in HH:MM:SS (24-hour).\n              If not set and not required, defaults to the current time.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: time\n          label: Event Time\n          def: '14:30:00'\n        - type: time\n          label: Reminder Time\n      title: TimeField\n    UrlField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - url\n            description: Apostrophe field type id.\n          def:\n            type: string\n            format: uri\n            description: Default URL shown in the editor UI.\n          pattern:\n            type: string\n            description: Optional regex for stricter validation of allowed URLs (in addition to standard URI syntax).\n          autocomplete:\n            type: string\n            description: Value for the HTML autocomplete attribute. Common values include \"url\" or \"off\".\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: url\n          label: Website\n          def: https://example.com\n        - type: url\n          label: LinkedIn Profile\n          autocomplete: url\n          requiredIf:\n            hasLinkedIn: true\n      title: UrlField\n    Page:\n      type: object\n      description: An ApostropheCMS page document with hierarchical structure and content\n        areas\n      properties:\n        _id:\n          type: string\n          description: Unique document identifier, may include mode and locale (e.g.,\n            \"id:en:published\")\n          example: ckhdscx5900054z9k88uqs16w:en:published\n        aposDocId:\n          type: string\n          description: Base document ID without mode/locale qualifiers\n          example: ckhdscx5900054z9k88uqs16w\n        aposLocale:\n          type: string\n          description: Document locale code\n          example: en\n        aposMode:\n          type: string\n          description: Document mode (draft or published)\n          enum:\n          - draft\n          - published\n          example: published\n        archived:\n          type: boolean\n          description: Whether the page is archived\n          default: false\n        createdAt:\n          type: string\n          format: date-time\n          description: Page creation timestamp\n          example: '2023-01-15T10:30:00.000Z'\n        updatedAt:\n          type: string\n          format: date-time\n          description: Page last update timestamp\n          example: '2024-12-18T14:20:00.000Z'\n        titleSortified:\n          type: string\n          description: Sortable version of the page title\n          example: about us\n        slug:\n          type: string\n          description: URL slug for the page\n          example: /about-us\n        path:\n          type: string\n          description: Full hierarchical path in the page tree\n          example: /about-us\n        rank:\n          type: integer\n          description: Sort order within parent page\n          example: 0\n        level:\n          type: integer\n          description: Depth level in the page tree (0 = root level)\n          example: 1\n        orphan:\n          type: boolean\n          description: Whether page is orphaned (not in tree structure)\n          default: false\n        parked:\n          type: array\n          description: Array of parking lot configurations if page is parked\n          items:\n            type: string\n          example: []\n        visibility:\n          type: string\n          description: Page visibility setting\n          enum:\n          - public\n          - loginRequired\n          - private\n          default: public\n          example: public\n        type:\n          type: string\n          description: Page type module name\n          example: '@apostrophecms/page'\n        title:\n          type: string\n          description: Page title\n          example: About Us\n          maxLength: 100\n        main:\n          type: object\n          description: Main content area with rich content widgets\n          properties:\n            metaType:\n              type: string\n              example: area\n            items:\n              type: array\n              items:\n                type: object\n                properties:\n                  metaType:\n                    type: string\n                    example: widget\n                  type:\n                    type: string\n                    example: '@apostrophecms/rich-text'\n                  aposPlaceholder:\n                    type: boolean\n                    default: false\n                  content:\n                    type: string\n                    description: Widget content (varies by widget type)\n                    example: <p>Welcome to our website!</p>\n                  _id:\n                    type: string\n                    example: widget-id-123\n        seoFields:\n          type: object\n          description: SEO metadata for the page\n          properties:\n            metaDescription:\n              type: string\n              description: Meta description for search engines\n              maxLength: 160\n              example: Learn about our company, mission, and values\n            metaKeywords:\n              type: string\n              description: Meta keywords (legacy, rarely used)\n              example: about, company, mission\n            ogTitle:\n              type: string\n              description: Open Graph title for social sharing\n              example: About Our Company\n            ogDescription:\n              type: string\n              description: Open Graph description for social sharing\n              example: Discover our story and what drives us forward\n            ogImage:\n              type: object\n              description: Open Graph image for social sharing\n              properties:\n                _id:\n                  type: string\n                  example: image-id-456\n                title:\n                  type: string\n                  example: Company Photo\n                attachment:\n                  type: object\n                  properties:\n                    _id:\n                      type: string\n                      example: attachment-789\n                    name:\n                      type: string\n                      example: company-photo\n                    extension:\n                      type: string\n                      example: jpg\n                    _url:\n                      type: string\n                      example: /uploads/attachments/company-photo.jpg\n        _ancestors:\n          type: array\n          description: Array of ancestor page IDs in the page tree hierarchy\n          items:\n            type: string\n          example:\n          - root-page-id\n        _children:\n          type: array\n          description: Array of child pages (when requested with children parameter)\n          items:\n            $ref: '#/components/schemas/Page'\n          example: []\n        _url:\n          type: string\n          description: Full URL to the page\n          example: https://example.com/about-us\n          format: uri\n        _edit:\n          type: boolean\n          description: Whether current user ca\n\n<!-- [TRUNCATED AT 50KB] -->","isInternal":false,"tokens":10745,"sizeBytes":50074},{"name":"ApiError.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ApiError.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ApiError.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# ApiError\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**status** | **number** | HTTP status code, e.g., 401 | [optional] [default to undefined]\n**code** | **string** | Application error code (optional) | [optional] [default to undefined]\n**message** | **string** | Human-readable error message | [default to undefined]\n**details** | **{ [key: string]: any; }** | Extra context about the error | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ApiError } from 'apostrophecms-client';\n\nconst instance: ApiError = {\n    status,\n    code,\n    message,\n    details,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":204,"sizeBytes":822},{"name":"AreaField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AreaField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AreaField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AreaField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**_options** | [**AreaOptions**](AreaOptions.md) |  | [default to undefined]\n\n## Example\n\n```typescript\nimport { AreaField } from 'apostrophecms-client';\n\nconst instance: AreaField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    _options,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":400,"sizeBytes":1521},{"name":"AreaOptions.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AreaOptions.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AreaOptions.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AreaOptions\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**widgets** | **{ [key: string]: object; }** | Allowed widget types for this area. Keys are widget module names (e.g., \\&quot;@apostrophecms/rich-text\\&quot;). Values are per-widget options that apply *only* in this area.  | [default to undefined]\n**groups** | [**{ [key: string]: AreaWidgetGroup; }**](AreaWidgetGroup.md) | Organize widgets into groups for the expanded preview menu. Each group has a label, optional columns (1–4, default 3), and its own widgets map (same shape as &#x60;widgets&#x60;).  | [optional] [default to undefined]\n**max** | **number** | Maximum number of widgets allowed in this area. | [optional] [default to undefined]\n**expanded** | **boolean** | Use the expanded preview menu UX. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AreaOptions } from 'apostrophecms-client';\n\nconst instance: AreaOptions = {\n    widgets,\n    groups,\n    max,\n    expanded,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":309,"sizeBytes":1206},{"name":"AreaWidgetGroup.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AreaWidgetGroup.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AreaWidgetGroup.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AreaWidgetGroup\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**label** | **string** |  | [default to undefined]\n**columns** | **number** | Number of widget previews per row (default 3). | [optional] [default to undefined]\n**widgets** | **{ [key: string]: object; }** |  | [default to undefined]\n\n## Example\n\n```typescript\nimport { AreaWidgetGroup } from 'apostrophecms-client';\n\nconst instance: AreaWidgetGroup = {\n    label,\n    columns,\n    widgets,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":173,"sizeBytes":691},{"name":"ArrayField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ArrayField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ArrayField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# ArrayField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**fields** | [**Fieldset**](Fieldset.md) |  | [default to undefined]\n**min** | **number** | Minimum number of items (inclusive). | [optional] [default to undefined]\n**max** | **number** | Maximum number of items (inclusive). | [optional] [default to undefined]\n**titleField** | **string** | Field name in each item used as the item label in the UI. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ArrayField } from 'apostrophecms-client';\n\nconst instance: ArrayField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    fields,\n    min,\n    max,\n    titleField,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":488,"sizeBytes":1864},{"name":"Attachment.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/Attachment.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/Attachment.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# Attachment\n\nFile attachment information from upload endpoint\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_id** | **string** | Unique attachment identifier | [optional] [default to undefined]\n**_url** | **string** | URL to the original file | [optional] [default to undefined]\n**_urls** | **{ [key: string]: string; }** | URLs for different image sizes (images only) | [optional] [default to undefined]\n**name** | **string** | Slugified filename | [optional] [default to undefined]\n**title** | **string** | Sortified filename | [optional] [default to undefined]\n**extension** | **string** | File extension | [optional] [default to undefined]\n**type** | **string** |  | [optional] [default to undefined]\n**group** | **string** | File group type | [optional] [default to undefined]\n**length** | **number** | File size in bytes | [optional] [default to undefined]\n**md5** | **string** | MD5 checksum | [optional] [default to undefined]\n**width** | **number** | Image width in pixels (images only) | [optional] [default to undefined]\n**height** | **number** | Image height in pixels (images only) | [optional] [default to undefined]\n**landscape** | **boolean** | Whether image is landscape orientation (images only) | [optional] [default to undefined]\n**portrait** | **boolean** | Whether image is portrait orientation (images only) | [optional] [default to undefined]\n**docIds** | **Array&lt;string&gt;** | IDs of documents using this attachment | [optional] [default to undefined]\n**archivedDocIds** | **Array&lt;string&gt;** | IDs of archived documents using this attachment | [optional] [default to undefined]\n**createdAt** | **string** |  | [optional] [default to undefined]\n**updatedAt** | **string** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { Attachment } from 'apostrophecms-client';\n\nconst instance: Attachment = {\n    _id,\n    _url,\n    _urls,\n    name,\n    title,\n    extension,\n    type,\n    group,\n    length,\n    md5,\n    width,\n    height,\n    landscape,\n    portrait,\n    docIds,\n    archivedDocIds,\n    createdAt,\n    updatedAt,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":577,"sizeBytes":2314},{"name":"AttachmentCropRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AttachmentCropRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AttachmentCropRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AttachmentCropRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_id** | **string** | The _id property of an existing image attachment document | [default to undefined]\n**crop** | [**AttachmentCropRequestCrop**](AttachmentCropRequestCrop.md) |  | [default to undefined]\n\n## Example\n\n```typescript\nimport { AttachmentCropRequest } from 'apostrophecms-client';\n\nconst instance: AttachmentCropRequest = {\n    _id,\n    crop,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":156,"sizeBytes":664},{"name":"AttachmentCropRequestCrop.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AttachmentCropRequestCrop.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AttachmentCropRequestCrop.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AttachmentCropRequestCrop\n\nCrop coordinates and dimensions\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**top** | **number** | Top coordinate of the crop area (pixels) | [default to undefined]\n**left** | **number** | Left coordinate of the crop area (pixels) | [default to undefined]\n**width** | **number** | Width of the crop area (pixels) | [default to undefined]\n**height** | **number** | Height of the crop area (pixels) | [default to undefined]\n\n## Example\n\n```typescript\nimport { AttachmentCropRequestCrop } from 'apostrophecms-client';\n\nconst instance: AttachmentCropRequestCrop = {\n    top,\n    left,\n    width,\n    height,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":208,"sizeBytes":870},{"name":"AttachmentField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AttachmentField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AttachmentField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AttachmentField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**accept** | [**AttachmentFieldAllOfAccept**](AttachmentFieldAllOfAccept.md) |  | [optional] [default to undefined]\n**maxSize** | **number** | Optional max file size in bytes (documentation-only hint). | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AttachmentField } from 'apostrophecms-client';\n\nconst instance: AttachmentField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    accept,\n    maxSize,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":439,"sizeBytes":1711},{"name":"AttachmentFieldAllOfAccept.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AttachmentFieldAllOfAccept.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AttachmentFieldAllOfAccept.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AttachmentFieldAllOfAccept\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n\n## Example\n\n```typescript\nimport { AttachmentFieldAllOfAccept } from 'apostrophecms-client';\n\nconst instance: AttachmentFieldAllOfAccept = {\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":104,"sizeBytes":453},{"name":"AttachmentsApi.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AttachmentsApi.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AttachmentsApi.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AttachmentsApi\n\nAll URIs are relative to *http://localhost:3000/api/v1*\n\n|Method | HTTP request | Description|\n|------------- | ------------- | -------------|\n|[**attachmentCrop**](#attachmentcrop) | **POST** /@apostrophecms/attachment/crop | Crop image attachment|\n|[**attachmentUpload**](#attachmentupload) | **POST** /@apostrophecms/attachment/upload | Upload media file|\n\n# **attachmentCrop**\n> boolean attachmentCrop(attachmentCropRequest)\n\nCreate a cropped version of an existing image attachment. The crop object is appended to the crops array property of the attachment document. The newly uploaded image file will be stored with a filename using the crop properties: {_id}-{name}.{top}.{left}.{width}.{height}.{extension} \n\n### Example\n\n```typescript\nimport {\n    AttachmentsApi,\n    Configuration,\n    AttachmentCropRequest\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AttachmentsApi(configuration);\n\nlet attachmentCropRequest: AttachmentCropRequest; //\nlet aposMode: 'draft' | 'published'; //Request draft or published version of content (optional) (default to 'published')\nlet aposLocale: string; //Locale for internationalization (e.g., \\'en\\', \\'fr\\', \\'es\\') (optional) (default to undefined)\n\nconst { status, data } = await apiInstance.attachmentCrop(\n    attachmentCropRequest,\n    aposMode,\n    aposLocale\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **attachmentCropRequest** | **AttachmentCropRequest**|  | |\n| **aposMode** | [**&#39;draft&#39; | &#39;published&#39;**]**Array<&#39;draft&#39; &#124; &#39;published&#39;>** | Request draft or published version of content | (optional) defaults to 'published'|\n| **aposLocale** | [**string**] | Locale for internationalization (e.g., \\&#39;en\\&#39;, \\&#39;fr\\&#39;, \\&#39;es\\&#39;) | (optional) defaults to undefined|\n\n\n### Return type\n\n**boolean**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: application/json\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Image cropped successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**401** | Authentication required |  -  |\n|**404** | Resource not found |  -  |\n|**422** | Unprocessable entity - crop coordinates exceed image bounds |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **attachmentUpload**\n> Attachment attachmentUpload()\n\nUpload a media file to create an attachment. The uploaded file can then be used to create image or file documents. Uses multipart/form-data encoding with the file uploaded under the name \\'file\\'. \n\n### Example\n\n```typescript\nimport {\n    AttachmentsApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AttachmentsApi(configuration);\n\nlet file: File; //The file to upload (default to undefined)\nlet aposMode: 'draft' | 'published'; //Request draft or published version of content (optional) (default to 'published')\nlet aposLocale: string; //Locale for internationalization (e.g., \\'en\\', \\'fr\\', \\'es\\') (optional) (default to undefined)\n\nconst { status, data } = await apiInstance.attachmentUpload(\n    file,\n    aposMode,\n    aposLocale\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **file** | [**File**] | The file to upload | defaults to undefined|\n| **aposMode** | [**&#39;draft&#39; | &#39;published&#39;**]**Array<&#39;draft&#39; &#124; &#39;published&#39;>** | Request draft or published version of content | (optional) defaults to 'published'|\n| **aposLocale** | [**string**] | Locale for internationalization (e.g., \\&#39;en\\&#39;, \\&#39;fr\\&#39;, \\&#39;es\\&#39;) | (optional) defaults to undefined|\n\n\n### Return type\n\n**Attachment**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: multipart/form-data\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | File uploaded successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**401** | Authentication required |  -  |\n|**413** | File too large |  -  |\n|**415** | Unsupported file type |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n","isInternal":false,"tokens":1268,"sizeBytes":5065},{"name":"AuthContext200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AuthContext200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AuthContext200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AuthContext200Response\n\nAdditional context based on configuration\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**localLogin** | **boolean** | Whether local login is enabled | [optional] [default to undefined]\n**passwordReset** | **boolean** | Whether password reset is enabled | [optional] [default to undefined]\n**loginUrl** | **string** | The configured login URL | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthContext200Response } from 'apostrophecms-client';\n\nconst instance: AuthContext200Response = {\n    localLogin,\n    passwordReset,\n    loginUrl,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":187,"sizeBytes":823},{"name":"AuthContextPost200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AuthContextPost200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AuthContextPost200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AuthContextPost200Response\n\nAdditional context based on configuration\\\"\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**localLogin** | **boolean** | Whether local login is enabled | [optional] [default to undefined]\n**passwordReset** | **boolean** | Whether password reset is enabled | [optional] [default to undefined]\n**loginUrl** | **string** | The configured login URL | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthContextPost200Response } from 'apostrophecms-client';\n\nconst instance: AuthContextPost200Response = {\n    localLogin,\n    passwordReset,\n    loginUrl,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":191,"sizeBytes":837},{"name":"AuthenticationApi.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AuthenticationApi.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AuthenticationApi.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AuthenticationApi\n\nAll URIs are relative to *http://localhost:3000/api/v1*\n\n|Method | HTTP request | Description|\n|------------- | ------------- | -------------|\n|[**authContext**](#authcontext) | **GET** /@apostrophecms/login/context | Get login context information|\n|[**authContextPost**](#authcontextpost) | **POST** /@apostrophecms/login/context | Get login context information|\n|[**authLogin**](#authlogin) | **POST** /@apostrophecms/login/login | Login to get authentication token|\n|[**authLogout**](#authlogout) | **POST** /@apostrophecms/login/logout | Logout and invalidate session|\n|[**authReset**](#authreset) | **POST** /@apostrophecms/login/reset | Complete password reset|\n|[**authResetRequest**](#authresetrequest) | **POST** /@apostrophecms/login/reset-request | Request password reset|\n|[**authWhoAmI**](#authwhoami) | **GET** /@apostrophecms/login/whoami | Get current user information|\n|[**authWhoAmIPost**](#authwhoamipost) | **POST** /@apostrophecms/login/whoami | Get current user information|\n\n# **authContext**\n> AuthContext200Response authContext()\n\n**⚠️ DEPRECATED:** This GET endpoint is deprecated due to caching issues. Use the POST method instead.  Returns login context information including environment and requirements. This endpoint provides information about the login system configuration.  **Useful for:** - Understanding available login methods - Checking if password reset is enabled - Getting login system configuration \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authContext();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthContext200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Login context retrieved successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authContextPost**\n> AuthContextPost200Response authContextPost()\n\nReturns login context information including environment and requirements. This endpoint provides information about the login system configuration.  **Note:** POST method is recommended for this endpoint to avoid caching issues.  **Useful for:** - Understanding available login methods - Checking if password reset is enabled - Getting login system configuration \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authContextPost();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthContextPost200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Login context retrieved successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authLogin**\n> AuthLogin200Response authLogin(authLoginRequest)\n\n🚀 **Start here!** Authenticate and receive either a bearer token or session cookie for subsequent API requests.  **Perfect for:** - Getting started with the API - Setting up authentication for your app - Testing API access  **Choose your authentication method:** - **Bearer Token** (recommended): omit `session` field or set to `false` - **Session Cookie**: set `session` to `true` and include `credentials: \\'include\\'` in fetch \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration,\n    AuthLoginRequest\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nlet authLoginRequest: AuthLoginRequest; //\n\nconst { status, data } = await apiInstance.authLogin(\n    authLoginRequest\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **authLoginRequest** | **AuthLoginRequest**|  | |\n\n\n### Return type\n\n**AuthLogin200Response**\n\n### Authorization\n\nNo authorization required\n\n### HTTP request headers\n\n - **Content-Type**: application/json\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Login successful |  * Set-Cookie - Session cookie (only when session&#x3D;true) <br>  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**401** | Authentication required |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authLogout**\n> AuthLogout200Response authLogout()\n\nEnd the current session or invalidate the bearer token.  **For bearer token**: include Authorization header **For session cookie**: include credentials in request \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authLogout();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthLogout200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Logout successful |  -  |\n|**401** | Authentication required |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authReset**\n> AuthReset200Response authReset(authResetRequest)\n\nCompletes a password reset using the token provided in the reset email.  **⚠️ Note:** This endpoint is only available when `passwordReset` is enabled in the login module configuration.  Reset tokens are valid for the number of hours specified in `passwordResetHours` (default: 48 hours). \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration,\n    AuthResetRequest\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nlet authResetRequest: AuthResetRequest; //\n\nconst { status, data } = await apiInstance.authReset(\n    authResetRequest\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **authResetRequest** | **AuthResetRequest**|  | |\n\n\n### Return type\n\n**AuthReset200Response**\n\n### Authorization\n\nNo authorization required\n\n### HTTP request headers\n\n - **Content-Type**: application/json\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Password reset completed successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**404** | Resource not found |  -  |\n|**410** | Reset token expired |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authResetRequest**\n> AuthResetRequest200Response authResetRequest(authResetRequestRequest)\n\nInitiates a password reset process by sending a reset link to the user\\'s email address.  **⚠️ Note:** This endpoint is only available when `passwordReset` is enabled in the login module configuration.  **Security feature:** The user will not be notified if the email check fails or if the email fails to send. However, debug information will be output in the server terminal. \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration,\n    AuthResetRequestRequest\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nlet authResetRequestRequest: AuthResetRequestRequest; //\n\nconst { status, data } = await apiInstance.authResetRequest(\n    authResetRequestRequest\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **authResetRequestRequest** | **AuthResetRequestRequest**|  | |\n\n\n### Return type\n\n**AuthResetRequest200Response**\n\n### Authorization\n\nNo authorization required\n\n### HTTP request headers\n\n - **Content-Type**: application/json\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Password reset request processed (always returns success for security) |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**404** | Resource not found |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authWhoAmI**\n> AuthWhoAmI200Response authWhoAmI()\n\n**⚠️ DEPRECATED:** This GET endpoint is deprecated due to caching issues. Use the POST method instead.  Returns information about the currently authenticated user.  **Security note:** Only explicitly configured fields are returned, never the complete user object. This prevents accidental exposure of sensitive user data. \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authWhoAmI();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthWhoAmI200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Current user information retrieved successfully |  -  |\n|**401** | Authentication required |  -  |\n|**404** | Resource not found |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authWhoAmIPost**\n> AuthWhoAmI200Response authWhoAmIPost()\n\nReturns information about the currently authenticated user.  **Note:** POST method is recommended for this endpoint to avoid caching issues.  **Perfect for:** - Checking if authentication is working - Getting user details for your app - Validating permissions  **Security note:** Only explicitly configured fields are returned,  never the complete user object. This prevents accidental exposure  of sensitive user data. \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authWhoAmIPost();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthWhoAmI200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Current user information retrieved successfully |  -  |\n|**401** | Authentication required |  -  |\n|**404** | Resource not found |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n","isInternal":false,"tokens":3076,"sizeBytes":13571},{"name":"AuthLogin200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AuthLogin200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AuthLogin200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AuthLogin200Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**token** | **string** | Bearer token (only present when session is false/omitted) | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthLogin200Response } from 'apostrophecms-client';\n\nconst instance: AuthLogin200Response = {\n    token,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":135,"sizeBytes":565},{"name":"AuthLoginRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AuthLoginRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AuthLoginRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AuthLoginRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**username** | **string** | User\\&#39;s login username | [default to undefined]\n**password** | **string** | User\\&#39;s password | [default to undefined]\n**session** | **boolean** | Set to true to receive session cookie instead of bearer token | [optional] [default to false]\n\n## Example\n\n```typescript\nimport { AuthLoginRequest } from 'apostrophecms-client';\n\nconst instance: AuthLoginRequest = {\n    username,\n    password,\n    session,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":176,"sizeBytes":740},{"name":"AuthLogout200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AuthLogout200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AuthLogout200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AuthLogout200Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**success** | **boolean** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthLogout200Response } from 'apostrophecms-client';\n\nconst instance: AuthLogout200Response = {\n    success,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":122,"sizeBytes":516},{"name":"AuthReset200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AuthReset200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AuthReset200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AuthReset200Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**success** | **boolean** |  | [optional] [default to undefined]\n**message** | **string** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthReset200Response } from 'apostrophecms-client';\n\nconst instance: AuthReset200Response = {\n    success,\n    message,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":143,"sizeBytes":590},{"name":"AuthReset410Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AuthReset410Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AuthReset410Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AuthReset410Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**error** | **string** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthReset410Response } from 'apostrophecms-client';\n\nconst instance: AuthReset410Response = {\n    error,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":122,"sizeBytes":508},{"name":"AuthResetRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AuthResetRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**token** | **string** | Reset token from the password reset email | [default to undefined]\n**password** | **string** | New password for the user account | [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthResetRequest } from 'apostrophecms-client';\n\nconst instance: AuthResetRequest = {\n    token,\n    password,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":145,"sizeBytes":627},{"name":"AuthResetRequest200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequest200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequest200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AuthResetRequest200Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**success** | **boolean** |  | [optional] [default to undefined]\n**message** | **string** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthResetRequest200Response } from 'apostrophecms-client';\n\nconst instance: AuthResetRequest200Response = {\n    success,\n    message,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":146,"sizeBytes":611},{"name":"AuthResetRequestRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequestRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequestRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AuthResetRequestRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**email** | **string** | Email address of the user requesting password reset | [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthResetRequestRequest } from 'apostrophecms-client';\n\nconst instance: AuthResetRequestRequest = {\n    email,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":126,"sizeBytes":557},{"name":"AuthWhoAmI200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/AuthWhoAmI200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/AuthWhoAmI200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# AuthWhoAmI200Response\n\nAdditional fields based on whoamiFields configuration\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_id** | **string** | User\\&#39;s unique identifier | [optional] [default to undefined]\n**username** | **string** | User\\&#39;s login username | [optional] [default to undefined]\n**title** | **string** | User\\&#39;s display name | [optional] [default to undefined]\n**email** | **string** | User\\&#39;s email address (if configured in whoamiFields) | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthWhoAmI200Response } from 'apostrophecms-client';\n\nconst instance: AuthWhoAmI200Response = {\n    _id,\n    username,\n    title,\n    email,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":234,"sizeBytes":922},{"name":"BaseField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/BaseField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/BaseField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# BaseField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id (e.g., \\&quot;float\\&quot;, \\&quot;string\\&quot;, \\&quot;boolean\\&quot;). | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BaseField } from 'apostrophecms-client';\n\nconst instance: BaseField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":404,"sizeBytes":1503},{"name":"BooleanField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/BooleanField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/BooleanField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# BooleanField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **boolean** | Default value shown in the editor UI. | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**toggle** | [**BooleanFieldAllOfToggle**](BooleanFieldAllOfToggle.md) |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BooleanField } from 'apostrophecms-client';\n\nconst instance: BooleanField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    toggle,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":414,"sizeBytes":1602},{"name":"BooleanFieldAllOfToggle.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/BooleanFieldAllOfToggle.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/BooleanFieldAllOfToggle.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# BooleanFieldAllOfToggle\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_true** | **string** | Label to display when value is true. | [optional] [default to undefined]\n**_false** | **string** | Label to display when value is false. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BooleanFieldAllOfToggle } from 'apostrophecms-client';\n\nconst instance: BooleanFieldAllOfToggle = {\n    _true,\n    _false,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":164,"sizeBytes":665},{"name":"BooleanFieldAllOfToggleOneOf.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/BooleanFieldAllOfToggleOneOf.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/BooleanFieldAllOfToggleOneOf.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# BooleanFieldAllOfToggleOneOf\n\nConfigure custom labels for the toggle UI.\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_true** | **string** | Label to display when value is true. | [optional] [default to undefined]\n**_false** | **string** | Label to display when value is false. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BooleanFieldAllOfToggleOneOf } from 'apostrophecms-client';\n\nconst instance: BooleanFieldAllOfToggleOneOf = {\n    _true,\n    _false,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":178,"sizeBytes":723},{"name":"BulkOperationRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/BulkOperationRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/BulkOperationRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# BulkOperationRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_ids** | **Array&lt;string&gt;** | Array of document IDs to operate on | [default to undefined]\n\n## Example\n\n```typescript\nimport { BulkOperationRequest } from 'apostrophecms-client';\n\nconst instance: BulkOperationRequest = {\n    _ids,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":129,"sizeBytes":543},{"name":"BulkOperationResponse.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/BulkOperationResponse.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/BulkOperationResponse.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# BulkOperationResponse\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**success** | **boolean** |  | [optional] [default to undefined]\n**modified** | **number** | Number of documents affected | [optional] [default to undefined]\n**errors** | **Array&lt;string&gt;** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BulkOperationResponse } from 'apostrophecms-client';\n\nconst instance: BulkOperationResponse = {\n    success,\n    modified,\n    errors,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":169,"sizeBytes":711},{"name":"CheckboxesField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# CheckboxesField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | [**Array&lt;CheckboxesFieldAllOfDef&gt;**](CheckboxesFieldAllOfDef.md) | Default selected values. | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**choices** | [**CheckboxesFieldAllOfChoices**](CheckboxesFieldAllOfChoices.md) |  | [default to undefined]\n**following** | [**CheckboxesFieldAllOfFollowing**](CheckboxesFieldAllOfFollowing.md) |  | [optional] [default to undefined]\n**followingIgnore** | [**CheckboxesFieldAllOfFollowingIgnore**](CheckboxesFieldAllOfFollowingIgnore.md) |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { CheckboxesField } from 'apostrophecms-client';\n\nconst instance: CheckboxesField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    choices,\n    following,\n    followingIgnore,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":508,"sizeBytes":1960},{"name":"CheckboxesFieldAllOfChoices.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfChoices.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfChoices.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# CheckboxesFieldAllOfChoices\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n\n## Example\n\n```typescript\nimport { CheckboxesFieldAllOfChoices } from 'apostrophecms-client';\n\nconst instance: CheckboxesFieldAllOfChoices = {\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":107,"sizeBytes":456},{"name":"CheckboxesFieldAllOfDef.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfDef.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfDef.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# CheckboxesFieldAllOfDef\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n\n## Example\n\n```typescript\nimport { CheckboxesFieldAllOfDef } from 'apostrophecms-client';\n\nconst instance: CheckboxesFieldAllOfDef = {\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":107,"sizeBytes":444},{"name":"CheckboxesFieldAllOfFollowing.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfFollowing.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfFollowing.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# CheckboxesFieldAllOfFollowing\n\nPopulate dynamically based on other fields (supports `<` parent prefixes).\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n\n## Example\n\n```typescript\nimport { CheckboxesFieldAllOfFollowing } from 'apostrophecms-client';\n\nconst instance: CheckboxesFieldAllOfFollowing = {\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":121,"sizeBytes":537},{"name":"CheckboxesFieldAllOfFollowingIgnore.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfFollowingIgnore.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/CheckboxesFieldAllOfFollowingIgnore.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# CheckboxesFieldAllOfFollowingIgnore\n\nIgnore some or all followed fields when generating values.\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n\n## Example\n\n```typescript\nimport { CheckboxesFieldAllOfFollowingIgnore } from 'apostrophecms-client';\n\nconst instance: CheckboxesFieldAllOfFollowingIgnore = {\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":120,"sizeBytes":539},{"name":"ColorField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ColorField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ColorField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# ColorField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **string** | Default hex color (e.g. \\&quot;#ff0000\\&quot;). | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ColorField } from 'apostrophecms-client';\n\nconst instance: ColorField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":392,"sizeBytes":1483},{"name":"CreatePieceRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/CreatePieceRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/CreatePieceRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# CreatePieceRequest\n\nGeneric structure for creating any piece type\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**title** | **string** | Piece title (required for all piece types) | [default to undefined]\n**slug** | **string** | URL slug (auto-generated from title if not provided) | [optional] [default to undefined]\n**visibility** | **string** | Visibility setting | [optional] [default to VisibilityEnum_Public]\n**archived** | **boolean** | Whether the piece is archived | [optional] [default to false]\n\n## Example\n\n```typescript\nimport { CreatePieceRequest } from 'apostrophecms-client';\n\nconst instance: CreatePieceRequest = {\n    title,\n    slug,\n    visibility,\n    archived,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":213,"sizeBytes":920},{"name":"DateAndTimeField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/DateAndTimeField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/DateAndTimeField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# DateAndTimeField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **string** | Default timestamp in RFC 3339 format (e.g., 2025-08-29T13:00:00Z). | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**min** | **string** | Minimum allowed timestamp (inclusive), RFC 3339. | [optional] [default to undefined]\n**max** | **string** | Maximum allowed timestamp (inclusive), RFC 3339. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { DateAndTimeField } from 'apostrophecms-client';\n\nconst instance: DateAndTimeField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    min,\n    max,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":467,"sizeBytes":1754},{"name":"DateBoundaryOptions.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/DateBoundaryOptions.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/DateBoundaryOptions.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# DateBoundaryOptions\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**min** | **string** | Minimum allowed date (inclusive), ISO-8601 (YYYY-MM-DD). | [optional] [default to undefined]\n**max** | **string** | Maximum allowed date (inclusive), ISO-8601 (YYYY-MM-DD). | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { DateBoundaryOptions } from 'apostrophecms-client';\n\nconst instance: DateBoundaryOptions = {\n    min,\n    max,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":168,"sizeBytes":682},{"name":"DateField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/DateField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/DateField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# DateField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **string** | Default date shown in the editor UI (YYYY-MM-DD). | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**min** | **string** | Minimum allowed date (inclusive), ISO-8601 (YYYY-MM-DD). | [optional] [default to undefined]\n**max** | **string** | Maximum allowed date (inclusive), ISO-8601 (YYYY-MM-DD). | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { DateField } from 'apostrophecms-client';\n\nconst instance: DateField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    min,\n    max,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":454,"sizeBytes":1732},{"name":"DateTimeBoundaryOptions.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/DateTimeBoundaryOptions.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/DateTimeBoundaryOptions.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# DateTimeBoundaryOptions\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**min** | **string** | Minimum allowed timestamp (inclusive), RFC 3339. | [optional] [default to undefined]\n**max** | **string** | Maximum allowed timestamp (inclusive), RFC 3339. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { DateTimeBoundaryOptions } from 'apostrophecms-client';\n\nconst instance: DateTimeBoundaryOptions = {\n    min,\n    max,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":160,"sizeBytes":678},{"name":"DifferentHostnameResponse.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/DifferentHostnameResponse.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/DifferentHostnameResponse.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# DifferentHostnameResponse\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**redirectTo** | **string** | Full URL to redirect to with cross-domain session token | [default to undefined]\n\n## Example\n\n```typescript\nimport { DifferentHostnameResponse } from 'apostrophecms-client';\n\nconst instance: DifferentHostnameResponse = {\n    redirectTo,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":125,"sizeBytes":577},{"name":"EmailField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/EmailField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/EmailField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# EmailField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **string** | Default email address shown in the editor UI. | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**pattern** | **string** | Optional regex for stricter validation (in addition to HTML5 email validation). | [optional] [default to undefined]\n**autocomplete** | **string** | Value for the HTML autocomplete attribute. Common values are \\&quot;email\\&quot; or \\&quot;off\\&quot;. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { EmailField } from 'apostrophecms-client';\n\nconst instance: EmailField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    pattern,\n    autocomplete,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":464,"sizeBytes":1826},{"name":"Error.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/Error.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/Error.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# ModelError\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**status** | **number** | HTTP status code, e.g., 401 | [optional] [default to undefined]\n**code** | **string** | Application error code (optional) | [optional] [default to undefined]\n**message** | **string** | Human-readable error message | [default to undefined]\n**details** | **{ [key: string]: any; }** | Extra context about the error | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ModelError } from 'apostrophecms-client';\n\nconst instance: ModelError = {\n    status,\n    code,\n    message,\n    details,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":204,"sizeBytes":828},{"name":"ExistInLocaleRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ExistInLocaleRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ExistInLocaleRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# ExistInLocaleRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**ids** | **Array&lt;string&gt;** | Array of document IDs to check | [default to undefined]\n**locale** | **string** | Locale to check documents in | [default to undefined]\n**mode** | **string** | Mode to check documents in | [default to undefined]\n\n## Example\n\n```typescript\nimport { ExistInLocaleRequest } from 'apostrophecms-client';\n\nconst instance: ExistInLocaleRequest = {\n    ids,\n    locale,\n    mode,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":173,"sizeBytes":714},{"name":"ExistInLocaleResponse.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ExistInLocaleResponse.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ExistInLocaleResponse.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# ExistInLocaleResponse\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**originalLocaleIds** | **Array&lt;string&gt;** | Array of document IDs in the original locale and mode | [optional] [default to undefined]\n**newLocaleIds** | **Array&lt;string&gt;** | Array of document IDs in the new locale | [optional] [default to undefined]\n**aposDocIds** | **Array&lt;string&gt;** | Array of aposDocId values for the documents | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ExistInLocaleResponse } from 'apostrophecms-client';\n\nconst instance: ExistInLocaleResponse = {\n    originalLocaleIds,\n    newLocaleIds,\n    aposDocIds,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":217,"sizeBytes":879},{"name":"FieldDefinition.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FieldDefinition.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FieldDefinition.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# FieldDefinition\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**toggle** | [**BooleanFieldAllOfToggle**](BooleanFieldAllOfToggle.md) |  | [optional] [default to undefined]\n**textarea** | **boolean** | If true, renders a multiline textarea UI. | [optional] [default to undefined]\n**min** | **number** | Minimum number of related docs required (inclusive). | [optional] [default to undefined]\n**max** | **number** | Maximum number of related docs allowed (inclusive). | [optional] [default to undefined]\n**pattern** | **string** | Optional regex to further constrain allowed slugs. | [optional] [default to undefined]\n**autocomplete** | **string** | Value for the HTML autocomplete attribute. Common values include \\&quot;url\\&quot; or \\&quot;off\\&quot;. | [optional] [default to undefined]\n**following** | [**CheckboxesFieldAllOfFollowing**](CheckboxesFieldAllOfFollowing.md) |  | [optional] [default to undefined]\n**followingIgnore** | [**CheckboxesFieldAllOfFollowingIgnore**](CheckboxesFieldAllOfFollowingIgnore.md) |  | [optional] [default to undefined]\n**sortify** | **boolean** | If true, creates a parallel “sortified” version of this field for case- and punctuation-insensitive sorting. | [optional] [default to undefined]\n**format** | **string** | OpenAPI hint for tooling; always \\&quot;float\\&quot;. | [optional] [default to undefined]\n**multiple** | **boolean** | Allow selecting multiple values (stores an array). | [optional] [default to undefined]\n**choices** | [**CheckboxesFieldAllOfChoices**](CheckboxesFieldAllOfChoices.md) |  | [default to undefined]\n**prefix** | **string** | Optional prefix automatically prepended when generating the slug. | [optional] [default to undefined]\n**source** | **string** | Name of the field this slug should follow (usually \\&quot;title\\&quot;). Works with &#x60;following&#x60;/&#x60;followingIgnore&#x60;.  | [optional] [default to undefined]\n**unique** | **boolean** | If true, ensures slug is unique across docs of this type. | [optional] [default to undefined]\n**step** | **number** | Increment step for the slider. If omitted, defaults to 1. | [optional] [default to undefined]\n**fields** | [**Fieldset**](Fieldset.md) |  | [default to undefined]\n**titleField** | **string** | Field name in each item used as the item label in the UI. | [optional] [default to undefined]\n**_options** | [**AreaOptions**](AreaOptions.md) |  | [default to undefined]\n**accept** | [**AttachmentFieldAllOfAccept**](AttachmentFieldAllOfAccept.md) |  | [optional] [default to undefined]\n**maxSize** | **number** | Optional max file size in bytes (documentation-only hint). | [optional] [default to undefined]\n**withType** | **string** | Module name that holds the forward relationship. | [default to undefined]\n**builders** | **{ [key: string]: any; }** | Cursor builders applied when populating the reverse join. | [optional] [default to undefined]\n**reverseOf** | **string** | Name of the forward relationship field on &#x60;withType&#x60; (e.g.,\\&quot;_authors\\&quot; on \\&quot;article\\&quot;).  | [default to undefined]\n\n## Example\n\n```typescript\nimport { FieldDefinition } from 'apostrophecms-client';\n\nconst instance: FieldDefinition = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    toggle,\n    textarea,\n    min,\n    max,\n    pattern,\n    autocomplete,\n    following,\n    followingIgnore,\n    sortify,\n    format,\n    multiple,\n    choices,\n    prefix,\n    source,\n    unique,\n    step,\n    fields,\n    titleField,\n    _options,\n    accept,\n    maxSize,\n    withType,\n    builders,\n    reverseOf,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":1232,"sizeBytes":4767},{"name":"FieldPredicate.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FieldPredicate.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FieldPredicate.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# FieldPredicate\n\nA simple equality (primitive) or an OperatorObject. :contentReference[oaicite:5]{index=5}\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**$eq** | **any** |  | [optional] [default to undefined]\n**$ne** | **any** |  | [optional] [default to undefined]\n**$gt** | **number** |  | [optional] [default to undefined]\n**$gte** | **number** |  | [optional] [default to undefined]\n**$lt** | **number** |  | [optional] [default to undefined]\n**$lte** | **number** |  | [optional] [default to undefined]\n**$in** | **Array&lt;any&gt;** |  | [optional] [default to undefined]\n**$nin** | **Array&lt;any&gt;** |  | [optional] [default to undefined]\n**$exists** | **boolean** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { FieldPredicate } from 'apostrophecms-client';\n\nconst instance: FieldPredicate = {\n    $eq,\n    $ne,\n    $gt,\n    $gte,\n    $lt,\n    $lte,\n    $in,\n    $nin,\n    $exists,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":337,"sizeBytes":1157},{"name":"Fieldset.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/Fieldset.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/Fieldset.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# Fieldset\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**add** | [**{ [key: string]: FieldDefinition; }**](FieldDefinition.md) |  | [default to undefined]\n\n## Example\n\n```typescript\nimport { Fieldset } from 'apostrophecms-client';\n\nconst instance: Fieldset = {\n    add,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n","isInternal":false,"tokens":128,"sizeBytes":508},{"name":"File.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/File.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/File.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFile.md -->","isInternal":false,"tokens":368,"sizeBytes":1455},{"name":"FileAttachment.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FileAttachment.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FileAttachment.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileAttachment.md -->","isInternal":false,"tokens":214,"sizeBytes":857},{"name":"FileGet200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FileGet200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FileGet200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileGet200Response.md -->","isInternal":false,"tokens":187,"sizeBytes":732},{"name":"FileObject.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FileObject.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FileObject.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileObject.md -->","isInternal":false,"tokens":370,"sizeBytes":1470},{"name":"FileObjectAttachment.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FileObjectAttachment.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FileObjectAttachment.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileObjectAttachment.md -->","isInternal":false,"tokens":217,"sizeBytes":875},{"name":"FilePatchByIdRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FilePatchByIdRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FilePatchByIdRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFilePatchByIdRequest.md -->","isInternal":false,"tokens":151,"sizeBytes":649},{"name":"FilePostRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FilePostRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FilePostRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFilePostRequest.md -->","isInternal":false,"tokens":165,"sizeBytes":714},{"name":"FileTag.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FileTag.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FileTag.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTag.md -->","isInternal":false,"tokens":259,"sizeBytes":997},{"name":"FileTagArchiveRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FileTagArchiveRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FileTagArchiveRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagArchiveRequest.md -->","isInternal":false,"tokens":135,"sizeBytes":554},{"name":"FileTagGet200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FileTagGet200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FileTagGet200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagGet200Response.md -->","isInternal":false,"tokens":184,"sizeBytes":741},{"name":"FileTagLocalizeRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FileTagLocalizeRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FileTagLocalizeRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagLocalizeRequest.md -->","isInternal":false,"tokens":163,"sizeBytes":667},{"name":"FileTagPatchByIdRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FileTagPatchByIdRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FileTagPatchByIdRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagPatchByIdRequest.md -->","isInternal":false,"tokens":178,"sizeBytes":758},{"name":"FileTagPostRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FileTagPostRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FileTagPostRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagPostRequest.md -->","isInternal":false,"tokens":172,"sizeBytes":732},{"name":"FileTagPublishRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FileTagPublishRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FileTagPublishRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagPublishRequest.md -->","isInternal":false,"tokens":135,"sizeBytes":554},{"name":"FileTagPutByIdRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FileTagPutByIdRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FileTagPutByIdRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagPutByIdRequest.md -->","isInternal":false,"tokens":175,"sizeBytes":741},{"name":"FileTagRestoreRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FileTagRestoreRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FileTagRestoreRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFileTagRestoreRequest.md -->","isInternal":false,"tokens":135,"sizeBytes":554},{"name":"FlatPageResponse.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FlatPageResponse.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FlatPageResponse.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFlatPageResponse.md -->","isInternal":false,"tokens":147,"sizeBytes":625},{"name":"FlatPageResponseResultsInner.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FlatPageResponseResultsInner.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FlatPageResponseResultsInner.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFlatPageResponseResultsInner.md -->","isInternal":false,"tokens":693,"sizeBytes":2752},{"name":"FloatField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/FloatField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/FloatField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FFloatField.md -->","isInternal":false,"tokens":460,"sizeBytes":1766},{"name":"Global.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/Global.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/Global.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobal.md -->","isInternal":false,"tokens":223,"sizeBytes":922},{"name":"GlobalContentApi.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/GlobalContentApi.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/GlobalContentApi.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalContentApi.md -->","isInternal":false,"tokens":8828,"sizeBytes":36119},{"name":"GlobalGet200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/GlobalGet200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/GlobalGet200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalGet200Response.md -->","isInternal":false,"tokens":185,"sizeBytes":730},{"name":"GlobalPatch.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/GlobalPatch.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/GlobalPatch.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalPatch.md -->","isInternal":false,"tokens":197,"sizeBytes":806},{"name":"GlobalPostRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalPostRequest.md -->","isInternal":false,"tokens":258,"sizeBytes":1078},{"name":"GlobalPostRequestContactInfo.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequestContactInfo.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequestContactInfo.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalPostRequestContactInfo.md -->","isInternal":false,"tokens":172,"sizeBytes":712},{"name":"GlobalPostRequestSiteSettings.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequestSiteSettings.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequestSiteSettings.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalPostRequestSiteSettings.md -->","isInternal":false,"tokens":177,"sizeBytes":734},{"name":"GlobalPostRequestSocialMedia.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequestSocialMedia.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/GlobalPostRequestSocialMedia.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FGlobalPostRequestSocialMedia.md -->","isInternal":false,"tokens":172,"sizeBytes":713},{"name":"I18nLocalePost200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/I18nLocalePost200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/I18nLocalePost200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FI18nLocalePost200Response.md -->","isInternal":false,"tokens":137,"sizeBytes":577},{"name":"Image.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/Image.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/Image.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImage.md -->","isInternal":false,"tokens":363,"sizeBytes":1436},{"name":"ImageArchiveRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ImageArchiveRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ImageArchiveRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageArchiveRequest.md -->","isInternal":false,"tokens":131,"sizeBytes":545},{"name":"ImageAttachment.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ImageAttachment.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ImageAttachment.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageAttachment.md -->","isInternal":false,"tokens":214,"sizeBytes":861},{"name":"ImageAutocropRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ImageAutocropRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ImageAutocropRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageAutocropRequest.md -->","isInternal":false,"tokens":166,"sizeBytes":664},{"name":"ImageGet200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ImageGet200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ImageGet200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageGet200Response.md -->","isInternal":false,"tokens":185,"sizeBytes":725},{"name":"ImageGetSrcById200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ImageGetSrcById200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ImageGetSrcById200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageGetSrcById200Response.md -->","isInternal":false,"tokens":227,"sizeBytes":917},{"name":"ImageLocalizeRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ImageLocalizeRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ImageLocalizeRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageLocalizeRequest.md -->","isInternal":false,"tokens":159,"sizeBytes":658},{"name":"ImagePatchByIdRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ImagePatchByIdRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ImagePatchByIdRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImagePatchByIdRequest.md -->","isInternal":false,"tokens":174,"sizeBytes":723},{"name":"ImagePostRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ImagePostRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ImagePostRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImagePostRequest.md -->","isInternal":false,"tokens":189,"sizeBytes":798},{"name":"ImagePublishRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ImagePublishRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ImagePublishRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImagePublishRequest.md -->","isInternal":false,"tokens":131,"sizeBytes":545},{"name":"ImageRestoreRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ImageRestoreRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ImageRestoreRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageRestoreRequest.md -->","isInternal":false,"tokens":131,"sizeBytes":545},{"name":"ImageTag.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ImageTag.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ImageTag.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageTag.md -->","isInternal":false,"tokens":259,"sizeBytes":1002},{"name":"ImageTagGet200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ImageTagGet200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ImageTagGet200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageTagGet200Response.md -->","isInternal":false,"tokens":190,"sizeBytes":740},{"name":"ImageTagPatchByIdRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ImageTagPatchByIdRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ImageTagPatchByIdRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageTagPatchByIdRequest.md -->","isInternal":false,"tokens":155,"sizeBytes":652},{"name":"ImageTagPostRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ImageTagPostRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ImageTagPostRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageTagPostRequest.md -->","isInternal":false,"tokens":150,"sizeBytes":629},{"name":"ImageTagRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ImageTagRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ImageTagRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FImageTagRequest.md -->","isInternal":false,"tokens":164,"sizeBytes":647},{"name":"InlineObject.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/InlineObject.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/InlineObject.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject.md -->","isInternal":false,"tokens":137,"sizeBytes":561},{"name":"InlineObject1.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/InlineObject1.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/InlineObject1.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject1.md -->","isInternal":false,"tokens":140,"sizeBytes":564},{"name":"InlineObject2.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/InlineObject2.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/InlineObject2.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject2.md -->","isInternal":false,"tokens":140,"sizeBytes":564},{"name":"InlineObject3.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/InlineObject3.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/InlineObject3.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject3.md -->","isInternal":false,"tokens":140,"sizeBytes":564},{"name":"InlineObject4.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/InlineObject4.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/InlineObject4.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject4.md -->","isInternal":false,"tokens":140,"sizeBytes":564},{"name":"InlineObject5.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/InlineObject5.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/InlineObject5.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInlineObject5.md -->","isInternal":false,"tokens":140,"sizeBytes":569},{"name":"IntegerField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/IntegerField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/IntegerField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FIntegerField.md -->","isInternal":false,"tokens":433,"sizeBytes":1692},{"name":"InternationalizationApi.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/InternationalizationApi.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/InternationalizationApi.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FInternationalizationApi.md -->","isInternal":false,"tokens":1604,"sizeBytes":6692},{"name":"LocaleRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/LocaleRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/LocaleRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FLocaleRequest.md -->","isInternal":false,"tokens":172,"sizeBytes":751},{"name":"LocalesResponseValue.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/LocalesResponseValue.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/LocalesResponseValue.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FLocalesResponseValue.md -->","isInternal":false,"tokens":156,"sizeBytes":660},{"name":"MediaApi.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/MediaApi.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/MediaApi.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FMediaApi.md -->","isInternal":false,"tokens":13002,"sizeBytes":50040},{"name":"NumericRangeOptions.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/NumericRangeOptions.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/NumericRangeOptions.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FNumericRangeOptions.md -->","isInternal":false,"tokens":150,"sizeBytes":637},{"name":"ObjectField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/ObjectField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/ObjectField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FObjectField.md -->","isInternal":false,"tokens":393,"sizeBytes":1492},{"name":"OembedField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/OembedField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/OembedField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FOembedField.md -->","isInternal":false,"tokens":376,"sizeBytes":1436},{"name":"OperatorObject.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/OperatorObject.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/OperatorObject.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FOperatorObject.md -->","isInternal":false,"tokens":370,"sizeBytes":1297},{"name":"Page.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/Page.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/Page.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPage.md -->","isInternal":false,"tokens":884,"sizeBytes":3436},{"name":"PageArchive200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageArchive200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageArchive200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageArchive200Response.md -->","isInternal":false,"tokens":128,"sizeBytes":560},{"name":"PageArchiveRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageArchiveRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageArchiveRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageArchiveRequest.md -->","isInternal":false,"tokens":131,"sizeBytes":541},{"name":"PageCreateRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageCreateRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageCreateRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageCreateRequest.md -->","isInternal":false,"tokens":305,"sizeBytes":1247},{"name":"PageCreateRequestPosition.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageCreateRequestPosition.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageCreateRequestPosition.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageCreateRequestPosition.md -->","isInternal":false,"tokens":115,"sizeBytes":518},{"name":"PageDeleteById400Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageDeleteById400Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageDeleteById400Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageDeleteById400Response.md -->","isInternal":false,"tokens":167,"sizeBytes":669},{"name":"PageDotNotationUpdateValue.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageDotNotationUpdateValue.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageDotNotationUpdateValue.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageDotNotationUpdateValue.md -->","isInternal":false,"tokens":107,"sizeBytes":453},{"name":"PageGet200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageGet200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageGet200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageGet200Response.md -->","isInternal":false,"tokens":741,"sizeBytes":2918},{"name":"PageGetLocalesById200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageGetLocalesById200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageGetLocalesById200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageGetLocalesById200Response.md -->","isInternal":false,"tokens":154,"sizeBytes":624},{"name":"PageGetLocalesById200ResponseResultsInner.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageGetLocalesById200ResponseResultsInner.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageGetLocalesById200ResponseResultsInner.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageGetLocalesById200ResponseResultsInner.md -->","isInternal":false,"tokens":165,"sizeBytes":687},{"name":"PageLocaleResult.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageLocaleResult.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageLocaleResult.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageLocaleResult.md -->","isInternal":false,"tokens":139,"sizeBytes":553},{"name":"PageLocalesResponse.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageLocalesResponse.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageLocalesResponse.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageLocalesResponse.md -->","isInternal":false,"tokens":133,"sizeBytes":544},{"name":"PageLocalizeByIdRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageLocalizeByIdRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageLocalizeByIdRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageLocalizeByIdRequest.md -->","isInternal":false,"tokens":129,"sizeBytes":553},{"name":"PageLocalizeRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageLocalizeRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageLocalizeRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageLocalizeRequest.md -->","isInternal":false,"tokens":159,"sizeBytes":654},{"name":"PageMain.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageMain.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageMain.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageMain.md -->","isInternal":false,"tokens":163,"sizeBytes":645},{"name":"PageMainItemsInner.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageMainItemsInner.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageMainItemsInner.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageMainItemsInner.md -->","isInternal":false,"tokens":221,"sizeBytes":853},{"name":"PagePatchByIdRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PagePatchByIdRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PagePatchByIdRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPagePatchByIdRequest.md -->","isInternal":false,"tokens":270,"sizeBytes":1086},{"name":"PagePublishRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PagePublishRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PagePublishRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPagePublishRequest.md -->","isInternal":false,"tokens":131,"sizeBytes":541},{"name":"PagePutByIdRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PagePutByIdRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PagePutByIdRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPagePutByIdRequest.md -->","isInternal":false,"tokens":308,"sizeBytes":1250},{"name":"PageRestoreRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageRestoreRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageRestoreRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageRestoreRequest.md -->","isInternal":false,"tokens":131,"sizeBytes":541},{"name":"PagesApi.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PagesApi.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PagesApi.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPagesApi.md -->","isInternal":false,"tokens":10800,"sizeBytes":42845},{"name":"PageSeoFields.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageSeoFields.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageSeoFields.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageSeoFields.md -->","isInternal":false,"tokens":260,"sizeBytes":1050},{"name":"PageSeoFieldsOgImage.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageSeoFieldsOgImage.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageSeoFieldsOgImage.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageSeoFieldsOgImage.md -->","isInternal":false,"tokens":201,"sizeBytes":757},{"name":"PageSeoFieldsOgImageAttachment.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageSeoFieldsOgImageAttachment.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageSeoFieldsOgImageAttachment.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageSeoFieldsOgImageAttachment.md -->","isInternal":false,"tokens":201,"sizeBytes":757},{"name":"PageSummary.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageSummary.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageSummary.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageSummary.md -->","isInternal":false,"tokens":256,"sizeBytes":961},{"name":"PageTreeResponse.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageTreeResponse.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageTreeResponse.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageTreeResponse.md -->","isInternal":false,"tokens":712,"sizeBytes":2849},{"name":"PageUpdateRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageUpdateRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageUpdateRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageUpdateRequest.md -->","isInternal":false,"tokens":267,"sizeBytes":1077},{"name":"PageUpdateRequestPosition.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PageUpdateRequestPosition.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PageUpdateRequestPosition.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPageUpdateRequestPosition.md -->","isInternal":false,"tokens":109,"sizeBytes":489},{"name":"PaginatedResponse.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PaginatedResponse.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PaginatedResponse.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPaginatedResponse.md -->","isInternal":false,"tokens":158,"sizeBytes":662},{"name":"PaginatedResponseData.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PaginatedResponseData.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PaginatedResponseData.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPaginatedResponseData.md -->","isInternal":false,"tokens":205,"sizeBytes":847},{"name":"PasswordField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PasswordField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PasswordField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPasswordField.md -->","isInternal":false,"tokens":513,"sizeBytes":2024},{"name":"PieceResponse.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/PieceResponse.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/PieceResponse.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FPieceResponse.md -->","isInternal":false,"tokens":169,"sizeBytes":717},{"name":"RadioField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/RadioField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/RadioField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRadioField.md -->","isInternal":false,"tokens":489,"sizeBytes":1868},{"name":"RadioFieldAllOfChoices.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfChoices.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfChoices.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRadioFieldAllOfChoices.md -->","isInternal":false,"tokens":104,"sizeBytes":441},{"name":"RadioFieldAllOfDef.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfDef.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfDef.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRadioFieldAllOfDef.md -->","isInternal":false,"tokens":108,"sizeBytes":453},{"name":"RadioFieldAllOfFollowing.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfFollowing.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfFollowing.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRadioFieldAllOfFollowing.md -->","isInternal":false,"tokens":118,"sizeBytes":522},{"name":"RadioFieldAllOfFollowingIgnore.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfFollowingIgnore.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/RadioFieldAllOfFollowingIgnore.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRadioFieldAllOfFollowingIgnore.md -->","isInternal":false,"tokens":117,"sizeBytes":524},{"name":"RangeField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/RangeField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/RangeField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRangeField.md -->","isInternal":false,"tokens":466,"sizeBytes":1798},{"name":"RelationshipEntry.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/RelationshipEntry.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/RelationshipEntry.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRelationshipEntry.md -->","isInternal":false,"tokens":152,"sizeBytes":669},{"name":"RelationshipField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/RelationshipField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/RelationshipField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRelationshipField.md -->","isInternal":false,"tokens":572,"sizeBytes":2156},{"name":"RelationshipReverseField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/RelationshipReverseField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/RelationshipReverseField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FRelationshipReverseField.md -->","isInternal":false,"tokens":503,"sizeBytes":1933},{"name":"SameHostnameResponse.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SameHostnameResponse.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SameHostnameResponse.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSameHostnameResponse.md -->","isInternal":false,"tokens":122,"sizeBytes":547},{"name":"SelectChoice.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SelectChoice.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SelectChoice.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectChoice.md -->","isInternal":false,"tokens":175,"sizeBytes":721},{"name":"SelectChoiceValue.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SelectChoiceValue.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SelectChoiceValue.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectChoiceValue.md -->","isInternal":false,"tokens":105,"sizeBytes":460},{"name":"SelectField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SelectField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SelectField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectField.md -->","isInternal":false,"tokens":521,"sizeBytes":2020},{"name":"SelectFieldAllOfChoices.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfChoices.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfChoices.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectFieldAllOfChoices.md -->","isInternal":false,"tokens":104,"sizeBytes":444},{"name":"SelectFieldAllOfDef.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfDef.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfDef.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectFieldAllOfDef.md -->","isInternal":false,"tokens":120,"sizeBytes":494},{"name":"SelectFieldAllOfFollowing.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfFollowing.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfFollowing.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectFieldAllOfFollowing.md -->","isInternal":false,"tokens":120,"sizeBytes":535},{"name":"SelectFieldAllOfFollowingIgnore.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfFollowingIgnore.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SelectFieldAllOfFollowingIgnore.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSelectFieldAllOfFollowingIgnore.md -->","isInternal":false,"tokens":117,"sizeBytes":527},{"name":"SlugField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SlugField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SlugField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSlugField.md -->","isInternal":false,"tokens":535,"sizeBytes":2085},{"name":"StringField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/StringField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/StringField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FStringField.md -->","isInternal":false,"tokens":665,"sizeBytes":2652},{"name":"StringFieldAllOfFollowing.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/StringFieldAllOfFollowing.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/StringFieldAllOfFollowing.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FStringFieldAllOfFollowing.md -->","isInternal":false,"tokens":120,"sizeBytes":548},{"name":"StringFieldAllOfFollowingIgnore.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/StringFieldAllOfFollowingIgnore.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/StringFieldAllOfFollowingIgnore.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FStringFieldAllOfFollowingIgnore.md -->","isInternal":false,"tokens":113,"sizeBytes":515},{"name":"SubmittedDraft.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraft.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraft.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraft.md -->","isInternal":false,"tokens":645,"sizeBytes":2719},{"name":"SubmittedDraftArchive200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftArchive200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftArchive200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftArchive200Response.md -->","isInternal":false,"tokens":138,"sizeBytes":592},{"name":"SubmittedDraftGet200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftGet200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftGet200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftGet200Response.md -->","isInternal":false,"tokens":162,"sizeBytes":682},{"name":"SubmittedDraftLocalize200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftLocalize200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftLocalize200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftLocalize200Response.md -->","isInternal":false,"tokens":140,"sizeBytes":597},{"name":"SubmittedDraftPatchByIdRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPatchByIdRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPatchByIdRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftPatchByIdRequest.md -->","isInternal":false,"tokens":208,"sizeBytes":928},{"name":"SubmittedDraftPostRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPostRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPostRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftPostRequest.md -->","isInternal":false,"tokens":259,"sizeBytes":1131},{"name":"SubmittedDraftPublish200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPublish200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPublish200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftPublish200Response.md -->","isInternal":false,"tokens":137,"sizeBytes":594},{"name":"SubmittedDraftPutByIdRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPutByIdRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftPutByIdRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftPutByIdRequest.md -->","isInternal":false,"tokens":225,"sizeBytes":982},{"name":"SubmittedDraftRestore200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftRestore200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftRestore200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftRestore200Response.md -->","isInternal":false,"tokens":138,"sizeBytes":592},{"name":"SubmittedDraftsApi.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftsApi.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/SubmittedDraftsApi.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FSubmittedDraftsApi.md -->","isInternal":false,"tokens":8691,"sizeBytes":36510},{"name":"TimeField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/TimeField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/TimeField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FTimeField.md -->","isInternal":false,"tokens":398,"sizeBytes":1529},{"name":"UiCondition.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/UiCondition.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/UiCondition.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUiCondition.md -->","isInternal":false,"tokens":299,"sizeBytes":1115},{"name":"UrlField.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/UrlField.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/UrlField.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUrlField.md -->","isInternal":false,"tokens":465,"sizeBytes":1825},{"name":"User.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/User.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/User.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUser.md -->","isInternal":false,"tokens":446,"sizeBytes":1836},{"name":"UserCreateRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/UserCreateRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/UserCreateRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserCreateRequest.md -->","isInternal":false,"tokens":300,"sizeBytes":1211},{"name":"UserList200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/UserList200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/UserList200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserList200Response.md -->","isInternal":false,"tokens":179,"sizeBytes":729},{"name":"UserPatchByIdRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/UserPatchByIdRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/UserPatchByIdRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserPatchByIdRequest.md -->","isInternal":false,"tokens":262,"sizeBytes":1054},{"name":"UserPutByIdRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/UserPutByIdRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/UserPutByIdRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserPutByIdRequest.md -->","isInternal":false,"tokens":277,"sizeBytes":1115},{"name":"UsersApi.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/UsersApi.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/UsersApi.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUsersApi.md -->","isInternal":false,"tokens":9008,"sizeBytes":35971},{"name":"UserUniqueUsername200Response.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/UserUniqueUsername200Response.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/UserUniqueUsername200Response.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserUniqueUsername200Response.md -->","isInternal":false,"tokens":154,"sizeBytes":685},{"name":"UserUniqueUsernameRequest.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/UserUniqueUsernameRequest.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/UserUniqueUsernameRequest.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FUserUniqueUsernameRequest.md -->","isInternal":false,"tokens":123,"sizeBytes":550},{"name":"Widget.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/Widget.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/Widget.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FWidget.md -->","isInternal":false,"tokens":296,"sizeBytes":1140},{"name":"WidgetImport.md","path":"packages/apostrophecms-openapi/examples/typescript/docs/WidgetImport.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/docs/WidgetImport.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2Fdocs%2FWidgetImport.md -->","isInternal":false,"tokens":209,"sizeBytes":910},{"name":"aggregation.md","path":"packages/db-connect/docs/aggregation.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/db-connect/docs/aggregation.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Faggregation.md -->","isInternal":false,"tokens":857,"sizeBytes":3089},{"name":"collections.md","path":"packages/db-connect/docs/collections.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/db-connect/docs/collections.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Fcollections.md -->","isInternal":false,"tokens":2051,"sizeBytes":7712},{"name":"database.md","path":"packages/db-connect/docs/database.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/db-connect/docs/database.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Fdatabase.md -->","isInternal":false,"tokens":976,"sizeBytes":4469},{"name":"dump-restore.md","path":"packages/db-connect/docs/dump-restore.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/db-connect/docs/dump-restore.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Fdump-restore.md -->","isInternal":false,"tokens":1560,"sizeBytes":6321},{"name":"indexes.md","path":"packages/db-connect/docs/indexes.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/db-connect/docs/indexes.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Findexes.md -->","isInternal":false,"tokens":1219,"sizeBytes":5016},{"name":"queries.md","path":"packages/db-connect/docs/queries.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/db-connect/docs/queries.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Fqueries.md -->","isInternal":false,"tokens":1931,"sizeBytes":7687},{"name":"updates.md","path":"packages/db-connect/docs/updates.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/db-connect/docs/updates.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2Fdocs%2Fupdates.md -->","isInternal":false,"tokens":764,"sizeBytes":2772},{"name":"README.md","path":"packages/ai-helper/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/ai-helper/README.md","title":"ai-helper Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fai-helper%2FREADME.md -->","isInternal":false,"tokens":5386,"sizeBytes":23018},{"name":"README.md","path":"packages/anchors/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/anchors/README.md","title":"anchors Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fanchors%2FREADME.md -->","isInternal":false,"tokens":1293,"sizeBytes":5378},{"name":"README.md","path":"packages/apostrophe-astro/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophe-astro/README.md","title":"apostrophe-astro Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophe-astro%2FREADME.md -->","isInternal":false,"tokens":11734,"sizeBytes":50072},{"name":"README.md","path":"packages/apostrophe/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophe/README.md","title":"apostrophe Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophe%2FREADME.md -->","isInternal":false,"tokens":1848,"sizeBytes":7524},{"name":"README.md","path":"packages/apostrophecms-openapi/examples/typescript/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/examples/typescript/README.md","title":"typescript Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2Fexamples%2Ftypescript%2FREADME.md -->","isInternal":false,"tokens":10845,"sizeBytes":36627},{"name":"README.md","path":"packages/apostrophecms-openapi/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/apostrophecms-openapi/README.md","title":"apostrophecms-openapi Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fapostrophecms-openapi%2FREADME.md -->","isInternal":false,"tokens":2457,"sizeBytes":10564},{"name":"README.md","path":"packages/blog/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/blog/README.md","title":"blog Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fblog%2FREADME.md -->","isInternal":false,"tokens":1683,"sizeBytes":6989},{"name":"README.md","path":"packages/boring/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/boring/README.md","title":"boring Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fboring%2FREADME.md -->","isInternal":false,"tokens":623,"sizeBytes":2451},{"name":"README.md","path":"packages/broadband/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/broadband/README.md","title":"broadband Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fbroadband%2FREADME.md -->","isInternal":false,"tokens":764,"sizeBytes":3096},{"name":"README.md","path":"packages/cache-on-demand/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/cache-on-demand/README.md","title":"cache-on-demand Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fcache-on-demand%2FREADME.md -->","isInternal":false,"tokens":877,"sizeBytes":3864},{"name":"README.md","path":"packages/cache-redis/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/cache-redis/README.md","title":"cache-redis Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fcache-redis%2FREADME.md -->","isInternal":false,"tokens":1235,"sizeBytes":4979},{"name":"README.md","path":"packages/cli/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/cli/README.md","title":"cli Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fcli%2FREADME.md -->","isInternal":false,"tokens":980,"sizeBytes":4356},{"name":"README.md","path":"packages/create-apostrophe/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/create-apostrophe/README.md","title":"create-apostrophe Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fcreate-apostrophe%2FREADME.md -->","isInternal":false,"tokens":2341,"sizeBytes":8926},{"name":"README.md","path":"packages/csv-to-zone-file/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/csv-to-zone-file/README.md","title":"csv-to-zone-file Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fcsv-to-zone-file%2FREADME.md -->","isInternal":false,"tokens":181,"sizeBytes":671},{"name":"README.md","path":"packages/db-connect/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/db-connect/README.md","title":"db-connect Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fdb-connect%2FREADME.md -->","isInternal":false,"tokens":1338,"sizeBytes":5670},{"name":"README.md","path":"packages/emulate-mongo-3-driver/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/emulate-mongo-3-driver/README.md","title":"emulate-mongo-3-driver Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Femulate-mongo-3-driver%2FREADME.md -->","isInternal":false,"tokens":645,"sizeBytes":2403},{"name":"README.md","path":"packages/eslint-config-apostrophe/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/eslint-config-apostrophe/README.md","title":"eslint-config-apostrophe Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Feslint-config-apostrophe%2FREADME.md -->","isInternal":false,"tokens":645,"sizeBytes":2708},{"name":"README.md","path":"packages/event/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/event/README.md","title":"event Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fevent%2FREADME.md -->","isInternal":false,"tokens":1251,"sizeBytes":5038},{"name":"README.md","path":"packages/express-cache-on-demand/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/express-cache-on-demand/README.md","title":"express-cache-on-demand Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fexpress-cache-on-demand%2FREADME.md -->","isInternal":false,"tokens":1246,"sizeBytes":5464},{"name":"README.md","path":"packages/favicon/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/favicon/README.md","title":"favicon Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Ffavicon%2FREADME.md -->","isInternal":false,"tokens":560,"sizeBytes":2131},{"name":"README.md","path":"packages/font-size/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/font-size/README.md","title":"font-size Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Ffont-size%2FREADME.md -->","isInternal":false,"tokens":805,"sizeBytes":3223},{"name":"README.md","path":"packages/form-submission-google/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/form-submission-google/README.md","title":"form-submission-google Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fform-submission-google%2FREADME.md -->","isInternal":false,"tokens":1425,"sizeBytes":6144},{"name":"README.md","path":"packages/form/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/form/README.md","title":"form Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fform%2FREADME.md -->","isInternal":false,"tokens":5115,"sizeBytes":22462},{"name":"README.md","path":"packages/i18n-static/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/i18n-static/README.md","title":"i18n-static Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fi18n-static%2FREADME.md -->","isInternal":false,"tokens":1118,"sizeBytes":4422},{"name":"README.md","path":"packages/import-export-xlsx/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/import-export-xlsx/README.md","title":"import-export-xlsx Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fimport-export-xlsx%2FREADME.md -->","isInternal":false,"tokens":649,"sizeBytes":2457},{"name":"README.md","path":"packages/import-export/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/import-export/README.md","title":"import-export Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fimport-export%2FREADME.md -->","isInternal":false,"tokens":4381,"sizeBytes":20014},{"name":"README.md","path":"packages/launder/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/launder/README.md","title":"launder Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Flaunder%2FREADME.md -->","isInternal":false,"tokens":2233,"sizeBytes":8404},{"name":"README.md","path":"packages/login-hcaptcha/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/login-hcaptcha/README.md","title":"login-hcaptcha Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Flogin-hcaptcha%2FREADME.md -->","isInternal":false,"tokens":1173,"sizeBytes":4529},{"name":"README.md","path":"packages/login-recaptcha/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/login-recaptcha/README.md","title":"login-recaptcha Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Flogin-recaptcha%2FREADME.md -->","isInternal":false,"tokens":1038,"sizeBytes":4051},{"name":"README.md","path":"packages/login-totp/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/login-totp/README.md","title":"login-totp Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Flogin-totp%2FREADME.md -->","isInternal":false,"tokens":950,"sizeBytes":3538},{"name":"README.md","path":"packages/mongodb-snapshot/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/mongodb-snapshot/README.md","title":"mongodb-snapshot Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fmongodb-snapshot%2FREADME.md -->","isInternal":false,"tokens":867,"sizeBytes":3820},{"name":"README.md","path":"packages/moog-require/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/moog-require/README.md","title":"moog-require Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fmoog-require%2FREADME.md -->","isInternal":false,"tokens":3667,"sizeBytes":15522},{"name":"README.md","path":"packages/oembetter/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/oembetter/README.md","title":"oembetter Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Foembetter%2FREADME.md -->","isInternal":false,"tokens":2038,"sizeBytes":8543},{"name":"README.md","path":"packages/open-graph/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/open-graph/README.md","title":"open-graph Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fopen-graph%2FREADME.md -->","isInternal":false,"tokens":946,"sizeBytes":3400},{"name":"README.md","path":"packages/openapi-generator/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/openapi-generator/README.md","title":"openapi-generator Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fopenapi-generator%2FREADME.md -->","isInternal":false,"tokens":4722,"sizeBytes":20048},{"name":"README.md","path":"packages/passport-bridge/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/passport-bridge/README.md","title":"passport-bridge Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fpassport-bridge%2FREADME.md -->","isInternal":false,"tokens":7393,"sizeBytes":32746},{"name":"README.md","path":"packages/postcss-viewport-to-container-toggle/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/postcss-viewport-to-container-toggle/README.md","title":"postcss-viewport-to-container-toggle Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fpostcss-viewport-to-container-toggle%2FREADME.md -->","isInternal":false,"tokens":1017,"sizeBytes":3891},{"name":"README.md","path":"packages/random-words/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/random-words/README.md","title":"random-words Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Frandom-words%2FREADME.md -->","isInternal":false,"tokens":1034,"sizeBytes":3821},{"name":"README.md","path":"packages/redirect/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/redirect/README.md","title":"redirect Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fredirect%2FREADME.md -->","isInternal":false,"tokens":2690,"sizeBytes":11281},{"name":"README.md","path":"packages/sanitize-html/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/sanitize-html/README.md","title":"sanitize-html Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fsanitize-html%2FREADME.md -->","isInternal":false,"tokens":8426,"sizeBytes":33536},{"name":"README.md","path":"packages/scheduled-publishing/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/scheduled-publishing/README.md","title":"scheduled-publishing Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fscheduled-publishing%2FREADME.md -->","isInternal":false,"tokens":812,"sizeBytes":3184},{"name":"README.md","path":"packages/security-headers/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/security-headers/README.md","title":"security-headers Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fsecurity-headers%2FREADME.md -->","isInternal":false,"tokens":2276,"sizeBytes":9690},{"name":"README.md","path":"packages/seo/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/seo/README.md","title":"seo Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fseo%2FREADME.md -->","isInternal":false,"tokens":11329,"sizeBytes":50130},{"name":"README.md","path":"packages/sitemap/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/sitemap/README.md","title":"sitemap Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fsitemap%2FREADME.md -->","isInternal":false,"tokens":1717,"sizeBytes":7160},{"name":"README.md","path":"packages/sluggo/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/sluggo/README.md","title":"sluggo Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fsluggo%2FREADME.md -->","isInternal":false,"tokens":809,"sizeBytes":3041},{"name":"README.md","path":"packages/stylelint-config-apostrophe/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/stylelint-config-apostrophe/README.md","title":"stylelint-config-apostrophe Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fstylelint-config-apostrophe%2FREADME.md -->","isInternal":false,"tokens":527,"sizeBytes":2229},{"name":"README.md","path":"packages/stylelint-no-mixed-decls/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/stylelint-no-mixed-decls/README.md","title":"stylelint-no-mixed-decls Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fstylelint-no-mixed-decls%2FREADME.md -->","isInternal":false,"tokens":1231,"sizeBytes":4933},{"name":"README.md","path":"packages/svg-sprite/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/svg-sprite/README.md","title":"svg-sprite Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fsvg-sprite%2FREADME.md -->","isInternal":false,"tokens":1513,"sizeBytes":5885},{"name":"README.md","path":"packages/uploadfs/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/uploadfs/README.md","title":"uploadfs Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fuploadfs%2FREADME.md -->","isInternal":false,"tokens":6666,"sizeBytes":28492},{"name":"README.md","path":"packages/vite/README.md","rawUrl":"https://raw.githubusercontent.com/apostrophecms/apostrophe/HEAD/packages/vite/README.md","title":"vite Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/apostrophecms/apostrophe?path=packages%2Fvite%2FREADME.md -->","isInternal":false,"tokens":3360,"sizeBytes":13885}],"systemPromptSnippet":"<yakaai_skills repo=\"apostrophecms/apostrophe\">\n<!-- File: packages/ai-helper/skills/provider-creator.md (Tokens: ~1546 | Category: anthropic-skill) -->\n# AI Provider Creator (ApostropheCMS)\n\nCreate a **project-level** provider registration module + a provider **factory** for `@apostrophecms/ai-helper`.\n\nThis guide is optimized for an LLM to generate files.\n\n---\n\n## What you are generating\n\nYou will generate **two files**:\n\n1. **Provider factory file** (ESM)\n\n* Exports a function that returns a provider object (text/image methods + optional `validate`).\n\n2. **Provider registration module** (ESM Apostrophe module)\n\n* Extends `registerProviders()` and calls `self.registerProvider(...)` to register the factory.\n\n> Note: `@apostrophecms/ai-helper` is CommonJS internally, but **project-level code examples here are ESM**.\n\n---\n\n## Core behavior you must match\n\n### Two-phase provider flow\n\n1. **Registration phase**\n   You register provider factories with metadata using:\n\n* `self.registerProvider(name, factory, capabilities)`\n\n2. **Activation phase**\n   `@apostrophecms/ai-helper` instantiates only the providers named in project options and (optionally) calls `provider.validate()`.\n\n### Capabilities: source of truth\n\nCapabilities are taken from the **registration metadata** (the `capabilities` argument to `registerProvider`), not from any `provider.capabilities` property.\n\nCapabilities shape:\n\n```js\n{\n  text: boolean,\n  image: boolean,\n  imageVariation: boolean\n}\n```\n\n### validate(): optional\n\n`validate()` is optional. If you provide it, it will be called at activation time **unless** mock mode is enabled (`APOS_AI_HELPER_MOCK`).\n\n---\n\n## Where the files live (recommended)\n\n* Provider factory: `lib/ai-providers/<provider-name>.js`\n* Registration module: `modules/<provider-name>-provider/index.js`\n\n---\n\n## Step 1 — Create the provider factory (ESM)\n\nCreate `lib/ai-providers/<provider-name>.js`\n\n### Factory signature (required)\n\n```js\nexport default function createProvider(apos, textOptions = {}, imageOptions = {}) {\n  return {\n    // optional\n    validate() {},\n\n    // optional depending on capabilities\n    async generateText(req, prompt, options) {},\n    async generateImage(req, prompt, options) {},\n    async generateImageVariation(req, image, prompt, options) {}\n  };\n}\n```\n\n### Method return formats (required)\n\n#### Text\n\n`generateText()` must resolve to:\n\n```js\n{\n  content: \"string\",\n  metadata: {\n    model: \"string?\",\n    usage: {\n      inputTokens: number?,\n      outputTokens: number?\n    }\n  }\n}\n```\n\n#### Images\n\n`generateImage()` and `generateImageVariation()` must resolve to an **array** of:\n\n```js\n[\n  {\n    type: \"png\" | \"jpg\" | \"webp\" | \"gif\",\n    data: \"<base64 string>\",   // base64 of the image bytes\n    metadata: {\n      model: \"string?\",\n      usage: {\n        inputTokens: number?,\n        outputTokens: number?\n      }\n    }\n  }\n]\n```\n\n> If your upstream API returns a URL or binary data, you must convert it to base64 and return the standardized object(s).\n\n### Error rules (recommended, not enforced)\n\n* Prefer `throw apos.error(code, message)` so callers can classify errors.\n* Recommended codes:\n\n  * `invalid` (bad input/options)\n  * `forbidden` (auth/permission)\n  * `notfound` (model/asset missing)\n  * `error` (generic)\n* Messages can be developer-facing; UI should map codes to i18n strings.\n\n### Retry rules (recommended)\n\n* Retry: network errors, timeouts, 408, 429, 5xx\n* Do not retry: 400, 401, 403 (and other non-transient 4xx)\n\n---\n\n## Step 2 — Create the provider registration module (ESM)\n\nCreate `modules/<provider-name>-provider/index.js`\n\nThis module’s job is only to **register** the provider factory under a unique name.\n\n```js\nimport createProvider from '../../lib/ai-providers/<provider-name>.js';\n\nexport default {\n  improve: '@apostrophecms/ai-helper',\n\n  extendMethods(self) {\n    return {\n      registerProviders(_super) {\n        _super();\n\n        self.registerProvider(\n          '<providerName>',       // the name used in project options\n          createProvider,         // factory(apos, textOptions, imageOptions) => provider\n          {\n            text: true,           // set to true if provider supports text\n            image: true,          // set to true if provider supports image generation\n            imageVariation: true  // set true only if provider supports variations/edits\n          }\n        );\n      }\n    };\n  }\n};\n```\n\n### Override behavior (required knowledge)\n\nIf a project registers a provider with the same name as a built-in provider, it **replaces** that provider for activation purposes.\n\n---\n\n## Step 3 — Enable the registration module in the project (ESM)\n\nIn your project’s `app.js` (ESM), include the module:\n\n```js\nexport default {\n  modules: {\n    '<provider-name>-provider': {}\n  }\n};\n```\n\n---\n\n## Step 4 — Configure `@apostrophecms/ai-helper` to use it (ESM)\n\nIn `app.js`, configure the provider name(s) and options:\n\n```js\nexport default {\n  modules: {\n    '@apostrophecms/ai-helper': {\n      options: {\n        // pick names registered via registerProvider(...)\n        textProvider: '<providerName>',\n        imageProvider: '<providerName>',\n\n        // passed into the provider factory as:\n        // createProvider(apos, textProviderOptions, imageProviderOptions)\n        textProviderOptions: {\n          // provider-specific\n        },\n        imageProviderOptions: {\n          // provider-specific\n        }\n      }\n    },\n\n    '<provider-name>-provider': {}\n  }\n};\n```\n\n> `textProviderOptions` and `imageProviderOptions` are provider-defined. Your factory must read these and/or environment variables.\n\n---\n\n## Minimal template you can emit (copy/paste)\n\n### `lib/ai-providers/<provider-name>.js`\n\n```js\nexport default function createProvider(apos, textOptions = {}, imageOptions = {}) {\n  const { apiKey } = textOptions;\n\n  return {\n    validate() {\n      if (!process.env.APOS_AI_HELPER_MOCK && !apiKey) {\n        throw apos.error('invalid', 'Missing required apiKey for <providerName>.');\n      }\n    },\n\n    async generateText(req, prompt, options = {}) {\n      // TODO call upstream API\n      return {\n        content: 'TODO',\n        metadata: {\n          model: options.model,\n          usage: {}\n        }\n      };\n    }\n  };\n}\n```\n\n### `modules/<provider-name>-provider/index.js`\n\n```js\nimport createProvider from '../../lib/ai-providers/<provider-name>.js';\n\nexport default {\n  improve: '@apostrophecms/ai-helper',\n  extendMethods(self) {\n    return {\n      registerProviders(_super) {\n        _super();\n        self.registerProvider('<providerName>', createProvider, {\n          text: true,\n          image: false,\n          imageVariation: false\n        });\n      }\n    };\n  }\n};\n```\n\n<!-- File: packages/apostrophecms-openapi/apostrophecms-openapi.yaml (Tokens: ~10745 | Category: anthropic-skill) -->\nopenapi: 3.1.0\ninfo:\n  title: ApostropheCMS REST API\n  description: |\n    **🚀 Developer freedom. Editor happiness. It just works.**\n\n    **For production use:** Download this YAML file and update the server URL\n    and cookie names to match your setup.\n\n    The ApostropheCMS REST API allows you to create, read, update, and delete content programmatically.\n    Perfect for building modern websites, mobile apps, and any digital experience that needs flexible content management.\n\n    ## Quick Start Guide\n    1. **Authentication**: Use the login endpoint to get a bearer token or session cookie\n    2. **Get Content**: Start with `/@apostrophecms/page` to fetch your page structure\n    3. **Media Files**: Upload files via `/@apostrophecms/attachment/upload`\n    4. **Internationalization**: Use `/@apostrophecms/i18n` to localize your content\n\n    ## Content Architecture\n    ApostropheCMS uses a flexible \"pieces\" system for content types. While the core system provides\n    essential pieces like users and global content, most projects define custom piece types like\n    articles, events, or products using the `@apostrophecms/piece-type` module.\n\n    ## Built-in Piece Types\n    - `@apostrophecms/user` - User accounts and profiles\n    - `@apostrophecms/global` - Site-wide content (customizable with additional fields)\n    - `@apostrophecms/image` - Image file management\n    - `@apostrophecms/file` - General file management (PDFs, documents, etc.)\n\n    ## Built-in Tag Types\n    - `@apostrophecms/image-tag` - Tags for organizing images\n    - `@apostrophecms/file-tag` - Tags for organizing files\n\n    ## Authentication Methods\n    - **Bearer Token**: Recommended for API clients and SPAs\n    - **Session Cookie**: For traditional web applications\n    - **API Key**: For server-to-server communication\n\n    ## Rate Limiting\n    API requests are rate-limited to prevent abuse. See response headers for current limits.\n\n  version: 1.0.0\n  contact:\n    name: ApostropheCMS Support\n    url: https://apostrophecms.com\n    email: support@apostrophecms.com\n  license:\n    name: MIT\n    url: https://github.com/apostrophecms/apostrophe/blob/main/LICENSE.md\n\nexternalDocs:\n  description: Full Documentation\n  url: \"https://docs.apostrophecms.org\"\n\nx-apostrophe:\n  cmsVersion: \">=4.20.0\"\n  notes: |\n    Spec versioning follows semver independently of CMS releases.\n  isCore: true\n\n  # Used by the expander to control localization flags & nicer names.\n  pieceTypes:\n    standard:\n      - '@apostrophecms/image'\n      - '@apostrophecms/file'\n      - '@apostrophecms/image-tag'\n      - '@apostrophecms/file-tag'\n      - '@apostrophecms/submitted-draft'\n\n    nonLocalizable:\n      - '@apostrophecms/user'\n      - '@apostrophecms/global'\n\n  marketingTags:\n    '@apostrophecms/image': Media\n    '@apostrophecms/file': Media\n    '@apostrophecms/image-tag': Media\n    '@apostrophecms/file-tag': Media\n    '@apostrophecms/user': Users\n    '@apostrophecms/global': Global Content\n    '@apostrophecms/submitted-draft': Submitted Draft\n\n  # 👇 fallback for any piece not listed above\n  defaultPieceMarketingTag: Custom\n\n  # adds the module name as a second tag\n  includeTechnicalTag: true\n\nsecurity:\n  # adds session authentication as the default\n  - SessionAuth: []\n\nservers:\n  - url: http://localhost:3000/api/v1\n    description: Development server\n  - url: https://your-site.com/api/v1\n    description: Production server (not for online use)\n\ntags:\n  - name: Authentication\n    description: 🚀 Login, logout, and session management for API access - start here!\n  - name: Pages\n    description: 🚀 Essential for headless sites - page structure, content, and navigation\n  - name: Users\n    description: Built-in user management and authentication\n  - name: Global Content\n    description: Site-wide settings and content that appears across pages\n  - name: Styles\n    description: Site-wide styling controls\n  - name: Submitted Drafts\n    description: Draft submission workflow and review queue management\n  - name: Media\n    description: File uploads, image management, and media organization\n  - name: Attachments\n    description: File upload utilities and image processing\n  - name: Internationalization\n    description: Multi-language support and locale management\n  - name: Custom\n    description: Project-defined piece types (your own content models)\n\nx-tagGroups:\n  - name: Start Here\n    tags: [Authentication]\n  - name: Content & Media\n    tags: [Pages, Global Content, Submitted Draft, Media, Attachments]\n  - name: People\n    tags: [Users]\n  - name: Internationalization\n    tags: [Internationalization]\n  - name: Custom\n    tags: [Custom]\n\ncomponents:\n  securitySchemes:\n    ApiKeyAuth:\n      type: apiKey\n      in: query\n      name: apikey\n      description: |\n        **Server-to-server authentication** - API key for server-to-server communication.\n        Use as query parameter: ?apikey=your-api-key-here\n\n        Configure in app.js:\n        ```javascript\n        '@apostrophecms/express': {\n          options: {\n            apiKeys: {\n              'myapikey1029384756': { role: 'admin' }\n            }\n          }\n        }\n        ```\n\n    BearerAuth:\n      type: http\n      scheme: bearer\n      description: |\n        Bearer token authentication (recommended for API clients).\n\n        **Step 1:** Close this dialog box and generate a bearer token using the `POST /@apostrophecms/login/login` endpoint below with:\n        ```json\n        {\n          \"username\": \"your-username\",\n          \"password\": \"your-password\"\n        }\n        ```\n\n        **Step 2:** Copy **only the token value** from the response (not the full JSON)\n        Example: if response is `{\"token\": \"abc123\"}`, paste only `abc123`\n        The token will be sent as: Authorization: Bearer {your-token}\n\n        **Step 3:** Reopen this dialog and paste the token value into the value field.\n\n    SessionAuth:\n      type: apiKey\n      in: cookie\n      name: project-shortname.sid\n      description: |\n        ⚠️ **For testing after download only:** Change \"project-shortname\" in the `SessionAuth` to your actual ApostropheCMS shortname (e.g., \"myapp.sid\").\n\n        💡 This authentication won't work when testing in the online ApostropheCMS sandbox. However, you can use the login route to set a cookie you can examine in your browser DevTools.\n        It will be named `project-shortname.sid`.\n\n        **Step 1:** Close this dialog and use the `POST /@apostrophecms/login/login` endpoint below with:\n        ```json\n        {\n          \"username\": \"your-username\",\n          \"password\": \"your-password\",\n          \"session\": true\n        }\n        ```\n\n        **Step 2:** Copy the session cookie value from your browser's dev tools\n        and paste it into the \"Value\" field.\n\n  parameters:\n    Page:\n      name: page\n      in: query\n      description: Page number for pagination (1-based)\n      required: false\n      schema:\n        type: integer\n        minimum: 1\n        default: 1\n      example: 2\n\n    PerPage:\n      name: perPage\n      in: query\n      description: Number of items per page\n      required: false\n      schema:\n        type: integer\n        minimum: 1\n        maximum: 100\n        default: 10\n      example: 25\n\n    Search:\n      name: search\n      in: query\n      description: Search term for filtering results\n      required: false\n      schema:\n        type: string\n      example: \"headless cms\"\n\n    Autocomplete:\n      name: autocomplete\n      in: query\n      description: Partial word search for autocomplete functionality\n      required: false\n      schema:\n        type: string\n      example: \"apost\"\n\n    AposMode:\n      name: aposMode\n      in: query\n      description: Request draft or published version of content\n      required: false\n      schema:\n        type: string\n        enum: [draft, published]\n        default: published\n      example: \"published\"\n\n    AposLocale:\n      name: aposLocale\n      in: query\n      description: Locale for internationalization (e.g., 'en', 'fr', 'es')\n      required: false\n      schema:\n        type: string\n        example: \"fr\"\n\n    ToLocale:\n      name: toLocale\n      in: path\n      required: true\n      description: Target locale code (e.g., en:us:published)\n      schema:\n        type: string\n        pattern: '^[a-z]{2}(-[A-Z]{2})?$'\n        example: en\n\n    RenderAreas:\n      name: render-areas\n      in: query\n      description: 💡 Render widget areas as HTML instead of returning raw widget data - useful for hybrid architectures\n      required: false\n      schema:\n        type: boolean\n        default: false\n      example: true\n\n    DocumentId:\n      name: _id\n      in: path\n      required: true\n      description: Computed document ID (can optionally include mode and locale, e.g., id:en:published)\n      schema:\n        type: string\n        pattern: '^\\S+$'\n        example: \"ckitdo5oq004pu69kr6oxo6fr:en:published\"\n\n    AposDocId:\n      name: aposDocId\n      in: path\n      required: true\n      description: ApostropheCMS document identifier\n      schema:\n        type: string\n        pattern: '^[a-zA-Z0-9]+$'\n        example: \"ckitdo5oq004pu69kr6oxo6fr\"\n\n    ImageDocId:\n      name: imageId\n      in: path\n      required: true\n      description: ApostropheCMS document identifier for an image\n      schema:\n        type: string\n        pattern: '^[a-zA-Z0-9]+$'\n        example: \"ck9x8v7w2000001l6h8q9d5f0\"\n\n    AllPages:\n      name: all\n      in: query\n      description: Return all pages the requester can see (system/orphan pages included). Use with caution for large sites. Default is 0.\n      schema:\n        type: integer\n        enum: [0,1]\n        default: 0\n      example: 1\n\n    FlatResponse:\n      name: flat\n      in: query\n      description: 💡 Return pages in flat array instead of tree structure - easier for some use cases. Default is 0 (nested).\n      schema:\n        type: integer\n        enum: [0,1]\n        default: 0\n      example: 1\n\n    ChildrenParam:\n      name: children\n      in: query\n      description: Include children array in response (set to 'false' to exclude). Default is true.\n      schema:\n        type: boolean\n        default: true\n      example: false\n\n  schemas:\n    _Overview_Fields:\n      type: object\n      description: |\n        # Field Types (editor-facing)\n\n        - `StringField` — basic text\n        - `IntegerField`, `FloatField` — numbers\n        - `SelectField`, `RadioField`, `CheckboxesField` — choices\n        - `AreaField`, `ArrayField`, `ObjectField`\n        - `AttachmentField`, `RelationshipField`, `RelationshipReverseField`\n\n        👉 See also: **FieldDefinition** (discriminator: `type`).\n      externalDocs:\n        description: ApostropheCMS Field Guide\n        url: https://docs.apostrophecms.org/reference/field-types/\n      title: _Overview_Fields\n    _Overview_Primitives:\n      type: object\n      description: |\n        # Content Primitives (payload-level)\n\n        These are the “data atoms” for requests and responses.\n\n        - `AposString`, `AposSlug`, `AposUrl`, `AposEmail`\n        - `AposDateTime`, `AposDate`, `AposTime`\n        - Arrays: `AposStringArray`, `AposIntegerArray`, etc.\n\n        👉 Defined under **AposPrimitives**.\n      title: _Overview_Primitives\n    _Overview_Advanced:\n      type: object\n      description: |\n        # Advanced / Internal\n\n        Used by OpenAPI for schema defs:\n        - `UiCondition` (for `if`/`requiredIf`)\n        - `OperatorObject` (query operators)\n        - `AreaOptions`, `ArrayOptions`, and other config helpers\n      title: _Overview_Advanced\n    AreaField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - area\n            description: Apostrophe field type id.\n          options:\n            $ref: '#/components/schemas/AreaOptions'\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - options\n        examples:\n        - type: area\n          label: Main content\n          options:\n            max: 3\n            expanded: true\n            widgets:\n              '@apostrophecms/image': {}\n              '@apostrophecms/rich-text':\n                toolbar:\n                - bold\n                - italic\n              '@apostrophecms/video': {}\n              '@apostrophecms/html': {}\n            groups:\n              basics:\n                label: Basic Content\n                columns: 3\n                widgets:\n                  '@apostrophecms/rich-text':\n                    toolbar:\n                    - bold\n                  '@apostrophecms/image': {}\n              embeds:\n                label: Embeds\n                columns: 2\n                widgets:\n                  '@apostrophecms/video': {}\n                  '@apostrophecms/html': {}\n      title: AreaField\n    AreaOptions:\n      type: object\n      additionalProperties: false\n      properties:\n        widgets:\n          description: |\n            Allowed widget types for this area. Keys are widget module names (e.g., \"@apostrophecms/rich-text\"). Values are per-widget options that apply *only* in this area.\n          type: object\n          additionalProperties:\n            type: object\n        groups:\n          description: |\n            Organize widgets into groups for the expanded preview menu.\n            Each group has a label, optional columns (1–4, default 3), and its own widgets map (same shape as `widgets`).\n          type: object\n          additionalProperties:\n            $ref: '#/components/schemas/AreaWidgetGroup'\n        max:\n          type: integer\n          description: Maximum number of widgets allowed in this area.\n        expanded:\n          type: boolean\n          description: Use the expanded preview menu UX.\n      required:\n      - widgets\n      title: AreaOptions\n    AreaWidgetGroup:\n      type: object\n      additionalProperties: false\n      properties:\n        label:\n          type: string\n        columns:\n          type: integer\n          minimum: 1\n          maximum: 4\n          description: Number of widget previews per row (default 3).\n        widgets:\n          type: object\n          additionalProperties:\n            type: object\n      required:\n      - label\n      - widgets\n      title: AreaWidgetGroup\n    ArrayField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: A repeatable list of objects, each with its own field schema.\n        properties:\n          type:\n            type: string\n            enum:\n            - array\n            description: Apostrophe field type id.\n          fields:\n            $ref: '#/components/schemas/Fieldset'\n          min:\n            type: integer\n            description: Minimum number of items (inclusive).\n          max:\n            type: integer\n            description: Maximum number of items (inclusive).\n          titleField:\n            type: string\n            description: Field name in each item used as the item label in the UI.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - fields\n        examples:\n        - type: array\n          label: Tasks\n          min: 0\n          max: 50\n          titleField: title\n          items:\n            type: object\n            properties:\n              title:\n                type: string\n              priority:\n                type: string\n          fields:\n            add:\n              title:\n                type: string\n                label: Task Title\n              priority:\n                type: select\n                label: Priority\n                choices:\n                - label: Low\n                  value: low\n                - label: High\n                  value: high\n      title: ArrayField\n    AttachmentField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: |\n          Lets editors upload a single file (image, PDF, etc.).\n          Use an ArrayField of AttachmentField if you need multiple files.\n        properties:\n          type:\n            type: string\n            enum:\n            - attachment\n            description: Apostrophe field type id.\n          accept:\n            oneOf:\n            - type: string\n              description: HTML \"accept\" string (e.g., \"image/*,.pdf\"). Use to limitby MIME type and/or extension.\n            - type: array\n              items:\n                type: string\n              description: List of MIME types and/or extensions (e.g., [\"image/*\",\n                \".pdf\"]).\n          maxSize:\n            type: integer\n            description: Optional max file size in bytes (documentation-only hint).\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: attachment\n          label: Resume (PDF)\n          accept:\n          - .pdf\n          required: true\n        - type: attachment\n          label: Hero Image\n          accept: image/*\n      title: AttachmentField\n    BooleanField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - boolean\n            description: Apostrophe field type id.\n          def:\n            type: boolean\n            description: Default value shown in the editor UI.\n          toggle:\n            oneOf:\n            - type: boolean\n              description: |\n                If true, use the alternate \"toggle\" UI. \n                Labels default to the field label and standard true/false text.\n            - type: object\n              additionalProperties: false\n              description: Configure custom labels for the toggle UI.\n              properties:\n                'true':\n                  type: string\n                  description: Label to display when value is true.\n                'false':\n                  type: string\n                  description: Label to display when value is false.\n        required:\n        - type\n        - label\n        examples:\n        - type: boolean\n          label: Is this a special item?\n          def: false\n        - type: boolean\n          label: Show related articles?\n          toggle:\n            'true': Show related articles\n            'false': Hide related articles\n      title: BooleanField\n    CheckboxesField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - checkboxes\n            description: Apostrophe field type id.\n          def:\n            type: array\n            items:\n              oneOf:\n              - type: string\n              - type: number\n              - type: boolean\n            description: Default selected values.\n          choices:\n            oneOf:\n            - type: array\n              description: Static choices for the checkboxes.\n              items:\n                $ref: '#/components/schemas/SelectChoice'\n            - type: string\n              description: Method name that provides choices dynamically.\n          following:\n            oneOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n            description: Populate dynamically based on other fields (supports `<` parent prefixes).\n          followingIgnore:\n            oneOf:\n            - type: boolean\n            - type: array\n              items:\n                type: string\n            description: Ignore some or all followed fields when generating values.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - choices\n        examples:\n        - type: checkboxes\n          label: Tags\n          choices:\n          - label: News\n            value: news\n          - label: Blog\n            value: blog\n          - label: Events\n            value: events\n          def:\n          - news\n          - events\n      title: CheckboxesField\n    ColorField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - color\n            description: Apostrophe field type id.\n          def:\n            type: string\n            pattern: ^#(?:[0-9a-fA-F]{3}){1,2}$\n            description: Default hex color (e.g. \"#ff0000\").\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: color\n          label: Theme Color\n          def: '#336699'\n      title: ColorField\n    DateField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/DateBoundaryOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - date\n            description: Apostrophe field type id.\n          def:\n            type: string\n            format: date\n            description: Default date shown in the editor UI (YYYY-MM-DD).\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: date\n          label: Publish Date\n          def: '2025-01-01'\n          min: '2020-01-01'\n          max: '2030-12-31'\n        - type: date\n          label: Event Date\n          if:\n            status:\n              $eq: scheduled\n      title: DateField\n    DateAndTimeField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/DateTimeBoundaryOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - dateAndTime\n            description: Apostrophe field type id.\n          def:\n            type: string\n            format: date-time\n            description: Default timestamp in RFC 3339 format (e.g., 2025-08-29T13:00:00Z).\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: dateAndTime\n          label: Starts At\n          def: '2025-08-29T13:00:00Z'\n          min: '2024-01-01T00:00:00Z'\n          max: '2026-12-31T23:59:59Z'\n        - type: dateAndTime\n          label: Reminder At\n          requiredIf:\n            remindersEnabled: true\n      title: DateAndTimeField\n    EmailField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - email\n            description: Apostrophe field type id.\n          def:\n            type: string\n            format: email\n            description: Default email address shown in the editor UI.\n          pattern:\n            type: string\n            description: Optional regex for stricter validation (in addition to HTML5\n              email validation).\n          autocomplete:\n            type: string\n            description: Value for the HTML autocomplete attribute. Common values are\n              \"email\" or \"off\".\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: email\n          label: Contact Email\n          def: info@example.com\n        - type: email\n          label: Support Email\n          autocomplete: email\n          requiredIf:\n            supportEnabled: true\n      title: EmailField\n    FloatField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/NumericRangeOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - float\n          format:\n            type: string\n            enum:\n            - float\n            description: OpenAPI hint for tooling; always \"float\".\n          def:\n            type: number\n            format: float\n            description: Default decimal value.\n        examples:\n        - type: float\n          label: Price (USD)\n          help: Enter a decimal price.\n          def: 0.0\n          min: 0\n          max: 99999.99\n          required: true\n      title: FloatField\n    IntegerField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/NumericRangeOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - integer\n            description: Apostrophe field type id.\n          def:\n            type: integer\n            description: Default integer value shown in the editor UI.\n        required:\n        - type\n        - label\n        examples:\n        - type: integer\n          label: Age\n          min: 0\n          max: 120\n          def: 18\n        - type: integer\n          label: Estimated Hours\n          min: 1\n          max: 999\n      title: IntegerField\n    ObjectField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: A nested object with its own field schema.\n        properties:\n          type:\n            type: string\n            enum:\n            - object\n          fields:\n            $ref: '#/components/schemas/Fieldset'\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - fields\n      title: ObjectField\n    OembedField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - oembed\n            description: Apostrophe field type id.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        description: |\n          Lets editors paste a media URL from an oEmbed-compatible host.\n          The editor shows an immediate preview once a valid URL is entered.\n          Stored value is an object snapshot (url/title/thumbnail).\n        examples:\n        - type: oembed\n          label: Featured video\n      title: OembedField\n    PasswordField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - password\n            description: Apostrophe field type id.\n          def:\n            type: string\n            description: Default password value (generally not used).\n          min:\n            type: integer\n            description: Minimum number of characters required.\n          max:\n            type: integer\n            description: Maximum number of characters allowed.\n          pattern:\n            type: string\n            description: Regex to enforce password rules (e.g., at least one number).\n          autocomplete:\n            type: string\n            description: HTML autocomplete attribute, usually \"new-password\" or \"current-password\".\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: password\n          label: Account Password\n          min: 8\n          autocomplete: new-password\n      title: PasswordField\n    RadioField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - radio\n            description: Apostrophe field type id.\n          def:\n            oneOf:\n            - type: string\n            - type: number\n            - type: boolean\n            description: Default selected value.\n          choices:\n            oneOf:\n            - type: array\n              description: Static choices to render as radio buttons.\n              items:\n                $ref: '#/components/schemas/SelectChoice'\n            - type: string\n              description: Method name that provides choices (e.g. \"statusChoices\").\n          following:\n            oneOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n            description: Populate dynamically based on other fields (supports `<` parent prefixes).\n          followingIgnore:\n            oneOf:\n            - type: boolean\n            - type: array\n              items:\n                type: string\n            description: Ignore some or all followed fields when generating values.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - choices\n        examples:\n        - type: radio\n          label: Priority\n          choices:\n          - label: Low\n            value: low\n          - label: High\n            value: high\n          def: low\n        - type: radio\n          label: Status\n          choices: statusChoices\n      title: RadioField\n    RangeField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - $ref: '#/components/schemas/NumericRangeOptions'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - range\n            description: Apostrophe field type id.\n          def:\n            type: number\n            description: Default slider value in the editor UI.\n          step:\n            type: number\n            description: Increment step for the slider. If omitted, defaults to 1.\n          min:\n            type: number\n            description: Minimum value for the slider.\n          max:\n            type: number\n            description: Maximum value for the slider.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: range\n          label: Satisfaction\n          min: 1\n          max: 10\n          step: 1\n          def: 5\n        - type: range\n          label: Volume\n          min: 0\n          max: 100\n          step: 5\n          def: 50\n      title: RangeField\n    RelationshipField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: |\n          Relate this document to one or more docs of another type (pieces/pages).\n          Use `max: 1` for a single-select join; omit `max` (or set >1) for multi-select.\n        properties:\n          type:\n            type: string\n            enum:\n            - relationship\n            description: Apostrophe field type id.\n          withType:\n            type: string\n            description: Module name of the related doc type (e.g., \"article\", \"@apostrophecms/image\").\n          min:\n            type: integer\n            description: Minimum number of related docs required (inclusive).\n          max:\n            type: integer\n            description: Maximum number of related docs allowed (inclusive).\n          fields:\n            $ref: '#/components/schemas/Fieldset'\n          builders:\n            type: object\n            additionalProperties: true\n            description: |\n              Apostrophe cursor builders for the related query (e.g., {project: { title: 1 }, sort: { title: 1 } }).\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - withType\n        examples:\n        - type: relationship\n          label: Author\n          withType: person\n          max: 1\n          builders:\n            project:\n              title: 1\n              _url: 1\n        - type: relationship\n          label: Related Articles\n          withType: article\n          min: 0\n          max: 5\n          fields:\n            add:\n              relationshipRole:\n                type: select\n                label: Role\n                choices:\n                - label: Primary\n                  value: primary\n                - label: Secondary\n                  value: secondary\n          builders:\n            project:\n              title: 1\n              _url: 1\n            sort:\n              title: 1\n      title: RelationshipField\n    RelationshipReverseField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        description: |\n          Read-only reverse side of a forward `relationship` field defined on another type.\n          Use this to show “referenced by” links without storing ids here.\n        properties:\n          type:\n            type: string\n            enum:\n            - relationshipReverse\n            description: Apostrophe field type id.\n          withType:\n            type: string\n            description: Module name that holds the forward relationship.\n          reverseOf:\n            type: string\n            description: |\n              Name of the forward relationship field on `withType` (e.g.,\"_authors\" on \"article\").\n          builders:\n            type: object\n            additionalProperties: true\n            description: Cursor builders applied when populating the reverse join.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        - withType\n        - reverseOf\n        examples:\n        - type: relationshipReverse\n          label: Articles referencing this person\n          withType: article\n          reverseOf: _authors\n          builders:\n            project:\n              title: 1\n              _url: 1\n      title: RelationshipReverseField\n    SelectField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - select\n            description: Apostrophe field type id.\n          def:\n            oneOf:\n            - type: string\n            - type: number\n            - type: boolean\n            - type: array\n              items:\n                oneOf:\n                - type: string\n                - type: number\n                - type: boolean\n            description: |\n              Default value. If `multiple: true`, this should be an array.\n          multiple:\n            type: boolean\n            description: Allow selecting multiple values (stores an array).\n          choices:\n            oneOf:\n            - type: array\n              description: Static choices for the select dropdown.\n              items:\n                $ref: '#/components/schemas/SelectChoice'\n            - type: string\n              description: |\n                Name of a method that returns choices (e.g. \"sponsorNames\").\n                May be \"module:method\" to reference another module.\n          following:\n            oneOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n            description: Populate dynamically based on other fields’ values (supports `<` parent prefixes).\n          followingIgnore:\n            oneOf:\n            - type: boolean\n            - type: array\n              items:\n                type: string\n            description: Ignore some or all followed fields when generating values.\n        required:\n        - type\n        - label\n        examples:\n        - type: select\n          label: Task Priority\n          choices:\n          - label: Low\n            value: low\n          - label: Medium\n            value: medium\n          - label: High\n            value: high\n          - label: Critical\n            value: critical\n          def: medium\n        - type: select\n          label: Tags\n          multiple: true\n          choices:\n          - label: News\n            value: news\n          - label: Blog\n            value: blog\n          - label: Events\n            value: events\n          def:\n          - news\n          - events\n        - type: select\n          label: Sponsor\n          choices: sponsorNames\n          following:\n          - <projectType\n      title: SelectField\n    SelectChoice:\n      type: object\n      additionalProperties: false\n      properties:\n        label:\n          type: string\n          description: Human-friendly label shown in UI.\n        value:\n          oneOf:\n          - type: string\n          - type: number\n          - type: boolean\n          description: The stored value for this choice.\n        disabled:\n          type: boolean\n          description: If true, show but disable this option.\n      required:\n      - label\n      - value\n      title: SelectChoice\n    SlugField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - slug\n            description: Apostrophe field type id.\n          def:\n            type: string\n            description: Default slug value shown in the editor UI.\n          prefix:\n            type: string\n            description: Optional prefix automatically prepended when generating the slug.\n          source:\n            type: string\n            description: |\n              Name of the field this slug should follow (usually \"title\").\n              Works with `following`/`followingIgnore`.\n          unique:\n            type: boolean\n            description: If true, ensures slug is unique across docs of this type.\n          pattern:\n            type: string\n            description: Optional regex to further constrain allowed slugs.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: slug\n          label: URL Slug\n          source: title\n          unique: true\n          prefix: blog/\n        - type: slug\n          label: Custom Slug\n          def: my-custom-page\n      title: SlugField\n    StringField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - string\n            description: Apostrophe field type id.\n          def:\n            type: string\n            description: Default value shown in the editor UI.\n          textarea:\n            type: boolean\n            description: If true, renders a multiline textarea UI.\n          min:\n            type: integer\n            description: Minimum number of characters allowed.\n          max:\n            type: integer\n            description: Maximum number of characters allowed.\n          pattern:\n            type: string\n            description: |\n              Regular expression (string form) to validate the input.\n              Only matching values are allowed.\n          autocomplete:\n            type: string\n            description: |\n              Value of the HTML autocomplete attribute (see MDN). Use `\"off\"` to disable autocomplete.\n          following:\n            oneOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n            description: Field(s) to follow for automatic value generation. Supports `<` prefixes to access parent fields.\n          followingIgnore:\n            oneOf:\n            - type: boolean\n            - type: array\n              items:\n                type: string\n            description: Controls which `following` values are ignored.\n          sortify:\n            type: boolean\n            description: If true, creates a parallel “sortified” version of this field for case- and punctuation-insensitive sorting.\n        required:\n        - type\n        - label\n        examples:\n        - type: string\n          label: Dog Name\n          def: Fido\n        - type: string\n          label: Biography\n          textarea: true\n          max: 800\n        - type: string\n          label: Meta Description\n          following:\n          - title\n          - featured\n          followingIgnore:\n          - featured\n          if:\n            featured: true\n      title: StringField\n    TimeField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - time\n            description: Apostrophe field type id.\n          def:\n            type: string\n            pattern: ^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$\n            description: |\n              Default value in HH:MM:SS (24-hour).\n              If not set and not required, defaults to the current time.\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: time\n          label: Event Time\n          def: '14:30:00'\n        - type: time\n          label: Reminder Time\n      title: TimeField\n    UrlField:\n      allOf:\n      - $ref: '#/components/schemas/BaseField'\n      - type: object\n        additionalProperties: false\n        properties:\n          type:\n            type: string\n            enum:\n            - url\n            description: Apostrophe field type id.\n          def:\n            type: string\n            format: uri\n            description: Default URL shown in the editor UI.\n          pattern:\n            type: string\n            description: Optional regex for stricter validation of allowed URLs (in addition to standard URI syntax).\n          autocomplete:\n            type: string\n            description: Value for the HTML autocomplete attribute. Common values include \"url\" or \"off\".\n          if:\n            $ref: '#/components/schemas/UiCondition'\n          requiredIf:\n            $ref: '#/components/schemas/UiCondition'\n        required:\n        - type\n        - label\n        examples:\n        - type: url\n          label: Website\n          def: https://example.com\n        - type: url\n          label: LinkedIn Profile\n          autocomplete: url\n          requiredIf:\n            hasLinkedIn: true\n      title: UrlField\n    Page:\n      type: object\n      description: An ApostropheCMS page document with hierarchical structure and content\n        areas\n      properties:\n        _id:\n          type: string\n          description: Unique document identifier, may include mode and locale (e.g.,\n            \"id:en:published\")\n          example: ckhdscx5900054z9k88uqs16w:en:published\n        aposDocId:\n          type: string\n          description: Base document ID without mode/locale qualifiers\n          example: ckhdscx5900054z9k88uqs16w\n        aposLocale:\n          type: string\n          description: Document locale code\n          example: en\n        aposMode:\n          type: string\n          description: Document mode (draft or published)\n          enum:\n          - draft\n          - published\n          example: published\n        archived:\n          type: boolean\n          description: Whether the page is archived\n          default: false\n        createdAt:\n          type: string\n          format: date-time\n          description: Page creation timestamp\n          example: '2023-01-15T10:30:00.000Z'\n        updatedAt:\n          type: string\n          format: date-time\n          description: Page last update timestamp\n          example: '2024-12-18T14:20:00.000Z'\n        titleSortified:\n          type: string\n          description: Sortable version of the page title\n          example: about us\n        slug:\n          type: string\n          description: URL slug for the page\n          example: /about-us\n        path:\n          type: string\n          description: Full hierarchical path in the page tree\n          example: /about-us\n        rank:\n          type: integer\n          description: Sort order within parent page\n          example: 0\n        level:\n          type: integer\n          description: Depth level in the page tree (0 = root level)\n          example: 1\n        orphan:\n          type: boolean\n          description: Whether page is orphaned (not in tree structure)\n          default: false\n        parked:\n          type: array\n          description: Array of parking lot configurations if page is parked\n          items:\n            type: string\n          example: []\n        visibility:\n          type: string\n          description: Page visibility setting\n          enum:\n          - public\n          - loginRequired\n          - private\n          default: public\n          example: public\n        type:\n          type: string\n          description: Page type module name\n          example: '@apostrophecms/page'\n        title:\n          type: string\n          description: Page title\n          example: About Us\n          maxLength: 100\n        main:\n          type: object\n          description: Main content area with rich content widgets\n          properties:\n            metaType:\n              type: string\n              example: area\n            items:\n              type: array\n              items:\n                type: object\n                properties:\n                  metaType:\n                    type: string\n                    example: widget\n                  type:\n                    type: string\n                    example: '@apostrophecms/rich-text'\n                  aposPlaceholder:\n                    type: boolean\n                    default: false\n                  content:\n                    type: string\n                    description: Widget content (varies by widget type)\n                    example: <p>Welcome to our website!</p>\n                  _id:\n                    type: string\n                    example: widget-id-123\n        seoFields:\n          type: object\n          description: SEO metadata for the page\n          properties:\n            metaDescription:\n              type: string\n              description: Meta description for search engines\n              maxLength: 160\n              example: Learn about our company, mission, and values\n            metaKeywords:\n              type: string\n              description: Meta keywords (legacy, rarely used)\n              example: about, company, mission\n            ogTitle:\n              type: string\n              description: Open Graph title for social sharing\n              example: About Our Company\n            ogDescription:\n              type: string\n              description: Open Graph description for social sharing\n              example: Discover our story and what drives us forward\n            ogImage:\n              type: object\n              description: Open Graph image for social sharing\n              properties:\n                _id:\n                  type: string\n                  example: image-id-456\n                title:\n                  type: string\n                  example: Company Photo\n                attachment:\n                  type: object\n                  properties:\n                    _id:\n                      type: string\n                      example: attachment-789\n                    name:\n                      type: string\n                      example: company-photo\n                    extension:\n                      type: string\n                      example: jpg\n                    _url:\n                      type: string\n                      example: /uploads/attachments/company-photo.jpg\n        _ancestors:\n          type: array\n          description: Array of ancestor page IDs in the page tree hierarchy\n          items:\n            type: string\n          example:\n          - root-page-id\n        _children:\n          type: array\n          description: Array of child pages (when requested with children parameter)\n          items:\n            $ref: '#/components/schemas/Page'\n          example: []\n        _url:\n          type: string\n          description: Full URL to the page\n          example: https://example.com/about-us\n          format: uri\n        _edit:\n          type: boolean\n          description: Whether current user ca\n\n<!-- [TRUNCATED AT 50KB] -->\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/ApiError.md (Tokens: ~204 | Category: anthropic-skill) -->\n# ApiError\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**status** | **number** | HTTP status code, e.g., 401 | [optional] [default to undefined]\n**code** | **string** | Application error code (optional) | [optional] [default to undefined]\n**message** | **string** | Human-readable error message | [default to undefined]\n**details** | **{ [key: string]: any; }** | Extra context about the error | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ApiError } from 'apostrophecms-client';\n\nconst instance: ApiError = {\n    status,\n    code,\n    message,\n    details,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AreaField.md (Tokens: ~400 | Category: anthropic-skill) -->\n# AreaField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**_options** | [**AreaOptions**](AreaOptions.md) |  | [default to undefined]\n\n## Example\n\n```typescript\nimport { AreaField } from 'apostrophecms-client';\n\nconst instance: AreaField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    _options,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AreaOptions.md (Tokens: ~309 | Category: anthropic-skill) -->\n# AreaOptions\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**widgets** | **{ [key: string]: object; }** | Allowed widget types for this area. Keys are widget module names (e.g., \\&quot;@apostrophecms/rich-text\\&quot;). Values are per-widget options that apply *only* in this area.  | [default to undefined]\n**groups** | [**{ [key: string]: AreaWidgetGroup; }**](AreaWidgetGroup.md) | Organize widgets into groups for the expanded preview menu. Each group has a label, optional columns (1–4, default 3), and its own widgets map (same shape as &#x60;widgets&#x60;).  | [optional] [default to undefined]\n**max** | **number** | Maximum number of widgets allowed in this area. | [optional] [default to undefined]\n**expanded** | **boolean** | Use the expanded preview menu UX. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AreaOptions } from 'apostrophecms-client';\n\nconst instance: AreaOptions = {\n    widgets,\n    groups,\n    max,\n    expanded,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AreaWidgetGroup.md (Tokens: ~173 | Category: anthropic-skill) -->\n# AreaWidgetGroup\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**label** | **string** |  | [default to undefined]\n**columns** | **number** | Number of widget previews per row (default 3). | [optional] [default to undefined]\n**widgets** | **{ [key: string]: object; }** |  | [default to undefined]\n\n## Example\n\n```typescript\nimport { AreaWidgetGroup } from 'apostrophecms-client';\n\nconst instance: AreaWidgetGroup = {\n    label,\n    columns,\n    widgets,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/ArrayField.md (Tokens: ~488 | Category: anthropic-skill) -->\n# ArrayField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**fields** | [**Fieldset**](Fieldset.md) |  | [default to undefined]\n**min** | **number** | Minimum number of items (inclusive). | [optional] [default to undefined]\n**max** | **number** | Maximum number of items (inclusive). | [optional] [default to undefined]\n**titleField** | **string** | Field name in each item used as the item label in the UI. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { ArrayField } from 'apostrophecms-client';\n\nconst instance: ArrayField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    fields,\n    min,\n    max,\n    titleField,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/Attachment.md (Tokens: ~577 | Category: anthropic-skill) -->\n# Attachment\n\nFile attachment information from upload endpoint\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_id** | **string** | Unique attachment identifier | [optional] [default to undefined]\n**_url** | **string** | URL to the original file | [optional] [default to undefined]\n**_urls** | **{ [key: string]: string; }** | URLs for different image sizes (images only) | [optional] [default to undefined]\n**name** | **string** | Slugified filename | [optional] [default to undefined]\n**title** | **string** | Sortified filename | [optional] [default to undefined]\n**extension** | **string** | File extension | [optional] [default to undefined]\n**type** | **string** |  | [optional] [default to undefined]\n**group** | **string** | File group type | [optional] [default to undefined]\n**length** | **number** | File size in bytes | [optional] [default to undefined]\n**md5** | **string** | MD5 checksum | [optional] [default to undefined]\n**width** | **number** | Image width in pixels (images only) | [optional] [default to undefined]\n**height** | **number** | Image height in pixels (images only) | [optional] [default to undefined]\n**landscape** | **boolean** | Whether image is landscape orientation (images only) | [optional] [default to undefined]\n**portrait** | **boolean** | Whether image is portrait orientation (images only) | [optional] [default to undefined]\n**docIds** | **Array&lt;string&gt;** | IDs of documents using this attachment | [optional] [default to undefined]\n**archivedDocIds** | **Array&lt;string&gt;** | IDs of archived documents using this attachment | [optional] [default to undefined]\n**createdAt** | **string** |  | [optional] [default to undefined]\n**updatedAt** | **string** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { Attachment } from 'apostrophecms-client';\n\nconst instance: Attachment = {\n    _id,\n    _url,\n    _urls,\n    name,\n    title,\n    extension,\n    type,\n    group,\n    length,\n    md5,\n    width,\n    height,\n    landscape,\n    portrait,\n    docIds,\n    archivedDocIds,\n    createdAt,\n    updatedAt,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AttachmentCropRequest.md (Tokens: ~156 | Category: anthropic-skill) -->\n# AttachmentCropRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_id** | **string** | The _id property of an existing image attachment document | [default to undefined]\n**crop** | [**AttachmentCropRequestCrop**](AttachmentCropRequestCrop.md) |  | [default to undefined]\n\n## Example\n\n```typescript\nimport { AttachmentCropRequest } from 'apostrophecms-client';\n\nconst instance: AttachmentCropRequest = {\n    _id,\n    crop,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AttachmentCropRequestCrop.md (Tokens: ~208 | Category: anthropic-skill) -->\n# AttachmentCropRequestCrop\n\nCrop coordinates and dimensions\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**top** | **number** | Top coordinate of the crop area (pixels) | [default to undefined]\n**left** | **number** | Left coordinate of the crop area (pixels) | [default to undefined]\n**width** | **number** | Width of the crop area (pixels) | [default to undefined]\n**height** | **number** | Height of the crop area (pixels) | [default to undefined]\n\n## Example\n\n```typescript\nimport { AttachmentCropRequestCrop } from 'apostrophecms-client';\n\nconst instance: AttachmentCropRequestCrop = {\n    top,\n    left,\n    width,\n    height,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AttachmentField.md (Tokens: ~439 | Category: anthropic-skill) -->\n# AttachmentField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**accept** | [**AttachmentFieldAllOfAccept**](AttachmentFieldAllOfAccept.md) |  | [optional] [default to undefined]\n**maxSize** | **number** | Optional max file size in bytes (documentation-only hint). | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AttachmentField } from 'apostrophecms-client';\n\nconst instance: AttachmentField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    accept,\n    maxSize,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AttachmentFieldAllOfAccept.md (Tokens: ~104 | Category: anthropic-skill) -->\n# AttachmentFieldAllOfAccept\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n\n## Example\n\n```typescript\nimport { AttachmentFieldAllOfAccept } from 'apostrophecms-client';\n\nconst instance: AttachmentFieldAllOfAccept = {\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AttachmentsApi.md (Tokens: ~1268 | Category: anthropic-skill) -->\n# AttachmentsApi\n\nAll URIs are relative to *http://localhost:3000/api/v1*\n\n|Method | HTTP request | Description|\n|------------- | ------------- | -------------|\n|[**attachmentCrop**](#attachmentcrop) | **POST** /@apostrophecms/attachment/crop | Crop image attachment|\n|[**attachmentUpload**](#attachmentupload) | **POST** /@apostrophecms/attachment/upload | Upload media file|\n\n# **attachmentCrop**\n> boolean attachmentCrop(attachmentCropRequest)\n\nCreate a cropped version of an existing image attachment. The crop object is appended to the crops array property of the attachment document. The newly uploaded image file will be stored with a filename using the crop properties: {_id}-{name}.{top}.{left}.{width}.{height}.{extension} \n\n### Example\n\n```typescript\nimport {\n    AttachmentsApi,\n    Configuration,\n    AttachmentCropRequest\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AttachmentsApi(configuration);\n\nlet attachmentCropRequest: AttachmentCropRequest; //\nlet aposMode: 'draft' | 'published'; //Request draft or published version of content (optional) (default to 'published')\nlet aposLocale: string; //Locale for internationalization (e.g., \\'en\\', \\'fr\\', \\'es\\') (optional) (default to undefined)\n\nconst { status, data } = await apiInstance.attachmentCrop(\n    attachmentCropRequest,\n    aposMode,\n    aposLocale\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **attachmentCropRequest** | **AttachmentCropRequest**|  | |\n| **aposMode** | [**&#39;draft&#39; | &#39;published&#39;**]**Array<&#39;draft&#39; &#124; &#39;published&#39;>** | Request draft or published version of content | (optional) defaults to 'published'|\n| **aposLocale** | [**string**] | Locale for internationalization (e.g., \\&#39;en\\&#39;, \\&#39;fr\\&#39;, \\&#39;es\\&#39;) | (optional) defaults to undefined|\n\n\n### Return type\n\n**boolean**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: application/json\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Image cropped successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**401** | Authentication required |  -  |\n|**404** | Resource not found |  -  |\n|**422** | Unprocessable entity - crop coordinates exceed image bounds |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **attachmentUpload**\n> Attachment attachmentUpload()\n\nUpload a media file to create an attachment. The uploaded file can then be used to create image or file documents. Uses multipart/form-data encoding with the file uploaded under the name \\'file\\'. \n\n### Example\n\n```typescript\nimport {\n    AttachmentsApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AttachmentsApi(configuration);\n\nlet file: File; //The file to upload (default to undefined)\nlet aposMode: 'draft' | 'published'; //Request draft or published version of content (optional) (default to 'published')\nlet aposLocale: string; //Locale for internationalization (e.g., \\'en\\', \\'fr\\', \\'es\\') (optional) (default to undefined)\n\nconst { status, data } = await apiInstance.attachmentUpload(\n    file,\n    aposMode,\n    aposLocale\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **file** | [**File**] | The file to upload | defaults to undefined|\n| **aposMode** | [**&#39;draft&#39; | &#39;published&#39;**]**Array<&#39;draft&#39; &#124; &#39;published&#39;>** | Request draft or published version of content | (optional) defaults to 'published'|\n| **aposLocale** | [**string**] | Locale for internationalization (e.g., \\&#39;en\\&#39;, \\&#39;fr\\&#39;, \\&#39;es\\&#39;) | (optional) defaults to undefined|\n\n\n### Return type\n\n**Attachment**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: multipart/form-data\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | File uploaded successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**401** | Authentication required |  -  |\n|**413** | File too large |  -  |\n|**415** | Unsupported file type |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AuthContext200Response.md (Tokens: ~187 | Category: anthropic-skill) -->\n# AuthContext200Response\n\nAdditional context based on configuration\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**localLogin** | **boolean** | Whether local login is enabled | [optional] [default to undefined]\n**passwordReset** | **boolean** | Whether password reset is enabled | [optional] [default to undefined]\n**loginUrl** | **string** | The configured login URL | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthContext200Response } from 'apostrophecms-client';\n\nconst instance: AuthContext200Response = {\n    localLogin,\n    passwordReset,\n    loginUrl,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AuthContextPost200Response.md (Tokens: ~191 | Category: anthropic-skill) -->\n# AuthContextPost200Response\n\nAdditional context based on configuration\\\"\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**localLogin** | **boolean** | Whether local login is enabled | [optional] [default to undefined]\n**passwordReset** | **boolean** | Whether password reset is enabled | [optional] [default to undefined]\n**loginUrl** | **string** | The configured login URL | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthContextPost200Response } from 'apostrophecms-client';\n\nconst instance: AuthContextPost200Response = {\n    localLogin,\n    passwordReset,\n    loginUrl,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AuthenticationApi.md (Tokens: ~3076 | Category: anthropic-skill) -->\n# AuthenticationApi\n\nAll URIs are relative to *http://localhost:3000/api/v1*\n\n|Method | HTTP request | Description|\n|------------- | ------------- | -------------|\n|[**authContext**](#authcontext) | **GET** /@apostrophecms/login/context | Get login context information|\n|[**authContextPost**](#authcontextpost) | **POST** /@apostrophecms/login/context | Get login context information|\n|[**authLogin**](#authlogin) | **POST** /@apostrophecms/login/login | Login to get authentication token|\n|[**authLogout**](#authlogout) | **POST** /@apostrophecms/login/logout | Logout and invalidate session|\n|[**authReset**](#authreset) | **POST** /@apostrophecms/login/reset | Complete password reset|\n|[**authResetRequest**](#authresetrequest) | **POST** /@apostrophecms/login/reset-request | Request password reset|\n|[**authWhoAmI**](#authwhoami) | **GET** /@apostrophecms/login/whoami | Get current user information|\n|[**authWhoAmIPost**](#authwhoamipost) | **POST** /@apostrophecms/login/whoami | Get current user information|\n\n# **authContext**\n> AuthContext200Response authContext()\n\n**⚠️ DEPRECATED:** This GET endpoint is deprecated due to caching issues. Use the POST method instead.  Returns login context information including environment and requirements. This endpoint provides information about the login system configuration.  **Useful for:** - Understanding available login methods - Checking if password reset is enabled - Getting login system configuration \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authContext();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthContext200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Login context retrieved successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authContextPost**\n> AuthContextPost200Response authContextPost()\n\nReturns login context information including environment and requirements. This endpoint provides information about the login system configuration.  **Note:** POST method is recommended for this endpoint to avoid caching issues.  **Useful for:** - Understanding available login methods - Checking if password reset is enabled - Getting login system configuration \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authContextPost();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthContextPost200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Login context retrieved successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authLogin**\n> AuthLogin200Response authLogin(authLoginRequest)\n\n🚀 **Start here!** Authenticate and receive either a bearer token or session cookie for subsequent API requests.  **Perfect for:** - Getting started with the API - Setting up authentication for your app - Testing API access  **Choose your authentication method:** - **Bearer Token** (recommended): omit `session` field or set to `false` - **Session Cookie**: set `session` to `true` and include `credentials: \\'include\\'` in fetch \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration,\n    AuthLoginRequest\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nlet authLoginRequest: AuthLoginRequest; //\n\nconst { status, data } = await apiInstance.authLogin(\n    authLoginRequest\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **authLoginRequest** | **AuthLoginRequest**|  | |\n\n\n### Return type\n\n**AuthLogin200Response**\n\n### Authorization\n\nNo authorization required\n\n### HTTP request headers\n\n - **Content-Type**: application/json\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Login successful |  * Set-Cookie - Session cookie (only when session&#x3D;true) <br>  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**401** | Authentication required |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authLogout**\n> AuthLogout200Response authLogout()\n\nEnd the current session or invalidate the bearer token.  **For bearer token**: include Authorization header **For session cookie**: include credentials in request \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authLogout();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthLogout200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Logout successful |  -  |\n|**401** | Authentication required |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authReset**\n> AuthReset200Response authReset(authResetRequest)\n\nCompletes a password reset using the token provided in the reset email.  **⚠️ Note:** This endpoint is only available when `passwordReset` is enabled in the login module configuration.  Reset tokens are valid for the number of hours specified in `passwordResetHours` (default: 48 hours). \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration,\n    AuthResetRequest\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nlet authResetRequest: AuthResetRequest; //\n\nconst { status, data } = await apiInstance.authReset(\n    authResetRequest\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **authResetRequest** | **AuthResetRequest**|  | |\n\n\n### Return type\n\n**AuthReset200Response**\n\n### Authorization\n\nNo authorization required\n\n### HTTP request headers\n\n - **Content-Type**: application/json\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Password reset completed successfully |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**404** | Resource not found |  -  |\n|**410** | Reset token expired |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authResetRequest**\n> AuthResetRequest200Response authResetRequest(authResetRequestRequest)\n\nInitiates a password reset process by sending a reset link to the user\\'s email address.  **⚠️ Note:** This endpoint is only available when `passwordReset` is enabled in the login module configuration.  **Security feature:** The user will not be notified if the email check fails or if the email fails to send. However, debug information will be output in the server terminal. \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration,\n    AuthResetRequestRequest\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nlet authResetRequestRequest: AuthResetRequestRequest; //\n\nconst { status, data } = await apiInstance.authResetRequest(\n    authResetRequestRequest\n);\n```\n\n### Parameters\n\n|Name | Type | Description  | Notes|\n|------------- | ------------- | ------------- | -------------|\n| **authResetRequestRequest** | **AuthResetRequestRequest**|  | |\n\n\n### Return type\n\n**AuthResetRequest200Response**\n\n### Authorization\n\nNo authorization required\n\n### HTTP request headers\n\n - **Content-Type**: application/json\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Password reset request processed (always returns success for security) |  -  |\n|**400** | Bad request - invalid input parameters |  -  |\n|**404** | Resource not found |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authWhoAmI**\n> AuthWhoAmI200Response authWhoAmI()\n\n**⚠️ DEPRECATED:** This GET endpoint is deprecated due to caching issues. Use the POST method instead.  Returns information about the currently authenticated user.  **Security note:** Only explicitly configured fields are returned, never the complete user object. This prevents accidental exposure of sensitive user data. \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authWhoAmI();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthWhoAmI200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Current user information retrieved successfully |  -  |\n|**401** | Authentication required |  -  |\n|**404** | Resource not found |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n# **authWhoAmIPost**\n> AuthWhoAmI200Response authWhoAmIPost()\n\nReturns information about the currently authenticated user.  **Note:** POST method is recommended for this endpoint to avoid caching issues.  **Perfect for:** - Checking if authentication is working - Getting user details for your app - Validating permissions  **Security note:** Only explicitly configured fields are returned,  never the complete user object. This prevents accidental exposure  of sensitive user data. \n\n### Example\n\n```typescript\nimport {\n    AuthenticationApi,\n    Configuration\n} from 'apostrophecms-client';\n\nconst configuration = new Configuration();\nconst apiInstance = new AuthenticationApi(configuration);\n\nconst { status, data } = await apiInstance.authWhoAmIPost();\n```\n\n### Parameters\nThis endpoint does not have any parameters.\n\n\n### Return type\n\n**AuthWhoAmI200Response**\n\n### Authorization\n\n[SessionAuth](../README.md#SessionAuth), [ApiKeyAuth](../README.md#ApiKeyAuth), [BearerAuth](../README.md#BearerAuth)\n\n### HTTP request headers\n\n - **Content-Type**: Not defined\n - **Accept**: application/json\n\n\n### HTTP response details\n| Status code | Description | Response headers |\n|-------------|-------------|------------------|\n|**200** | Current user information retrieved successfully |  -  |\n|**401** | Authentication required |  -  |\n|**404** | Resource not found |  -  |\n|**500** | Internal server error |  -  |\n\n[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AuthLogin200Response.md (Tokens: ~135 | Category: anthropic-skill) -->\n# AuthLogin200Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**token** | **string** | Bearer token (only present when session is false/omitted) | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthLogin200Response } from 'apostrophecms-client';\n\nconst instance: AuthLogin200Response = {\n    token,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AuthLoginRequest.md (Tokens: ~176 | Category: anthropic-skill) -->\n# AuthLoginRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**username** | **string** | User\\&#39;s login username | [default to undefined]\n**password** | **string** | User\\&#39;s password | [default to undefined]\n**session** | **boolean** | Set to true to receive session cookie instead of bearer token | [optional] [default to false]\n\n## Example\n\n```typescript\nimport { AuthLoginRequest } from 'apostrophecms-client';\n\nconst instance: AuthLoginRequest = {\n    username,\n    password,\n    session,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AuthLogout200Response.md (Tokens: ~122 | Category: anthropic-skill) -->\n# AuthLogout200Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**success** | **boolean** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthLogout200Response } from 'apostrophecms-client';\n\nconst instance: AuthLogout200Response = {\n    success,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AuthReset200Response.md (Tokens: ~143 | Category: anthropic-skill) -->\n# AuthReset200Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**success** | **boolean** |  | [optional] [default to undefined]\n**message** | **string** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthReset200Response } from 'apostrophecms-client';\n\nconst instance: AuthReset200Response = {\n    success,\n    message,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AuthReset410Response.md (Tokens: ~122 | Category: anthropic-skill) -->\n# AuthReset410Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**error** | **string** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthReset410Response } from 'apostrophecms-client';\n\nconst instance: AuthReset410Response = {\n    error,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequest.md (Tokens: ~145 | Category: anthropic-skill) -->\n# AuthResetRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**token** | **string** | Reset token from the password reset email | [default to undefined]\n**password** | **string** | New password for the user account | [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthResetRequest } from 'apostrophecms-client';\n\nconst instance: AuthResetRequest = {\n    token,\n    password,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequest200Response.md (Tokens: ~146 | Category: anthropic-skill) -->\n# AuthResetRequest200Response\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**success** | **boolean** |  | [optional] [default to undefined]\n**message** | **string** |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthResetRequest200Response } from 'apostrophecms-client';\n\nconst instance: AuthResetRequest200Response = {\n    success,\n    message,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AuthResetRequestRequest.md (Tokens: ~126 | Category: anthropic-skill) -->\n# AuthResetRequestRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**email** | **string** | Email address of the user requesting password reset | [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthResetRequestRequest } from 'apostrophecms-client';\n\nconst instance: AuthResetRequestRequest = {\n    email,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/AuthWhoAmI200Response.md (Tokens: ~234 | Category: anthropic-skill) -->\n# AuthWhoAmI200Response\n\nAdditional fields based on whoamiFields configuration\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_id** | **string** | User\\&#39;s unique identifier | [optional] [default to undefined]\n**username** | **string** | User\\&#39;s login username | [optional] [default to undefined]\n**title** | **string** | User\\&#39;s display name | [optional] [default to undefined]\n**email** | **string** | User\\&#39;s email address (if configured in whoamiFields) | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { AuthWhoAmI200Response } from 'apostrophecms-client';\n\nconst instance: AuthWhoAmI200Response = {\n    _id,\n    username,\n    title,\n    email,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/BaseField.md (Tokens: ~404 | Category: anthropic-skill) -->\n# BaseField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id (e.g., \\&quot;float\\&quot;, \\&quot;string\\&quot;, \\&quot;boolean\\&quot;). | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **any** |  | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BaseField } from 'apostrophecms-client';\n\nconst instance: BaseField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/BooleanField.md (Tokens: ~414 | Category: anthropic-skill) -->\n# BooleanField\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**type** | **string** | Apostrophe field type id. | [default to undefined]\n**label** | **string** | Human-readable label for editors. | [default to undefined]\n**help** | **string** | Short helper text shown in the UI. | [optional] [default to undefined]\n**htmlHelp** | **string** | Rich helper text (HTML allowed by Apostrophe). | [optional] [default to undefined]\n**def** | **boolean** | Default value shown in the editor UI. | [optional] [default to undefined]\n**required** | **boolean** | If true, value must be provided. | [optional] [default to undefined]\n**readOnly** | **boolean** | If true, UI should render as read-only (Apostrophe option). | [optional] [default to undefined]\n**hidden** | **boolean** | If true, hide in editor UI. | [optional] [default to undefined]\n**_if** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**requiredIf** | [**UiCondition**](UiCondition.md) |  | [optional] [default to undefined]\n**toggle** | [**BooleanFieldAllOfToggle**](BooleanFieldAllOfToggle.md) |  | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BooleanField } from 'apostrophecms-client';\n\nconst instance: BooleanField = {\n    type,\n    label,\n    help,\n    htmlHelp,\n    def,\n    required,\n    readOnly,\n    hidden,\n    _if,\n    requiredIf,\n    toggle,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/BooleanFieldAllOfToggle.md (Tokens: ~164 | Category: anthropic-skill) -->\n# BooleanFieldAllOfToggle\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_true** | **string** | Label to display when value is true. | [optional] [default to undefined]\n**_false** | **string** | Label to display when value is false. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BooleanFieldAllOfToggle } from 'apostrophecms-client';\n\nconst instance: BooleanFieldAllOfToggle = {\n    _true,\n    _false,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/BooleanFieldAllOfToggleOneOf.md (Tokens: ~178 | Category: anthropic-skill) -->\n# BooleanFieldAllOfToggleOneOf\n\nConfigure custom labels for the toggle UI.\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_true** | **string** | Label to display when value is true. | [optional] [default to undefined]\n**_false** | **string** | Label to display when value is false. | [optional] [default to undefined]\n\n## Example\n\n```typescript\nimport { BooleanFieldAllOfToggleOneOf } from 'apostrophecms-client';\n\nconst instance: BooleanFieldAllOfToggleOneOf = {\n    _true,\n    _false,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- File: packages/apostrophecms-openapi/examples/typescript/docs/BulkOperationRequest.md (Tokens: ~129 | Category: anthropic-skill) -->\n# BulkOperationRequest\n\n\n## Properties\n\nName | Type | Description | Notes\n------------ | ------------- | ------------- | -------------\n**_ids** | **Array&lt;string&gt;** | Array of document IDs to operate on | [default to undefined]\n\n## Example\n\n```typescript\nimport { BulkOperationRequest } from 'apostrophecms-client';\n\nconst instance: BulkOperationRequest = {\n    _ids,\n};\n```\n\n[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)\n\n<!-- ... +212 more modular skills available via /api/skills/apostrophecms/apostrophe?path={path} -->\n</yakaai_skills>"}