Usuarios
Lista los miembros de tu empresa para que tu integración permita elegir desde quién se envía un sobre.
GET /v1/users lista a las personas de tu empresa. Existe por una razón práctica: que tu integración
pueda ofrecer un selector de "enviar como" en lugar de fijar un único remitente en el código, y
después pasar el correo de la persona elegida como sender_email al enviar.
Requiere el scope users:read. Es de solo lectura: no hay ningún endpoint para invitar, modificar ni
eliminar un miembro.
Endpoint
GET https://api2.bunnydoc.com/v1/users
Parámetros de consulta
| Parámetro | Tipo | Descripción |
|---|---|---|
page | integer | Número de página, desde 1. Por defecto 1. |
per_page | integer | Resultados por página, 1–100. Por defecto 25. |
search | string | Opcional. Filtra por nombre o correo, hasta 200 caracteres. |
status | string | Opcional. Uno de pending, accepted, declined, archived. Omítelo para obtener todos los estados. |
Ejemplo de petición
curl "https://api2.bunnydoc.com/v1/users?status=accepted&per_page=100" \
-H "Authorization: Bearer <access_token>"GET /v1/users?status=accepted&per_page=100 HTTP/1.1
Host: api2.bunnydoc.com
Authorization: Bearer <access_token>Respuesta
{
"data": [
{
"id": "018f6b2c-3d4e-7f5a-8b6c-7d8e9f0a1b2c",
"email": "dana@yourco.com",
"first_name": "Dana",
"surname": "Lee",
"name": "Dana Lee",
"role": "admin",
"status": "accepted",
"products": ["eSign"]
}
],
"pagination": { "page": 1, "per_page": 25, "total": 1, "total_pages": 1 }
}| Campo | Tipo | Descripción |
|---|---|---|
id | string | El id del usuario. Es la persona a la que resuelve sender_email. |
email | string | Su correo: el valor que hay que pasar como sender_email. |
first_name / surname | string | Las partes de su nombre. Cualquiera puede estar vacía. |
name | string | Nombre completo de conveniencia, sin espacios sobrantes. |
role | string | Rol en la organización: owner, admin o member. |
status | string | Estado de pertenencia: accepted, pending, declined o archived. |
products | string[] | Los productos con asiento que tiene este miembro, p. ej. ["eSign"]. |
Elegir un remitente válido
No todos los de la lista pueden enviar. Para que sender_email resuelva, el miembro debe cumplir
las dos condiciones:
status=accepted— una invitación pendiente o un miembro archivado no es un usuario activo, y- tener un asiento de eSign — comprueba que
productscontieneeSign.
Filtra por ambas antes de ofrecer a alguien en un selector:
const res = await fetch(
"https://api2.bunnydoc.com/v1/users?status=accepted&per_page=100",
{ headers: { Authorization: `Bearer ${token}` } },
);
const { data } = await res.json();
const senders = data.filter((u) => u.products.includes("eSign"));Cualquier otro caso te da 422 sender_not_found en el momento del envío.
Hay un caso del que esta lista no puede avisarte: un miembro puede tener la pertenencia accepted
mientras su cuenta de usuario está desactivada. Eso no se expone aquí, así que trata un
422 sender_not_found sobre un miembro que por lo demás cumple los requisitos como "esta persona ya
no puede enviar" y recurre a otro remitente o al propietario de la clave.
Enviar como otra persona usa sus permisos
sender_email es una suplantación dentro de la empresa: el sobre es de esa persona, y el envío se
autoriza contra sus permisos, no los del propietario de la clave. Solo puede nombrar a alguien de
la misma empresa que la clave; no hay forma de enviar en nombre de otra empresa.
Errores
| Estado | error.code | Cuándo ocurre |
|---|---|---|
403 | insufficient_scope | La clave no incluye users:read. |
403 | forbidden | El acceso a la API no está incluido en el plan actual de tu empresa. |
429 | rate_limited | Más de 1000 peticiones en 15 minutos para esta clave. |