Relacionado

Los filtros son tan potentes que es posible aplicar filtros sobre entidades relacionadas.

Siempre que veas Related Filter Attribute en la columna Attribute Type es una señal de que se pueden utilizar filtros relacionados.

Cada entidad tiene una sección que enumera todos los filtros posibles por entidad. Ten en cuenta que no todos los atributos del Objecto de una entidad tienen filtros.

📘

¿Qué es un Filtro Relacionado?

Un Filtro Relacionado es básicamente un filtro aplicado a un atributo (de una entidad). ¿Suena raro? Es raro.

Veamos un ejemplo:

Un Device tiene un atributo organization ya que puede ser asignado a una sola Organization. Recuerda los filtros de una Organization.

Por lo tanto, puedes filtrar para un Device y, basado en el filtro, para un campo específico de la Organization al mismo tiempo. Para ello, sigue el siguiente esquema: <entity_attribute>__<entity_attribute_filter>.

Prácticamente significa solicitar uno o más Devices, que cumplan la condición de un campo específico. En nuestro caso son aquellos Devices que están asignados a una Organization con un nombre específico.

🚧

Objeto Return

Por favor, ten en cuenta que los Filtros Relacionados pretenden limitar (o filtrar) la salida de ese endpoint específico.

En otras palabras, si la petición se hace a api/v2.0/devices/ utilizando un Filtro Relacionado de Variables como este: api/v2.0/devices/?variables__unit=km, simplemente significa que la petición pretende obtener todos los Devices que contengan variables con una synthetic unit.

(No significa que la petición obtenga las variables que tienen "synthetic" como unidad).

GET  https://api.netux.com/api/v2.0/devices/?organization__name=organization_name

// Retorna Array 'results' con devices que son asignados a 'organization_name'
{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "organization": {
                "url": "https://api.netux.com/api/v2.0/organizations/5e5427ea1d84725ac9d80f8d",
                "_deprecated_id": 49886,
                "id": "5e5427ea1d84725ac9d80f8d",
                "label": "organization_name",
                "name": "organization_name"
            },
            ...
        },
        {
            "organization": {
                "url": "https://api.netux.com/api/v2.0/organizations/5e5427ea1d84725ac9d80f8d",
                "_deprecated_id": 49886,
                "id": "5e5427ea1d84725ac9d80f8d",
                "label": "organization_name",
                "name": "organization_name"
            },...
        }
    ]
}

El mismo principio puede aplicarse a otros tipos de Variables, como Boolean, Text, o Number.

GET https://api.netux.com/api/v2.0/devices/?organization__name__startswith=comp

{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "organization": {
                "url": "https://api.netux.com/api/v2.0/organizations/5e5427ea1d84725ac9d80f8d",
                "_deprecated_id": 49886,
                "id": "5e5427ea1d84725ac9d80f8d",
                "label": "company_1",
                "name": "company_1"
            },
            ...
        },
        {
            "organization": {
                "url": "https://api.netux.com/api/v2.0/organizations/5e5427ea1d84725ac9d80f8d",
                "_deprecated_id": 49886,
                "id": "5e5427ea1d84725ac9d80f8d",
                "label": "company_2",
                "name": "company_2"
            },
            ...
        }
    ]
}