> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tupana.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Crear Credencial

> Crea una nueva credencial validándola en el SII

## Que hace

* Crea una nueva credencial para autenticacion en el SII
* Valida automaticamente las credenciales proporcionadas antes de almacenarlas
* Asocia la credencial con una entidad maestra especifica
* Verifica que los datos sean correctos en el SII

## Ejemplos de uso

* Configurar credenciales del SII para una nueva empresa
* Agregar credenciales adicionales para una entidad existente
* Reemplazar credenciales expiradas o invalidas
* Configurar multiples credenciales para diferentes entidades

### Obtener el master\_entity\_id

El `master_entity_id` es el ID unico de la empresa en Tupana que se esta asociando con estas credenciales. Para obtener este ID, debes usar el endpoint `/master-entities`:

1. **Buscar la entidad por RUT** usando `GET /master-entities?rut=76543210-1`
2. **Obtener el ID** de la respuesta (campo `id`)
3. **Usar ese ID** como `master_entity_id` en la creacion de credenciales

## Tipos de Credenciales

Puedes usar `credential_type` (string) o `credential_type_id` (numerico) para indicar el tipo de credencial. Consulta la [referencia completa de tipos de credenciales](/user-guide/credential-types) para mas detalles.

| Tipo (`credential_type`) | ID (`credential_type_id`) | Descripcion                                       |
| ------------------------ | ------------------------- | ------------------------------------------------- |
| `sii`                    | 70                        | Servicio de Impuestos Internos (clave tributaria) |
| `sii_company`            | 73                        | SII a nivel de empresa (clave de empresa)         |
| `certificate`            | 75                        | Certificado digital (.pfx)                        |
| `bank_chile`             | 84                        | Banco de Chile                                    |
| `bank_estado`            | 85                        | BancoEstado                                       |
| `bank_santander`         | 86                        | Santander                                         |
| `bank_scotiabank`        | 87                        | Scotiabank                                        |

## Certificado digital (.pfx) por archivo

Si necesitas subir un certificado digital, el archivo `.pfx` se envia en el payload JSON como string base64.

* Convierte primero el archivo `.pfx` a base64
* Envia ese valor en el campo `digital_certificate_base64`
* Envia `digital_certificate_password` si corresponde
* Envia `credential_type: "certificate"` para guardarlo como credencial de certificado digital

### Ejemplo de payload

```json theme={null}
{
  "master_entity_id": 123,
  "credential_type": "certificate",
  "digital_certificate_password": "clave-del-pfx",
  "digital_certificate_base64": "MIIK..."
}
```

### Importante

* El `.pfx` se envia como string base64 en `digital_certificate_base64`
* En este flujo no se envian `user_rut` ni `password`
* El backend guarda la credencial como tipo certificado digital


## OpenAPI

````yaml POST /credentials
openapi: 3.0.0
info:
  title: Tupana API
  description: API para integración con el sistema Tupana - Facturación Electrónica
  version: 1.0.0
servers:
  - url: https://api.tupana.ai/v1
    description: Servidor de producción
security:
  - apiKeyAuth: []
paths:
  /credentials:
    post:
      summary: Crear credencial
      description: Crea una nueva credencial validándola en el SII
      operationId: createCredential
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - user_rut
                - password
                - digital_certificate_password
                - master_entity_id
              properties:
                user_rut:
                  type: string
                  description: RUT del usuario (sin puntos y con guión)
                  pattern: ^[0-9]+-[0-9kK]$
                  example: 12345678-9
                password:
                  type: string
                  description: Contraseña del usuario en el SII
                  example: mi_password_segura
                digital_certificate_password:
                  type: string
                  description: Contraseña del certificado digital
                  example: mi_password_certificado
                master_entity_id:
                  type: integer
                  description: ID de la entidad maestra a la que pertenece la credencial
                  example: 123
                credential_type_id:
                  type: integer
                  description: ID del tipo de credencial (opcional, por defecto SII)
                  example: 70
            example:
              user_rut: 12345678-9
              password: mi_password_segura
              digital_certificate_password: mi_password_certificado
              master_entity_id: 123
      responses:
        '201':
          description: Credencial creada exitosamente
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    description: ID único de la credencial creada
                    example: 1
                  user:
                    type: string
                    description: RUT del usuario de la credencial
                    example: 12345678-9
                  master_entity:
                    type: object
                    description: Información de la entidad maestra asociada
                    properties:
                      id:
                        type: integer
                        description: ID de la entidad maestra
                        example: 123
                      name:
                        type: string
                        description: Nombre de la entidad maestra
                        example: Empresa Ejemplo SpA
                      tax_id:
                        type: string
                        description: RUT de la entidad maestra
                        example: 76543210-1
                  credential_type:
                    type: object
                    description: Tipo de credencial
                    properties:
                      id:
                        type: integer
                        description: ID del tipo de credencial
                        example: 70
                      name:
                        type: string
                        description: Nombre del tipo de credencial
                        example: SII
                  status:
                    type: string
                    description: Estado de la credencial
                    enum:
                      - VALID
                      - INVALID
                      - EXPIRED
                    example: VALID
                  created_at:
                    type: string
                    format: date-time
                    description: Fecha de creación de la credencial
                    example: '2024-01-01T10:00:00Z'
        '400':
          description: Error en la validación de datos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: No autorizado - API key inválida o faltante
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Prohibido - Sin permisos para crear credenciales
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Entidad maestra no encontrada
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Error de validación en el SII
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - apiKeyAuth: []
components:
  schemas:
    Error:
      required:
        - error
        - message
      type: object
      properties:
        error:
          type: string
          description: Código de error
          example: VALIDATION_ERROR
          enum:
            - VALIDATION_ERROR
            - AUTHENTICATION_ERROR
            - AUTHORIZATION_ERROR
            - NOT_FOUND
            - SII_ERROR
            - INTERNAL_ERROR
        message:
          type: string
          description: Mensaje de error
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        API Key para autenticación. Debe proporcionarse en el header
        Authorization con el formato: 'Api-Key YOUR-API-KEY' (incluye el prefijo
        'Api-Key ' seguido de tu API key)

````