Luna Health API / Referencia de la API / Listar servicios Listar servicios GET /services
Lista los servicios de su organización, con el ID que se envía como serviceId a GET /availability y POST /appointments. Envíe staffId para listar solo los servicios que ofrece ese profesional de salud, y bookable=true para listar solo los servicios que se muestran en su página pública de reservas. La duración de cada servicio, en minutos, es la duración de sus citas. Cada servicio también indica su precio, cómo su página de reservas lo presenta a los pacientes (price_display: SHOW muestra el monto, FROM como precio inicial u ON_REQUEST sin monto), su moneda y configuración de anticipo, y lo que su página pública de reservas cobra cuando un paciente lo agenda: charge_at_booking es NONE, DEPOSIT o FULL, y amount_due_at_booking es ese monto antes de cualquier código de descuento.
Ejemplos de código Node.js const fetch = require('node-fetch');
async function llamarApi() {
const claveApi = 'YOUR_API_KEY';
const staffId = 'su-staffId';
const bookable = 'su-bookable';
const rowsPerPage = 'su-rowsPerPage';
const page = 'su-page';
const queryString = new URLSearchParams({
staffId: staffId,
bookable: bookable,
rowsPerPage: rowsPerPage,
page: page
}).toString();
const url = `https://account.lunahealth.app/api/services` + (queryString ? `?${queryString}` : '');
try {
const response = await fetch(url, {
method: 'GET',
headers: {
'Authorization': `Bearer ${claveApi}`,
'Content-Type': 'application/json'
}
});
if (!response.ok) {
throw new Error(`API error: ${response.status}`);
}
const data = await response.json();
console.log(data);
return data;
} catch (error) {
console.error('Error al llamar a la API:', error);
throw error;
}
}
llamarApi();Python import requests
def llamarApi():
claveApi = 'YOUR_API_KEY'
url = 'https://account.lunahealth.app/api/services'
headers = {
'Authorization': f'Bearer {claveApi}',
'Content-Type': 'application/json'
}
params = {
'staffId': 'su-staffId',
'bookable': 'su-bookable',
'rowsPerPage': 'su-rowsPerPage',
'page': 'su-page'
}
try:
response = requests.get(
url,
headers=headers,
params=params
)
response.raise_for_status()
data = response.json()
print(data)
return data
except requests.exceptions.RequestException as e:
print(f'Error al llamar a la API: {e}')
raise
llamarApi()Parámetros Nombre Ubicación Tipo Requerido Descripción staffIdquery string No ID del profesional de salud bookablequery string No — rowsPerPagequery number No Número de filas por página pagequery number No Número de página (indexado en 0)
Respuestas Estado Descripción 200Respuesta exitosa 400Datos de entrada no válidos 401Autorización no proporcionada 403Acceso insuficiente 404No encontrado 500Error interno del servidor
200 — Respuesta exitosaCampos de la respuesta Nombre Tipo Requerido Descripción itemsarray<object> Sí — metaobject Sí —
Ejemplo de respuesta {
"items": [
{
"id": "string",
"name": "string",
"duration_minutes": 0,
"bookable": true,
"price": null,
"price_display": "SHOW",
"currency": "string",
"deposit_enabled": true,
"deposit_percentage": null,
"charge_at_booking": "NONE",
"amount_due_at_booking": 0
}
],
"meta": {
"totalRowCount": 0,
"page": 0,
"rowsPerPage": 0
}
}400 — Datos de entrada no válidosCampos de la respuesta Nombre Tipo Requerido Descripción messagestring Sí The error message codestring Sí The error code issuesarray<object> No An array of issues that were responsible for the error
Ejemplo de respuesta {
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}401 — Autorización no proporcionadaCampos de la respuesta Nombre Tipo Requerido Descripción messagestring Sí The error message codestring Sí The error code issuesarray<object> No An array of issues that were responsible for the error
Ejemplo de respuesta {
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}403 — Acceso insuficienteCampos de la respuesta Nombre Tipo Requerido Descripción messagestring Sí The error message codestring Sí The error code issuesarray<object> No An array of issues that were responsible for the error
Ejemplo de respuesta {
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}404 — No encontradoCampos de la respuesta Nombre Tipo Requerido Descripción messagestring Sí The error message codestring Sí The error code issuesarray<object> No An array of issues that were responsible for the error
Ejemplo de respuesta {
"code": "NOT_FOUND",
"message": "Not found",
"issues": []
}500 — Error interno del servidorCampos de la respuesta Nombre Tipo Requerido Descripción messagestring Sí The error message codestring Sí The error code issuesarray<object> No An array of issues that were responsible for the error
Ejemplo de respuesta {
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}Abrir en la referencia interactiva →