intro
path: api-and-integrations/intro.mdx title: Descripción general hide_title: true pagination_next: null pagination_prev: null sidebar_position: 7 description: >- Passwork API proporciona una interfaz programática para automatizar la gestión de contraseñas, bóvedas, usuarios y otros objetos del sistema. Admite cifrado del lado del cliente, gestión de sesiones, un conector Python y una amplia gama de endpoints para la integración. keywords:
- Passwork
- API
- integration
- automation
- client-side encryption
- Python connector
- endpoints
- documentation
- accessToken
- refreshToken
Descripción general de la API
Passwork API proporciona una interfaz programática para interactuar con el servicio de gestión de contraseñas Passwork. La API permite automatizar operaciones con contraseñas, bóvedas, usuarios y otros objetos del sistema, proporcionando control programático completo sobre todos los aspectos del trabajo con Passwork.
Nuestra API ofrece las siguientes capacidades:
- Gestión de contraseñas: crear, obtener, actualizar, eliminar contraseñas;
- Gestión de bóvedas: crear nuevas bóvedas, gestionar el acceso;
- Gestión de carpetas: crear estructuras de carpetas dentro de las bóvedas;
- Gestión de usuarios: crear usuarios, establecer derechos de acceso;
- Gestión de grupos de usuarios: agrupar usuarios para simplificar la gestión de acceso;
- Acceso compartido a contraseñas: otorgar a otros usuarios acceso a contraseñas mediante el mecanismo de bandeja de entrada;
- Creación de enlaces públicos: acceso temporal a contraseñas mediante enlaces;
- Soporte de archivos adjuntos: trabajar con archivos adjuntos a contraseñas;
- Búsqueda y filtrado: buscar contraseñas por diversos criterios;
- Gestión de accesos directos: crear enlaces a contraseñas en otras bóvedas;
- Gestión de la papelera: restaurar objetos eliminados;
- Registro de actividad: obtener información sobre las acciones de los usuarios.
Al instalar Passwork, el archivo .zip también incluye Api reference.pdf, que contiene descripciones detalladas de todos los endpoints disponibles de la API:
- Docker
- Windows Server
- Linux
/<passwork>/www/latest/files/api-schema/Api reference.pdf
C:\inetpub\wwwroot\passwork\files\api-schema\Api reference.pdf
/var/www/files/api-schema/Api reference.pdf
Cifrado del lado del cliente
Una de las características clave de Passwork API es el soporte del cifrado del lado del cliente. Al utilizar el cifrado del lado del cliente, todos los datos de importancia crítica (contraseñas, campos confidenciales, archivos adjuntos) se cifran en el lado del cliente antes de ser enviados al servidor.
Principio de criptografía
- Contraseña maestra: El cifrado utiliza una contraseña maestra conocida solo por el usuario. La contraseña maestra nunca se envía al servidor;
- Clave maestra: A partir de la contraseña maestra, se genera una clave maestra utilizando PBKDF2 (Password-Based Key Derivation Function 2);
- Hash de la clave maestra: Se calcula un hash de la clave maestra utilizando SHA-256. Este hash se envía al servidor para autenticar al cliente;
- Claves de bóveda: Se genera una clave única para cada bóveda, utilizada para cifrar contraseñas y otros datos en esa bóveda;
- Cifrado asimétrico: Para el intercambio de claves entre usuarios, se utiliza cifrado asimétrico (RSA). Cada usuario tiene un par de claves: pública y privada;
- Cifrado de datos: Se utiliza cifrado simétrico AES en modo CBC con relleno PKCS7 para cifrar contraseñas y otros datos confidenciales.
Responsabilidad del cliente de la API
Importante: Según la arquitectura Zero Knowledge, Passwork API asume que las operaciones criptográficas se realizan en el lado del cliente. Esto significa que el cifrado y descifrado de datos debe realizarse en la aplicación cliente antes de enviarlos al servidor. El servidor de Passwork trabaja con datos ya cifrados y además aplica su propia capa de cifrado, creando una protección multicapa.
El cliente de la API debe garantizar:
- Generación y almacenamiento de la clave maestra basada en la contraseña maestra;
- Cifrado de datos antes de enviarlos al servidor;
- Descifrado de datos recibidos del servidor;
- Cálculo del hash de la clave maestra para la autorización;
- Cifrado asimétrico de claves al intercambiar con otros usuarios.
Conector Python
Para simplificar el trabajo con la API e implementar todas las operaciones criptográficas necesarias, Passwork proporciona un conector Python oficial. El conector encapsula toda la complejidad del trabajo con la criptografía y la API en una interfaz programática sencilla.
El conector Python proporciona:
- Gestión de sesiones y autorización;
- Renovación automática de sesiones mediante refreshToken;
- Operaciones criptográficas (cifrado/descifrado);
- Métodos predefinidos para las principales operaciones de la API;
- Un método universal
call()para solicitudes arbitrarias a la API.
Autorización y gestión de sesiones
Autorización
El proceso de autorización es el siguiente:
- El usuario de Passwork en la pestaña Autorización y 2FA en la sección Tokens de API hace clic en Generar par;
- El servidor devuelve un par de tokens:
accessTokenyrefreshToken; - El usuario utiliza el
accessTokenpara todas las solicitudes posteriores, añadiéndolo al encabezadoAuthorization: Bearer {accessToken}; - Si el cifrado del lado del cliente está habilitado, el usuario también recibe
Passwork-MasterKeyHashy lo añade al encabezado.
Gestión de sesiones y refreshToken
Passwork API utiliza tokens de acceso con validez limitada:
- Access Token: El token principal para autorizar solicitudes. Tiene un tiempo de vida limitado (generalmente minutos u horas);
- Refresh Token: Un token de larga duración utilizado para obtener un nuevo token de acceso sin reautenticación;
- Renovación de tokens: Cuando el token de acceso expira, el cliente recibe un error 401 con el código
accessTokenExpired. En este caso, el cliente debe enviar una solicitud al endpoint/api/v1/sessions/refreshcon el token de actualización actual para obtener un nuevo par de tokens; - Renovación automática: El conector Python gestiona automáticamente la expiración de tokens y realiza la renovación sin intervención del usuario;
- Guardado de sesiones: El conector Python permite guardar y restaurar sesiones, lo que es conveniente para la automatización a largo plazo. Las sesiones guardadas se cifran por seguridad.
Formato de respuesta de la API
El encabezado de solicitud X-Response-Format especifica el formato de la respuesta de la API:
- base64 — la respuesta del servidor se devuelve en codificación Base64 (valor predeterminado);
- raw — la respuesta se devuelve en formato JSON.
Añada el encabezado X-Response-Format: raw a la solicitud para recibir la respuesta en JSON. Para una respuesta en base64, utilice X-Response-Format: base64 u omita el encabezado.
Recomendaciones de seguridad
Al utilizar Passwork API, se deben observar las siguientes recomendaciones de seguridad:
- Proteger las claves de API: Almacene las claves de API de forma segura, utilice variables de entorno o almacenes seguros de secretos;
- Rotación de claves: Actualice regularmente las claves de API para minimizar riesgos;
- HTTPS: Utilice solo HTTPS para todas las comunicaciones con la API;
- Mínimo privilegio: Cree usuarios de API separados con los derechos de acceso mínimos necesarios;
- Proteger la contraseña maestra: Almacene la contraseña maestra con la máxima protección, ya que el compromiso de la contraseña maestra lleva al compromiso de todas las contraseñas;
- Proteger las sesiones guardadas: Garantice una protección fiable de las sesiones guardadas y las claves de cifrado;
- Manejo de errores: Gestione cuidadosamente los errores de la API, evitando la divulgación de información sensible en los registros.
Endpoints y capacidades de la API
Bóvedas
- Crear bóveda:
POST /api/v1/vaults - Obtener lista de bóvedas:
GET /api/v1/vaults - Obtener información de bóveda:
GET /api/v1/vaults/{id} - Actualizar bóveda:
POST /api/v1/vaults/{id} - Eliminar bóveda:
DELETE /api/v1/vaults/{id} - Gestionar acceso de usuarios:
POST /api/v1/vaults/{id}/grant-user-accessPOST /api/v1/vaults/{id}/revoke-user-access
- Gestionar acceso de grupos:
POST /api/v1/vaults/{id}/grant-user-group-accessPOST /api/v1/vaults/{id}/revoke-user-group-access
- Importar bóvedas:
POST /api/v1/vaults/import
Carpetas
- Crear carpeta:
POST /api/v1/folders - Obtener lista de carpetas:
GET /api/v1/folders - Obtener información de carpeta:
GET /api/v1/folders/{id} - Actualizar carpeta:
POST /api/v1/folders/{id} - Eliminar carpeta:
DELETE /api/v1/folders/{id} - Copiar carpeta:
POST /api/v1/folders/{id}/copy - Mover carpeta:
POST /api/v1/folders/{id}/move - Gestionar acceso:
POST /api/v1/folders/{id}/grant-user-accessPOST /api/v1/folders/{id}/revoke-user-access
- Importar/exportar carpetas:
POST /api/v1/folders/importPOST /api/v1/directories/export
Elementos/Contraseñas
- Crear contraseña:
POST /api/v1/items - Obtener lista de contraseñas:
GET /api/v1/items - Obtener información de contraseña:
GET /api/v1/items/{id} - Actualizar contraseña:
PATCH /api/v1/items/{id} - Eliminar contraseña:
DELETE /api/v1/items/{id} - Copiar contraseña:
POST /api/v1/items/{id}/copy - Mover contraseña:
POST /api/v1/items/{id}/move - Obtener archivos adjuntos:
GET /api/v1/items/{id}/attachment/{attachmentId} - Operaciones masivas:
POST /api/v1/items/copy/bulkPOST /api/v1/items/move/bulkPOST /api/v1/items/delete/bulk
- Importar/exportar contraseñas:
POST /api/v1/items/importPOST /api/v1/items/export
- Buscar contraseñas:
GET /api/v1/items/search - Análisis de seguridad:
GET /api/v1/items/security-analysis
Usuarios
- Crear usuario:
POST /api/v1/users - Obtener lista de usuarios:
GET /api/v1/users - Obtener información de usuario:
GET /api/v1/users/{id} - Actualizar usuario:
PATCH /api/v1/users/{id} - Eliminar usuario:
DELETE /api/v1/users/{id} - Bloquear/desbloquear usuario:
POST /api/v1/users/{id}/blockPOST /api/v1/users/{id}/unblock
- Autenticación de dos factores:
POST /api/v1/users/2fa/set-upPOST /api/v1/users/2fa/set-statePOST /api/v1/users/2fa/reset
Grupos de usuarios
- Crear grupo:
POST /api/v1/user-groups - Obtener lista de grupos:
GET /api/v1/user-groups - Obtener información de grupo:
GET /api/v1/user-groups/{id} - Actualizar grupo:
POST /api/v1/user-groups/{id} - Eliminar grupo:
DELETE /api/v1/user-groups/{id} - Gestionar miembros del grupo:
POST /api/v1/user-groups/{id}/add-usersPOST /api/v1/user-groups/{id}/remove-users
- Operaciones masivas de grupos:
POST /api/v1/user-groups/delete/bulkPOST /api/v1/user-groups/set-state/bulk
Roles de usuario
- Crear rol:
POST /api/v1/user-roles - Obtener lista de roles:
GET /api/v1/user-roles - Obtener información de rol:
GET /api/v1/user-roles/{id} - Actualizar rol:
PATCH /api/v1/user-roles/{id} - Eliminar rol:
DELETE /api/v1/user-roles/{id} - Gestionar permisos:
GET /api/v1/user-roles/permission-items/list
Acceso compartido (elementos de bandeja de entrada)
- Enviar contraseña a usuario:
POST /api/v1/inbox-items/send-to-user - Enviar contraseña a grupo de usuarios:
POST /api/v1/inbox-items/send-to-user-group - Obtener lista de contraseñas de bandeja de entrada:
GET /api/v1/inbox-items - Buscar contraseña en bandeja de entrada:
GET /api/v1/inbox-items/search - Obtener contraseña de bandeja de entrada:
GET /api/v1/inbox-items/{id} - Establecer tipo de acceso:
POST /api/v1/inbox-items/{id}/set-access - Eliminación masiva:
POST /api/v1/inbox-items/delete/bulk
Enlaces públicos
- Crear enlace:
POST /api/v1/links - Obtener lista de enlaces:
GET /api/v1/links/folder/{folderId}GET /api/v1/links/item/{itemId}GET /api/v1/links/vault/{vaultId}
- Eliminar enlace:
DELETE /api/v1/links/{id} - Eliminación masiva:
POST /api/v1/links/delete/bulk
Papelera (elementos de la papelera)
- Obtener lista de elementos de la papelera:
GET /api/v1/bin-items - Obtener elemento de la papelera:
GET /api/v1/bin-items/{id}/folderGET /api/v1/bin-items/{id}/itemGET /api/v1/bin-items/{id}/shortcut
- Restaurar elementos:
POST /api/v1/bin-items/restore/bulkPOST /api/v1/bin-items/restore-and-move/bulk
- Eliminar elementos:
DELETE /api/v1/bin-items/{id}POST /api/v1/bin-items/delete/bulkDELETE /api/v1/bin-items/all
Accesos directos
- Crear acceso directo:
POST /api/v1/shortcuts - Obtener lista de accesos directos:
GET /api/v1/shortcuts - Obtener información de acceso directo:
GET /api/v1/shortcuts/{id} - Copiar acceso directo:
POST /api/v1/shortcuts/{id}/copy - Mover acceso directo:
POST /api/v1/shortcuts/move/bulk - Eliminar acceso directo:
DELETE /api/v1/shortcuts/{id} - Operaciones masivas:
POST /api/v1/shortcuts/create/bulkPOST /api/v1/shortcuts/copy/bulkPOST /api/v1/shortcuts/move/bulkPOST /api/v1/shortcuts/delete/bulk
Registro de actividad
- Obtener registros:
GET /api/v1/activity-logs - Obtener información de evento:
GET /api/v1/activity-logs/{id} - Obtener actividades recientes de usuarios:
GET /api/v1/activity-logs/directories/last-users-activities
- Obtener actividad reciente de un usuario:
GET /api/v1/activity-logs/user/latest
Sesiones
- Obtener información de la sesión actual:
GET /api/v1/sessions/current/info - Obtener lista de sesiones:
GET /api/v1/sessions - Eliminar sesión:
DELETE /api/v1/sessions/{id} - Actualizar token:
POST /api/v1/sessions/refresh
Configuración
- Obtener/actualizar configuración:
-
Contraseñas:
GET/PATCH /api/v1/settings/auth-password-complexity -
Contraseñas maestras:
GET/PATCH /api/v1/settings/master-password-complexity -
Interfaz:
GET/PATCH /api/v1/settings/interface -
Sesiones:
GET/PATCH /api/v1/settings/session -
Notificaciones:
GET/PATCH /api/v1/settings/notifications -
Registros de actividad:
GET/PATCH /api/v1/settings/activity-log -
Búsqueda:
GET/PATCH /api/v1/settings/search -
Bóvedas:
GET/PATCH /api/v1/settings/vault -
Usuarios:
GET/PATCH /api/v1/settings/user
-
Invitaciones de usuario
- Crear invitación:
POST /api/v1/user-invites - Obtener lista de invitaciones:
GET /api/v1/user-invites - Obtener información de invitación:
GET /api/v1/user-invites/{id} - Eliminar invitación:
DELETE /api/v1/user-invites/{id} - Crear y enviar invitación:
POST /api/v1/user-invites/create-and-send