diff --git a/x-pack/plugins/index_management/__jest__/client_integration/home/index_templates_tab.test.ts b/x-pack/plugins/index_management/__jest__/client_integration/home/index_templates_tab.test.ts
index 06f57896d4900..37df55f784252 100644
--- a/x-pack/plugins/index_management/__jest__/client_integration/home/index_templates_tab.test.ts
+++ b/x-pack/plugins/index_management/__jest__/client_integration/home/index_templates_tab.test.ts
@@ -127,7 +127,7 @@ describe('Index Templates tab', () => {
const indexTemplate = templates[i];
const { name, indexPatterns, ilmPolicy, composedOf, template } = indexTemplate;
- const hasContent = !!template.settings || !!template.mappings || !!template.aliases;
+ const hasContent = !!template?.settings || !!template?.mappings || !!template?.aliases;
const ilmPolicyName = ilmPolicy && ilmPolicy.name ? ilmPolicy.name : '';
const composedOfString = composedOf ? composedOf.join(',') : '';
@@ -152,7 +152,7 @@ describe('Index Templates tab', () => {
const legacyIndexTemplate = legacyTemplates[i];
const { name, indexPatterns, ilmPolicy, template } = legacyIndexTemplate;
- const hasContent = !!template.settings || !!template.mappings || !!template.aliases;
+ const hasContent = !!template?.settings || !!template?.mappings || !!template?.aliases;
const ilmPolicyName = ilmPolicy && ilmPolicy.name ? ilmPolicy.name : '';
try {
diff --git a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_clone.test.tsx b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_clone.test.tsx
index 8b74e9fb0cdf8..f0c0128fd6463 100644
--- a/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_clone.test.tsx
+++ b/x-pack/plugins/index_management/__jest__/client_integration/index_template_wizard/template_clone.test.tsx
@@ -112,7 +112,7 @@ describe('', () => {
name: `${templateToClone.name}-copy`,
indexPatterns: DEFAULT_INDEX_PATTERNS,
};
- // @ts-expect-error
+
delete expected.template; // As no settings, mappings or aliases have been defined, no "template" param is sent
expect(JSON.parse(JSON.parse(latestRequest.requestBody).body)).toEqual(expected);
diff --git a/x-pack/plugins/index_management/common/lib/template_serialization.ts b/x-pack/plugins/index_management/common/lib/template_serialization.ts
index 1803d89a40016..bb7604f06c302 100644
--- a/x-pack/plugins/index_management/common/lib/template_serialization.ts
+++ b/x-pack/plugins/index_management/common/lib/template_serialization.ts
@@ -85,7 +85,7 @@ export function deserializeTemplateList(
): TemplateListItem[] {
return indexTemplates.map(({ name, index_template: templateSerialized }) => {
const {
- template: { mappings, settings, aliases },
+ template: { mappings, settings, aliases } = {},
...deserializedTemplate
} = deserializeTemplate({ name, ...templateSerialized }, cloudManagedTemplatePrefix);
@@ -149,7 +149,7 @@ export function deserializeLegacyTemplateList(
): TemplateListItem[] {
return Object.entries(indexTemplatesByName).map(([name, templateSerialized]) => {
const {
- template: { mappings, settings, aliases },
+ template: { mappings, settings, aliases } = {},
...deserializedTemplate
} = deserializeLegacyTemplate({ name, ...templateSerialized }, cloudManagedTemplatePrefix);
diff --git a/x-pack/plugins/index_management/common/types/templates.ts b/x-pack/plugins/index_management/common/types/templates.ts
index eda00ec819159..d1b51fe5b89bf 100644
--- a/x-pack/plugins/index_management/common/types/templates.ts
+++ b/x-pack/plugins/index_management/common/types/templates.ts
@@ -13,7 +13,7 @@ import { Mappings } from './mappings';
*/
export interface TemplateSerialized {
index_patterns: string[];
- template: {
+ template?: {
settings?: IndexSettings;
aliases?: Aliases;
mappings?: Mappings;
@@ -33,7 +33,7 @@ export interface TemplateSerialized {
export interface TemplateDeserialized {
name: string;
indexPatterns: string[];
- template: {
+ template?: {
settings?: IndexSettings;
aliases?: Aliases;
mappings?: Mappings;
diff --git a/x-pack/plugins/index_management/public/application/components/template_form/template_form.tsx b/x-pack/plugins/index_management/public/application/components/template_form/template_form.tsx
index 3a03835e85970..8e84abb5ce495 100644
--- a/x-pack/plugins/index_management/public/application/components/template_form/template_form.tsx
+++ b/x-pack/plugins/index_management/public/application/components/template_form/template_form.tsx
@@ -117,7 +117,7 @@ export const TemplateForm = ({
};
const {
- template: { settings, mappings, aliases },
+ template: { settings, mappings, aliases } = {},
composedOf,
_kbnMeta,
...logistics
@@ -170,18 +170,19 @@ export const TemplateForm = ({
const cleanupTemplateObject = (template: TemplateDeserialized) => {
const outputTemplate = { ...template };
- if (outputTemplate.template.settings === undefined) {
- delete outputTemplate.template.settings;
- }
- if (outputTemplate.template.mappings === undefined) {
- delete outputTemplate.template.mappings;
- }
- if (outputTemplate.template.aliases === undefined) {
- delete outputTemplate.template.aliases;
- }
- if (Object.keys(outputTemplate.template).length === 0) {
- // @ts-expect-error
- delete outputTemplate.template;
+ if (outputTemplate.template) {
+ if (outputTemplate.template.settings === undefined) {
+ delete outputTemplate.template.settings;
+ }
+ if (outputTemplate.template.mappings === undefined) {
+ delete outputTemplate.template.mappings;
+ }
+ if (outputTemplate.template.aliases === undefined) {
+ delete outputTemplate.template.aliases;
+ }
+ if (Object.keys(outputTemplate.template).length === 0) {
+ delete outputTemplate.template;
+ }
}
return outputTemplate;
diff --git a/x-pack/plugins/index_management/public/application/sections/home/template_list/template_details/template_details_content.tsx b/x-pack/plugins/index_management/public/application/sections/home/template_list/template_details/template_details_content.tsx
index 94891297c857e..48083f324de3d 100644
--- a/x-pack/plugins/index_management/public/application/sections/home/template_list/template_details/template_details_content.tsx
+++ b/x-pack/plugins/index_management/public/application/sections/home/template_list/template_details/template_details_content.tsx
@@ -161,9 +161,7 @@ export const TemplateDetailsContent = ({
}
if (templateDetails) {
- const {
- template: { settings, mappings, aliases },
- } = templateDetails;
+ const { template: { settings, mappings, aliases } = {} } = templateDetails;
const tabToComponentMap: Record = {
[SUMMARY_TAB_ID]: ,