Initial commit
This commit is contained in:
357
mcp-server/tools/helpers/ACAI_ENDPOINTS.md
Normal file
357
mcp-server/tools/helpers/ACAI_ENDPOINTS.md
Normal file
@@ -0,0 +1,357 @@
|
||||
# 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**:
|
||||
```javascript
|
||||
{
|
||||
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**:
|
||||
```javascript
|
||||
{
|
||||
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**:
|
||||
```javascript
|
||||
{
|
||||
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**:
|
||||
```javascript
|
||||
{
|
||||
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**:
|
||||
```javascript
|
||||
{
|
||||
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**:
|
||||
```javascript
|
||||
{
|
||||
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**:
|
||||
```javascript
|
||||
{
|
||||
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**:
|
||||
```javascript
|
||||
{
|
||||
action: 'getSchemaTables',
|
||||
type: 'acai'
|
||||
}
|
||||
```
|
||||
|
||||
### 3. Actualizar esquema tabla (SaaS + CMS)
|
||||
**Endpoint SaaS**: `${SAAS_URL}` (PUT)
|
||||
**Método**: PUT
|
||||
**Usado por**: `update_table_schema`
|
||||
**Payload**:
|
||||
```javascript
|
||||
{
|
||||
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**:
|
||||
```javascript
|
||||
{
|
||||
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**:
|
||||
```javascript
|
||||
{
|
||||
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
|
||||
```javascript
|
||||
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
|
||||
```javascript
|
||||
{
|
||||
"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.
|
||||
Reference in New Issue
Block a user