V4 Create Content Type (Model) through Plugin

Solution

Export your content-type object with the key schema containing the data.

// [pluginName]/server/content-types/[contentTypeName].js

module.exports = {
  schema: {
    info: {
      tableName: 'content-type',
      singularName: 'message', // kebab-case mandatory
      pluralName: 'messages', // kebab-case mandatory
      displayName: 'הודעות',
      description: 'This is the test messages content type from the custom plugin',
      kind: 'collectionType'
    },
    options: {
      draftAndPublish: true,
    },
    pluginOptions: {
      'content-manager': {
        visible: true
      },
      'content-type-builder': {
        visible: true
      }
    },
    attributes: {
      content: {
        type: 'string',
        min: 1,
        max: 50,
        configurable: false
      },
      from: {
        type: 'email',
        required: true,
        configurable: false
      },
      title: {
        type: "string",
        required:true,
      }
    }
  }
}

Make sure you import the content type by the name of the singularName of it.

// [pluginName]/server/content-types/index.js

const message = require("./messages")
const bankAccount  = require("./bankAccounts")

module.exports = {
  message,
  'bank-account':bankAccount,
}