Skip to main content

simplcms

simplcms


simplcms / simplcms

Variable: simplcms

const simplcms: object

Defined in: src/core/index.ts:30

Primary CMS interface exposing core APIs for managing content, users, media, and configuration.

Type declaration

db

db: object

Database interface providing direct or abstracted query methods and operations.

db.connectToDatabase()

connectToDatabase: (uri) => Promise<Connection>

Parameters
uri

string

Returns

Promise<Connection>

db.disconnectFromDatabase()

disconnectFromDatabase: () => Promise<void>

Returns

Promise<void>

db.getDatabaseUriEnvVariable()

getDatabaseUriEnvVariable: () => string

Returns

string

db.getModels()

getModels: (connection) => object

Parameters
connection

Connection

Returns

object

PageModel

PageModel: Model<any, {}, {}, {}, any, any>

PostModel

PostModel: Model<any, {}, {}, {}, any, any>

SiteConfigModel

SiteConfigModel: Model<any, {}, {}, {}, any, any>

UserModel

UserModel: Model<any, {}, {}, {}, any, any>

defaultHomePageConfig

defaultHomePageConfig: object

Default configuration settings for the CMS homepage.

defaultHomePageConfig._id

_id: string

defaultHomePageConfig.createdAt

createdAt: null | Date

defaultHomePageConfig.elements

elements: object[]

defaultHomePageConfig.metadata

metadata: object

defaultHomePageConfig.metadata.description

description: string

defaultHomePageConfig.metadata.keywords

keywords: null | string[]

defaultHomePageConfig.metadata.ogImage

ogImage: null | string

defaultHomePageConfig.metadata.title

title: string

defaultHomePageConfig.publishedAt

publishedAt: null | Date

defaultHomePageConfig.route

route: string

defaultHomePageConfig.status

status: "draft" | "published" | "archived"

defaultHomePageConfig.updatedAt

updatedAt: null | Date

getEnvironment()

getEnvironment: () => "dev" | "prod"

Retrieve the current runtime environment (e.g., development, production, testing).

Returns

"dev" | "prod"

getSiteUrl()

getSiteUrl: () => object

Returns the base URL of the currently running CMS site.

Returns

object

siteUrl

siteUrl: string

media

media: object

API methods related to media handling such as uploads, retrieval, updates, and deletions.

media.deleteMedia()

deleteMedia: (media, mediaStorageConfiguration) => Promise<void>

Parameters
media
id

string = ...

name

string = ...

source

"Cloudinary" | "AWS S3" = mediaStorageProviderSchema

type

"image" | "video" = ...

url

string = ...

mediaStorageConfiguration

null | object[] | { skipped: boolean; }

Returns

Promise<void>

media.getMedia()

getMedia: (mediaStorageConfiguration) => Promise<object[]>

Parameters
mediaStorageConfiguration

null | object[] | { skipped: boolean; }

Returns

Promise<object[]>

media.uploadMedia()

uploadMedia: (files, mediaStorageConfiguration) => Promise<object[]>

Parameters
files

File[]

mediaStorageConfiguration

null | object[] | { skipped: boolean; }

Returns

Promise<object[]>

pages

pages: object

API methods related to page operations such as creation, retrieval, updating, and deletion.

pages.createPage()

createPage: (page, uri?) => Promise<{ _id: string; createdAt: null | Date; elements: object[]; metadata: { description: string; keywords: null | string[]; ogImage: null | string; title: string; }; publishedAt: null | Date; route: string; status: "draft" | "published" | "archived"; updatedAt: null | Date; }>

Parameters
page
elements

object[] = ...

metadata

{ description: string; keywords: null | string[]; ogImage: null | string; title: string; } = ...

metadata.description

string = ...

metadata.keywords

null | string[] = ...

metadata.ogImage

null | string = ...

metadata.title

string = ...

route

string = ...

status

"draft" | "published" | "archived" = ...

uri?

string

Returns

Promise<{ _id: string; createdAt: null | Date; elements: object[]; metadata: { description: string; keywords: null | string[]; ogImage: null | string; title: string; }; publishedAt: null | Date; route: string; status: "draft" | "published" | "archived"; updatedAt: null | Date; }>

pages.getAllPages()

getAllPages: () => Promise<object[]>

Returns

Promise<object[]>

pages.getPageByRoute()

getPageByRoute: (route) => Promise<null | { _id: string; createdAt: null | Date; elements: object[]; metadata: { description: string; keywords: null | string[]; ogImage: null | string; title: string; }; publishedAt: null | Date; route: string; status: "draft" | "published" | "archived"; updatedAt: null | Date; }>

Parameters
route

string

Returns

Promise<null | { _id: string; createdAt: null | Date; elements: object[]; metadata: { description: string; keywords: null | string[]; ogImage: null | string; title: string; }; publishedAt: null | Date; route: string; status: "draft" | "published" | "archived"; updatedAt: null | Date; }>

platform

platform: object

Information and methods regarding the platform/environment the CMS is running on.

platform.checkSetupCompleted()

checkSetupCompleted: (setupValidation) => boolean

Parameters
setupValidation

Partial<SetupValidation>

Returns

boolean

platform.findEnvVarId()

findEnvVarId: (envVars, key) => null | string

Parameters
envVars

FilterProjectEnvsResponseBody

key

string

Returns

null | string

platform.getEnvValue()

getEnvValue: (envVar) => null | string

Parameters
envVar

GetProjectEnvResponseBody

Returns

null | string

platform.getPlatformConfiguration()

getPlatformConfiguration: () => object

Returns

object

database

database: null | { dynamo: { accessKeyId: null | string; accessSecretKey: null | string; region: null | string; tableName: null | string; }; mongo: { uri: null | string; }; provider: "MongoDB" | "DynamoDB"; }

host

host: null | { provider: "Vercel"; vercel: { projectId: null | string; projectName: null | string; teamId: null | string; token: null | string; }; }

mediaStorage

mediaStorage: null | object[] | { skipped: boolean; } | { skipped: boolean; }

oauth

oauth: null | object[]

platform.getProviderSiteConfig()

getProviderSiteConfig: (__namedParameters) => Promise<{ database: null | { dynamo: { accessKeyId: null | string; accessSecretKey: null | string; region: null | string; tableName: null | string; }; mongo: { uri: null | string; }; provider: "MongoDB" | "DynamoDB"; }; host: null | { provider: "Vercel"; vercel: { projectId: null | string; projectName: null | string; teamId: null | string; token: null | string; }; }; mediaStorage: null | object[] | { skipped: boolean; } | { skipped: boolean; }; oauth: null | object[]; }>

Parameters
__namedParameters
provider

"Vercel"

vercelConfig?

{ projectId: string; teamId: string; token: string; }

vercelConfig.projectId

string

vercelConfig.teamId

string

vercelConfig.token

string

Returns

Promise<{ database: null | { dynamo: { accessKeyId: null | string; accessSecretKey: null | string; region: null | string; tableName: null | string; }; mongo: { uri: null | string; }; provider: "MongoDB" | "DynamoDB"; }; host: null | { provider: "Vercel"; vercel: { projectId: null | string; projectName: null | string; teamId: null | string; token: null | string; }; }; mediaStorage: null | object[] | { skipped: boolean; } | { skipped: boolean; }; oauth: null | object[]; }>

platform.getSetupStep()

getSetupStep: (setupValidation) => object

Parameters
setupValidation

Partial<SetupValidation>

Returns

object

complete

complete: boolean

step

step: "host" | "database" | "mediaStorage" | "oauth" | "redeploy" | "adminUser"

platform.getSiteConfig()

getSiteConfig: () => Promise<null | { _id: string; logo: null | string; simplCMSDbProvider: "MongoDB" | "DynamoDB"; simplCMSHostProvider: "Vercel"; simplCMSMediaStorageProviders: (null | "Cloudinary" | "AWS S3")[]; simplCMSOauthProviders: ("Google" | "GitHub" | "Microsoft")[]; }>

Returns

Promise<null | { _id: string; logo: null | string; simplCMSDbProvider: "MongoDB" | "DynamoDB"; simplCMSHostProvider: "Vercel"; simplCMSMediaStorageProviders: (null | "Cloudinary" | "AWS S3")[]; simplCMSOauthProviders: ("Google" | "GitHub" | "Microsoft")[]; }>

platform.initSiteConfig()

initSiteConfig: () => Promise<void>

Returns

Promise<void>

platform.validateSetup()

validateSetup: (__namedParameters) => Promise<Partial<SetupValidation>>

Parameters
__namedParameters
provider?

"Vercel"

setupData?

{ database: null | { dynamo: { accessKeyId: ... | ...; accessSecretKey: ... | ...; region: ... | ...; tableName: ... | ...; }; mongo: { uri: ... | ...; }; provider: "MongoDB" | "DynamoDB"; }; host: null | { provider: "Vercel"; vercel: { projectId: ... | ...; projectName: ... | ... | ...; teamId: ... | ...; token: ... | ...; }; }; mediaStorage: null | object[] | { skipped: boolean; } | { skipped: boolean; }; oauth: null | object[]; }

setupData.database

null | { dynamo: { accessKeyId: ... | ...; accessSecretKey: ... | ...; region: ... | ...; tableName: ... | ...; }; mongo: { uri: ... | ...; }; provider: "MongoDB" | "DynamoDB"; } = ...

setupData.host

null | { provider: "Vercel"; vercel: { projectId: ... | ...; projectName: ... | ... | ...; teamId: ... | ...; token: ... | ...; }; } = ...

setupData.mediaStorage

null | object[] | { skipped: boolean; } | { skipped: boolean; } = ...

setupData.oauth

null | object[] = ...

vercelConfig?

{ projectId: string; teamId: string; token: string; }

vercelConfig.projectId

string

vercelConfig.teamId

string

vercelConfig.token

string

Returns

Promise<Partial<SetupValidation>>

posts

posts: object

API methods for handling blog or article posts, including CRUD operations and querying.

posts.createPost()

createPost: (post) => Promise<void>

Creates a new post with provided data.

Creates a new blog post with the provided data.

Parameters
post

The data required to create the post.

author

string = ...

category

null | string = ...

content

string = ...

draft

boolean = ...

metadata

{ description: string; ogImage: string; title: string; } = ...

metadata.description

string = ...

metadata.ogImage

string = ...

metadata.title

string = ...

subtitle

null | string = ...

title

string = ...

Returns

Promise<void>

A promise resolving once the post has been successfully created.

Throws

Throws an error if the post cannot be created due to validation or database issues.

posts.deletePost()

deletePost: (post) => Promise<void>

Deletes a post by its ID.

Deletes a post identified by its unique identifier.

Parameters
post

The post object containing at least the _id field.

_id

string = ...

author

string = ...

category

null | string = ...

content

string = ...

createdAt

Date = ...

draft

boolean = ...

metadata

{ description: string; ogImage: string; title: string; } = ...

metadata.description

string = ...

metadata.ogImage

string = ...

metadata.title

string = ...

slug

string = ...

subtitle

null | string = ...

title

string = ...

Returns

Promise<void>

A promise resolving when the deletion has successfully occurred.

Throws

Throws an error if the post does not exist or the deletion fails.

posts.getAllPosts()

getAllPosts: () => Promise<object[]>

Retrieves all existing posts sorted by most recent.

Retrieves all posts stored in the database, sorted by creation date (most recent first).

Returns

Promise<object[]>

A promise resolving to an array of post objects.

Throws

Throws an error if the retrieval fails due to database issues.

posts.getDrafts()

getDrafts: () => Promise<object[]>

Retrieves all posts marked as drafts.

Retrieves all posts marked as drafts, sorted by creation date (most recent first).

Returns

Promise<object[]>

A promise resolving to an array of draft post objects.

Throws

Throws an error if the database operation fails.

posts.getPost()

getPost: (post) => Promise<{ _id: string; author: string; category: null | string; content: string; createdAt: Date; draft: boolean; metadata: { description: string; ogImage: string; title: string; }; slug: string; subtitle: null | string; title: string; }>

Retrieves a post matching provided criteria (e.g., ID, title, author).

Retrieves a single post matching at least one of the provided criteria.

Parameters
post

Partial<{ _id: string; author: string; category: null | string; content: string; createdAt: Date; draft: boolean; metadata: { description: string; ogImage: string; title: string; }; slug: string; subtitle: null | string; title: string; }>

A partial object containing at least one criterion for searching the post (e.g., _id, title, author, etc.).

Returns

Promise<{ _id: string; author: string; category: null | string; content: string; createdAt: Date; draft: boolean; metadata: { description: string; ogImage: string; title: string; }; slug: string; subtitle: null | string; title: string; }>

A promise resolving to the post matching the provided criteria.

Throws

Throws an error if no criteria are provided or the post isn't found.

posts.getPostBySlug()

getPostBySlug: (slug) => Promise<null | { _id: string; author: string; category: null | string; content: string; createdAt: Date; draft: boolean; metadata: { description: string; ogImage: string; title: string; }; slug: string; subtitle: null | string; title: string; }>

Retrieves a post by its unique slug.

Retrieves a single post by its unique slug.

Parameters
slug

string

The unique URL-friendly identifier for the post.

Returns

Promise<null | { _id: string; author: string; category: null | string; content: string; createdAt: Date; draft: boolean; metadata: { description: string; ogImage: string; title: string; }; slug: string; subtitle: null | string; title: string; }>

A promise resolving to the post object if found, otherwise null.

Throws

Throws an error if the database operation fails.

posts.getPublishedPosts()

getPublishedPosts: () => Promise<object[]>

Retrieves all posts marked as published.

Retrieves all posts marked as published (not drafts), sorted by creation date (most recent first).

Returns

Promise<object[]>

A promise resolving to an array of published post objects.

Throws

Throws an error if the database operation fails.

posts.updatePost()

updatePost: (postId, updates) => Promise<{ _id: string; author: string; category: null | string; content: string; createdAt: Date; draft: boolean; metadata: { description: string; ogImage: string; title: string; }; slug: string; subtitle: null | string; title: string; }>

Updates an existing post by its ID with provided changes.

Updates an existing post with the specified changes.

Parameters
postId

string

The unique identifier (_id) of the post to be updated.

updates

Partial<{ _id: string; author: string; category: null | string; content: string; createdAt: Date; draft: boolean; metadata: { description: string; ogImage: string; title: string; }; slug: string; subtitle: null | string; title: string; }>

An object containing the fields and values to update.

Returns

Promise<{ _id: string; author: string; category: null | string; content: string; createdAt: Date; draft: boolean; metadata: { description: string; ogImage: string; title: string; }; slug: string; subtitle: null | string; title: string; }>

A promise resolving to the updated post object.

Throws

Throws an error if the post does not exist or validation fails.

providers

providers: object

Authentication and external service providers.

providers.cloudinary

cloudinary: object

providers.cloudinary.deleteCloudinaryMedia()

deleteCloudinaryMedia: (media, mediaStorageConfiguration) => Promise<void>

Parameters
media
id

string = ...

name

string = ...

source

"Cloudinary" | "AWS S3" = mediaStorageProviderSchema

type

"image" | "video" = ...

url

string = ...

mediaStorageConfiguration

null | object[] | { skipped: boolean; }

Returns

Promise<void>

providers.cloudinary.getMedia()

getMedia: (resourceType?) => Promise<object[]>

Parameters
resourceType?

"image" | "video"

Returns

Promise<object[]>

providers.cloudinary.testConnection()

testConnection: (url?) => Promise<void>

Parameters
url?

string

Returns

Promise<void>

providers.cloudinary.updateCloudinaryMediaName()

updateCloudinaryMediaName: (media, newName, mediaStorageConfiguration) => Promise<{ id: string; name: string; source: "Cloudinary" | "AWS S3"; type: "image" | "video"; url: string; }>

Parameters
media
id

string = ...

name

string = ...

source

"Cloudinary" | "AWS S3" = mediaStorageProviderSchema

type

"image" | "video" = ...

url

string = ...

newName

string

mediaStorageConfiguration

null | object[] | { skipped: boolean; }

Returns

Promise<{ id: string; name: string; source: "Cloudinary" | "AWS S3"; type: "image" | "video"; url: string; }>

providers.cloudinary.uploadFiles()

uploadFiles: (files) => Promise<void>

Parameters
files

Blob[]

Returns

Promise<void>

providers.s3

s3: object

providers.s3.deleteMedia()

deleteMedia: (media, mediaStorageConfiguration) => Promise<void>

Parameters
media
id

string = ...

name

string = ...

source

"Cloudinary" | "AWS S3" = mediaStorageProviderSchema

type

"image" | "video" = ...

url

string = ...

mediaStorageConfiguration

null | object[] | { skipped: boolean; }

Returns

Promise<void>

providers.s3.getMedia()

getMedia: (config, prefix, maxItems) => Promise<object[]>

Parameters
config
accessKeyId

null | string = ...

accessSecretKey

null | string = ...

bucketName

null | string = ...

region

null | string = ...

prefix

string = ""

maxItems

number = 1000

Returns

Promise<object[]>

providers.s3.testConnection()

testConnection: (config) => Promise<ListObjectsV2CommandOutput>

Parameters
config
accessKeyId

null | string = ...

accessSecretKey

null | string = ...

bucketName

null | string = ...

region

null | string = ...

Returns

Promise<ListObjectsV2CommandOutput>

providers.s3.updateMediaName()

updateMediaName: (media, newName, mediaStorageConfiguration) => Promise<{ id: string; name: string; source: "Cloudinary" | "AWS S3"; type: "image" | "video"; url: string; }>

Parameters
media
id

string = ...

name

string = ...

source

"Cloudinary" | "AWS S3" = mediaStorageProviderSchema

type

"image" | "video" = ...

url

string = ...

newName

string

mediaStorageConfiguration

null | object[] | { skipped: boolean; }

Returns

Promise<{ id: string; name: string; source: "Cloudinary" | "AWS S3"; type: "image" | "video"; url: string; }>

providers.s3.uploadFiles()

uploadFiles: (config, files) => Promise<object[]>

Parameters
config
accessKeyId

null | string = ...

accessSecretKey

null | string = ...

bucketName

null | string = ...

region

null | string = ...

files

Blob[]

Returns

Promise<object[]>

providers.vercel

vercel: object

providers.vercel.addEnvToProject()

addEnvToProject: (__namedParameters) => Promise<void>

Parameters
__namedParameters
key

string

projectId

string

target

("production" | "preview" | "development")[] = ...

teamId

string

type

"system" | "encrypted" | "plain" | "sensitive" | "secret" = "plain"

value

string

vercel

Vercel

Returns

Promise<void>

providers.vercel.connect()

connect: (apiKey) => Vercel

Parameters
apiKey

string

Returns

Vercel

providers.vercel.getDeploymentById()

getDeploymentById: (__namedParameters) => Promise<GetDeploymentResponseBody>

Parameters
__namedParameters
deploymentId

string

teamId

string

vercel

Vercel

Returns

Promise<GetDeploymentResponseBody>

providers.vercel.getLatestDeployment()

getLatestDeployment: (__namedParameters) => Promise<null | Deployments>

Parameters
__namedParameters
projectId

string

teamId

string

vercel

Vercel

Returns

Promise<null | Deployments>

providers.vercel.getProjectById()

getProjectById: (__namedParameters) => Promise<GetProjectsProjects>

Parameters
__namedParameters
projectId

string

teamId

string

vercel

Vercel

Returns

Promise<GetProjectsProjects>

providers.vercel.getProjectEnvVars()

getProjectEnvVars: (__namedParameters) => Promise<FilterProjectEnvsResponseBody>

Parameters
__namedParameters
projectId

string

target?

("production" | "preview" | "development")[]

teamId

string

vercel

Vercel

Returns

Promise<FilterProjectEnvsResponseBody>

providers.vercel.getProjectEnvVarValue()

getProjectEnvVarValue: (__namedParameters) => Promise<GetProjectEnvResponseBody>

Parameters
__namedParameters
projectId

string

target?

("production" | "preview" | "development")[]

teamId

string

varId

string

vercel

Vercel

Returns

Promise<GetProjectEnvResponseBody>

providers.vercel.getProjects()

getProjects: (vercel, teamId) => Promise<GetProjectsResponseBody>

Parameters
vercel

Vercel

teamId

string

Returns

Promise<GetProjectsResponseBody>

providers.vercel.getRunningDeployments()

getRunningDeployments: (__namedParameters) => Promise<Deployments[]>

Parameters
__namedParameters
projectId

string

teamId

string

vercel

Vercel

Returns

Promise<Deployments[]>

providers.vercel.getTeamById()

getTeamById: (__namedParameters) => Promise<{}>

Parameters
__namedParameters
teamId

string

vercel

Vercel

Returns

Promise<{}>

providers.vercel.getUserTeams()

getUserTeams: (vercel) => Promise<GetTeamsResponseBody>

Parameters
vercel

Vercel

Returns

Promise<GetTeamsResponseBody>

providers.vercel.getVercelEnvVars()

getVercelEnvVars: () => object

Returns

object

projectId

projectId: string

teamId

teamId: string

token

token: string

providers.vercel.getVercelToken()

getVercelToken: () => string

Returns

string

providers.vercel.triggerDeployment()

triggerDeployment: (__namedParameters) => Promise<CreateDeploymentResponseBody>

Parameters
__namedParameters
name?

string = "Production Deployment"

projectId

string

target?

"production" | "staging" = "production"

teamId

string

vercel

Vercel

Returns

Promise<CreateDeploymentResponseBody>

providers.vercel.triggerRedeploy()

triggerRedeploy: (__namedParameters) => Promise<CreateDeploymentResponseBody>

Parameters
__namedParameters
deploymentId?

string

name?

string = "Production Deployment"

projectId

string

target?

"production" | "preview" | "staging" = "production"

teamId

string

vercel

Vercel

Returns

Promise<CreateDeploymentResponseBody>

users

users: object

User-related API, including methods for managing authentication, authorization, and profiles.

users.createUser()

createUser: (userData, dbUri?) => Promise<void>

Parameters
userData

Partial<{ _id: string; createdAt: Date; email: string; imageUrl: null | string; name: null | string; role: "user" | "admin"; }>

dbUri?

string

Returns

Promise<void>

users.deleteUser()

deleteUser: (user) => Promise<void>

Parameters
user
_id

string = ...

createdAt

Date = ...

email

string = ...

imageUrl

null | string = ...

name

null | string = ...

role

"user" | "admin" = ...

Returns

Promise<void>

users.getAllUsers()

getAllUsers: (dbUri?) => Promise<object[]>

Parameters
dbUri?

string

Returns

Promise<object[]>

users.getUser()

getUser: (user) => Promise<{ _id: string; createdAt: Date; email: string; imageUrl: null | string; name: null | string; role: "user" | "admin"; }>

Parameters
user

Partial<{ _id: string; createdAt: Date; email: string; imageUrl: null | string; name: null | string; role: "user" | "admin"; }>

Returns

Promise<{ _id: string; createdAt: Date; email: string; imageUrl: null | string; name: null | string; role: "user" | "admin"; }>

users.getUserByEmail()

getUserByEmail: (email) => Promise<null | { _id: string; createdAt: Date; email: string; imageUrl: null | string; name: null | string; role: "user" | "admin"; }>

Parameters
email

string

Returns

Promise<null | { _id: string; createdAt: Date; email: string; imageUrl: null | string; name: null | string; role: "user" | "admin"; }>

users.updateUser()

updateUser: (user) => Promise<void>

Parameters
user

Partial<{ _id: string; createdAt: Date; email: string; imageUrl: null | string; name: null | string; role: "user" | "admin"; }>

Returns

Promise<void>

users.userHasAccess()

userHasAccess: (user) => Promise<boolean>

Parameters
user
_id

string = ...

createdAt

Date = ...

email

string = ...

imageUrl

null | string = ...

name

null | string = ...

role

"user" | "admin" = ...

Returns

Promise<boolean>