---
title: "List every service on an owned node"
method: GET
path: "/api/nodes/{node_id}/services"
tags: ["nodes"]
---

# List every service on an owned node

`GET /api/nodes/{node_id}/services`

## Request

- Base URL: `https://app.nerdit.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://app.nerdit.ai/api/nodes/{node_id}/services`
- Auth: none declared

Ask the node what it is running, and report all of it (D-NC3/D-NC4).

Between one and :data:`SERVICE_MAX_PAGES` bounded reads, following the
daemon's cursor, because one 200-row page does not fit under the client's
64 KiB cap. Nothing is stored on the way through (D-NC10) and nothing is
filtered out on the way back (D-NC13).

No entitlement gate on the read: ``OwnedNodePolicy`` has already refused
every node that is not the caller's own, and this is a page render. The
four verbs below are where standing is asked about, which is where the
existing surfaces ask about it too.

## Path parameters

- `node_id` string, uuid, required

## Response `200`

Successful Response

- NodeServicesView: Every service on one node, plus the two facts about the *reading* of it.
  - `node_id` string, uuid, required
  - `online` boolean, required
  - `manageable_reported` boolean, required
  - `services` NodeServiceView[], required
    - `operation` ServiceOperationView: Dated operation metadata; arbitrary errors and output never enter this view.
      - `identity` string, nullable
      - `phase` string, nullable
      - `action` string, nullable
      - `started_at` string, date-time, nullable
      - `updated_at` string, date-time, nullable
      - `failure` string, nullable
    - `name` string, required
    - `service` string, nullable
    - `project_id` string, nullable
    - `kind` string, nullable, required
    - `status` string, nullable, required
    - `image` string, nullable, required
    - `url` string, nullable, required
    - `last_deploy_phase` string, nullable, required
    - `last_deploy_action` string, nullable, required
    - `source_type` string, nullable, required
    - `source_repo` string, nullable, required
    - `source_ref` string, nullable, required
    - `manageable` boolean, required
    - `rollback_available` boolean, required
  - `truncated` boolean, required

## Other responses

- `401`: Unauthorized
- `404`: Not Found
- `422`: Validation Error
- `502`: Bad Gateway

---

[API](https://skmtc.dev/nerdit/apis/nerdit-cloud-web.md) · [All operations](https://skmtc.dev/nerdit/apis/nerdit-cloud-web/llms.txt) · [OpenAPI document](https://skmtc.dev/nerdit/apis/nerdit-cloud-web/revisions/06e3b44b58be?raw)
