Saltearse al contenido

createModel

La función createModel crea un nuevo modelo Entity (un content type) con su lista de campos. Es el equivalente en JavaScript/TypeScript del endpoint REST POST /model/entity.

Ejemplo:

// Usando el cliente creado previamente
const { id } = await client.createModel({
name: 'Article',
fieldList: [
{ name: 'title', type: 'short-text', validations: [{ name: 'required' }, { name: 'max-length', customArgs: { length: 120 } }] },
{ name: 'body', type: 'long-text' },
{ name: 'tags', type: 'short-text', isArray: true },
{ name: 'writtenBy', type: 'relation', relatedModelId: authorId },
{ name: 'size', type: 'enum', relatedModelId: sizeEnumId },
],
});
console.log(id);

Interface

export interface ApiClient {
createModel: (params: CreateEntityParams) => Promise<SaveModelResponse>;
// ... otros métodos
}
export interface CreateEntityParams {
name: string;
fieldList: FieldSpec[];
}
export interface FieldSpec {
id?: string; // omítelo al crear — el servidor asigna uno
name: string;
type: FieldType; // 'short-text' | 'long-text' | 'number' | 'date' | 'date-time'
// | 'media' | 'boolean' | 'color' | 'relation' | 'enum'
relatedModelId?: string; // obligatorio para 'relation' / 'enum'
isArray?: boolean; // true → el campo almacena una lista (por defecto false)
validations?: Validation[];
}
export interface Validation {
name: string; // 'required' | 'unique' | 'min-length' | 'max-length' | 'media-type'
customArgs?: any;
}
export interface SaveModelResponse {
id: string;
}

Parámetros

NombreDescripción
nameEl nombre del modelo. Debe cumplir las reglas de nombres y ser único entre los modelos del proyecto.
fieldListLos campos de la entidad, en orden. Se requiere al menos uno. Consulta la referencia de tipos de campo y validaciones.

Salida

La función devuelve una Promise<SaveModelResponse> que se resuelve con el objeto con el id del nuevo modelo. Úsalo como relatedModelId de un campo relation en otro modelo, o como contentType al crear contenido de este tipo con createContent.

En caso de fallo, lanza un ApiClientError tipado (por ejemplo VALIDATION_ERROR, NOT_FOUND).