Get list of system applications visible to the user based on hierarchical organization permissions. Supports filtering by type, version, system, organization, and status.
Query String Examples:
- Single type filter:
?type=mail - Multiple types filter:
?type=mail&type=webtop - Status filter:
?status=unassigned - With pagination and sorting:
?page=1&page_size=50&sort_by=instance_of&sort_direction=asc - Combined filters:
?type=mail&status=assigned&organization_id=org_abc123 - Free-text search:
?search=cti.acme.example.itmatches the application name, its type, the system name and the FQDNs the application is published on (inventory_data.fqdns);%and_in the term are matched literally
Query parameters
-
Page number
Minimum value is
1. Default value is1. -
Items per page
Minimum value is
1, maximum value is200. Default value is20. -
Search term. For organizations (distributors, resellers, customers), searches across name, description, and all custom_data fields (vat, address, city, contact, email, phone, language, notes, etc.). For systems, also searches across ipv4_address, ipv6_address and the organization name.
Minimum length is
1. -
When true, each unassigned application also carries
suggested_organization, the customer of the hosting partner it is named after (hostnames, label or LDAP user domain) when exactly one stands out, otherwise the customer the hosting system belongs to. Nothing is assigned, the user confirms it.Default value is
false. -
Field to sort applications by
Values are
display_name,module_id,instance_of,version,status,created_at,updated_at,last_inventory_at,system_name,organization_name, orcertification_level. -
Sort direction
Values are
ascordesc. Default value isasc. -
Filter applications by type (instance_of). Supports multiple values.
-
Filter applications by version. Supports multiple values. Uses prefixed format "application:version" (e.g., "nethvoice:1.5.3") to avoid ambiguity when the same version exists for multiple application types.
-
Filter applications by system ID. Supports multiple values.
-
Filter applications by organization ID, matching the assigned organization or, for unassigned applications, the organization of the hosting system. Supports multiple values; combine with include_hierarchy to cover a whole subtree.
-
When true (and organization_id is provided), each organization_id is expanded to the organization plus all its descendants (a distributor's resellers and their customers, a reseller's customers) before filtering
Default value is
false. -
"Managed by" filter. Keeps the entries whose organization is one of these organization Logto IDs or sits anywhere in their subtree (a distributor's resellers and customers, a reseller's customers), the set the hierarchy counters of an organization count over. For applications, an unassigned application counts with the organization of its system. ANDed with organization_id, so the assigned company and Managed by combine. Supports multiple values. Results always stay within the caller's RBAC scope.
-
Filter applications by assignment status. Supports multiple values.
Values are
unassignedorassigned.
curl \
--request GET 'https://my.nethesis.it/backend/api/applications' \
--header "Authorization: Bearer $ACCESS_TOKEN"
{
"code": 200,
"message": "applications retrieved successfully",
"data": {
"applications": [
{
"id": "sys_abc123_mail1",
"module_id": "mail1",
"instance_of": "mail",
"name": "Nextcloud",
"source": "ghcr.io/nethserver/nextcloud",
"display_name": "Milan Office PBX",
"version": "1.2.3",
"status": "assigned",
"node_id": 1,
"node_label": "Worker Node",
"url": "https://cluster.example.com/cluster-admin/#/apps/mail1",
"notes": "Corporate email server for marketing department",
"has_errors": false,
"inventory_data": {
"nethvoice_proxy": "nethvoice-proxy1",
"internal_openldap": "mydomain.com"
},
"backup_data": {
"status": "success",
"destination": "BlackBlaze B1",
"completed_at": "2025-09-16T12:30:00Z",
"duration_seconds": 106,
"total_size_bytes": 9185231897,
"total_files": 5759
},
"services_data": {
"has_errors": true,
"error_count": 1,
"services": [
{
"name": "NethVoice CTI server",
"status": "error",
"error": "is not running",
"since": "2025-09-16T23:10:00Z"
}
]
},
"system": {
"id": "sys_abc123",
"name": "Production Cluster"
},
"organization": {
"id": "4405ffd0-0aca-44ef-bae2-c8545bce94f4",
"logto_id": "akkbs6x2wo82",
"name": "ACME Corp",
"description": "Main customer organization",
"type": "customer"
},
"suggested_organization": {
"id": "4405ffd0-0aca-44ef-bae2-c8545bce94f4",
"logto_id": "akkbs6x2wo82",
"name": "ACME Corp",
"description": "Main customer organization",
"type": "customer",
"source": "fqdn",
"matched": "cti.rei-srl.it"
},
"created_at": "2025-07-01T09:00:00Z",
"last_inventory_at": "2025-07-21T10:25:00Z"
}
],
"pagination": {
"page": 1,
"page_size": 20,
"total_count": 156,
"total_pages": 8,
"has_next": true,
"has_prev": false,
"next_page": 2,
"prev_page": 42,
"sort_by": "name",
"sort_direction": "asc"
}
}
}
{
"code": 401,
"message": "invalid token",
"data": {}
}
{
"code": 403,
"message": "insufficient permissions",
"data": {}
}