SUPPORT TOOLS WP — API V1 Base: /wp-json/support-tools-wp/v1 Usa autenticación WordPress: cookie con X-WP-Nonce en el navegador o Application Password sobre HTTPS para integraciones. No incluyas contraseñas en código público. GET /tickets?page=1&status=open&search=texto Devuelve hasta 20 tickets visibles para el actor autenticado. page admite 1 a 10000. GET /tickets/123?page=1 Devuelve el ticket y hasta 20 mensajes. Las notas internas se filtran por permiso. GET /files/45 Devuelve metadatos y data en base64 de un archivo de hasta 1 MiB después de comprobar el acceso a su ticket y la visibilidad de su mensaje. Necesita autenticación. POST /tickets Content-Type: application/json Ejemplo de creación (sustituir UUID por uno nuevo): { "operation": "create", "request_id": "0d7df746-ef5d-4792-a88c-c49eca2be2cb", "department": "general", "priority": "normal", "subject": "Necesito ayuda", "body": "Descripción del problema", "files": [] } Para responder: operation=reply, ticket_id, version leído del ticket, request_id, body y opcional internal (booleano) y files. Cada archivo: name y data (base64). Otras operaciones: route, request_closure, close, reopen, feedback, delete. route requiere departamento, prioridad, assignee_id y collaborators (array de IDs). feedback requiere score de 1 a 5 y feedback_text; delete requiere confirm="1". Crear para otra cuenta usa owner_id y necesita permiso de su departamento. Los campos no autorizan al actor; los permisos se vuelven a evaluar en el servicio. Errores de intención/conflicto: WP_Error con estado 409. Error de almacenamiento: 503 y sin cambios parciales. La autorización del endpoint devuelve 401/403. Reutiliza el UUID solo para reintentar la misma intención. Una intención diferente con el mismo UUID se rechaza. La garantía de reintento abarca siete días. POST /inbound — GATEWAY DE CORREO OPCIONAL No usa la autenticación del usuario en el navegador. Está desactivado mientras no se genere un secreto desde Configuración. El secreto solo debe estar en servidores. El gateway debe verificar al remitente mediante su proveedor de correo; nunca firmar ciegamente cualquier dirección que envíe un visitante. Body JSON para responder: {"sender":"usuario@dominio.tld","ticket_id":123,"body":"Respuesta","request_id":"UUID"} Para crear: omitir ticket_id e incluir subject; department y priority son opcionales con valores general/normal. El remitente debe ser una cuenta registrada del sitio. No se admiten adjuntos ni notas internas por este canal en la versión 1.0.0. X-STWP-Timestamp: segundos Unix actuales, diferencia máxima 300 segundos. X-STWP-Signature: HMAC-SHA256 hexadecimal de timestamp + "." + body JSON RAW, calculado con el secreto. Firmar exactamente los bytes que se transmiten. Reintentos: conservar request_id y contenido, renovar timestamp y firma. Tamaño máximo del body de entrada de correo: 100000 bytes. Una firma correcta no concede acceso a tickets de otra cuenta. Ejemplo del cálculo en PHP del gateway (no necesita ejecutar el plugin): $signature = hash_hmac('sha256', $timestamp . '.' . $raw_body, $shared_secret); El secreto no aparece en este documento ni en las respuestas REST.