GET /applications

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:

  1. Single type filter: ?type=mail
  2. Multiple types filter: ?type=mail&type=webtop
  3. Status filter: ?status=unassigned
  4. With pagination and sorting: ?page=1&page_size=50&sort_by=instance_of&sort_direction=asc
  5. Combined filters: ?type=mail&status=assigned&organization_id=org_abc123

Query parameters

  • page integer

    Page number

    Minimum value is 1. Default value is 1.

  • page_size integer

    Items per page

    Minimum value is 1, maximum value is 100. Default value is 20.

  • sort_by string

    Field to sort applications by

    Values are display_name, module_id, instance_of, version, status, created_at, updated_at, last_inventory_at, system_name, or organization_name.

  • sort_direction string

    Sort direction

    Values are asc or desc. Default value is asc.

  • type array[string]

    Filter applications by type (instance_of). Supports multiple values.

  • version array[string]

    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.

  • system_id array[string]

    Filter applications by system ID. Supports multiple values.

  • organization_id array[string]

    Filter applications by organization ID. Supports multiple values.

  • status array[string]

    Filter applications by assignment status. Supports multiple values.

    Values are unassigned or assigned.

Responses

  • 200 application/json

    Applications retrieved successfully

    Hide response attributes Show response attributes object
    • code integer
    • message string
    • data object
      Hide data attributes Show data attributes object
      • applications array[object]

        Simplified application representation for list views

        Hide applications attributes Show applications attributes object
        • id string

          Unique application identifier

        • module_id string

          Module identifier

        • instance_of string

          Application type

        • name string | null

          Human-readable label from inventory (e.g., "Nextcloud")

        • source string | null

          Image source from inventory (e.g., "ghcr.io/nethserver/nextcloud")

        • display_name string | null

          User-friendly name set in NS8 and inherited from inventory

        • version string | null

          Application version

        • status string

          Assignment status

          Values are unassigned or assigned.

        • node_id integer | null

          Node ID within the cluster

        • node_label string | null

          Node label from inventory (e.g., Leader Node, Worker Node)

        • url string | null

          Custom URL for the application

        • notes string | null

          Custom notes or description for the application

        • has_errors boolean

          Whether the application has service errors

        • inventory_data object | null

          Raw inventory data from the module (e.g., NethVoice proxy, Open LDAP domain, etc.)

        • backup_data object | null

          Backup status information

        • services_data object | null

          Service health status information with errors list

        • system object

          Minimal system info for application responses

          Hide system attributes Show system attributes object
          • id string

            System ID

          • name string

            System name

        • organization object

          Simplified organization for selection and assignment

          Hide organization attributes Show organization attributes object
          • id string

            Database UUID of the organization (or "no_org" for unassigned filter)

          • logto_id string

            Logto organization ID (or "no_org" for unassigned filter)

          • name string

            Organization name

          • description string

            Organization description

          • type string

            Organization type ("unassigned" is the special "No organization" filter entry)

            Values are owner, distributor, reseller, customer, or unassigned.

        • created_at string(date-time)

          Record creation timestamp

        • last_inventory_at string(date-time) | null

          Last inventory collection timestamp

      • pagination object
        Hide pagination attributes Show pagination attributes object
        • page integer

          Current page number

          Minimum value is 1.

        • page_size integer

          Number of items per page

          Minimum value is 1, maximum value is 100.

        • total_count integer

          Total number of items

          Minimum value is 0.

        • total_pages integer

          Total number of pages

          Minimum value is 0.

        • has_next boolean

          Whether there is a next page

        • has_prev boolean

          Whether there is a previous page

        • next_page integer | null

          Next page number if available

        • prev_page integer | null

          Previous page number if available

        • sort_by string | null

          Field used for sorting

        • sort_direction string | null

          Sort direction

          Values are asc or desc.

  • 401 application/json

    Unauthorized - invalid or missing token

    Hide response attributes Show response attributes object
    • code integer
    • message string
    • data object | null
  • 403 application/json

    Forbidden - insufficient permissions

    Hide response attributes Show response attributes object
    • code integer
    • message string
    • data object | null
GET /applications
curl \
 --request GET 'https://api.your-domain.com/api/applications' \
 --header "Authorization: Bearer $ACCESS_TOKEN"
Response examples (200)
{
  "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",
          "total_files": 5759,
          "completed_at": "2025-09-16T12:30:00Z",
          "duration_seconds": 106,
          "total_size_bytes": 9185231897
        },
        "services_data": {
          "services": [
            {
              "name": "NethVoice CTI server",
              "error": "is not running",
              "since": "2025-09-16T23:10:00Z",
              "status": "error"
            }
          ],
          "has_errors": true,
          "error_count": 1
        },
        "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"
        },
        "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"
    }
  }
}
Response examples (401)
{
  "code": 401,
  "message": "invalid token",
  "data": {}
}
Response examples (403)
{
  "code": 403,
  "message": "insufficient permissions",
  "data": {}
}