Files
agenticSystem/mcp-server/tools/helpers/ACAI_ENDPOINTS.md
2026-04-01 23:16:45 +01:00

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

  1. Construcción de URLs: Algunos endpoints usan la URL base dinámicamente (https://{website}/...) mientras otros usan CMS_URL configurado.
  2. Parámetros de formulario: Algunos endpoints esperan URLSearchParams, otros JSON.
  3. Token Auth: Algunos usan X-Acai-Token, otros pasan token en payload.
  4. Respuestas: Varían entre {success: true}, {result: true}, o respuestas direc tas.