> ## 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.

# Escalar o cambiar el tamaño de un balanceador de carga

<Info>
  Requiere la acción de IAM **`loadbalancer:UpdateLoadBalancer`**. Consulta [permisos de balanceadores de carga](/loadbalancer/permissions) para obtener la lista completa, lo que cubre cada una y un ejemplo de directiva.
</Info>


## OpenAPI

````yaml /es/api-reference/specs/loadbalancer.yaml patch /v1/load-balancers/{id}
openapi: 3.0.3
info:
  title: API de equilibrador de carga basaltico
  version: 1.0.0
  description: >
    Las relaciones de solicitud aceptan referencias clasificadas por sintaxis
    resueltas dentro de la cuenta y región del llamador. Las referencias IP
    flotantes solo aceptan UUID o CRN; los destinos IP permanecen literales.
    Balanceadores de carga administrados: escuchas, grupos de destino,
    comprobaciones de estado y los certificados TLS que termina una escucha.
  contact:
    name: Basaltic Support
    email: ping@basaltic.sh
  license:
    name: Proprietary
    url: https://basaltic.sh/terms
servers:
  - url: https://loadbalancer.{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/load-balancers/{id}:
    patch:
      tags:
        - Load Balancers
      summary: Escalar o cambiar el tamaño de un balanceador de carga
      operationId: updateLoadBalancer
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            example: 4e1f8c2a-9b3d-4f6e-8a1c-2d5e7f9a0b3c
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateLoadBalancerRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoadBalancerResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    UpdateLoadBalancerRequest:
      additionalProperties: false
      type: object
      description: >
        Los nombres se fijan en la creación porque forman el CRN utilizado por
        las directivas de IAM. El envío de nombre en una actualización,
        incluyendo un valor sin cambios, vacío o nulo, devuelve un error de
        validación.
      properties:
        desired_count:
          type: integer
          minimum: 1
          maximum: 10
          description: Objetivo estable dentro de min_count y max_count.
          example: 2
        min_count:
          type: integer
          minimum: 1
          maximum: 10
          description: Capacidad inferior limitada.
          example: 1
        max_count:
          type: integer
          minimum: 1
          maximum: 10
          description: Capacidad superior limitada incluyendo la subida de despliegue.
          example: 5
        autoscaling:
          $ref: '#/components/schemas/AutoscalingPolicy'
        replica_count:
          deprecated: true
          type: integer
          minimum: 1
          maximum: 10
          example: 3
          description: >
            Alias obsoleto de desired_count; envía solo uno. Los límites se
            conservan. Con desired_count omitido, se sujeta a los límites
            resultantes. La escalada interna retira y drena miembros antes de
            eliminarlos.
        flavor:
          type: string
          example: e5f6a7b8-c9d0-4123-e4f5-a6b7c8d9e0f1
          description: >
            Cambie el tamaño de cada réplica a un tipo de cálculo diferente.
            Debe ser un tipo de instancia de loadbalancer-family.


            Una instancia en ejecución no puede cambiar de tamaño en el lugar,
            por lo que la solicitud registra el nuevo tamaño y devuelve; las
            réplicas ya activas se reemplazan una a la vez en segundo plano. El
            balanceador de carga ejecuta temporalmente una réplica sobre
            desired_count, dentro de max_count mientras lo hace: la réplica
            adicional aparece en el nuevo tipo de instancia y comienza a servir
            antes de que se retire cualquier réplica en la antigua, por lo que
            el número de servicios nunca cae por debajo de desired_count; un
            cambio de tamaño no le cuesta capacidad, en cualquier conteo de
            réplicas.


            Espera que tome varios minutos y consulta GET
            /v1/load-balancers/{id}/replicas para ver: una réplica se ha
            reemplazado cuando su instance_id cambia, y el redimensionamiento se
            realiza cuando todos los tipos de instancia coinciden con este.


            Un cambio de tamaño requiere que max_count esté por encima de
            desired_count para el margen de sobrecarga. Un despliegue espera si
            se elimina el espacio libre mientras está en curso.


            Se rechaza por adelantado si la cuenta no tiene la cuota de cómputo
            para la réplica de reemplazo, por lo que un cambio de tamaño no
            puede aplicarse a mitad y dejar el balanceador de carga corto.
        tags:
          $ref: '#/components/schemas/Tags'
    LoadBalancerResponse:
      type: object
      properties:
        load_balancer:
          $ref: '#/components/schemas/LoadBalancer'
    AutoscalingPolicy:
      type: object
      additionalProperties: false
      required:
        - enabled
        - metrics
      description: >
        Seguimiento de objetivos compartido por grupos de instancias y
        balanceadores de carga. Las actualizaciones reemplazan la política.
        Establezca enabled=false para conservar la configuración y usar el
        dimensionamiento manual. Cada métrica recomienda un recuento deseado; la
        recomendación más grande gana. Las observaciones faltantes, obsoletas o
        incompletas impiden la escalada interna, pero no bloquean la escalada
        externa recomendada por otra métrica válida. Las decisiones obedecen a
        los valores min_count/max_count, calentamiento, enfriamiento,
        estabilización, límites de pasos y cuotas del recurso. El estado
        sobrevive al reinicio del controlador. Las políticas activas poseen
        desired_count; se aceptan los cambios manuales y la evaluación
        automática se reanuda después del tiempo de reutilización. La telemetría
        personalizada requiere telemetry:ReadMetrics en la misma cuenta.
      properties:
        enabled:
          type: boolean
          example: true
        metrics:
          type: array
          minItems: 1
          maxItems: 5
          items:
            $ref: '#/components/schemas/ScalingMetric'
        warmup_seconds:
          type: integer
          minimum: 30
          maximum: 3600
          default: 180
        cooldown_seconds:
          type: integer
          minimum: 30
          maximum: 3600
          default: 60
        scale_down_stabilization_seconds:
          type: integer
          minimum: 60
          maximum: 3600
          default: 300
        max_scale_out_step:
          type: integer
          minimum: 1
          maximum: 100
          default: 4
        max_scale_in_step:
          type: integer
          minimum: 1
          maximum: 100
          default: 1
        drain_seconds:
          type: integer
          minimum: 30
          maximum: 3600
          default: 120
          description: >-
            Período de gracia después de la retirada de rutas y confirmaciones
            de proxy, antes de eliminar un miembro retirado. Las sesiones
            TCP/UDP de larga duración pueden terminar en la fecha límite; no se
            admiten ganchos de cierre de aplicación arbitrarios.
    Tags:
      type: object
      additionalProperties:
        type: string
      example:
        environment: production
        team: backend
    LoadBalancer:
      type: object
      required:
        - id
        - crn
        - account_id
        - name
        - type
        - status
        - faults
        - subnet
        - flavor_id
        - replica_count
        - desired_count
        - min_count
        - max_count
        - floating_ips
        - tags
        - created_at
        - updated_at
      properties:
        rollout_surge:
          type: boolean
          readOnly: true
          description: >-
            Capacidad adicional temporal dentro de max_count; no cambia
            desired_count.
        desired_count:
          type: integer
          minimum: 1
          maximum: 10
          description: Objetivo estable dentro de min_count y max_count.
          example: 2
        min_count:
          type: integer
          minimum: 1
          maximum: 10
          description: Capacidad inferior limitada.
          example: 1
        max_count:
          type: integer
          minimum: 1
          maximum: 10
          description: Capacidad superior limitada incluyendo la subida de despliegue.
          example: 5
        autoscaling:
          $ref: '#/components/schemas/AutoscalingPolicy'
        autoscaling_status:
          $ref: '#/components/schemas/AutoscalingStatus'
        id:
          type: string
          format: uuid
          example: 4e1f8c2a-9b3d-4f6e-8a1c-2d5e7f9a0b3c
        crn:
          type: string
          description: CRN de recurso de IAM
          example: crn:loadbalancer:sa-saopaulo-1:my-account:load-balancer/web-lb
        account_id:
          type: string
          format: uuid
          example: 6f9619ff-8b86-4d01-b42d-00cf4fc964ff
        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-lb
        type:
          type: string
          enum:
            - application
            - network
          description: Forma ALB (L7) vs forma NLB (L4)
          example: application
        status:
          type: string
          enum:
            - provisioning
            - active
            - error
            - deleting
          example: active
        faults:
          type: array
          description: >-
            Fallas activas; el estado es error exactamente cuando una falla de
            error activo permanece.
          items:
            $ref: '#/components/schemas/Fault'
          example: []
        subnet:
          anyOf:
            - $ref: '#/components/schemas/Subnet'
            - type: object
              nullable: true
              enum:
                - null
          description: >-
            Ubicación de subred; null cuando la subred a la que se hace
            referencia ya no existe.
        flavor_id:
          type: string
          format: uuid
          description: >-
            Calcular el tipo de instancia en el que se ejecuta cada instancia de
            LB. Debe ser un tipo de instancia de loadbalancer-family.
          example: e5f6a7b8-c9d0-4123-e4f5-a6b7c8d9e0f1
        replica_count:
          deprecated: true
          type: integer
          minimum: 1
          maximum: 10
          description: Alias obsoleto de desired_count.
          example: 2
        internal_ipv4:
          type: string
          description: >-
            IP virtual para el balanceador de carga; el tráfico se distribuye a
            los backends por conexión.
          example: 203.0.113.50
        internal_ipv6:
          type: string
          description: VIP IPv6 interno (establecido cuando la subred es de doble pila).
          example: 2001:db8::32
        public_ipv6:
          type: string
          description: >-
            IP flotante IPv6 pública seleccionada explícitamente, traducida a
            direcciones IPv6 de réplica en una subred GUA o ULA.
          example: 2a13:9500:1a6:101::a
        floating_ip_id:
          type: string
          format: uuid
          description: IP flotante IPv4 pública opcional. La IPv6 pública es independiente.
          example: f6a7b8c9-d0e1-4234-f5a6-b7c8d9e0f1a2
        floating_ips:
          type: array
          description: >-
            Todas las IP flotantes públicas y privadas adjuntas, incluidas las
            asignaciones privadas automáticas.
          items:
            $ref: '#/components/schemas/FloatingIp'
        dns_name:
          type: string
          example: web-lb.my-account.lb.sa-saopaulo-1.basaltic.sh
          description: >-
            Nombre de host de conveniencia publicado automáticamente para el
            balanceador de carga,
            `{name}.{account-handle}.lb.{region}.{base-domain}`. Resuelve a la
            IP flotante en un LB orientado a Internet y al VIP privado de lo
            contrario. Se omite en regiones donde no se configura DNS
            automático; el VIP y el FIP siguen siendo autorizados de cualquier
            manera.
        tags:
          $ref: '#/components/schemas/Tags'
        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'
    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
    ScalingMetric:
      type: object
      additionalProperties: false
      required:
        - source
        - target_type
        - target_value
      description: >
        CPU utiliza source=cpu, target\_type=utilization y un porcentaje de
        destino \<=100. La utilización es el número de segundos de CPU por
        segundo dividido por las vCPU asignadas en todos los miembros listos. El
        escalado de CPU habilitado requiere min\_count\>=1.


        La demanda personalizada utiliza source=telemetría y
        target_type=valor_promedio. El nombre y las etiquetas de la métrica
        seleccionan series en la cuenta, la organización y la región del
        recurso. La agregación temporal se aplica dentro de cada serie antes de
        combinar series; las muestras de medidores repetidas nunca se suman como
        demanda adicional. El recuento deseado es techo (valor combinado /
        valor_objetivo): 750 trabajos pendientes con un objetivo de 100 por
        instancia recomienda 8. La demanda personalizada puede escalar un grupo
        de clientes desde 0. Los productores deben publicar ceros nuevos para
        las colas inactivas; los datos ausentes no son cero.
      properties:
        source:
          type: string
          enum:
            - cpu
            - telemetry
          example: telemetry
        target_type:
          type: string
          enum:
            - utilization
            - average_value
          example: average_value
        target_value:
          type: number
          minimum: 0
          exclusiveMinimum: true
          example: 100
        name:
          type: string
          pattern: ^[a-zA-Z_:][a-zA-Z0-9_:]{0,199}$
          example: queue_depth
        labels:
          type: object
          maxProperties: 10
          additionalProperties:
            type: string
            maxLength: 256
          description: >-
            No se pueden proporcionar etiquetas de coincidencia exacta;
            etiquetas de tenencia y __name__.
          example:
            queue: orders
        sample_aggregation:
          type: string
          enum:
            - last
            - avg
            - max
            - rate
          default: last
          description: >-
            Use last para medidores de cola; rate para contadores que aumentan
            monótonamente, con manejo de reset.
        series_aggregation:
          type: string
          enum:
            - sum
            - avg
            - max
          default: sum
        expected_series:
          type: integer
          minimum: 1
          maximum: 1000
          default: 1
          description: >-
            Cardinalidad exacta esperada; los selectores incompletos o ambiguos
            no están disponibles.
        window_seconds:
          type: integer
          minimum: 30
          maximum: 3600
          default: 120
        max_age_seconds:
          type: integer
          minimum: 30
          maximum: 3600
          default: 90
          description: >-
            Edad real de la observación más reciente por serie; no debe exceder
            window_seconds. Por defecto, el menor de 90 y la ventana.
    AutoscalingStatus:
      type: object
      readOnly: true
      required:
        - status
        - reason
        - history
      properties:
        status:
          type: string
          enum:
            - pending
            - disabled
            - stable
            - scaling
            - waiting
            - warming_up
            - metrics_unavailable
            - stabilizing
            - cooldown
            - draining
        reason:
          type: string
          example: waiting for sustained lower demand
        evaluated_at:
          type: string
          format: date-time
        last_scaled_at:
          type: string
          format: date-time
        history:
          type: array
          maxItems: 50
          items:
            type: object
            required:
              - at
              - from
              - to
              - reason
            properties:
              at:
                type: string
                format: date-time
              from:
                type: integer
                minimum: 0
              to:
                type: integer
                minimum: 0
              reason:
                type: string
    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
    Subnet:
      type: object
      required:
        - id
        - crn
        - vpc
        - route_table
        - name
        - cidr_ipv4
        - gateway_ipv4
        - tags
        - created_at
        - updated_at
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        crn:
          type: string
          readOnly: true
          example: crn:network:sa-saopaulo-1:my-account:vpc/prod/subnet/prod-web
        vpc:
          $ref: '#/components/schemas/Vpc'
        route_table:
          $ref: '#/components/schemas/RouteTableSummary'
        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: prod-web
        description:
          type: string
          example: Public web-tier subnet
        cidr_ipv4:
          type: string
          example: 10.0.1.0/24
        gateway_ipv4:
          type: string
          example: 10.0.1.1
        cidr_ipv6:
          type: string
          nullable: true
          readOnly: true
          description: >-
            La IPv6 /64 de doble pila, si la subred está habilitada para v6. Su
            presencia (vs el v4 cidr_ipv4) es la forma en que un cliente
            distingue las familias de la subred.
          example: 2a13:9500:1a6:100::/64
        gateway_ipv6:
          type: string
          nullable: true
          readOnly: true
          example: 2a13:9500:1a6:100::1
        tags:
          type: object
          additionalProperties:
            type: string
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
    FloatingIp:
      type: object
      required:
        - id
        - crn
        - address
        - family
        - attached_to
        - members
        - tags
        - created_at
        - updated_at
        - visibility
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        crn:
          type: string
          readOnly: true
          example: crn:network:sa-saopaulo-1:my-account:floating-ip/<uuid>
        description:
          type: string
          example: Public IP for the web load balancer
        family:
          $ref: '#/components/schemas/IpFamily'
        attached_to:
          type: string
          nullable: true
          readOnly: true
          description: >
            CRN canónico de la interfaz vinculada, grupo de instancias o
            balanceador de carga; nulo cuando no está conectado. Una dirección
            de propiedad de grupo nombra su grupo incluso cuando el grupo tiene
            cero miembros. Solo las direcciones de propiedad de grupo pueden
            tener varios miembros de NIC. Administre sus enlaces a través de los
            extremos IP flotantes del grupo de instancias; se rechazan las
            conexiones y desconexiones directas.
          example: >-
            crn:network:sa-saopaulo-1:my-account:vpc/prod/subnet/public/interface/eth0
        members:
          type: array
          description: >
            Los enlaces de la IP flotante. Una IP flotante se dirige a 0
            miembros (asignados, no adjuntos), 1 miembro (el caso habitual) o N
            miembros para un grupo de instancias: una IP flotante de anycast,
            donde una IP pública se entrega a N tarjetas NIC de VM en hosts
            (cada uno anunciado como un /32 desde el host que lo mantiene).


            Los miembros pueden compartir un hipervisor. Dos de ellos en un host
            solían significar que uno se servía y el otro estaba silenciosamente
            oscuro; la regla de reenvío de un miembro ahora nombra al miembro, y
            el host divide las conexiones entre los miembros que tiene, por lo
            que donde se encuentran los miembros es una decisión de capacidad en
            lugar de una decisión de corrección. La dirección de un grupo de
            instancias toma sus miembros de las réplicas activas del grupo, cada
            una de ellas, de modo que una escalada hacia afuera se une y una
            escalada hacia adentro se va sin un adjunto por réplica.


            Con más de un miembro UNO miembro sirve cada conexión, elegida
            mediante el hash de las direcciones y puertos del flujo, y cada
            paquete de esa conexión va a la misma. Los miembros son instancias
            separadas que no comparten nada, por lo que esto extiende las
            conexiones y sobrevive a la pérdida de un host; no es un balanceador
            de carga: nada comprueba si el servicio dentro de la instancia está
            activo, y las conexiones en curso a un miembro que se va no se
            mueven, terminan.


            La dirección de un POOL es la excepción, y solo para el arranque.
            Una réplica se une a la dirección tan pronto como se coloca, pero no
            recibe tráfico hasta que ha llegado al servicio de metadatos de la
            instancia, lo que demuestra que el invitado arrancó, en lugar de que
            se inició su máquina virtual. Hasta entonces es un miembro con
            `health` `unhealthy`. Una réplica cuya imagen nunca contacta con el
            servicio de metadatos se admite de todos modos después de unos
            minutos, por lo que una imagen inusual retrasa el tráfico en lugar
            de no obtenerlo nunca.
          items:
            $ref: '#/components/schemas/FloatingIpMember'
        tags:
          type: object
          additionalProperties:
            type: string
        health_check:
          allOf:
            - $ref: '#/components/schemas/FloatingIpHealthCheck'
          description: >
            La comprobación de preparación se aplicó a los miembros de esta
            dirección. Ausente cuando no se configura ninguna. Consulte
            `FloatingIpHealthCheck`.
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        address:
          type: string
          description: Dirección pública o privada asignada.
          example: 212.66.52.71
        visibility:
          type: string
          enum:
            - public
            - private
        subnet_id:
          type: string
          format: uuid
          nullable: true
          description: Subred de asignación para IPs flotantes privadas.
        vpc_id:
          type: string
          format: uuid
          description: Asignación de VPC para IP flotantes privadas.
    Vpc:
      type: object
      required:
        - id
        - crn
        - name
        - cidr_ipv4
        - tags
        - created_at
        - updated_at
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        crn:
          type: string
          readOnly: true
          description: >-
            Nombre de recurso de Cloud (basado en nombre, región+ámbito de
            cuenta).
          example: crn:network:sa-saopaulo-1:my-account:vpc/prod
        name:
          type: string
          description: >-
            De 1 a 63 caracteres alfanuméricos en minúsculas y guiones. Los
            nombres de recursos no deben comenzar con el prefijo literal crn: ni
            ser UUID (en formato canónico, compacto, entre llaves o urn:uuid:,
            tanto en mayúsculas como en minúsculas).
          example: prod
        description:
          type: string
          example: Production VPC for web and app tiers
        cidr_ipv4:
          type: string
          description: >-
            Bloque CIDR IPv4 dividido por subredes. Debe ser privado (RFC 1918):
            dentro de 10.0.0.0/8, 172.16.0.0/12 o 192.168.0.0/16. Inmutable
            después de crear.
          example: 10.0.0.0/16
        cidr_ipv6:
          type: string
          nullable: true
          readOnly: true
          description: Prefijo GUA regional asociado o ULA privado.
          example: 2a13:9500:1a6:100::/60
        tags:
          type: object
          additionalProperties:
            type: string
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
    RouteTableSummary:
      type: object
      nullable: true
      additionalProperties: false
      description: >
        Tabla de rutas utilizada por una subred, sin repetir su VPC. Null cuando
        la búsqueda no propietaria ya no se resuelve, por ejemplo, durante la
        reasociación y eliminación simultáneas de la tabla anterior. Se rechaza
        la eliminación de una tabla que todavía está asociada con subredes.
      required:
        - id
        - crn
        - name
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        crn:
          type: string
          readOnly: true
          example: >-
            crn:network:sa-saopaulo-1:my-account:vpc/prod/route-table/prod-private-rt
        name:
          type: string
          example: prod-private-rt
    IpFamily:
      type: string
      enum:
        - ipv4
        - ipv6
      description: >
        La familia de direcciones IP. Las IP flotantes admiten cualquier familia
        y pueden tener visibilidad pública o privada. Las IP flotantes públicas
        se asignan desde el grupo de direcciones públicas de la región; las IP
        flotantes privadas se asignan desde el rango de subred seleccionado para
        esa familia.


        La adscripción de una IP flotante a una interfaz requiere una dirección
        de la misma familia en esa interfaz. IPv6 no requiere que IPv4 esté
        habilitado en la subred. La accesibilidad a Internet también depende de
        las rutas y las reglas de seguridad.


        La adscripción de una IP flotante IPv6 no deshabilita la dirección IPv6
        nativa de enrutamiento global de la interfaz. Ambas direcciones
        permanecen accesibles cuando las reglas de enrutamiento y seguridad lo
        permiten, y las respuestas a las conexiones entrantes conservan la
        dirección que recibió la conexión. Una dirección IPv6 privada no se
        convierte directamente en rutable por Internet al adjuntar una IP
        flotante.
      example: ipv6
    FloatingIpMember:
      type: object
      description: Una vinculación de una IP flotante.
      required:
        - interface
        - health
        - reason
        - created_at
      properties:
        interface:
          type: object
          nullable: true
          description: >-
            Resumen de NIC vinculada; nulo para una vinculación de balanceador
            de carga nombrada por attached_to.
          required:
            - id
            - crn
            - instance
          properties:
            id:
              type: string
              format: uuid
            crn:
              type: string
              example: >-
                crn:network:sa-saopaulo-1:my-account:vpc/prod/subnet/public/interface/eth0
            instance:
              type: object
              nullable: true
              description: >-
                Instancia propietaria; null cuando la interfaz no tiene
                instancia propietaria.
              required:
                - id
                - crn
                - name
              properties:
                id:
                  type: string
                  format: uuid
                crn:
                  type: string
                  example: crn:compute:sa-saopaulo-1:my-account:instance/web
                name:
                  type: string
        health:
          type: string
          enum:
            - unknown
            - healthy
            - unhealthy
          description: >
            Lo que la plataforma sabe sobre este miembro.


            `unknown` — no hay ninguna comprobación en curso. Es el estado de un
            miembro conectado manualmente a una dirección sin comprobación de
            estado: tú elegiste cuándo conectarlo, y la plataforma no recibe
            señales sobre lo que se ejecuta dentro de la instancia. El miembro
            sigue anunciado.


            `healthy` — la plataforma tiene pruebas de que el miembro está
            activo y, si hay una comprobación de estado configurada en la
            dirección, de que esta se supera.


            `unhealthy` — la plataforma todavía no ha recibido esa confirmación
            o una comprobación configurada está fallando. El miembro permanece
            asociado a la dirección, pero no recibe tráfico hasta recuperarse.


            Sin una comprobación de estado, `healthy` solo confirma que el
            sistema de la instancia está activo, no que el servicio acepte
            conexiones. Configura `health_check` en la IP flotante para
            comprobar también si la aplicación está preparada.
          example: unknown
        reason:
          type: string
          enum:
            - unprobed
            - booting
            - probe_failed
            - passing
          description: >
            Por qué el miembro lee el `health` que hace — así que usted puede
            decir "su servicio no está respondiendo" de "el invitado no ha
            arrancado todavía".


            `unprobed` — nadie está comprobando (sin comprobación de estado,
            adjunto a mano). `booting` — la plataforma aún no ha visto al
            invitado. `probe_failed` — la comprobación de estado configurada
            está fallando. `passing` — el invitado está en marcha y, si se
            configura una comprobación, pasa.
          example: unprobed
        created_at:
          type: string
          format: date-time
          readOnly: true
        address_id:
          type: string
          format: uuid
          nullable: true
          description: Dirección secundaria de destino en la interfaz de miembro.
    FloatingIpHealthCheck:
      type: object
      description: >
        Una comprobación de preparación para los miembros de una IP flotante
        compartida (anycast) — el mismo vocabulario que una comprobación de
        estado del grupo objetivo del balanceador de carga, una que ya conoces.
        La plataforma comprueba la dirección privada de cada miembro dentro de
        la VPC. Un miembro que falla deja de recibir tráfico a través de la IP
        flotante y regresa cuando pasa de nuevo. Si CADA miembro falla, toda la
        dirección se oscurece: una comprobación mal configurada es una
        interrupción visible que usted causó, no la plataforma que anuncia
        silenciosamente algo que cree que está caído.


        La comprobación se realiza en la dirección, no por miembro: los miembros
        son backends intercambiables, y un grupo los deriva. Una dirección sin
        verificación se comporta exactamente como antes: solo se muestran los
        miembros del grupo, siempre se anuncian los que están adjuntos a mano.
      required:
        - protocol
        - port
        - interval_sec
        - timeout_sec
        - healthy_threshold
        - unhealthy_threshold
      properties:
        protocol:
          type: string
          enum:
            - tcp
            - http
            - https
          default: tcp
          description: >
            `tcp` abre una conexión; `http`/`https` emite un GET y compara el
            estado con `matcher`. No hay `udp`: una sonda de preparación
            necesita una respuesta — compruebe un servicio udp en un puerto tcp
            de salud en su lugar.
          example: http
        path:
          type: string
          example: /healthz
          description: Ruta HTTP probada; ignorada para tcp.
        port:
          type: integer
          minimum: 1
          maximum: 65535
          example: 8080
          description: Puerto probado en el miembro.
        interval_sec:
          type: integer
          minimum: 1
          maximum: 300
          default: 30
          example: 30
        timeout_sec:
          type: integer
          minimum: 1
          maximum: 60
          default: 5
          example: 5
          description: Tiempo de espera por sonda; debe ser menor que interval_sec.
        healthy_threshold:
          type: integer
          minimum: 1
          maximum: 10
          default: 3
          example: 3
          description: Pasajes consecutivos antes de que un miembro voltee sano.
        unhealthy_threshold:
          type: integer
          minimum: 1
          maximum: 10
          default: 3
          example: 3
          description: Fallos consecutivos antes de que un miembro se vuelva insalubre.
        matcher:
          type: string
          default: '200'
          example: 200-299
          description: Estado HTTP o rango que cuenta como pasando; ignorado para tcp.
  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
    NotFound:
      description: No se encontró el recurso
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: NOT_FOUND
              message: Resource not found
              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.