Endpoints de la REST API
Documentación de la API REST de Booknetic basada en la especificación OpenAPI: endpoints, parámetros y ejemplos de solicitudes y respuestas en JSON.
Documentación de la API REST de Booknetic basada en la especificación OpenAPI: endpoints, parámetros y ejemplos de solicitudes y respuestas en JSON.
Booknetic incluye una REST API basada en JSON para trabajar con recursos principales como citas y clientes. Esta guía está basada en la especificación OpenAPI proporcionada y presenta los endpoints disponibles en un formato más claro y amigable para desarrolladores.
La API está pensada para el acceso programático a los datos de Booknetic mediante solicitudes HTTP estándar y cargas útiles JSON.
| Propiedad | Valor |
|---|---|
| Versión | 1.0.0 |
| Ruta base | /wp-json/booknetic/v1 |
| Formato | JSON (application/json) |
Todos los endpoints de esta guía son relativos a:
/wp-json/booknetic/v1En una instalación típica de WordPress, la URL base completa es:
https://your-domain.com/wp-json/booknetic/v1Las solicitudes y respuestas usan JSON.
| Encabezado | Valor |
|---|---|
| Encabezado de solicitud | Content-Type: application/json |
| Encabezado de respuesta | Content-Type: application/json |
| Recurso | Descripción |
|---|---|
| Appointments | Gestión de citas |
| Customers | Gestión de clientes |
El recurso de citas proporciona endpoints para listar, crear, recuperar, actualizar, eliminar y cambiar registros de citas, así como para obtener estados disponibles y franjas horarias disponibles.
Devuelve una lista de citas.
Endpoint
GET /appointmentsRespuesta
200 OK — Lista de citas
Cuerpo de respuesta: array de Appointment
Ejemplo de respuesta
[
{
"id": 101,
"customer_id": 55,
"service_id": 9,
"staff_id": 3,
"date": "2026-01-10T14:30:00Z",
"status": "approved"
}
]Crea una nueva cita.
Endpoint
POST /appointmentsCuerpo de la solicitud
Obligatorio — AppointmentCreate
Ejemplo de solicitud
{
"customer_id": 55,
"service_id": 9,
"staff_id": 3,
"date": "2026-01-10T14:30:00Z"
}Respuestas
201 Created — Cita creada
Cuerpo de respuesta: Appointment
Ejemplo de respuesta
{
"id": 102,
"customer_id": 55,
"service_id": 9,
"staff_id": 3,
"date": "2026-01-10T14:30:00Z",
"status": "pending"
}Devuelve una sola cita por su ID.
Endpoint
GET /appointments/{id}Parámetros de ruta
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | integer | Sí | ID de la cita |
Respuestas
200 OK — Cita
Cuerpo de respuesta: Appointment
Ejemplo de respuesta
{
"id": 102,
"customer_id": 55,
"service_id": 9,
"staff_id": 3,
"date": "2026-01-10T14:30:00Z",
"status": "pending"
}Actualiza una cita por su ID.
Endpoint
PUT /appointments/{id}Parámetros de ruta
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | integer | Sí | ID de la cita |
Cuerpo de la solicitud
Obligatorio — AppointmentUpdate
Ejemplo de solicitud
{
"staff_id": 4,
"date": "2026-01-10T15:00:00Z",
"status": "approved"
}Respuestas
200 OK — Cita actualizada
La especificación OpenAPI proporcionada no define un esquema de respuesta para este endpoint. En la práctica, devolver el objeto Appointment actualizado haría que el endpoint fuera más predecible y más fácil de consumir.
Elimina una cita por su ID.
Endpoint
DELETE /appointments/{id}Parámetros de ruta
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | integer | Sí | ID de la cita |
Respuestas
204 No Content — Cita eliminada
Actualiza el estado de una cita.
Endpoint
PUT /appointments/{id}/change-statusParámetros de ruta
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | integer | Sí | ID de la cita |
Cuerpo de la solicitud
Obligatorio
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
status | string | Sí | Nuevo valor de estado |
Ejemplo de solicitud
{
"status": "approved"
}Respuestas
200 OK — Estado actualizado
La especificación OpenAPI proporcionada no define un esquema de respuesta para este endpoint. Una implementación consistente puede devolver el objeto Appointment actualizado o una carga útil estándar de éxito.
Devuelve la lista de estados de cita disponibles.
Endpoint
GET /appointments/statusesRespuestas
200 OK — Estados disponibles
Cuerpo de respuesta: array de strings
Ejemplo de respuesta
["pending", "approved", "canceled"]Devuelve una lista de franjas horarias disponibles para citas.
Endpoint
GET /appointments/available-timesRespuestas
200 OK — Horarios disponibles
Cuerpo de respuesta: array de strings
Ejemplo de respuesta
[
"2026-01-10 14:30",
"2026-01-10 15:00",
"2026-01-10 15:30"
]El esquema OpenAPI define el ejemplo como una cadena simple, como "2026-01-10 14:30". Si la implementación real espera valores ISO 8601 o valores con zona horaria, eso debe documentarse explícitamente.
El recurso de clientes proporciona endpoints para listar, recuperar, crear, actualizar y eliminar registros de clientes.
Devuelve una lista de clientes.
Endpoint
GET /customersRespuestas
200 OK — Lista de clientes
Cuerpo de respuesta: array de Customer
Ejemplo de respuesta
[
{
"id": 55,
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+1 555 123 4567"
}
]Devuelve un cliente por ID.
Endpoint
GET /customer/info/{id}Parámetros de ruta
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | integer | Sí | ID del cliente |
Respuestas
200 OK — Información del cliente
Cuerpo de respuesta: Customer
Ejemplo de respuesta
{
"id": 55,
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+1 555 123 4567"
}Crea un nuevo cliente.
Endpoint
POST /customer/createCuerpo de la solicitud
Obligatorio — CustomerCreate
Ejemplo de solicitud
{
"name": "Jane Doe",
"email": "[email protected]",
"phone": "+1 555 123 4567"
}Respuestas
201 Created — Cliente creado
Cuerpo de respuesta: Customer
Actualiza un cliente existente.
Endpoint
POST /customer/editCuerpo de la solicitud
Obligatorio — CustomerUpdate
Ejemplo de solicitud
{
"id": 55,
"name": "Jane A. Doe",
"email": "[email protected]",
"phone": "+1 555 123 4567"
}Respuestas
200 OK — Cliente actualizado
La especificación OpenAPI proporcionada no define un esquema de respuesta para este endpoint. Devolver el objeto Customer actualizado mejoraría la consistencia.
Elimina un cliente por ID.
Endpoint
POST /customer/deleteCuerpo de la solicitud
Obligatorio
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | integer | Sí | ID del cliente |
Ejemplo de solicitud
{
"id": 55
}Respuestas
200 OK — Cliente eliminado
Este endpoint usa POST en lugar de DELETE. Si eso es intencional por patrones de implementación específicos de WordPress, permisos o manejo de nonces, la razón debería documentarse claramente para los consumidores de la API.
Los siguientes esquemas se describen en la especificación OpenAPI proporcionada.
| Campo | Tipo | Notas |
|---|---|---|
id | integer | ID de la cita |
customer_id | integer | ID del cliente relacionado |
service_id | integer | ID del servicio relacionado |
staff_id | integer | ID del personal relacionado |
date | string (date-time) | Fecha y hora ISO 8601 |
status | string | Estado de la cita |
Campos obligatorios: customer_id, service_id, date
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
customer_id | integer | Sí | ID del cliente |
service_id | integer | Sí | ID del servicio |
staff_id | integer | No | ID del personal |
date | string (date-time) | Sí | Fecha y hora ISO 8601 |
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
staff_id | integer | No | ID del personal |
date | string (date-time) | No | Fecha y hora ISO 8601 |
status | string | No | Estado de la cita |
| Campo | Tipo | Notas |
|---|---|---|
id | integer | ID del cliente |
name | string | Nombre del cliente |
email | string (email) | Correo electrónico del cliente |
phone | string | Teléfono del cliente |
Campos obligatorios: name
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
name | string | Sí | Nombre del cliente |
email | string (email) | No | Correo electrónico del cliente |
phone | string | No | Teléfono del cliente |
Campos obligatorios: id
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
id | integer | Sí | ID del cliente |
name | string | No | Nombre del cliente |
email | string (email) | No | Correo electrónico del cliente |
phone | string | No | Teléfono del cliente |
La siguiente tabla resume todos los endpoints definidos en la especificación proporcionada.
| Método | Endpoint | Descripción |
|---|---|---|
GET | /appointments | Obtener citas |
POST | /appointments | Crear cita |
GET | /appointments/{id} | Obtener cita por ID |
PUT | /appointments/{id} | Actualizar cita |
DELETE | /appointments/{id} | Eliminar cita |
PUT | /appointments/{id}/change-status | Cambiar estado de la cita |
GET | /appointments/statuses | Obtener estados de cita |
GET | /appointments/available-times | Obtener horarios disponibles de cita |
| Método | Endpoint | Descripción |
|---|---|---|
GET | /customers | Obtener clientes |
GET | /customer/info/{id} | Obtener información del cliente |
POST | /customer/create | Crear cliente |
POST | /customer/edit | Editar cliente |
POST | /customer/delete | Eliminar cliente |
Algunos detalles de la especificación proporcionada no están completamente definidos y se beneficiarían de una aclaración en la documentación final de producción.
Estos endpoints no definen esquemas de respuesta en el archivo OpenAPI proporcionado:
| Endpoint | Nota |
|---|---|
PUT /appointments/{id} | La respuesta de la cita actualizada no está definida |
PUT /appointments/{id}/change-status | La carga útil de respuesta no está definida |
POST /customer/edit | La respuesta del cliente actualizado no está definida |
Devolver el objeto de recurso actualizado para estos endpoints haría que la API fuese más fácil de usar y más consistente.
El campo date está documentado como string (date-time) y los ejemplos de solicitud y respuesta usan valores ISO 8601 como:
"2026-01-10T14:30:00Z"Al mismo tiempo, el endpoint de horarios disponibles devuelve cadenas con formato como:
"2026-01-10 14:30"Si la implementación depende de una zona horaria específica, de la hora local del servidor o de un formato ISO 8601 estricto, esa expectativa debería documentarse explícitamente.
El endpoint para eliminar cliente usa POST en lugar de DELETE:
POST /customer/deleteSi este comportamiento es intencional, documentar la razón reducirá la confusión para los desarrolladores que integren con la API.
La REST API de Booknetic proporciona una interfaz basada en JSON para gestionar citas y clientes bajo el namespace /wp-json/booknetic/v1.
La especificación actual incluye soporte para:
| Recurso | Operaciones |
|---|---|
| Appointments | Listar, crear, recuperar, actualizar, eliminar, cambiar estado, obtener estados, obtener horarios disponibles |
| Customers | Listar, recuperar, crear, actualizar, eliminar |