Filtered Entity Retrieval

Description

This example shows how to retrieve entities filtering by a parameter and sorting by name.

Code

/**
 * Main function to retrieve and display entities
 * @param {Object} entityData - Context entity data
 * @param {Object} filters - Filters passed from the widget
 */

var builder = $api.entitiesSearchBuilder().limit(100).flattened();

// 1. Filter by parameter (assuming it comes in filters.generic or a specific field)
// Here we assume filters.generic contains a string to filter by name
if (filters && filters.generic) {
    builder.filter({
        like: {
            'provision.asset.name': filters.generic // Adjust field as needed (e.g., provision.device.name)
        }
    });
}

// 2. Sort by name
builder.sort([
    {
        column: 'provision.asset.name',
        direction: 'asc'
    }
]);

// 3. Execute query
var response = await builder.build().execute();

// 4. Transform results
var results = [];
if (response && response.data && response.data.entities) {
    response.data.entities.forEach(function(entity) {
            // Extract identifier (using bracket notation for flattened keys)
        var id = entity['provision.administration.identifier'] ? entity['provision.administration.identifier']._value._current.value : "Unknown";
        
        // Extract name (handle if it doesn't exist)
        var name = "N/A";
        if (entity['provision.asset.name']) {
            name = entity['provision.asset.name']._value._current.value;
        }

        results.push({
            identifier: id,
            name: name
        });
    });
}

return results;