SIIDTE

Asignar usuario autorizado al contribuyente

Asignar un usuario autorizado a un contribuyente (flujo multi-step).

POST /api/v1/sii/dte/contribuyentes/set_usuario/{contribuyente}
import requests
 
headers = {
    "X-API-Token": "sk_live_replace_with_your_token",
}
 
response = requests.post(
    "https://api.fiscalbridge.cl/api/v1/sii/dte/contribuyentes/set_usuario/76192083-9",
    headers=headers,
)
response.raise_for_status()
print(response.json())

Asignar un usuario autorizado a un contribuyente (flujo multi-step).

Agrega un usuario (por RUT) con permisos especificos para operar en
nombre del contribuyente (emitir DTE, descargar CAF, anular folios,
firmar documentos, etc.). El SII implementa la asignacion en 5 pasos:
`eu_enrola_usuarios` → `eu_mant_usuarios` → `eu_nuevo_usuario` →
`eu_confirma_usuario` (vista previa) → `eu_graba_usuario` (submit
final). Requiere certificado con permiso de escritura sobre el RUT.

**Autenticacion requerida:** API token en header `X-API-Token` con scope `sii:write`
+ certificado digital del contribuyente o representante autorizado.

**Quota:** Consume 1 consulta | Peso: 5x (operacion critica de escritura)

---

### Parametros de ruta

| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| `contribuyente` | string | Si | RUT del contribuyente (`XXXXXXXX-K`) |

### Parametros de consulta

| Parametro | Tipo | Default | Descripcion |
|-----------|------|---------|-------------|
| `ambiente` | string | `0` | `0` produccion, `1` certificacion |

### Body (JSON)

| Campo | Tipo | Requerido | Descripcion |
|-------|------|-----------|-------------|
| `auth.cert.cert-data` | string | Si | Certificado digital (base64) |
| `auth.cert.pkey-data` | string | Si | Clave privada del certificado (base64) |
| `auth.cert.passphrase` | string | No | Passphrase del certificado |
| `usuario.rut` | string | Si | RUT del usuario a autorizar (`XXXXXXXX-K`) |
| `usuario.permisos.administrador` | boolean | No | Usuario Administrador (`SUP_USU` en el SII) |
| `usuario.permisos.solicitar_folios` | boolean | No | Solicitar Folios (`OBTENER` en el SII) |
| `usuario.permisos.anular_folios` | boolean | No | Anular Documentos (`ANULAR` en el SII) |
| `usuario.permisos.firmar` | boolean | No | Firmar Documentos (`FIRMAR` en el SII) |
| `usuario.permisos.enviar` | boolean | No | Enviar Documentos (`ENVIAR` en el SII) |
| `usuario.permisos.consultar` | boolean | No | Consulta (`CONSULTAR` en el SII) |

### Request de ejemplo
{
  "auth": {
    "cert": {
      "cert-data": "BASE64_CERT",
      "pkey-data": "BASE64_PKEY",
      "passphrase": "CERT_PASSPHRASE"
    }
  },
  "usuario": {
    "rut": "12.345.678-5",
    "permisos": {
      "administrador": false,
      "solicitar_folios": true,
      "anular_folios": false,
      "firmar": true,
      "enviar": true,
      "consultar": true
    }
  }
}
### Respuesta exitosa (200)

Mensaje extraido dinamicamente del HTML de confirmacion del SII
(gateway transparente, sin hardcoded):
{
  "success": true,
  "message": "Se ha grabado satisfactoriamente el nuevo usuario en la empresa EMPRESA X,"
" Rut XX.XXX.XXX-X, con los siguientes antecedentes:"
}
### Errores especificos

| Codigo | error_code | Causa | Resolucion |
|--------|------------|-------|------------|
| 400 | `AUTH_ERROR` | Certificado SII invalido | Renovar certificado |
| 400 | `VALIDATION_ERROR` | Usuario rechazado por SII | Revisar `message` |
| 401 | `HTTP_401` | API token ausente o invalido | Enviar `X-API-Token` valido |
| 403 | `INSUFFICIENT_SCOPE` | Token sin scope `sii:write` | Generar token con scope adecuado |
| 403 | `AUTH_ERROR` | Certificado sin permiso sobre el RUT | Usar certificado del contribuyente |
| 422 | `VALIDATION_ERROR` | Body sin `usuario` o campos invalidos | Revisar `errors[]` |
| 429 | `SII_RATE_LIMIT` / `QUOTA_EXCEEDED` | Rate limit | Respetar `Retry-After` |
| 502 | `SII_GATEWAY_ERROR` | SII rechazo la asignacion | Revisar `message` y `details.observacion` |

### Notas

- Este endpoint solo agrega **nuevos** usuarios (submit al form "Ingresar Nuevo Usuario").
  Para modificar permisos de un usuario existente, el SII usa `eu_mod_usuario` (flujo diferente).
- Si el RUT ya esta autorizado, el SII devuelve error — usar `GET /listar_usuarios` para verificar primero.

Parámetros

Header / Body
Tipo
Descripción
Requerido
contribuyente
string · path
RUT del contribuyente
ambiente
string · query
`0` produccion, `1` certificacion
No

Cuerpo de la solicitud

Requerido. Content-Type: application/json.

{
  "auth": {
    "cert": {
      "cert-data": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
      "passphrase": "mi_passphrase_segura",
      "pkey-data": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVkt..."
    }
  },
  "usuario": {
    "permisos": {
      "administrador": false,
      "anular_folios": false,
      "consultar": false,
      "enviar": false,
      "firmar": false,
      "solicitar_folios": false
    },
    "rut": "string"
  }
}

Respuestas

200Successful Response
400Usuario invalido o credenciales SII incorrectas
401API token ausente o invalido
403Sin scope `sii:write` o sin permiso sobre contribuyente
422Body con formato invalido
429Limite de tasa excedido
502SII rechazo la asignacion
503SII en mantenimiento

Forma de la respuesta

Código 200. Estructura del JSON devuelto.

{}

On this page