Crear Destino Instalación
Autenticación
Haz una petición al endpoint login para obtener bearer token
POST /api/login
curl --location '{{baseUrl}}/api/login' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data-raw '{
"email": "dcano2@entorno.es",
"password": "password"
}
'Reemplaza con la url base de tu servidor de CertGuardian
Body ejemplo:
{
"email": "dcano2@entorno.es",
"password": "password"
}Respuesta:
{
"user": {
"id": 2,
"name": "dcano2",
"email": "dcano2@entorno.es",
"email_verified_at": null,
"created_at": "2026-03-19T07:30:10.000000Z",
"updated_at": "2026-03-19T07:30:40.000000Z",
"allowed_ips": [
"172.19.0.1"
],
"is_admin": true
},
"token": "287|GKRNDQijgGY6myOTF3n4GMg9zqCeQ1SLxZ0fgplg0f2d5ccc",
"expires_at": "2026-09-05T07:58:21.000000Z",
"expires_in_minutes": 1440
}Todas las peticiones a continuación deben tener el bearer token en la cabecera
--header 'Authorization: Bearer your-bearer-token'
Obtener el ID de el Tipo Instalación
Lista todos los Tipo Instalación para obtener el ID del Destino Instalación que quieres crear GET /api/tipos-instalacion-list/
curl --location '{{baseUrl}}/api/agent/certificates/list' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer your-bearer-token'Respuesta: 
Obtener propiedades Destino Instalación
Los nombres de las propiedades de configuración que el Destino Instalación necesita están en: json_schema -> schema -> properties 
En el caso de un tipo instalación SSH son:
host,username,port,remote_cert,remote_key,remote_chain,remote_fullchain,reload_commad
Valida la configuración de Destino Instalación
Valida que la configuración del Destino sea válida y CertGuardian pueda conectarse con el endpoint validate-configPOST /api/tipo-instalacion/:tipoInstalacion/validate-config
curl --location '{{baseUrl}}/api/instalaciones/test-connection/8' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer your-bearer-token' \
--data '{
"host": "192.168.1.100",
"username": "root",
"port": 22,
"remote_cert": "/path/to/private/key",
"remote_key": "/path/to/private/key",
"remote_chain": "/path/to/private/key",
"remote_fullchain": "/path/to/private/key",
"reload_command": "systemctl reload nginx"
}'Body ejemplo:
{
"host": "192.168.1.100",
"username": "root",
"port": 22,
"remote_cert": "/path/to/private/key",
"remote_key": "/path/to/private/key",
"remote_chain": "/path/to/private/key",
"remote_fullchain": "/path/to/private/key",
"reload_command": "systemctl reload nginx"
}Respuesta ok (200):
{
"correct":true,
"message":"SSH key copied successfully"
}Respuesta error (200):
{
"correct": false,
"message": "SSH connection failed: The command \"'ssh' '-i' '/var/www/certguardian/ssh-keys/id_rsa' '-o' 'StrictHostKeyChecking=no' '-o' 'UserKnownHostsFile=/var/www/certguardian/ssh-keys/known_hosts' '-o' 'BatchMode=yes' '-o' 'ConnectTimeout=30' '-i' '/var/www/certguardian/ssh-keys/id_rsa' 'root@192.168.1.100' 'echo \"Certguardian SSH connection test successful\"'\" failed.\n\nExit Code: 255(Unknown error)\n\nWorking directory: /var/www/certguardian/public\n\nOutput:\n================\n\n\nError Output:\n================\nssh: connect to host 192.168.1.100 port 22: Connection refused\r\n"
}Crear el Destino Instalación
El Destino Instalación ya se puede crear: POST /api/servidores
curl '{{baseUrl}}/api/servidores' \
-X POST \
-H 'Authorization: your-bearer-token' \
--data-raw '{"ip":"Apache Server","tipo_instalacion_id":2,"descripcion":"certguardian.es server", "config_json": { "host": "192.168.1.100", "username": "root", "port": 22, "remote_cert": "/path/to/private/key", "remote_key": "/path/to/private/key", "remote_chain": "/path/to/private/key", "remote_fullchain": "/path/to/private/key", "reload_command": "systemctl reload nginx" }}'Body ejemplo:
{
"ip":"Apache Server",
"tipo_instalacion_id":2,
"user_id":null,
"descripcion":"certguardian.es server",
"config_json":
{
"host": "192.168.1.100",
"username": "root",
"port": 22,
"remote_cert": "/path/to/private/key",
"remote_key": "/path/to/private/key",
"remote_chain": "/path/to/private/key",
"remote_fullchain": "/path/to/private/key",
"reload_command": "systemctl reload nginx"
}
}Reemplaza el valor de
tipo_instalacion_idcon el valor de tu Tipo Instalación y reemplaza el valor deconfig_jsoncon la configuración del paso anterior
Respuesta ok (200):
{
"ip":"aaa","common_name":"aa","tipo_instalacion_id":2,"user_id":null,"descripcion":"aaa","config_json":{"PFX":true,"with_password":false,"email_list":["dcano@entorno.es"]}}