diff --git a/projects/cms/src/api/media-entry/content-types/media-entry/schema.json b/projects/cms/src/api/media-entry/content-types/media-entry/schema.json new file mode 100644 index 0000000..9e1c88d --- /dev/null +++ b/projects/cms/src/api/media-entry/content-types/media-entry/schema.json @@ -0,0 +1,59 @@ +{ + "kind": "collectionType", + "collectionName": "media_entries", + "info": { + "singularName": "media-entry", + "pluralName": "media-entries", + "displayName": "Media Entry" + }, + "options": { + "draftAndPublish": true + }, + "pluginOptions": {}, + "attributes": { + "description": { + "type": "richtext" + }, + "tags": { + "type": "string" + }, + "warnings": { + "type": "string" + }, + "title": { + "type": "string" + }, + "date": { + "type": "string" + }, + "format": { + "type": "enumeration", + "enum": [ + "image", + "audio", + "model", + "text", + "video" + ] + }, + "variants": { + "allowedTypes": [ + "images", + "files", + "videos", + "audios" + ], + "type": "media", + "multiple": true + }, + "defaultVariant": { + "type": "string" + }, + "lists": { + "type": "relation", + "relation": "manyToMany", + "target": "api::media-list.media-list", + "inversedBy": "entries" + } + } +} diff --git a/projects/cms/src/api/media-entry/controllers/media-entry.ts b/projects/cms/src/api/media-entry/controllers/media-entry.ts new file mode 100644 index 0000000..8b0132c --- /dev/null +++ b/projects/cms/src/api/media-entry/controllers/media-entry.ts @@ -0,0 +1,7 @@ +/** + * media-entry controller + */ + +import { factories } from '@strapi/strapi' + +export default factories.createCoreController('api::media-entry.media-entry'); diff --git a/projects/cms/src/api/media-entry/routes/media-entry.ts b/projects/cms/src/api/media-entry/routes/media-entry.ts new file mode 100644 index 0000000..66ce2c7 --- /dev/null +++ b/projects/cms/src/api/media-entry/routes/media-entry.ts @@ -0,0 +1,7 @@ +/** + * media-entry router + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::media-entry.media-entry'); diff --git a/projects/cms/src/api/media-entry/services/media-entry.ts b/projects/cms/src/api/media-entry/services/media-entry.ts new file mode 100644 index 0000000..2de6a8f --- /dev/null +++ b/projects/cms/src/api/media-entry/services/media-entry.ts @@ -0,0 +1,7 @@ +/** + * media-entry service + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::media-entry.media-entry'); diff --git a/projects/cms/src/api/media-list/content-types/media-list/schema.json b/projects/cms/src/api/media-list/content-types/media-list/schema.json new file mode 100644 index 0000000..7ae8771 --- /dev/null +++ b/projects/cms/src/api/media-list/content-types/media-list/schema.json @@ -0,0 +1,31 @@ +{ + "kind": "collectionType", + "collectionName": "media_lists", + "info": { + "singularName": "media-list", + "pluralName": "media-lists", + "displayName": "Media List", + "description": "" + }, + "options": { + "draftAndPublish": true + }, + "pluginOptions": {}, + "attributes": { + "tags": { + "displayName": "EntryTagCollection", + "type": "component", + "repeatable": true, + "component": "default.entry-tag-collection" + }, + "entries": { + "type": "relation", + "relation": "manyToMany", + "target": "api::media-entry.media-entry", + "mappedBy": "lists" + }, + "description": { + "type": "string" + } + } +} diff --git a/projects/cms/src/api/media-list/controllers/media-list.ts b/projects/cms/src/api/media-list/controllers/media-list.ts new file mode 100644 index 0000000..efd5c20 --- /dev/null +++ b/projects/cms/src/api/media-list/controllers/media-list.ts @@ -0,0 +1,7 @@ +/** + * media-list controller + */ + +import { factories } from '@strapi/strapi' + +export default factories.createCoreController('api::media-list.media-list'); diff --git a/projects/cms/src/api/media-list/routes/media-list.ts b/projects/cms/src/api/media-list/routes/media-list.ts new file mode 100644 index 0000000..cad187b --- /dev/null +++ b/projects/cms/src/api/media-list/routes/media-list.ts @@ -0,0 +1,7 @@ +/** + * media-list router + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::media-list.media-list'); diff --git a/projects/cms/src/api/media-list/services/media-list.ts b/projects/cms/src/api/media-list/services/media-list.ts new file mode 100644 index 0000000..302c319 --- /dev/null +++ b/projects/cms/src/api/media-list/services/media-list.ts @@ -0,0 +1,7 @@ +/** + * media-list service + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::media-list.media-list'); diff --git a/projects/cms/src/components/default/entry-tag-collection.json b/projects/cms/src/components/default/entry-tag-collection.json new file mode 100644 index 0000000..8e0ccda --- /dev/null +++ b/projects/cms/src/components/default/entry-tag-collection.json @@ -0,0 +1,18 @@ +{ + "collectionName": "components_default_entry_tag_collections", + "info": { + "displayName": "EntryTagCollection" + }, + "options": {}, + "attributes": { + "key": { + "type": "string" + }, + "value": { + "displayName": "EntryTag", + "type": "component", + "repeatable": false, + "component": "default.entry-tag" + } + } +} diff --git a/projects/cms/src/components/default/entry-tag.json b/projects/cms/src/components/default/entry-tag.json new file mode 100644 index 0000000..3b4bf50 --- /dev/null +++ b/projects/cms/src/components/default/entry-tag.json @@ -0,0 +1,15 @@ +{ + "collectionName": "components_default_entry_tags", + "info": { + "displayName": "EntryTag" + }, + "options": {}, + "attributes": { + "category": { + "type": "string" + }, + "displayName": { + "type": "string" + } + } +} diff --git a/projects/cms/types/generated/components.d.ts b/projects/cms/types/generated/components.d.ts new file mode 100644 index 0000000..f4d7fcb --- /dev/null +++ b/projects/cms/types/generated/components.d.ts @@ -0,0 +1,32 @@ +import type { Struct, Schema } from '@strapi/strapi'; + +export interface DefaultEntryTag extends Struct.ComponentSchema { + collectionName: 'components_default_entry_tags'; + info: { + displayName: 'EntryTag'; + }; + attributes: { + category: Schema.Attribute.String; + displayName: Schema.Attribute.String; + }; +} + +export interface DefaultEntryTagCollection extends Struct.ComponentSchema { + collectionName: 'components_default_entry_tag_collections'; + info: { + displayName: 'EntryTagCollection'; + }; + attributes: { + key: Schema.Attribute.String; + value: Schema.Attribute.Component<'default.entry-tag', false>; + }; +} + +declare module '@strapi/strapi' { + export module Public { + export interface ComponentSchemas { + 'default.entry-tag': DefaultEntryTag; + 'default.entry-tag-collection': DefaultEntryTagCollection; + } + } +} diff --git a/projects/cms/types/generated/contentTypes.d.ts b/projects/cms/types/generated/contentTypes.d.ts new file mode 100644 index 0000000..5819ce7 --- /dev/null +++ b/projects/cms/types/generated/contentTypes.d.ts @@ -0,0 +1,950 @@ +import type { Struct, Schema } from '@strapi/strapi'; + +export interface PluginUploadFile extends Struct.CollectionTypeSchema { + collectionName: 'files'; + info: { + singularName: 'file'; + pluralName: 'files'; + displayName: 'File'; + description: ''; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + name: Schema.Attribute.String & Schema.Attribute.Required; + alternativeText: Schema.Attribute.String; + caption: Schema.Attribute.String; + width: Schema.Attribute.Integer; + height: Schema.Attribute.Integer; + formats: Schema.Attribute.JSON; + hash: Schema.Attribute.String & Schema.Attribute.Required; + ext: Schema.Attribute.String; + mime: Schema.Attribute.String & Schema.Attribute.Required; + size: Schema.Attribute.Decimal & Schema.Attribute.Required; + url: Schema.Attribute.String & Schema.Attribute.Required; + previewUrl: Schema.Attribute.String; + provider: Schema.Attribute.String & Schema.Attribute.Required; + provider_metadata: Schema.Attribute.JSON; + related: Schema.Attribute.Relation<'morphToMany'>; + folder: Schema.Attribute.Relation<'manyToOne', 'plugin::upload.folder'> & + Schema.Attribute.Private; + folderPath: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.Private & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::upload.file' + >; + }; +} + +export interface PluginUploadFolder extends Struct.CollectionTypeSchema { + collectionName: 'upload_folders'; + info: { + singularName: 'folder'; + pluralName: 'folders'; + displayName: 'Folder'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + name: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + pathId: Schema.Attribute.Integer & + Schema.Attribute.Required & + Schema.Attribute.Unique; + parent: Schema.Attribute.Relation<'manyToOne', 'plugin::upload.folder'>; + children: Schema.Attribute.Relation<'oneToMany', 'plugin::upload.folder'>; + files: Schema.Attribute.Relation<'oneToMany', 'plugin::upload.file'>; + path: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::upload.folder' + >; + }; +} + +export interface PluginI18NLocale extends Struct.CollectionTypeSchema { + collectionName: 'i18n_locale'; + info: { + singularName: 'locale'; + pluralName: 'locales'; + collectionName: 'locales'; + displayName: 'Locale'; + description: ''; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + name: Schema.Attribute.String & + Schema.Attribute.SetMinMax< + { + min: 1; + max: 50; + }, + number + >; + code: Schema.Attribute.String & Schema.Attribute.Unique; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::i18n.locale' + >; + }; +} + +export interface PluginContentReleasesRelease + extends Struct.CollectionTypeSchema { + collectionName: 'strapi_releases'; + info: { + singularName: 'release'; + pluralName: 'releases'; + displayName: 'Release'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + name: Schema.Attribute.String & Schema.Attribute.Required; + releasedAt: Schema.Attribute.DateTime; + scheduledAt: Schema.Attribute.DateTime; + timezone: Schema.Attribute.String; + status: Schema.Attribute.Enumeration< + ['ready', 'blocked', 'failed', 'done', 'empty'] + > & + Schema.Attribute.Required; + actions: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::content-releases.release-action' + >; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::content-releases.release' + >; + }; +} + +export interface PluginContentReleasesReleaseAction + extends Struct.CollectionTypeSchema { + collectionName: 'strapi_release_actions'; + info: { + singularName: 'release-action'; + pluralName: 'release-actions'; + displayName: 'Release Action'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + type: Schema.Attribute.Enumeration<['publish', 'unpublish']> & + Schema.Attribute.Required; + contentType: Schema.Attribute.String & Schema.Attribute.Required; + entryDocumentId: Schema.Attribute.String; + locale: Schema.Attribute.String; + release: Schema.Attribute.Relation< + 'manyToOne', + 'plugin::content-releases.release' + >; + isEntryValid: Schema.Attribute.Boolean; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::content-releases.release-action' + >; + }; +} + +export interface PluginReviewWorkflowsWorkflow + extends Struct.CollectionTypeSchema { + collectionName: 'strapi_workflows'; + info: { + name: 'Workflow'; + description: ''; + singularName: 'workflow'; + pluralName: 'workflows'; + displayName: 'Workflow'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + name: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.Unique; + stages: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::review-workflows.workflow-stage' + >; + contentTypes: Schema.Attribute.JSON & + Schema.Attribute.Required & + Schema.Attribute.DefaultTo<'[]'>; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::review-workflows.workflow' + >; + }; +} + +export interface PluginReviewWorkflowsWorkflowStage + extends Struct.CollectionTypeSchema { + collectionName: 'strapi_workflows_stages'; + info: { + name: 'Workflow Stage'; + description: ''; + singularName: 'workflow-stage'; + pluralName: 'workflow-stages'; + displayName: 'Stages'; + }; + options: { + version: '1.1.0'; + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + name: Schema.Attribute.String; + color: Schema.Attribute.String & Schema.Attribute.DefaultTo<'#4945FF'>; + workflow: Schema.Attribute.Relation< + 'manyToOne', + 'plugin::review-workflows.workflow' + >; + permissions: Schema.Attribute.Relation<'manyToMany', 'admin::permission'>; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::review-workflows.workflow-stage' + >; + }; +} + +export interface PluginUsersPermissionsPermission + extends Struct.CollectionTypeSchema { + collectionName: 'up_permissions'; + info: { + name: 'permission'; + description: ''; + singularName: 'permission'; + pluralName: 'permissions'; + displayName: 'Permission'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + action: Schema.Attribute.String & Schema.Attribute.Required; + role: Schema.Attribute.Relation< + 'manyToOne', + 'plugin::users-permissions.role' + >; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::users-permissions.permission' + >; + }; +} + +export interface PluginUsersPermissionsRole + extends Struct.CollectionTypeSchema { + collectionName: 'up_roles'; + info: { + name: 'role'; + description: ''; + singularName: 'role'; + pluralName: 'roles'; + displayName: 'Role'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + name: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 3; + }>; + description: Schema.Attribute.String; + type: Schema.Attribute.String & Schema.Attribute.Unique; + permissions: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::users-permissions.permission' + >; + users: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::users-permissions.user' + >; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::users-permissions.role' + >; + }; +} + +export interface PluginUsersPermissionsUser + extends Struct.CollectionTypeSchema { + collectionName: 'up_users'; + info: { + name: 'user'; + description: ''; + singularName: 'user'; + pluralName: 'users'; + displayName: 'User'; + }; + options: { + timestamps: true; + draftAndPublish: false; + }; + attributes: { + username: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.Unique & + Schema.Attribute.SetMinMaxLength<{ + minLength: 3; + }>; + email: Schema.Attribute.Email & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 6; + }>; + provider: Schema.Attribute.String; + password: Schema.Attribute.Password & + Schema.Attribute.Private & + Schema.Attribute.SetMinMaxLength<{ + minLength: 6; + }>; + resetPasswordToken: Schema.Attribute.String & Schema.Attribute.Private; + confirmationToken: Schema.Attribute.String & Schema.Attribute.Private; + confirmed: Schema.Attribute.Boolean & Schema.Attribute.DefaultTo; + blocked: Schema.Attribute.Boolean & Schema.Attribute.DefaultTo; + role: Schema.Attribute.Relation< + 'manyToOne', + 'plugin::users-permissions.role' + >; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'plugin::users-permissions.user' + >; + }; +} + +export interface ApiMediaEntryMediaEntry extends Struct.CollectionTypeSchema { + collectionName: 'media_entries'; + info: { + singularName: 'media-entry'; + pluralName: 'media-entries'; + displayName: 'Media Entry'; + }; + options: { + draftAndPublish: true; + }; + attributes: { + description: Schema.Attribute.RichText; + tags: Schema.Attribute.String; + warnings: Schema.Attribute.String; + title: Schema.Attribute.String; + date: Schema.Attribute.String; + format: Schema.Attribute.Enumeration< + ['image', 'audio', 'model', 'text', 'video'] + >; + variants: Schema.Attribute.Media< + 'images' | 'files' | 'videos' | 'audios', + true + >; + defaultVariant: Schema.Attribute.String; + lists: Schema.Attribute.Relation< + 'manyToMany', + 'api::media-list.media-list' + >; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'api::media-entry.media-entry' + >; + }; +} + +export interface ApiMediaListMediaList extends Struct.CollectionTypeSchema { + collectionName: 'media_lists'; + info: { + singularName: 'media-list'; + pluralName: 'media-lists'; + displayName: 'Media List'; + description: ''; + }; + options: { + draftAndPublish: true; + }; + attributes: { + tags: Schema.Attribute.Component<'default.entry-tag-collection', true>; + entries: Schema.Attribute.Relation< + 'manyToMany', + 'api::media-entry.media-entry' + >; + description: Schema.Attribute.String; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'api::media-list.media-list' + >; + }; +} + +export interface AdminPermission extends Struct.CollectionTypeSchema { + collectionName: 'admin_permissions'; + info: { + name: 'Permission'; + description: ''; + singularName: 'permission'; + pluralName: 'permissions'; + displayName: 'Permission'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + action: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + actionParameters: Schema.Attribute.JSON & Schema.Attribute.DefaultTo<{}>; + subject: Schema.Attribute.String & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + properties: Schema.Attribute.JSON & Schema.Attribute.DefaultTo<{}>; + conditions: Schema.Attribute.JSON & Schema.Attribute.DefaultTo<[]>; + role: Schema.Attribute.Relation<'manyToOne', 'admin::role'>; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation<'oneToMany', 'admin::permission'>; + }; +} + +export interface AdminUser extends Struct.CollectionTypeSchema { + collectionName: 'admin_users'; + info: { + name: 'User'; + description: ''; + singularName: 'user'; + pluralName: 'users'; + displayName: 'User'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + firstname: Schema.Attribute.String & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + lastname: Schema.Attribute.String & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + username: Schema.Attribute.String; + email: Schema.Attribute.Email & + Schema.Attribute.Required & + Schema.Attribute.Private & + Schema.Attribute.Unique & + Schema.Attribute.SetMinMaxLength<{ + minLength: 6; + }>; + password: Schema.Attribute.Password & + Schema.Attribute.Private & + Schema.Attribute.SetMinMaxLength<{ + minLength: 6; + }>; + resetPasswordToken: Schema.Attribute.String & Schema.Attribute.Private; + registrationToken: Schema.Attribute.String & Schema.Attribute.Private; + isActive: Schema.Attribute.Boolean & + Schema.Attribute.Private & + Schema.Attribute.DefaultTo; + roles: Schema.Attribute.Relation<'manyToMany', 'admin::role'> & + Schema.Attribute.Private; + blocked: Schema.Attribute.Boolean & + Schema.Attribute.Private & + Schema.Attribute.DefaultTo; + preferedLanguage: Schema.Attribute.String; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation<'oneToMany', 'admin::user'>; + }; +} + +export interface AdminRole extends Struct.CollectionTypeSchema { + collectionName: 'admin_roles'; + info: { + name: 'Role'; + description: ''; + singularName: 'role'; + pluralName: 'roles'; + displayName: 'Role'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + name: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.Unique & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + code: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.Unique & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + description: Schema.Attribute.String; + users: Schema.Attribute.Relation<'manyToMany', 'admin::user'>; + permissions: Schema.Attribute.Relation<'oneToMany', 'admin::permission'>; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation<'oneToMany', 'admin::role'>; + }; +} + +export interface AdminApiToken extends Struct.CollectionTypeSchema { + collectionName: 'strapi_api_tokens'; + info: { + name: 'Api Token'; + singularName: 'api-token'; + pluralName: 'api-tokens'; + displayName: 'Api Token'; + description: ''; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + name: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.Unique & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + description: Schema.Attribute.String & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }> & + Schema.Attribute.DefaultTo<''>; + type: Schema.Attribute.Enumeration<['read-only', 'full-access', 'custom']> & + Schema.Attribute.Required & + Schema.Attribute.DefaultTo<'read-only'>; + accessKey: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + lastUsedAt: Schema.Attribute.DateTime; + permissions: Schema.Attribute.Relation< + 'oneToMany', + 'admin::api-token-permission' + >; + expiresAt: Schema.Attribute.DateTime; + lifespan: Schema.Attribute.BigInteger; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation<'oneToMany', 'admin::api-token'>; + }; +} + +export interface AdminApiTokenPermission extends Struct.CollectionTypeSchema { + collectionName: 'strapi_api_token_permissions'; + info: { + name: 'API Token Permission'; + description: ''; + singularName: 'api-token-permission'; + pluralName: 'api-token-permissions'; + displayName: 'API Token Permission'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + action: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + token: Schema.Attribute.Relation<'manyToOne', 'admin::api-token'>; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'admin::api-token-permission' + >; + }; +} + +export interface AdminTransferToken extends Struct.CollectionTypeSchema { + collectionName: 'strapi_transfer_tokens'; + info: { + name: 'Transfer Token'; + singularName: 'transfer-token'; + pluralName: 'transfer-tokens'; + displayName: 'Transfer Token'; + description: ''; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + name: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.Unique & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + description: Schema.Attribute.String & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }> & + Schema.Attribute.DefaultTo<''>; + accessKey: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + lastUsedAt: Schema.Attribute.DateTime; + permissions: Schema.Attribute.Relation< + 'oneToMany', + 'admin::transfer-token-permission' + >; + expiresAt: Schema.Attribute.DateTime; + lifespan: Schema.Attribute.BigInteger; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'admin::transfer-token' + >; + }; +} + +export interface AdminTransferTokenPermission + extends Struct.CollectionTypeSchema { + collectionName: 'strapi_transfer_token_permissions'; + info: { + name: 'Transfer Token Permission'; + description: ''; + singularName: 'transfer-token-permission'; + pluralName: 'transfer-token-permissions'; + displayName: 'Transfer Token Permission'; + }; + options: { + draftAndPublish: false; + }; + pluginOptions: { + 'content-manager': { + visible: false; + }; + 'content-type-builder': { + visible: false; + }; + }; + attributes: { + action: Schema.Attribute.String & + Schema.Attribute.Required & + Schema.Attribute.SetMinMaxLength<{ + minLength: 1; + }>; + token: Schema.Attribute.Relation<'manyToOne', 'admin::transfer-token'>; + createdAt: Schema.Attribute.DateTime; + updatedAt: Schema.Attribute.DateTime; + publishedAt: Schema.Attribute.DateTime; + createdBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + updatedBy: Schema.Attribute.Relation<'oneToOne', 'admin::user'> & + Schema.Attribute.Private; + locale: Schema.Attribute.String; + localizations: Schema.Attribute.Relation< + 'oneToMany', + 'admin::transfer-token-permission' + >; + }; +} + +declare module '@strapi/strapi' { + export module Public { + export interface ContentTypeSchemas { + 'plugin::upload.file': PluginUploadFile; + 'plugin::upload.folder': PluginUploadFolder; + 'plugin::i18n.locale': PluginI18NLocale; + 'plugin::content-releases.release': PluginContentReleasesRelease; + 'plugin::content-releases.release-action': PluginContentReleasesReleaseAction; + 'plugin::review-workflows.workflow': PluginReviewWorkflowsWorkflow; + 'plugin::review-workflows.workflow-stage': PluginReviewWorkflowsWorkflowStage; + 'plugin::users-permissions.permission': PluginUsersPermissionsPermission; + 'plugin::users-permissions.role': PluginUsersPermissionsRole; + 'plugin::users-permissions.user': PluginUsersPermissionsUser; + 'api::media-entry.media-entry': ApiMediaEntryMediaEntry; + 'api::media-list.media-list': ApiMediaListMediaList; + 'admin::permission': AdminPermission; + 'admin::user': AdminUser; + 'admin::role': AdminRole; + 'admin::api-token': AdminApiToken; + 'admin::api-token-permission': AdminApiTokenPermission; + 'admin::transfer-token': AdminTransferToken; + 'admin::transfer-token-permission': AdminTransferTokenPermission; + } + } +}