--- title: Include description: Includes allow you to define parts of your markup that will be controlled from a third-party micro-service. --- Includes allow you to define parts of your markup that will be controlled from a third-party micro-service. Examples are services like highcharts or mathjax that render HTML given a set of given parameters and config. HTML is not only rendered one-time but evaluated on every request. ## Example ```js { name: 'echo', label: 'Echo', iconUrl: 'https://livingdocs-assets.s3.amazonaws.com/magazine-design/assets/images/icons-components/icon_image.svg', directives: [ { name: 'foo', type: 'include', service: 'foo-service', config: { language: 'en' }, defaultParams: { tag: 'livingdocs' } } ], html: dedent`
Foo Service
` } ``` ## Config Options ### Parameters - `config`: object, allows you to pass static configuration to your third-party microservice. In the example above we pass a language as a fixed config. - `defaultParams`: object, allows you to define defaults for the dynamic params of an include. Dynamic params are set by the user over a UI in the editor and are defined in the [Settings for the include](/reference/project-config/settings/llms.txt). ### Service definition The service defines what kind of include is inserted, i.e. the microservice to use for rendering. You can define one service (`service`) or an array of `services` in which case the editor will provide a dropdown to change the service dynamically on a component. - `service`, string, name of the service used to render the HTML within the tag. Service name [must be registered](/reference/project-config/settings/llms.txt). - `services`, array, defines a set of services that can be changed manually in the editor, each service contains each own service name, default params and config. schema of services: ```js services: ms.arrayOf( ms.strictObj({ service: 'string:required', label: 'string:required', defaultParams: ms.obj(), config: ms.obj() }) ) ```