---
title: "List services"
method: GET
path: "/services"
tags: ["Service"]
---

# List services

`GET /services`

## Request

- Base URL: `https://demo.ziti.dev/edge/client/v1`
- URL: `https://demo.ziti.dev/edge/client/v1/services`
- Auth: one of:
  - API key in header `zt-session`
  - OAuth 2
    - Authorization code: `/oidc/authorize`
    - Token URL: `/oidc/token` scopes: `openid`
- TypeScript: <https://skmtc.dev/openziti/apis/ziti-edge-client/docs/services/get.ts> (a function with typed inputs; its response is checked against the schema)

Retrieves a list of config resources; supports filtering, sorting, and pagination. Requires admin access.

## Query parameters

- `limit` integer
- `offset` integer
- `filter` string
- `configTypes` string[]
- `roleFilter` string[]
- `roleSemantic` string

## Response `200`

A list of services

- ListServicesEnvelope
  - `data` ServiceDetail[], required
    - `_links` object, required: A map of named links
    - `createdAt` string, date-time, required
    - `id` string, required
    - `tags` Tags
    - `updatedAt` string, date-time, required
    - `config` object, required: map of config data for this service keyed by the config type name. Only configs of the types requested will be returned.
    - `configs` string[], required
    - `encryptionRequired` boolean, required: Describes whether connections must support end-to-end encryption on both sides of the connection. Read-only property, set at create.
    - `maxIdleTimeMillis` integer, required
    - `name` string, required
    - `permissions` DialBind[], required
    - `postureQueries` PostureQueries[], required
      - `isPassing` boolean, required
      - `policyId` string, required
      - `policyType` 'Dial' | 'Bind' | 'Invalid'
      - `postureQueries` PostureQuery[], required
        - `_links` object, required: A map of named links
        - `createdAt` string, date-time, required
        - `id` string, required
        - `tags` Tags
        - `updatedAt` string, date-time, required
        - `isPassing` boolean, required
        - `process` PostureQueryProcess
          - `osType` 'Windows' | 'WindowsServer' | 'Android' | 'iOS' | 'Linux' | 'macOS'
          - `path` string
        - `processes` PostureQueryProcess[]
          - `osType` 'Windows' | 'WindowsServer' | 'Android' | 'iOS' | 'Linux' | 'macOS'
          - `path` string
        - `promptGracePeriodSeconds` integer
        - `promptOnUnlock` boolean
        - `promptOnWake` boolean
        - `queryType` 'OS' | 'PROCESS' | 'DOMAIN' | 'MAC' | 'MFA' | 'PROCESS_MULTI', required
        - `timeout` integer, required
        - `timeoutAt` string, date-time, nullable
        - `timeoutRemaining` integer, required
    - `roleAttributes` string[], nullable, required: A set of strings used to loosely couple this resource to policies
    - `terminatorStrategy` string, required
  - `meta` Meta, required
    - `apiEnrollmentVersion` string
    - `apiVersion` string
    - `filterableFields` string[]
    - `pagination` Pagination
      - `limit` number, required
      - `offset` number, required
      - `totalCount` number, required

## Other responses

- `400`: The supplied request contains invalid fields or could not be parsed (json and non-json bodies). The error's code, message, and cause fields can be inspected for further information
- `401`: The supplied session does not have the correct access rights to request this resource
- `429`: The resource requested is rate limited and the rate limit has been exceeded
- `503`: The request could not be completed due to the server being busy or in a temporarily bad state

## Changes

- **2026-10-14** `f7b51eaafbbb`: 2 breaking
  - the response property `data/items/allOf[#/components/schemas/baseEntity]/tags` became nullable for the status `200`
  - the response property `data/items/allOf[subschema #2]/postureQueries/items/postureQueries/items/allOf[#/components/schemas/baseEntity]/tags` became nullable for the status `200`
- **2025-11-04** `e8b8c6cc7e72`: 4 info
  - added the optional property `data/items/allOf[subschema #2]/postureQueries/items/postureQueries/items/allOf[subschema #2]/promptGracePeriodSeconds` to the response with the `200` status
  - added the optional property `data/items/allOf[subschema #2]/postureQueries/items/postureQueries/items/allOf[subschema #2]/promptOnUnlock` to the response with the `200` status
  - added the optional property `data/items/allOf[subschema #2]/postureQueries/items/postureQueries/items/allOf[subschema #2]/promptOnWake` to the response with the `200` status
  - added the optional property `data/items/allOf[subschema #2]/postureQueries/items/postureQueries/items/allOf[subschema #2]/timeoutAt` to the response with the `200` status
- **2025-01-24** `19dfd92f02a2`: 1 info
  - added the non-success response with the status `503`
- …earlier changes not shown

[Operation history](https://skmtc.dev/openziti/apis/ziti-edge-client/changes/services/get.md)

---

[API](https://skmtc.dev/openziti/apis/ziti-edge-client.md) - [All operations](https://skmtc.dev/openziti/apis/ziti-edge-client/llms.txt) - [OpenAPI document](https://skmtc.dev/openziti/apis/ziti-edge-client/revisions/f7b51eaafbbb?raw)
