{"_id":"@crownpeak/fsxa-publishing-test-api","name":"@crownpeak/fsxa-publishing-test-api","dist-tags":{"latest":"12.0.0"},"versions":{"12.0.0":{"name":"@crownpeak/fsxa-publishing-test-api","version":"12.0.0","description":"The JavaScript Content API Library a.k.a. Content API is an interface handling data coming from the FirstSpirit CaaS and the Navigation Service.","keywords":[],"main":"dist/fsxa-api.cjs.js","module":"dist/fsxa-api.es5.js","types":"dist/types","author":{"name":"Tobias Golbs","email":"golbs@e-spirit.com"},"contributors":[{"name":"Dominik Barczewski","email":"barczewski@e-spirit.com"},{"name":"Nicolai McAlley","email":"nicolai.mcalley@crownpeak.com"},{"name":"Jaswin Schütz","email":"jschuetz@e-spirit.com"},{"name":"Justin Wiegmann","email":"justin.wiegmann@crownpeak.com"}],"repository":{"type":"git","url":"git+https://github.com/e-Spirit/javascript-content-api-library.git"},"license":"Apache-2.0","publishConfig":{"access":"public"},"engines":{"node":">=14.0.0"},"scripts":{"prebuild":"rimraf dist && rimraf proxy/dist && rimraf stats","build:types":"tsc --project tsconfig.build.json --emitDeclarationOnly --skipLibCheck && tsc --project tsconfig.proxy.json --emitDeclarationOnly --skipLibCheck","build:esbuild":"npm run build:types && node esbuild.config.mjs","build":"npm run prebuild && npm run build:esbuild","analyze:size":"npm run build && npx pkg-size ./dist && npx pkg-size ./proxy/dist","version:dev":"npm version prerelease --no-git-tag-version --preid alpha","build:local":"rimraf fsxa-api-*.tgz && npm run version:dev && npm run build && npm pack && npm pack --workspace proxy","test":"jest --verbose ./src","test:integration":"jest --verbose --runInBand --forceExit ./integrationtests","test:coverage":"jest --coverage","test:watch":"jest --coverage --watch","test:prod":"npm run lint && npm run test -- --no-cache","deploy-docs":"ts-node tools/gh-pages-publish","report-coverage":"cat ./coverage/lcov.info | coveralls","commit":"git-cz","release":"release-it","release:dry-run":"release-it --dry-run && node ./scripts/sync-workspace-versions.js && node ./scripts/publish-workspace.js --dry-run","release:ci":"release-it --ci","release:ci:dry-run":"release-it --ci --dry-run && node ./scripts/sync-workspace-versions.js && node ./scripts/publish-workspace.js --dry-run","precommit":"lint-staged","prepush":"jest --verbose ./src","commitmsg":"commitlint -E HUSKY_GIT_PARAMS","dts":"npm-dts generate -e ./src/FSXAApi.ts","dev":"npx nodemon dev/index.ts --ignore ./**/dist"},"lint-staged":{"{src,test}/**/*.ts":["prettier --write","git add"]},"config":{"commitizen":{"path":"node_modules/cz-conventional-changelog"}},"jest":{"transform":{".(ts|tsx)":"ts-jest"},"testEnvironment":"node","testRegex":"(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$","moduleFileExtensions":["ts","tsx","js","d.ts"],"modulePathIgnorePatterns":["dist"],"coveragePathIgnorePatterns":["/node_modules/","/src/enums.ts","/src/index.ts","/src/routes.ts","/src/modules/Logger.ts"],"collectCoverageFrom":["src/**/*.{js,ts}"]},"prettier":{"semi":false,"singleQuote":true},"commitlint":{"extends":["@commitlint/config-conventional"]},"workspaces":["proxy"],"devDependencies":{"@babel/preset-env":"^7.28.5","@babel/preset-typescript":"^7.28.5","@commitlint/cli":"^20.1.0","@commitlint/config-conventional":"^20.0.0","@faker-js/faker":"^9.3.0","@release-it/conventional-changelog":"^10.0.2","@types/cors":"^2.8.19","@types/express":"^5.0.5","@types/jest":"^30.0.0","@types/node":"^24.10.1","@types/qs":"^6.14.0","@types/ws":"^8.18.1","@vitejs/plugin-legacy":"^7.2.1","colors":"^1.4.0","commitizen":"^4.3.1","conventional-changelog-conventionalcommits":"^9.1.0","cross-fetch":"^4.1.0","cz-conventional-changelog":"^3.3.0","dotenv":"^17.2.3","esbuild":"^0.27.0","esbuild-analyzer":"^0.2.0","esbuild-plugin-external-global":"^1.0.1","esbuild-plugin-polyfill-node":"^0.3.0","esbuild-visualizer":"^0.7.0","express":"^5.1.0","husky":"^9.1.7","inquirer":"^13.0.1","jest":"^30.2.0","jest-fetch-mock":"^3.0.3","lint-staged":"^16.2.7","minimist":"^1.2.8","node-fetch":"^3.3.2","nodemon":"^3.1.11","npm-dts":"^1.3.13","pkg-size":"^2.4.0","prettier":"^3.6.2","release-it":"^19.0.6","rimraf":"^6.1.2","shelljs":"^0.10.0","ts-jest":"^29.4.5","ts-node":"^10.9.2","typescript":"^5.9.3"},"dependencies":{"chalk":"^4.1.2","date-fns":"^4.1.0","node-inspect-extracted":"^3.2.2","tslib":"^2.8.1"},"peerDependencies":{"express":"^4.17.1"},"peerDependenciesMeta":{"express":{"optional":true}},"optionalDependencies":{"better-sse":"^0.15.1","body-parser":"^2.2.1","cors":"^2.8.5","qs":"^6.14.0","reconnecting-websocket":"^4.4.0","saxes":"^6.0.0","ws":"^8.18.3"},"gitHead":"1796ec052e1e290efc635897de2d1b14d79da58e","_id":"@crownpeak/fsxa-publishing-test-api@12.0.0","bugs":{"url":"https://github.com/e-Spirit/javascript-content-api-library/issues"},"homepage":"https://github.com/e-Spirit/javascript-content-api-library#readme","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-r86gkHmRha3MVhUC+hP75E+Oh4+8h+EHiHaPHfNWpQRbquUuMwnv9qG39vaYrUEPJ5dSURHkGwLaM1Tmuf1P9g==","shasum":"5ca95cd213e16396158e821323af678c3d2edcb2","tarball":"https://registry.npmjs.org/@crownpeak/fsxa-publishing-test-api/-/fsxa-publishing-test-api-12.0.0.tgz","fileCount":49,"unpackedSize":592626,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD4OGtgV88Uf4L0X+JXlshpwZVrcCS1jpRtpciGR6q5mwIhAMbPsBVCBLwRVHnJaMOyELDGcExI9SJA+pNfm6mrXVtE"}]},"_npmUser":{"name":"ecom-espirit","email":"team-e-commerce@e-spirit.com"},"directories":{},"maintainers":[{"name":"ptylr","email":"me@ptylr.com"},{"name":"richard-lund","email":"richard.lund@crownpeak.com"},{"name":"ecom-espirit","email":"team-e-commerce@e-spirit.com"},{"name":"itsroy69","email":"jyotirmoyroy649@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fsxa-publishing-test-api_12.0.0_1768480974723_0.12594158986908188"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-15T12:42:54.653Z","12.0.0":"2026-01-15T12:42:54.953Z","modified":"2026-01-15T12:42:55.264Z"},"maintainers":[{"name":"ptylr","email":"me@ptylr.com"},{"name":"richard-lund","email":"richard.lund@crownpeak.com"},{"name":"ecom-espirit","email":"team-e-commerce@e-spirit.com"},{"name":"itsroy69","email":"jyotirmoyroy649@gmail.com"}],"description":"The JavaScript Content API Library a.k.a. Content API is an interface handling data coming from the FirstSpirit CaaS and the Navigation Service.","homepage":"https://github.com/e-Spirit/javascript-content-api-library#readme","keywords":[],"repository":{"type":"git","url":"git+https://github.com/e-Spirit/javascript-content-api-library.git"},"contributors":[{"name":"Dominik Barczewski","email":"barczewski@e-spirit.com"},{"name":"Nicolai McAlley","email":"nicolai.mcalley@crownpeak.com"},{"name":"Jaswin Schütz","email":"jschuetz@e-spirit.com"},{"name":"Justin Wiegmann","email":"justin.wiegmann@crownpeak.com"}],"author":{"name":"Tobias Golbs","email":"golbs@e-spirit.com"},"bugs":{"url":"https://github.com/e-Spirit/javascript-content-api-library/issues"},"license":"Apache-2.0","readme":"# Legal Notices\n\nJavaScript Content API Library is a library of [Crownpeak Technology GmbH](http://www.crownpeak.com), Dortmund, Germany.\nThe JavaScript Content API Library is subject to the Apache-2.0 license.\n\n> **_Disclaimer_**\n> This document is provided for information purposes only. Crownpeak Technology may change the contents hereof without notice. This document is not warranted to be error-free, nor subject to any other warranties or conditions, whether expressed orally or implied in law, including implied warranties and conditions of merchantability or fitness for a particular purpose. Crownpeak Technology specifically disclaims any liability with respect to this document and no contractual obligations are formed either directly or indirectly by this document. The technologies, functionality, services, and processes described herein are subject to change without notice.\n\n# JavaScript Content API Library\n\nThe JavaScript Content API Library a.k.a. Content API is an interface handling data provided by FirstSpirit\n[CaaS](https://docs.e-spirit.com/module/caas/CaaS_Product_Documentation_EN.html) and \n[Navigation Service](https://navigationservice.e-spirit.cloud/docs/user/en/documentation.html). \nThe data is processed and transformed so that it can be used in any JavaScript project.\n\nHead to our [example PWA and project](https://github.com/e-Spirit/crownpeak-pwa-template) to see this API in action.\n\nPlease note that while this library provides a comprehensive set of features, it may not implement every feature required for your specific use case. \nCustomers should carefully evaluate and test whether the library meets their performance, compatibility, and security requirements within their own setups. \nIt is the user's responsibility to determine whether additional custom implementations or modifications are required to meet their specific needs.\nRelying solely on the provided code without thorough validation and possible extensions may not guarantee optimal operation in all scenarios.\n\n## Experimental features\n\nFeatures marked as experimental are subject to change as long as they remain in the experimental state.\nBreaking changes to experimental features are not reflected in a major version changes.\n\n## Methods\n\nIn this section all available methods will be explained using examples.\n\n## Requirements\n\nThe JavaScript Content API Library requires a `fetch` implementation to run on a Node server environment.\nThis dependency can be fulfilled with a cross-fetch polyfill in older Node versions.\nA working example can be found in the chapter _Constructor_.\n\n### Constructor\n\nTo be able to use the Content API, a new object must be created.\nHow you create the object depends on how you want to use the Content API.\n\nIf you want to use the information provided by the CaaS in your frontend, you can use the `FSXAProxyApi`.\nIt proxies the requested resources to a middleware Rest Api, that does not expose secrets.\nIf you want to use it in your server, you can use the `FSXARemoteApi`.\nIt can be registered as a Rest Api that can be called from a `FSXAProxyApi` instance.\n\nHowever, to have a fully running application, we recommend using the Content API in your server as well as in your frontend.\n\nThe config mode can be `preview` or `release`, depending on the state of the content you want to fetch.\n<br />\nThere is an enum to use these modes.\n<br />\n`FSXAContentMode.PREVIEW` for `preview`\n<br />\n`FSXAContentMode.RELEASE` for `release`\n\nIf you want to use the `FSXARemoteApi`, you have to specify the following parameters:\n\n```typescript\nconst config = {\n  apikey: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'!,\n  caasURL: 'https://your.caas.url',\n  contentMode: FSXAContentMode.PREVIEW,\n  navigationServiceURL: 'https://your.navigation-service.url/navigation',\n  projectID: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n  tenantID: 'your-tenant-id',\n  logLevel: LogLevel.INFO,\n  enableEventStream: true || false,\n}\n```\n\nYou can also include remote projects if you want to use remote media.\n\n> **_Attention_**<br>\n> Currently the Content API can only work with the configured language of the remote media project.\n> You also require a configured CAAS API key with read permissions to both projects.\n>\n> For this you can add another parameter called `remotes` to the config. This parameter expects an object, which requires a unique name as key and an object as value. This object must have two keys. On the one hand an `id` with the project id as the value and on the other the `locale` with the locale abbreviation. For example:\n\n```typescript\nconst config = {\n  ...\n  remotes: { media: { id: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', locale: 'en_GB' } },\n  ...\n}\n```\n\nThe log level can be:\n`0` = Info\n`1` = Log\n`2` = Warning\n`3` = Error\n`4` = None. The default is set to `3`.\n\nHere is an example of how the `FSXARemoteApi` and `FSXAProxyApi` could be used with an [Express.js](https://expressjs.com/) backend.\nMake sure you have `cross-fetch`, `express`, `cors`, `lodash` and of course `fsxa-api` installed.\n\n```typescript\nimport dotenv from 'dotenv'\nimport express from 'express'\nimport cors from 'cors'\nimport {\n  FSXAContentMode,\n  LogLevel,\n  FSXARemoteApi,\n} from 'fsxa-api'\nimport { FSXAProxyApi } from 'fsxa-proxy-api'\nimport getExpressRouter from 'fsxa-api/dist/lib/integrations/express'\nimport 'cross-fetch/polyfill'\n\ndotenv.config({ path: '.env' })\nconst app = express()\nconst remoteApi = new FSXARemoteApi(config)\n\napp.use(cors())\napp.use('/api', getExpressRouter({ api: remoteApi }))\n\napp.listen(3002, async () => {\n  console.log('Listening at http://localhost:3002')\n  try {\n    const locale = 'de_DE'\n    const proxyAPI = new FSXAProxyApi(\n      'http://localhost:3002/api',\n      LogLevel.INFO\n    )\n    // you can also fetch navigation from proxyAPI\n    const navigationResponse = await proxyAPI.fetchNavigation({\n      locale,\n      initialPath: '/',\n    })\n  } catch (e) {\n    console.log(e)\n  }\n})\n```\n\n### get authorizationHeader\n\nReturns the build authorization header in the following format when using `FSXARemoteApi`:\n\n```typescript\n{\n  authorization: 'Bearer xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'\n}\n```\n\nExample:\n\n```typescript\nconst remoteApi = new FSXARemoteApi(config)\nconst authorizationHeader = remoteApi.authorizationHeader\n// console.log { authorization: `Bearer ${config.apikey}` }\n```\n\n### fetchNavigation\n\nThis method fetches the navigation from the configured navigation service. You need to pass a `FetchNavigationParams` object.\n\nExample:\n\n```typescript\nfsxaApi.fetchNavigation({\n  locale: 'en_EN',\n  initialPath: '/',\n})\n```\n\n### fetchElement\n\nThis method fetches an element from the configured CaaS. The `FetchElementParams` object defines options to specify your request. Check `FSXARemoteApi.buildCaaSUrl` to know which URL will be used.\n\n```typescript\nfsxaApi.fetchElement({\n  id: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n  locale: 'de_DE',\n})\n```\n\n> **_Note_**<br>\n> The 'raw' CaaS data might be helpful when you want to know the key names that you can filter for.\n> It is possible to access that data directly with the authorization header and the CaaS Url.\n\n### fetchByFilter\n\nReturns the matching CaaS data entries.\nIt maps the given entries to a more frontend-friendly format.\nUnnecessary fields will be omitted and the structure is simpler.\n\nExpects as input parameter an array of filters and a language abbreviation.\nOptionally a page number, page size, sort and additional parameters can be passed.\n<br />\nOptionally, a remoteProject can be passed. If one is passed, the element will be fetched from this project instead of the default one.\n\nSeveral filter objects can be specified in the filter array, the results will then correspond to all specified filters.\n\nOne filter object must have a:\n<br />\n`field` which specifies the searched key,\n<br />\n`operator` which specifies the search operation,\n<br />\n`value` which specifies the value that is looked for.\n\n[More information to the filters](#filter)\n\nIn this example we search for all elements with the `fsType` equals `Example`. We want the `2nd` page with a maximum of `50` entries. The results should be sorted by fsType descending. However, we do not want the `identifier` to appear:\n\n```typescript\nfsxaApi.fetchByFilter({\n  filters: [\n    {\n      field: 'fsType',\n      operator: ComparisonQueryOperatorEnum.EQUALS,\n      value: 'Example',\n    },\n  ],\n  locale: 'en',\n  page: 2,\n  pagesize: 50,\n  additionalParams: { keys: { identifier: 0 } },\n  sort: [{ name: 'fsType', order: 'desc' }],\n})\n```\n\nThe default sorting is by the id descending. MultiSort is possible and the first sort param is prioritized over subsequent. The sorting is happening on the raw data.\n\n> **_Attention_**<br>\n> The keys names which are passed to the `fetchByFilter` method (e.g. in the filters or the additionalParams) have to match the key names that are present in the CaaS data.\n\n### fetchProjectProperties\n\nReturns the project properties of the given language.\n\nExpects a parameter object with the locale.\n\nATTENTION: Works only with CaaSConnect module version 3 onwards.\n\nExample:\n\n```typescript\nfsxaApi.fetchProjectProperties({\n  locale: 'de_DE',\n})\n```\n\n## Filter\n\nYou can customize your queries in the [fetchByFilter](#fetchbyfilter) method with these operations. For more information please refer to the MongoDB documentation. Links are provided in each section.\n\n### Helpers\n\nThere are also some additional helper methods which can be used for different purposes.\n\n```typescript\ntype AvailableLocaleParams = {\n  navigationServiceURL: string\n  projectId: string\n  contentMode: string | ('preview' | 'release')\n}\n```\n\n```typescript\ngetAvailableLocales({\n  projectId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',\n  navigationServiceURL: 'https://your.navigation-service.url/navigation',\n  contentMode: 'preview',\n})\n```\n\nThis method provides a list of available locales configured in your FirstSpirit project. It is recommended that the configuration matches the ISO format. E.g. [\"en_GB\", \"de_DE\"]\n\n```typescript\n  Promise<string[]>\n```\n\n### 1. Extending the API\n\n#### Introduction\n\nIn some scenarios, you might find that the standard methods provided by the JavaScript Content API Library do not fully cover your use case. That's where the flexibility of extending the API comes into play. This guide focuses on extending the API to fetch data from an aggregation in the Content as a Service (CaaS) using the buildCaasUrl function and handling authorization headers. We'll take you through the process step by step.\n\n#### 1.1 Fetching from Aggregation\n\nThis guide provided an in-depth overview of sending requests to the CaaS service using the `buildCaasUrl` function and the aggregation URI `/_aggrs/example`. It also covered the crucial aspect of including authorization headers to ensure secure communication. By following these steps, you can effectively retrieve and manage content from the CaaS in your JavaScript projects\n\n#### 1.1.1 Prerequisites\nBefore you start extending the API, ensure you have the following:\n- Configuration details such as API keys, CaaS URL, and other required parameters.\n\n#### 1.1.2 Abstract Steps\nExtending the API to fetch data from an aggregation involves the following steps:\n\n1. Use the buildCaasUrl function to construct the URL for the aggregation request.\n2. Include the necessary authorization headers for secure communication.\n3. Make the fetch request to the constructed URL.\n4. Handle the response data or errors accordingly.\n\n#### 1.1.3 Implementation Notes\nIt's important to note a few things before proceeding:\n- This approach requires a server-side environment due to security concerns.\n- To access the CaaS service from the server-side, you need to use the FSXARemoteApi.\n- Extending the API in this manner allows you to tailor the data retrieval to your specific requirements.\n\n#### 1.1.4 How to Use the New Function\nLet's dive into the details of extending the API to fetch data from an aggregation.\n\n1. Use `buildCaasUrl` Function\n\nStart by using the buildCaasUrl function to construct the URL for the aggregation request:\n```typescript\nimport { FSXARemoteApi } from 'fsxa-api';\n\nconst remoteApi = new FSXARemoteApi(config);\nconst aggregationUri = '/_aggrs/example';\nconst caasUrl = remoteApi.buildCaasUrl();\nconst url = `${caasUrl}/${aggregationUri}`\n```\n\n2. Include Authorization Headers\n\nTo ensure secure communication, include authorization headers in your request:\n```typescript\nconst headers = {\n  ...remoteApi.authorizationHeader,\n  // other headers if needed\n}\n```\n\n3. Make the Fetch Request\n```typescript\nconst caasUrl = remote.buildCaaSUrl();\nconst aggregationUri = '_aggrs/example';\nconst url = `${caasUrl}/${aggregationUri}`;\nconst headers = {\n  ...remoteApi.authorizationHeader,\n  // other headers if needed\n}\n\ntry {\n  const response = await fetch(url, {\n    headers,\n  });\n\n  const data = await response.json();\n  // Handle the data...\n} catch (error) {\n  console.error('An error occurred:', error);\n  // Handle the error...\n}\n```\nBy following these steps, you've successfully extended the API to fetch data from an aggregation in the CaaS service. This approach empowers you to retrieve data tailored to your specific needs, enhancing the capabilities of the JavaScript Content API Library.\n\n### Logical Query Operators\n\nThese operators can also be found in the [MongoDB Documentation](https://docs.mongodb.com/manual/reference/operator/query-logical/)\n\n| Enum                         | Operation |\n|------------------------------|-----------|\n| LogicalQueryOperatorEnum.AND | \\$and     |\n| LogicalQueryOperatorEnum.NOT | \\$not     |\n| LogicalQueryOperatorEnum.NOR | \\$nor     |\n| LogicalQueryOperatorEnum.OR  | \\$or      |\n\n### Comparison Query Operators\n\nThese operators can also be found in the [MongoDB Documentation](https://docs.mongodb.com/manual/reference/operator/query-comparison/)\n\n| Enum                                            | Operation |\n|-------------------------------------------------|-----------|\n| ComparisonQueryOperatorEnum.GREATER_THAN_EQUALS | \\$gte     |\n| ComparisonQueryOperatorEnum.GREATER_THAN        | \\$gt      |\n| ComparisonQueryOperatorEnum.EQUALS              | \\$eq      |\n| ComparisonQueryOperatorEnum.IN                  | \\$in      |\n| ComparisonQueryOperatorEnum.LESS_THAN           | \\$lt      |\n| ComparisonQueryOperatorEnum.LESS_THAN_EQUALS    | \\$lte     |\n| ComparisonQueryOperatorEnum.NOT_EQUALS          | \\$ne      |\n| ComparisonQueryOperatorEnum.NOT_IN              | \\$nin     |\n\n### Evaluation Query Operators\n\nThese operators can also be found in the [MongoDB Documentation](https://docs.mongodb.com/manual/reference/operator/query-evaluation/)\n\n| Enum                              | Operation |\n|-----------------------------------|-----------|\n| EvaluationQueryOperatorEnum.REGEX | \\$regex   |\n\n### Array Query Operators\n\nThese operators can also be found in the [MongoDB Documentation](https://docs.mongodb.com/manual/reference/operator/query-array/)\n\n| Enum                       | Operation |\n|----------------------------|-----------|\n| ArrayQueryOperatorEnum.ALL | \\$all     |\n\n## Type Mapping\n\n### Input Components\n\nThis table gives an overview of the FirstSpirit input components, which can be defined in the \"Form\" tab of the FirstSpirit templates.\nEach input component has a (Java) data type, which has a representation in the CaaS. Those values are [mapped](src/modules/CaaSMapper.ts) to an [interface](src/types.ts) of the Content API.\n\n| <nobr>FirstSpirit Input Component</nobr>                                 | <nobr>CaaS Representation</nobr>                                                                                                                  | <nobr>Content API [Value](src/types.ts)</nobr> |\n|--------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------|\n| [FS_CATALOG]<br />[`Catalog`][fs-catalog]`<`[`Catalog$Card`][fs-card]`>` | <nobr>= `CaaSApi_FSCatalog`</nobr><br />= `CaaSApi_Card[]`                                                                                        | `Section[]`                                    |\n| [CMS_INPUT_CHECKBOX]<br />[`Set`][fs-set]`<`[`Option`][fs-option]`>`     | <nobr>= `CaaSApi_CMSInputCheckbox`</nobr><br />= `CaaSApi_Option[]`                                                                               | `Option[]`                                     |\n| [CMS_INPUT_COMBOBOX]<br />[`Option`][fs-option]                          | <nobr>= `CaaSApi_CMSInputCombobox`</nobr><br />= `CaaSApi_Option`&#124;`null`                                                                     | `Option`                                       |\n| [FS_DATASET]<br />[`DatasetContainer`][fs-datasetcontainer]              | <nobr>= `CaaSApi_FSDataset`</nobr><br />= `CaaSApi_Dataset`&#124;`CaaSApi_DataEntry[]`&#124;`null`                                                | `Dataset`                                      |\n| [CMS_INPUT_DATE]<br />[`Date`][fs-date]                                  | <nobr>= `CaaSApi_CMSInputDate`</nobr><br />= `string(ISO_8601)`&#124;`null`                                                                       | [`Date`][js-date]                              |\n| [CMS_INPUT_DOM]<br>[`DomElement`][fs-domelement]                         | <nobr>= `CaaSApi_CMSInputDOM`</nobr><br />= `string` (FS-XML)                                                                                     | `RichTextElement[]`                            |\n| [CMS_INPUT_DOMTABLE]<br>[`Table`][fs-table]                              | <nobr>= `CaaSApi_CMSInputDOMTable`</nobr><br />= `string` (FS-XML)                                                                                | `RichTextElement[]`                            |\n| [CMS_INPUT_IMAGEMAP]<br>[`MappingMedium`][fs-mappingmedium]              | <nobr>= `CaaSApi_CMSImageMap`</nobr><br />= `CaaSApi_CMSImageMap`                                                                                 | `ImageMap`                                     |\n| [FS_INDEX]<br />[`Index`][fs-index]`<`[`Index$Record`][fs-record]`>`     | <nobr>= `CaaSApi_FSIndex`</nobr><br />= `CaaSApi_Record[]`                                                                                        | `DataEntries[]`                                |\n| [CMS_INPUT_LINK]<br />[`Link`][fs-link]                                  | <nobr>= `CaaSApi_CMSInputLink`</nobr><br />= `Object`                                                                                             | `Link`                                         |\n| [CMS_INPUT_LIST]<br />[`Set`][fs-set]`<`[`Option`][fs-option]`>`         | <nobr>= `CaaSApi_CMSInputList`</nobr><br />= `any[]`                                                                                              | `Option[]`                                     |\n| [CMS_INPUT_NUMBER]<br />[`Number`][fs-number]                            | <nobr>= `CaaSApi_CMSInputNumber`</nobr><br />= `number`                                                                                           | [`number`](js-number)                          |\n| [CMS_INPUT_PERMISSION]<br />[`Permissions`][fs-permissions]              | <nobr>= `CaaSApi_CMSInputPermission`</nobr><br />= `CaaSAPI_PermissionActivity[][]`                                                               | `Permission`                                   |\n| [CMS_INPUT_RADIOBUTTON]<br />[`Option`][fs-option]                       | <nobr>= `CaaSApi_CMSInputRadioButton`</nobr><br />= `CaaSApi_Option`&#124;`null`                                                                  | `Option`                                       |\n| [FS_REFERENCE]<br />[`TargetReference`][fs-targetreference]              | <nobr>= `CaaSApi_FSReference`</nobr><br />= `CaaSApi_BaseRef`&#124;`CaaSApi_PageRefRef`&#124;`CaaSApi_GCARef`&#124;`CaaSApi_MediaRef`&#124;`null` |\n| [CMS_INPUT_TEXT]<br />[`String`][fs-string]                              | <nobr>= `CaaSApi_CMSInputText`</nobr><br />= `string`                                                                                             | [`string`][js-string]                          |\n| [CMS_INPUT_TEXTAREA]<br />[`String`][fs-string]                          | <nobr>= `CaaSApi_CMSInputTextArea`</nobr><br />= `string`                                                                                         | [`string`][js-string]                          |\n| [CMS_INPUT_TOGGLE]<br />[`Boolean`][fs-boolean]                          | <nobr>= `CaaSApi_CMSInputToggle`</nobr><br />= `boolean`&#124;`null`                                                                              | [`boolean`][js-boolean]                        |\n\n[fs_catalog]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/catalog/index.html\n[fs-catalog]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/catalog/index.html\n[fs-card]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/card/index.html\n[cms_input_checkbox]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/checkbox/index.html\n[fs-set]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/set/index.html\n[fs-option]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/option/index.html\n[cms_input_combobox]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/combobox/index.html\n[fs_dataset]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/dataset/index.html\n[fs-datasetcontainer]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/datasetcontaine/index.html\n[cms_input_date]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/date/index.html\n[fs-date]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/date/index.html\n[js-date]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date\n[cms_input_dom]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/dom/index.html\n[fs-domelement]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/domelement/index.html\n[cms_input_domtable]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/domtable/index.html\n[fs-table]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/table/index.html\n[cms_input_imagemap]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/imagemap/index.html\n[fs-mappingmedium]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/mappingmedium/index.html\n[fs_index]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/index/index.html\n[fs-index]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/index/index.html\n[fs-record]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/record/index.html\n[cms_input_link]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/link/index.html\n[fs-link]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/link/index.html\n[cms_input_list]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/list/index.html\n[cms_input_number]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/number/index.html\n[fs-number]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/number/index.html\n[js-number]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number\n[cms_input_permission]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/permission/index.html\n[fs-permissions]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/permissions/index.html\n[cms_input_radiobutton]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/radiobutton/index.html\n[fs_reference]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/reference/index.html\n[fs-targetreference]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/targetreference/index.html\n[cms_input_text]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/text/index.html\n[fs-string]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/string-text/index.html\n[js-string]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String\n[cms_input_textarea]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/textarea/index.html\n[cms_input_toggle]: https://docs.e-spirit.com/odfs/template-develo/forms/input-component/toggle/index.html\n[fs-boolean]: https://docs.e-spirit.com/odfs/template-develo/template-syntax/data-types/boolean/index.html\n[js-boolean]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean\n\n","readmeFilename":"README.md","_rev":"1-28ccd3eca2f153152d9da48b666d1ea5"}