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

# Listar tenants

> Recupera una lista paginada de tenants que pertenecen a la organización especificada. Admite filtrado y ordenación sobre propiedades del tenant. Los filtros se proporcionan como una cadena JSON que sigue la estructura AST de FilterNode. Los resultados se devuelven en páginas con metadatos de paginación.



## OpenAPI

````yaml /api-reference/openapi-v1.json get /v1/organizations/{organization_id}/tenants
openapi: 3.0.3
info:
  title: API Publica Portal
  version: 1.0.0
  description: Api publica REST para portal
servers:
  - url: https://api.staging.flxwvdexternal.com
    description: Staging API server
security:
  - bearerAuth: []
tags: []
paths:
  /v1/organizations/{organization_id}/tenants:
    get:
      tags:
        - Tenants
      summary: Listar tenants
      description: >-
        Recupera una lista paginada de tenants que pertenecen a la organización
        especificada. Admite filtrado y ordenación sobre propiedades del tenant.
        Los filtros se proporcionan como una cadena JSON que sigue la estructura
        AST de FilterNode. Los resultados se devuelven en páginas con metadatos
        de paginación.
      operationId: listTenants
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            maxLength: 24
            pattern: ^[0-9a-f]{24}$
          description: El identificador único de la organización
          example: 507f1f77bcf86cd799439011
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
          description: 'Número de página (predeterminado: 1)'
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            default: 100
            maximum: 100
            minimum: 1
          description: Número de elementos por página
        - name: sort
          in: query
          required: false
          schema:
            type: string
          description: >-
            Campo de ordenación con sufijo opcional de orden (:asc o :desc), p.
            ej., "name", "name:asc", "create_date:desc". Usa orden ascendente de
            forma predeterminada si no se proporciona sufijo. Campos válidos:
            id, create_date, name, region, product_id, policy_id
        - name: fields
          in: query
          required: false
          schema:
            type: string
            maxLength: 2048
          description: >-
            Lista separada por comas de campos a incluir en cada elemento de
            tenant. Campos seleccionables: id, organization_id, create_date,
            name, region, product_id, policy_id. El campo id siempre se incluye.
          example: name,region,product_id
        - name: filters
          in: query
          required: false
          schema:
            type: string
            maxLength: 5120
            description: >-
              Filtra tenants usando un objeto JSON. Especifica el campo a
              filtrar, el operador de comparación y el valor. Ejemplo: {"field":
              "name", "op": "eq", "value": "Tenant 1"}
            example: '{"field": "name", "op": "eq", "value": "Tenant 1"}'
          description: >-
            Filtra tenants por uno o más criterios. Proporciona un objeto JSON
            con condiciones de filtro. Puedes filtrar por cualquier campo
            devuelto en la respuesta. Usa operadores de comparación (eq, ne, gt,
            gte, lt, lte, in, nin, contains, startsWith, endsWith, between) y
            combina varias condiciones con operadores lógicos (and, or).
            Longitud máxima: 5120 caracteres.
          examples:
            simple:
              summary: Filtro simple
              description: Filtra tenants por nombre que contiene texto.
              value: '{"field": "name", "op": "contains", "value": "production"}'
            complex-and:
              summary: Filtro complejo con AND
              description: Filtra tenants por region y producto al mismo tiempo.
              value: >-
                {"and": [{"field": "region", "op": "eq", "value": "us-east"},
                {"field": "product_id", "op": "eq", "value":
                "507f1f77bcf86cd799439030"}]}
            complex-or-and:
              summary: Combinar condiciones OR y AND
              description: >-
                Coincide con múltiples regiones y aplica una restricción de
                nombre.
              value: >-
                {"and": [{"or": [{"field": "region", "op": "eq", "value":
                "us-east"}, {"field": "region", "op": "eq", "value":
                "eu-west"}]}, {"field": "name", "op": "contains", "value":
                "tenant"}]}
      responses:
        '200':
          description: >-
            Lista paginada de tenants recuperada correctamente. La respuesta
            incluye la bandera de paginación y el arreglo de datos de tenants.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TenantListItemV1ListResponseV1'
        '400':
          $ref: '#/components/responses/BadRequest'
          description: >-
            Solicitud incorrecta. Causas comunes: - Parámetros de paginación no
            válidos - Parámetro de ordenación no válido - Parámetros de filtro
            no válidos
        '401':
          $ref: '#/components/responses/Unauthorized'
          description: No autorizado - se requiere autenticación
        '404':
          $ref: '#/components/responses/NotFound'
          description: Organización no encontrada
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    TenantListItemV1ListResponseV1:
      type: object
      properties:
        has_next:
          type: boolean
          description: Indica si hay mas páginas disponibles
        data:
          type: array
          items:
            $ref: '#/components/schemas/TenantListItemV1'
      required:
        - has_next
        - data
    TenantListItemV1:
      type: object
      properties:
        id:
          type: string
          description: ID del tenant
        organization_id:
          type: string
          description: ID de la organización del tenant
        create_date:
          type: string
          format: date-time
          description: Fecha de creación (fecha y hora ISO 8601)
        name:
          type: string
          description: Nombre del tenant
        region:
          type: string
          description: Región/ID de región
        product_id:
          type: string
          nullable: true
          description: >-
            Identificador del producto (nullable si el tenant no tiene producto
            asignado)
        policy_id:
          type: string
          nullable: true
          description: >-
            Identificador de la política (nullable si el tenant no tiene
            política asignada)
      required:
        - id
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            code:
              type: string
            details:
              type: string
          required:
            - message
            - code
      required:
        - error
  responses:
    BadRequest:
      description: Solicitud incorrecta
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: No autorizado
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: No encontrado
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    TooManyRequests:
      description: Demasiadas solicitudes
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    InternalServerError:
      description: Error interno del servidor
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````