diff --git a/packages/core/strapi/src/utils/transform-content-types-to-models.ts b/packages/core/strapi/src/utils/transform-content-types-to-models.ts index dd261b84eb..0b30761b1d 100644 --- a/packages/core/strapi/src/utils/transform-content-types-to-models.ts +++ b/packages/core/strapi/src/utils/transform-content-types-to-models.ts @@ -33,6 +33,17 @@ export const transformContentTypesToModels = ( ? { documentId: { type: 'string', default: createId } } : {}; + // Prevent user from creating a documentId attribute + const reservedAttributeNames = ['documentId', 'document_id']; + reservedAttributeNames.forEach((reservedAttributeName) => { + if (reservedAttributeName in contentType.attributes) { + throw new Error( + `The attribute "${reservedAttributeName}" is reserved and cannot be used in a model` + + `Please rename "${contentType.modelName}" attribute "${reservedAttributeName}" to something else.` + ); + } + }); + const model = { ...contentType, // reuse new model def