8.7 KiB
Acai CMS Endpoints Reference
Este documento mapea todos los endpoints de Acai CMS utilizados por las herramientas MCP.
Endpoints Base
- CMS Admin:
https://[website]/admin.php- Panel administrativo principal - Viewer Functions:
https://[website]/cms/lib/viewer_functions.php- API de funciones Acai - SAAS API:
https://ws.cocosolution.com/api/schemas/- API SaaS para esquemas - File Upload:
https://[website]/lib/menus/modals/plupload/multiupload/upload.php- Subir archivos
Categoría: Módulos (saveApartados)
1. Generar módulo desde HTML
Endpoint: https://acai.cms.cocosolution.com/admin.php?menu=apartados&action=edit&generateModuleFromString=1
Método: POST
Usado por: save_module
Headers: Content-Type: application/json, X-Acai-Token
Payload: moduleData object con html, htmlParsed, vars, etc.
2. Obtener esquemas de módulos
Endpoint: /cms/lib/viewer_functions.php
Método: POST via getApiClient
Usado por: save_module, saveGeneralSection, check_module, list_modules, get_module
Action: getModuleSchemas
Payload via getCommonParams:
{
action_ws: "getModuleSchemas",
ids: [moduleId], // opcional, para un módulo específico
full: 1 // opcional, para obtener contenido completo
}
3. Verificar módulo
Endpoint: https://[website]/cms/lib/viewer_functions.php?action_ws=checkModuleCode
Método: POST
Usado por: check_module
Payload:
{
moduleName: string,
vars: object // variables de prueba
}
Categoría: Secciones Generales (saveLexicalData)
1. Guardar sección con contenido Twig/HTML
Endpoint: https://[website]/cms/lib/viewer_functions.php
Método: POST
Usado por: saveGeneralSection
Action: saveLexicalData
Payload:
{
action_ws: 'saveLexicalData',
token: credentials.token,
tokenHash: credentials.tokenHash,
content: string, // HTML parsed content
rawDataSended: true,
endPointFolder: string, // e.g., 'custom-productos'
parserType: '2' | '0', // 2=Twig, 0=Acai
aditionalFiles: [ // CSS, JS files
{
path: string,
fileName: string,
content: string
}
]
}
Categoría: Registros (CRUD)
1. Crear/Actualizar registro
Endpoint: ${CMS_URL}/admin.php
Método: POST
Usado por: create_or_update_record
Content-Type: application/x-www-form-urlencoded
Params:
menu={tableName}
_defaultAction=save
num={recordId} // empty para crear
type=
preSaveTempId={timestamp}
action=save
{fieldname}={value} // campos del registro
{fieldname}:year, :mon, etc // para campos date
enlace={value}
2. Listar registros
Endpoint: ${CMS_URL}/admin.php?menu={tableName}&json=1&page={n}&keyword={q}
Método: GET
Usado por: list_table_records
Headers: X-Acai-Token, X-Requested-With: XMLHttpRequest
3. Eliminar registros
Endpoint: ${CMS_URL}/admin.php
Método: POST
Usado por: delete_table_records
Params:
menu={tableName}
_defaultAction=list
page=1
_advancedAction=eraseRecords
_advancedActionSubmit=Ejecutar
selectedRecords[]={id1}
selectedRecords[]={id2}
Categoría: Archivos (saveFileBuilder, removeFileBuilder)
1. Escribir archivo
Endpoint: /cms/lib/viewer_functions.php
Método: POST via getApiClient
Usado por: write_file
Action: saveFileBuilder
Payload via getCommonParams:
{
action_ws: "saveFileBuilder",
path: string, // ej: '/modulos/mymodule/'
fileName: string, // ej: 'style.css'
content: string,
rawDataSended: false,
rootFolder: false
}
2. Listar archivos (FTP)
Endpoint: /cms/lib/viewer_functions.php
Método: POST via getApiClient
Usado por: list_files
Action: getFTPFiles
Payload via getCommonParams:
{
action_ws: "getFTPFiles",
path: string // directorio a listar
}
3. Eliminar archivo
Endpoint: /cms/lib/viewer_functions.php
Método: POST via getApiClient
Usado por: delete_file
Action: removeFileBuilder
Payload via getCommonParams:
{
action_ws: "removeFileBuilder",
path: string // ruta del archivo
}
Categoría: Tablas (Database Schema)
1. Listar tablas (SaaS)
Endpoint: ${SAAS_URL}
Método: POST
Usado por: list_tables
Payload:
{
action: 'getSchemaTables',
type: 'acai'
}
Headers: Authorization: Bearer {token}, Content-Type: application/json
2. Obtener esquema tabla (SaaS)
Endpoint: ${SAAS_URL}
Método: POST
Usado por: get_table_schema
Payload:
{
action: 'getSchemaTables',
type: 'acai'
}
3. Actualizar esquema tabla (SaaS + CMS)
Endpoint SaaS: ${SAAS_URL} (PUT)
Método: PUT
Usado por: update_table_schema
Payload:
{
action: "saveSchema",
type: "acai",
schema: object, // esquema completo o parcial
dir: "",
id: tableName
}
Luego sincronizar en CMS:
Endpoint CMS: /cms/lib/viewer_functions.php
Método: POST via getApiClient
Action: updateAllSchemas
Payload via getCommonParams:
{
action_ws: "updateAllSchemas",
tokenHash: credentials.tokenHash
}
4. Crear tabla
Endpoint: ${CMS_URL}/admin.php
Método: POST
Usado por: create_table
Params:
menu=database
_defaultAction=addTable_save
type={multi|single|category|separador}
preset=
enlace={on|''}
seo_metas={on|''}
menuName={name}
menuOrder={order}
tableName={name}
5. Eliminar tabla
Endpoint: ${CMS_URL}/admin.php
Método: POST
Usado por: delete_table
Params:
menu=database
action=editTable
dropTable=1
tableName={name}
6. Editar campos tabla
Endpoint: ${CMS_URL}/admin.php
Método: POST
Usado por: edit_table_field
Params:
menu=database
_defaultAction=editTable
editField=1
tableName=cms_{tableName}
save=1
multipleFields={JSON.stringify(fieldArray)}
7. Eliminar campo tabla
Endpoint: ${CMS_URL}/admin.php
Método: POST
Usado por: delete_table_field
Params:
menu=database
action=editTable
editField=1
tableName=cms_{tableName}
fieldname={fieldname}
deleteField=1
8. Obtener templates tabla (general section)
Endpoint: /cms/lib/viewer_functions.php
Método: POST via getApiClient
Usado por: get_table_templates
Action: getTableData
Payload via getCommonParams:
{
action_ws: "getTableData",
menu: tableName
}
Categoría: Media (Upload)
1. Subir imagen a campo
Endpoint: ${CMS_URL}/lib/menus/modals/plupload/multiupload/upload.php?menu={table}&fieldName={field}&num={recordId}&preSaveTempId=
Método: POST (FormData)
Usado por: upload_record_image
Form Fields:
file={File buffer} // File object
2. Listar uploads campo
Endpoint: ${CMS_URL}/admin.php?menu={table}&action=uploadList&fieldName={field}&num={recordId}&preSaveTempId=&json=1
Método: GET
Usado por: list_record_uploads
Headers: X-Acai-Token
3. Reemplazar upload
Endpoint: ${CMS_URL}/admin.php
Método: POST (FormData)
Usado por: replace_record_image
Form Fields:
_defaultAction=uploadModify
menu={tableName}
fieldName={fieldName}
num={recordId}
preSaveTempId=
save=1
uploadNums[]={uploadId}
{uploadId}_file={File buffer}
{uploadId}_name={originalFilePath}
{uploadId}_alt={altText}
action=uploadModify
4. Eliminar upload
Endpoint: ${CMS_URL}/admin.php?menu={table}&action=uploadErase&fieldName={field}&uploadNum={id}&num={recordId}&preSaveTempId=
Método: GET
Usado por: delete_record_upload
Headers: X-Acai-Token, X-Requested-With: XMLHttpRequest
Patrones Comunes
getApiClient Calls
const client = getApiClient(extra.sessionId);
const response = await client.post("/cms/lib/viewer_functions.php", getCommonParams(extra.sessionId, {
action_ws: "actionName",
// ... otros params
}));
getCommonParams
Agrega automáticamente:
- token
- tokenHash
- website
- session info
Headers Recurrentes
{
"X-Acai-Token": credentials.token,
"Content-Type": "application/json" | "application/x-www-form-urlencoded"
}
Notas Importantes
- Construcción de URLs: Algunos endpoints usan la URL base dinámicamente (
https://{website}/...) mientras otros usanCMS_URLconfigurado. - Parámetros de formulario: Algunos endpoints esperan URLSearchParams, otros JSON.
- Token Auth: Algunos usan
X-Acai-Token, otros pasan token en payload. - Respuestas: Varían entre
{success: true},{result: true}, o respuestas direc tas.