curl --request POST \
--url https://api.pruff.com/api/clients/user/create \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"email": "ana.perez@example.com",
"name": "Ana Pérez",
"password": "ContraseñaSegura123!",
"active": true,
"roleIds": [
2,
6
]
}
'import requests
url = "https://api.pruff.com/api/clients/user/create"
payload = {
"email": "ana.perez@example.com",
"name": "Ana Pérez",
"password": "ContraseñaSegura123!",
"active": True,
"roleIds": [2, 6]
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: 'ana.perez@example.com',
name: 'Ana Pérez',
password: 'ContraseñaSegura123!',
active: true,
roleIds: [2, 6]
})
};
fetch('https://api.pruff.com/api/clients/user/create', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.pruff.com/api/clients/user/create",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => 'ana.perez@example.com',
'name' => 'Ana Pérez',
'password' => 'ContraseñaSegura123!',
'active' => true,
'roleIds' => [
2,
6
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pruff.com/api/clients/user/create"
payload := strings.NewReader("{\n \"email\": \"ana.perez@example.com\",\n \"name\": \"Ana Pérez\",\n \"password\": \"ContraseñaSegura123!\",\n \"active\": true,\n \"roleIds\": [\n 2,\n 6\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.pruff.com/api/clients/user/create")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"ana.perez@example.com\",\n \"name\": \"Ana Pérez\",\n \"password\": \"ContraseñaSegura123!\",\n \"active\": true,\n \"roleIds\": [\n 2,\n 6\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pruff.com/api/clients/user/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"ana.perez@example.com\",\n \"name\": \"Ana Pérez\",\n \"password\": \"ContraseñaSegura123!\",\n \"active\": true,\n \"roleIds\": [\n 2,\n 6\n ]\n}"
response = http.request(request)
puts response.read_body{
"message": "User created"
}Crear usuario
Crea un usuario en tu empresa con el nombre, email, contraseña y roles indicados. El email se guarda en minúsculas. Si no envías active, el usuario se crea inactivo. Si no envías roleIds, el usuario se crea sin roles.
El email debe ser único en Pruff: si ya existe un usuario con ese email, la solicitud responde 400.
El email no puede contener espacios, y solo admite letras sin tilde, dígitos, la @ y los caracteres ._%+-. Si no cumple ese formato, la solicitud responde 400 Invalid email format.
El campo roleIds recibe los ids de los roles, no sus nombres. Los ids de los roles estándar están en la descripción de ese campo. Debe ser una lista de ids enteros de roles que existan en tu empresa. Una lista vacía ([]) o null crea el usuario sin roles. Si roleIds no es una lista, incluye un id que no existe en tu empresa o incluye un valor que no es un entero, la solicitud responde 400 Invalid roleIds.
Los roles de administrador no se pueden asignar por API: el rol Administrador (id 1), el rol Super Administrador (id 4, reservado de Pruff) y cualquier rol personalizado de tu empresa con permisos de administrador responden 400 con el displayMessage No se pueden asignar roles de administrador por API. Repetir un id en la lista no es un error.
curl --request POST \
--url https://api.pruff.com/api/clients/user/create \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"email": "ana.perez@example.com",
"name": "Ana Pérez",
"password": "ContraseñaSegura123!",
"active": true,
"roleIds": [
2,
6
]
}
'import requests
url = "https://api.pruff.com/api/clients/user/create"
payload = {
"email": "ana.perez@example.com",
"name": "Ana Pérez",
"password": "ContraseñaSegura123!",
"active": True,
"roleIds": [2, 6]
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: 'ana.perez@example.com',
name: 'Ana Pérez',
password: 'ContraseñaSegura123!',
active: true,
roleIds: [2, 6]
})
};
fetch('https://api.pruff.com/api/clients/user/create', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.pruff.com/api/clients/user/create",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'email' => 'ana.perez@example.com',
'name' => 'Ana Pérez',
'password' => 'ContraseñaSegura123!',
'active' => true,
'roleIds' => [
2,
6
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pruff.com/api/clients/user/create"
payload := strings.NewReader("{\n \"email\": \"ana.perez@example.com\",\n \"name\": \"Ana Pérez\",\n \"password\": \"ContraseñaSegura123!\",\n \"active\": true,\n \"roleIds\": [\n 2,\n 6\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.pruff.com/api/clients/user/create")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"ana.perez@example.com\",\n \"name\": \"Ana Pérez\",\n \"password\": \"ContraseñaSegura123!\",\n \"active\": true,\n \"roleIds\": [\n 2,\n 6\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pruff.com/api/clients/user/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"ana.perez@example.com\",\n \"name\": \"Ana Pérez\",\n \"password\": \"ContraseñaSegura123!\",\n \"active\": true,\n \"roleIds\": [\n 2,\n 6\n ]\n}"
response = http.request(request)
puts response.read_body{
"message": "User created"
}Cuerpo
Ids de los roles del usuario (no sus nombres). Si no lo envías, el usuario se crea sin roles. Una lista vacía ([]) o null también crea el usuario sin roles.
Roles estándar:
| Id | Rol |
|---|---|
| 1 | Administrador |
| 2 | Gerente Comercial |
| 3 | Ejecutivo II |
| 5 | Cotizador |
| 6 | Operaciones |
| 7 | Gerente Operaciones |
| 8 | Director |
| 9 | Gerente General |
| 10 | Ejecutivo I |
| 11 | Ejecutivo Cobranza |
| 12 | Jefe Cobranza |
| 13 | Gerente Cobranza |
| 14 | Ejecutivo Verificación |
| 15 | Usuario Pruff Connect |
Tu empresa también puede tener roles personalizados con otros ids. Si roleIds no es una lista, incluye un id que no existe en tu empresa o un valor que no es un entero, la solicitud responde 400 Invalid roleIds. Los roles de administrador (el id 1, el id 4 reservado de Pruff y cualquier rol personalizado con permisos de administrador) no se pueden asignar por API: la solicitud responde 400 con el displayMessage No se pueden asignar roles de administrador por API.
[2, 6]