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

# Crear una instancia

> Crear una nueva instancia de cómputo

<Info>
  Requiere la acción de IAM **`compute:CreateInstance`**. Consulte [permisos de computación](/es/compute/permissions) para obtener la lista completa, lo que cubre cada una y un ejemplo de directiva.
</Info>


## OpenAPI

````yaml /es/api-reference/specs/compute.yaml post /v1/instances
openapi: 3.0.3
info:
  title: Basaltic Compute API
  version: 1.0.0
  description: >
    Instancias de máquinas virtuales y las imágenes, los tipos de instancia y
    los grupos de instancias a partir de los cuales se crean. Cubre todo el
    ciclo de vida de la instancia: inicio, parada, reinicio, cambio de tamaño y
    reinstalación.
  contact:
    name: Basaltic Support
    email: ping@basaltic.sh
  license:
    name: Proprietary
    url: https://basaltic.sh/terms
servers:
  - url: https://compute.{region}.basaltic.sh
    description: Punto final de API regional
    variables:
      region:
        default: sa-saopaulo-1
        description: Código de región
security:
  - BearerAuth: []
paths:
  /v1/instances:
    post:
      tags:
        - Compute
      summary: Crear una instancia
      description: Crear una nueva instancia de cómputo
      operationId: createInstance
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstanceCreateRequest'
      responses:
        '202':
          description: Creación de instancia iniciada
          content:
            application/json:
              schema:
                type: object
                properties:
                  instance:
                    $ref: '#/components/schemas/Instance'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - BearerAuth: []
components:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      description: >-
        Clave opcional generada por el cliente que hace que una creación sea
        segura para la reproducción. Al volver a intentar una solicitud con la
        misma clave, se devuelve el resultado original literalmente en lugar de
        crear un recurso duplicado. Se rechaza la reutilización de una clave con
        un cuerpo de solicitud diferente (422); una solicitud cuya clave todavía
        se está procesando devuelve 409. Los registros se mantienen durante 24
        horas. Usa un UUID o un token único similar.
      required: false
      schema:
        type: string
        maxLength: 255
      example: 550e8400-e29b-41d4-a716-446655440000
  schemas:
    InstanceCreateRequest:
      type: object
      additionalProperties: false
      required:
        - name
        - flavor
        - networks
      properties:
        name:
          description: >-
            Los nombres de los recursos no deben comenzar con el prefijo literal
            crn: ni ser UUID (en cualquier caso, en las formas canónica,
            compacta, entre corchetes o urn:uuid:).
          type: string
          minLength: 1
          maxLength: 255
          example: web-01
        description:
          type: string
          maxLength: 1000
          example: Primary web server
        flavor:
          type: string
          description: Referencia de tipo de instancia regional (UUID, CRN o nombre exacto)
          example: 550e8400-e29b-41d4-a716-446655440000
        architecture:
          type: string
          default: amd64
          description: >-
            Arquitectura para nombres de imagen y etiquetas name:version (por
            defecto amd64); un CRN fija su propia arquitectura y versión.
        image:
          type: string
          description: >
            Imagen desde la que clonar el disco de arranque. Se requiere a menos
            que volumes contenga un volumen de arranque existente; no se puede
            combinar con un volumen de arranque existente. Se aceptan cuatro
            formas: una imagen
            completa/nombre/arquitectura/arquitectura/versión/CRN de versión; un
            id de imagen; `name:version`, que fija una compilación y es la forma
            de optar por no incluir la etiqueta que se mueve debajo de usted; o
            un `name` sin contenido, que sigue la etiqueta a cualquier
            compilación que esté vigente cuando se crea la instancia. Los
            nombres prefieren una compilación utilizable de propiedad del
            llamador sobre una compilación etiquetada del catálogo de
            plataformas para la arquitectura solicitada (por defecto amd64). Un
            CRN identifica al propietario, nombre, arquitectura y versión. La
            resolución nunca reintenta otro tipo de referencia; las respuestas y
            las plantillas almacenadas conservan el UUID de imagen resuelto.
          example: debian-13
        networks:
          type: array
          items:
            $ref: '#/components/schemas/NetworkConfig'
          description: >
            Interfaces a adjuntar, al menos una. El índice 0 es la NIC primaria.


            Se requiere porque una instancia sin interfaz arranca sin ninguna
            red, y nada dentro de ella puede agregar una después.
          minItems: 1
        volumes:
          type: array
          items:
            $ref: '#/components/schemas/InstanceLaunchVolume'
          description: >
            Discos nuevos o existentes vinculados con la instancia, el disco de
            arranque incluido — marque con `boot: true`. Como máximo una entrada
            puede.


            Omita la entrada de arranque para tomar el tamaño mínimo de la
            imagen y el nivel predeterminado de la región.
        metadata:
          $ref: '#/components/schemas/Metadata'
        tags:
          $ref: '#/components/schemas/Tags'
        user_data:
          type: string
          format: byte
          description: Datos de usuario codificados en Base64 (cloud-init)
          example: I2Nsb3VkLWNvbmZpZwpwYWNrYWdlczoKICAtIG5naW54Cg==
        iam_role:
          type: string
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          description: >
            Adjunte un rol de IAM de la misma cuenta por UUID, CRN o nombre
            exacto. La directiva de confianza del rol debe permitir
            `crn:compute:*:*:instance/*` (o el CRN de la instancia específica).
            El extremo IMDS de la instancia (169.254.169.254) mantiene las
            credenciales de STS de corta duración para este rol desde dentro de
            la máquina virtual.
    Instance:
      type: object
      required:
        - faults
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
          example: 550e8400-e29b-41d4-a716-446655440000
        crn:
          type: string
          readOnly: true
          description: Nombre de recurso de la nube
          example: crn:compute:sa-saopaulo-1:my-account:instance/web-01
        name:
          description: >-
            Los nombres de los recursos no deben comenzar con el prefijo literal
            crn: ni ser UUID (en cualquier caso, en las formas canónica,
            compacta, entre corchetes o urn:uuid:).
          type: string
          example: web-server-01
        description:
          type: string
          example: Primary web server
        task_state:
          type: string
          nullable: true
          description: Transición en curso, si la hubiera; nula cuando se haya resuelto.
          example: null
        flavor:
          allOf:
            - $ref: '#/components/schemas/Flavor'
          description: >-
            Resuelto tipo de instancia (tamaño de cálculo) en el que se ejecuta
            la instancia. Se omite si la fila de tipo de instancia referenciada
            ha sido retirada.
        image:
          allOf:
            - $ref: '#/components/schemas/Image'
          description: >-
            Se ha resuelto la imagen de origen desde la que arrancó la
            instancia. Se omite para un arranque solo de volumen o si la fila de
            imagen referenciada ha desaparecido.
        user_data:
          type: string
          description: >-
            Datos de usuario de cloud-init codificados en Base64 suministrados
            en el lanzamiento.
        iam_role:
          allOf:
            - $ref: '#/components/schemas/InstanceRole'
          description: >-
            Resumen del rol de IAM adjunto, visible con acceso de lectura de
            instancia sin iam:GetRole. Se omite cuando no se adjunta ningún rol,
            el rol se eliminó o pertenece a otra cuenta. Los campos de rol
            confidenciales solo están disponibles a través de la API de IAM.
        metadata:
          $ref: '#/components/schemas/Metadata'
        tags:
          $ref: '#/components/schemas/Tags'
        faults:
          type: array
          description: >-
            Fallos activos ordenados por last_at descendiente, luego id de
            historial interno descendiente para un desempate estable. Los
            recursos sanos regresan [].
          items:
            $ref: '#/components/schemas/Fault'
        created_at:
          type: string
          format: date-time
          readOnly: true
          example: '2024-01-15T10:30:00Z'
        updated_at:
          type: string
          format: date-time
          readOnly: true
          example: '2024-01-15T10:30:00Z'
        launched_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
          example: '2026-01-15T09:31:12Z'
        terminated_at:
          type: string
          format: date-time
          readOnly: true
          nullable: true
          example: null
        desired_state:
          type: string
          enum:
            - running
            - stopped
            - deleted
          example: running
          description: >
            Lo que se pidió. Solo tres valores, porque solo hay tres cosas que
            se pueden pedir a una instancia que sea: Create/Start/Reboot para
            ejecutar, Stop para detener, Delete para eliminar.
        current_state:
          $ref: '#/components/schemas/CurrentState'
          example: running
          description: >
            Lee esto para responder "es arriba" — los estados de transición
            viven aquí, no en desired\_state, porque nadie pide que sea aquí
            donde se encuentra la instancia. `stopping`.


            desired_state=running con current_state=stopped es una instancia que
            se pidió que se iniciara y que aún no ha aparecido.
    NetworkConfig:
      type: object
      additionalProperties: false
      required:
        - subnet
      properties:
        subnet:
          type: string
          description: >-
            UUID de subred o CRN completo de VPC/subred. Los nombres nulos
            requieren un VPC principal y se rechazan aquí.
          example: 9b2e4f1a-3c5d-4e6f-8a90-1b2c3d4e5f60
        mac:
          type: string
          description: >
            Dirección MAC opcional. Debe ser administrado localmente (`X2:`,
            `X6:`, `XA:`, `XE:` en el primer octet). Se genera cuando se omite.
          example: 02:1a:2b:3c:4d:5e
        security_groups:
          type: array
          items:
            type: string
            example: c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f
          description: >
            Referencias de grupo de seguridad de ámbito de cuenta (UUID, CRN o
            nombre) para adjuntar a esta NIC. Cada uno debe ser propiedad de la
            misma cuenta. Lista vacía = sin ACL por NIC (el valor predeterminado
            de la plataforma permanece en vigor).
        floating_ip_assignment:
          type: string
          enum:
            - none
            - ipv4
            - ipv6
            - dual_stack
            - auto
          default: none
          description: >-
            Asignar IP flotantes públicas para esta NIC en el lanzamiento. Las
            familias explícitas requieren que las direcciones de los huéspedes y
            las rutas de Internet coincidan. Desconectar deja el FIP reservado.
            No existe una asignación IPv4 pública ordinaria.
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/AddressRequest'
    InstanceLaunchVolume:
      type: object
      description: >
        Cree un nuevo disco, opcionalmente con rendimiento aprovisionado, o
        adjunte un volumen disponible existente en esta cuenta y región mediante
        `volume`. Los volúmenes existentes conservan su contenido, rendimiento y
        programaciones de instantáneas; se conservan después de un error de
        inicio o eliminación de instancia. Requiere compute:AttachVolume para
        discos existentes. Un volumen solo puede ocurrir una vez. Un disco de
        arranque existente debe ser arrancable y reemplaza la imagen de nivel
        superior.
      properties:
        boot:
          type: boolean
          default: false
          description: >-
            Seleccione el disco de arranque. Los discos de arranque no pueden
            especificar mount_path o fstype.
        volume:
          type: string
          minLength: 1
          description: >-
            UUID, nombre o CRN del volumen disponible existente. Mutuamente
            exclusivos con la configuración de nuevo disco.
          example: crn:storage:sa-saopaulo-1:my-account:volume/data
        size_gb:
          type: integer
          minimum: 1
          description: >-
            Nueva capacidad de disco. Requerido para discos de datos nuevos; los
            discos de arranque se configuran de forma predeterminada al mínimo
            de la imagen.
          example: 20
        volume_type:
          type: string
          enum:
            - ssd
            - nvme
          description: Nuevo nivel de disco; si se omite, se usa la región predeterminada.
        performance:
          $ref: '#/components/schemas/VolumePerformanceRequest'
        mount_path:
          type: string
          description: >-
            Ruta de montaje de disco de datos opcional. El agente invitado
            formatea solo los discos en blanco.
          example: /data
        fstype:
          type: string
          description: >-
            Sistema de archivos opcional para discos de datos en blanco; por
            defecto ext4.
          example: ext4
        delete_on_termination:
          type: boolean
          description: >-
            Por defecto true para discos nuevos. Los discos existentes requieren
            false u omisión y se conservan.
        snapshot_schedules:
          type: array
          maxItems: 16
          description: >
            Programas independientes para un nuevo disco. Los nombres deben ser
            únicos en la cuenta y en este lanzamiento. Requiere
            almacenamiento:CreateSnapshotPolicy. Los discos existentes mantienen
            sus programaciones y no pueden especificar este campo.
          items:
            $ref: '#/components/schemas/SnapshotScheduleSettings'
      oneOf:
        - required:
            - volume
          properties:
            delete_on_termination:
              enum:
                - false
          not:
            anyOf:
              - required:
                  - size_gb
              - required:
                  - volume_type
              - required:
                  - performance
              - required:
                  - snapshot_schedules
        - not:
            required:
              - volume
    Metadata:
      type: object
      additionalProperties:
        type: string
      example:
        environment: production
        team: backend
    Tags:
      type: object
      additionalProperties:
        type: string
      example:
        environment: production
        team: backend
    Flavor:
      type: object
      description: >-
        Un tamaño de cálculo (vCPU + RAM). Un tipo de instancia no tiene tamaño
        de disco — el disco de arranque es un volumen de cliente con el tamaño
        al inicio, limitado por el min_disk_gb de la imagen.
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
          example: 550e8400-e29b-41d4-a716-446655440000
        crn:
          type: string
          readOnly: true
          description: Nombre de recurso de la nube
          example: crn:compute:sa-saopaulo-1:platform:flavor/standard-2
        name:
          description: >-
            Los nombres de los recursos no deben comenzar con el prefijo literal
            crn: ni ser UUID (en cualquier caso, en las formas canónica,
            compacta, entre corchetes o urn:uuid:).
          type: string
          example: m1.medium
        description:
          type: string
          example: Medium instance with 2 vCPUs and 4GB RAM
        vcpus:
          type: integer
          description: Número de CPU virtuales
          example: 2
        ram_mb:
          type: integer
          description: Memoria RAM en MB
          example: 4096
        class:
          type: string
          description: >-
            Enrutamiento de grupo de hosts. "Compartido" sobresuscribe la CPU
            para una mayor densidad; "Dedicado" conecta cada vCPU 1:1 a un
            núcleo físico.
          enum:
            - shared
            - dedicated
          example: shared
        family:
          type: string
          description: >-
            Qué producto puede reservar el tipo de instancia. Las opciones
            "general" son para instancias regulares y grupos de instancias; las
            opciones "loadbalancer" y "database" están reservadas para los
            productos administrados (sus nodos se operan en plataforma y tienen
            un precio correspondiente) y no se pueden usar para instancias
            regulares.
          enum:
            - general
            - loadbalancer
            - database
          example: general
        net_mbps:
          type: integer
          minimum: 1
          readOnly: true
          description: >-
            Límite agregado de transferencia de red de la instancia en megabits
            por segundo. Se omite cuando no hay límite.
          example: 10000
        cpu_baseline_pct:
          type: integer
          minimum: 1
          readOnly: true
          description: >-
            Mínimo de CPU garantizado como porcentaje de cada vCPU. Se omite
            cuando no hay un mínimo garantizado.
          example: 100
        cpu_burst_pct:
          type: integer
          minimum: 1
          readOnly: true
          description: >-
            Límite de CPU como porcentaje de cada vCPU. El valor 100 o la
            omisión del campo permite usar todas las vCPU.
          example: 100
        status:
          type: string
          enum:
            - active
            - disabled
          example: active
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
    Image:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 550e8400-e29b-41d4-a716-446655440000
        crn:
          type: string
          example: >-
            crn:compute:sa-saopaulo-1:my-account:image/ubuntu-24.04/architecture/amd64/version/20260901
        name:
          description: >-
            Los nombres de los recursos no deben comenzar con el prefijo literal
            crn: ni ser UUID (en cualquier caso, en las formas canónica,
            compacta, entre corchetes o urn:uuid:).
          type: string
          example: ubuntu-24.04
        description:
          type: string
          example: Ubuntu 24.04 LTS (Noble Numbat)
        os:
          type: string
          example: ubuntu
        os_version:
          type: string
          example: '24.04'
        architecture:
          type: string
          example: amd64
        version:
          type: string
          description: >
            La identidad de la compilación dentro de su nombre. Único allí: un
            nombre es una etiqueta móvil, por lo que no puede ser también lo que
            dice dos construcciones aparte. Se estampa como una marca de tiempo
            UTC cuando el cargador no eligió una.
          example: '20260807'
        is_current:
          type: boolean
          description: >
            Si esta es la versión que resolve-by-name devuelve para su (nombre,
            arquitectura) — i.e. El objetivo de la etiqueta actual del nombre.
          example: true
        eol_date:
          type: string
          format: date
          description: >
            El día en que la versión del sistema operativo de esta imagen deja
            de recibir actualizaciones de seguridad gratuitas para una
            instalación predeterminada. Ausente cuando nadie ha registrado uno,
            lo que significa desconocido, no "soportado indefinidamente".


            Las imágenes de la plataforma se retiran del catálogo durante un
            período de gracia después de esta fecha. Se mantienen arrancables
            por id hasta entonces, y la fecha se publica con bastante antelación
            para que puedas planificar el movimiento.
          example: '2026-08-31'
        size_bytes:
          type: integer
          format: int64
          example: 2361393152
        min_disk_gb:
          type: integer
          minimum: 0
          maximum: 16384
          example: 10
        min_ram_mb:
          type: integer
          minimum: 0
          example: 1024
        status:
          type: string
          enum:
            - pending
            - importing
            - active
            - error
            - deleting
            - withdrawn
          description: >-
            Error exactamente mientras existe un error activo; el progreso de
            importación y eliminación sigue siendo independientemente
            reintentable.
          example: active
        withdrawal_reason:
          type: string
          description: >
            Por qué se retiró esta imagen. Presente para imágenes retiradas,
            incluyendo aquellas con un fallo de error independiente: end_of_life
            para retirada de la versión de la plataforma (ver eol_date), o
            legacy para una retirada migrada cuya razón original se desconoce.
            Las imágenes retiradas conservan sus datos pero no se pueden lanzar.
          example: end_of_life
        deletion_retention:
          type: object
          readOnly: true
          description: >
            Presente en las respuestas de lista de propietarios/detalles
            mientras la eliminación de imágenes está esperando referencias de
            instancias, reservas de origen o grupos de instancias existentes.
            Los recuentos incluyen todas las cuentas de referencia sin revelar
            sus identidades. Los datos de respaldo permanecen intactos; la
            limpieza se reanuda cuando las referencias desaparecen. Las fallas
            independientes pueden establecer el estado en error.
          required:
            - reason
            - instances
            - instance_pools
          properties:
            reason:
              type: string
              enum:
                - in_use
            instances:
              type: integer
              minimum: 0
            instance_pools:
              type: integer
              minimum: 0
        faults:
          type: array
          readOnly: true
          description: >-
            Fallas activas, más reciente primero. Vacío para una imagen
            saludable. Los errores de error establecen el estado en error sin
            deshabilitar un reintento de importación o limpieza elegible.
          items:
            $ref: '#/components/schemas/Fault'
        tags:
          $ref: '#/components/schemas/Tags'
        attributes:
          type: object
          additionalProperties:
            type: string
        created_at:
          type: string
          format: date-time
          example: '2026-01-15T09:30:00Z'
        updated_at:
          type: string
          format: date-time
          example: '2026-01-15T09:30:00Z'
      required:
        - id
        - crn
        - name
        - version
        - architecture
        - status
        - faults
        - created_at
        - updated_at
    InstanceRole:
      type: object
      required:
        - id
        - crn
        - name
      properties:
        id:
          type: string
          format: uuid
          example: b2c3d4e5-f6a7-8901-2345-67890abcdef1
        crn:
          type: string
          description: >-
            Identidad de rol con ámbito de cuenta, tal como se usa en los
            documentos de directiva.
          example: crn:iam::my-account:role/deploy
        name:
          type: string
          description: Nombre de rol inmutable.
          example: deploy
    Fault:
      type: object
      required:
        - code
        - severity
        - message
        - details
        - first_at
        - last_at
        - occurrences
      properties:
        code:
          type: string
          description: >-
            Código legible por máquina estable propiedad de la operación de
            informes.
          example: BACKUP_FAILED
        severity:
          type: string
          enum:
            - error
            - warning
        message:
          type: string
          example: Backup upload failed.
        details:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Contexto estructurado; las cadenas heredadas se conservan en
            legacy_text.
        first_at:
          type: string
          format: date-time
          description: Primera observación en esta serie de ocurrencias activas.
        last_at:
          type: string
          format: date-time
          description: Última observación en esta serie de ocurrencias activas.
        occurrences:
          type: integer
          minimum: 1
          example: 1
    CurrentState:
      type: string
      description: >
        Donde se encuentra una instancia. Los estados de transición viven aquí,
        no en desired_state — nadie pide `stopping`.
      enum:
        - pending
        - building
        - running
        - stopping
        - stopped
        - rebooting
        - migrating
        - deleting
        - deleted
        - error
        - crashed
        - paused
        - suspended
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - request_id
          properties:
            code:
              type: string
              description: Código de error que identifica el tipo de error
              example: INVALID_INPUT
            message:
              type: string
              description: Mensaje de error legible por el ser humano
              example: Invalid request parameters
            params:
              type: object
              additionalProperties: true
              description: >-
                Valores no sensibles opcionales para la interpolación de errores
                localizados, codificados por código de error. Nunca presente por
                errores del servidor.
              example:
                instances: 2
                pools: 0
            request_id:
              type: string
              format: uuid
              description: Solicitar ID para depuración
              example: 550e8400-e29b-41d4-a716-446655440000
    AddressRequest:
      type: object
      properties:
        family:
          type: string
          enum:
            - ipv4
            - ipv6
        address:
          type: string
          description: >-
            Dirección fija opcional al crear una interfaz o una instancia NIC.
            Para IPv6, use la primera dirección de un /96 alineado dentro de la
            subred /64 (los últimos 32 bits cero); el primer y el último rango
            /96 están reservados. Omita para asignación automática. Los nodos de
            base de datos administrados y la operación de dirección de adición
            requieren asignación automática.
      required:
        - family
      additionalProperties: false
    VolumePerformanceRequest:
      type: object
      additionalProperties: false
      description: >
        Rendimiento total de lectura/escritura combinado sostenido de
        aprovisionamiento independiente. Las dimensiones omitidas conservan su
        valor actual (incluido el margen en la creación). Las SSD permiten hasta
        8000 IOPS y 250 MiB/s; NVMe hasta 12000 y 500 MiB/s. El mínimo es la
        asignación incluida del volumen; las asignaciones mayores de derechos
        heredados siguen estando disponibles de forma gratuita. El rendimiento
        es de MiB/s enteros, excepto que se puede seleccionar una asignación
        heredada fraccionaria exacta para eliminar el complemento de pago. Los
        aumentos requieren cuota de cuenta, capacidad regional y almacenamiento
        saludable. Factura de extras aplicados por duración transcurrida,
        incluso mientras está separado o detenido.
      properties:
        iops:
          type: integer
          minimum: 1
          example: 6000
        throughput_mib_s:
          type: number
          minimum: 0
          example: 250
    SnapshotScheduleSettings:
      type: object
      required:
        - name
        - interval_minutes
        - retention_count
      description: Programe la configuración de un nuevo volumen de instancia.
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 128
          description: >-
            Nombre de directiva de instantánea exclusivo de la cuenta, sujeto a
            la validación de nombre de recurso.
        description:
          type: string
        interval_minutes:
          $ref: '#/components/schemas/SnapshotIntervalMinutes'
        retention_count:
          $ref: '#/components/schemas/SnapshotRetentionCount'
        retention_days:
          $ref: '#/components/schemas/SnapshotRetentionDays'
        enabled:
          type: boolean
          default: true
        tags:
          $ref: '#/components/schemas/Tags'
    SnapshotIntervalMinutes:
      type: integer
      minimum: 1
      maximum: 43200
      description: >
        Minutos entre instantáneas: un intervalo mínimo, no una cadencia exacta.
        Un pase periódico toma lo que haya vencido y re-basea la siguiente
        ejecución de cada política desde el momento en que se ejecutó, por lo
        que una instantánea aterriza en o después de `interval_minutes` y nunca
        antes, y puede aterrizar un minuto o dos más tarde cuando el pase está
        ocupado. Una ventana que el pase no consigue cuesta una instantánea en
        lugar de producir una ráfaga de recuperación después.


        El mínimo es de un minuto, porque ese paso es lo que evalúa el horario y
        nada más fino puede ser honrado; el máximo es de 30 días. `snapshots`
        Por lo tanto, elija el intervalo más grande que cumpla con su objetivo
        de punto de recuperación.
      example: 1440
    SnapshotRetentionCount:
      type: integer
      minimum: 1
      maximum: 256
      description: >
        Cuántas instantáneas de esta política se deben conservar. Cuando un
        incendio lleva la cuenta más allá de esto, el más viejo va primero.
      example: 7
    SnapshotRetentionDays:
      type: integer
      minimum: 0
      maximum: 3650
      default: 0
      description: >
        Opcional edad limitada, aplicada encima de `retention_count`: se recoge
        una instantánea fuera de la ventana EITHER. 0 significa que no hay edad
        limitada. La única instantánea más reciente está exenta de la edad
        limitada, por lo que un volumen que no se pudo instantanear durante más
        tiempo que la ventana nunca pierde todo su historial.
      example: 30
  responses:
    BadRequest:
      description: Parámetros de solicitud no válidos
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INVALID_INPUT
              message: Invalid request parameters
              request_id: 550e8400-e29b-41d4-a716-446655440000
    Unauthorized:
      description: Se requiere autenticación o el token no es válido
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: UNAUTHORIZED
              message: Authentication required
              request_id: 550e8400-e29b-41d4-a716-446655440000
    Forbidden:
      description: Permisos insuficientes
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: ACCESS_DENIED
              message: You don't have permission to perform this action
              request_id: 550e8400-e29b-41d4-a716-446655440000
    Conflict:
      description: Conflicto de recursos (por ejemplo, ya existe, estado no válido)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: CONFLICT
              message: Resource with this name already exists
              request_id: 550e8400-e29b-41d4-a716-446655440000
    UnprocessableEntity:
      description: >
        La solicitud está bien formada, pero no se puede procesar como se envió.
        En las operaciones que aceptan `Idempotency-Key` este es el caso de
        reutilización de clave: la clave fue vista por primera vez con una carga
        de solicitud diferente, por lo que la reproducción del resultado
        almacenado respondería a una pregunta que el llamador no hizo.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: IDEMPOTENCY_KEY_REUSED
              message: >-
                This Idempotency-Key was already used with a different request
                payload
              request_id: 550e8400-e29b-41d4-a716-446655440000
    InternalServerError:
      description: Error interno del servidor
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INTERNAL_ERROR
              message: An internal error occurred
              request_id: 550e8400-e29b-41d4-a716-446655440000
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >+
        Un token bearer de OAuth 2.0, enviado como `Authorization: Bearer
        <token>`. Esta es la forma recomendada de autenticación.


        Obtén el token intercambiando el par de claves de acceso de una cuenta
        de servicio en `POST /v1/oauth/token` con
        `grant_type=client_credentials`. Es el flujo estándar de credenciales de
        cliente; las bibliotecas compatibles con OAuth pueden obtener y renovar
        el token por ti.


        ```

        curl -s -u "$KEY_ID:$SECRET" -d grant_type=client_credentials \
          https://iam.basaltic.sh/v1/oauth/token
        ```


        Los tokens duran una hora por defecto. El mismo par de claves de acceso
        también sirve como credencial AWS SigV4 para el endpoint de objetos
        compatible con S3, que solo acepta ese método de autenticación.


````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.