Services

Update a service

Updates an existing service. All binding validation rules from service creation apply here as well.

Binding Validation Rules

  • Cross-host validation: All bindings must reference ports/interfaces that belong to the service's host. Bindings referencing entities from other hosts will be rejected.
  • Deduplication: Duplicate bindings are automatically deduplicated.
  • All-interfaces precedence: If a port binding with ip_address_id: null (all ip_addresses) is included, any specific-interface bindings for the same port are automatically removed.
  • Conflict detection: Interface bindings conflict with port bindings on the same interface.
put/api/v1/services/{id}

Path parameters

idstring uuid required

Service ID

Request body

host_idstring uuid required
namestring required
network_idstring uuid required
positioninteger required

Position of this service in the host's service list (for ordering)

service_definitionstring required
tagsstring[] required
created_atstring date-time required
first_discovery_idstring uuid nullable
idstring uuid required
last_discovery_idstring uuid nullable
last_seen_atstring date-time
lineage_idstring uuid nullable
updated_atstring date-time required
valid_fromstring date-time
valid_tostring date-time nullable

Example request

{
  "bindings": [
    {
      "created_at": "2026-07-23T16:42:02.473192Z",
      "first_discovery_id": null,
      "id": "a8529d83-7ca2-4ba2-8f13-59f64235153a",
      "ip_address_id": "550e8400-e29b-41d4-a716-446655440005",
      "last_discovery_id": null,
      "last_seen_at": "2026-07-23T16:42:02.473192Z",
      "lineage_id": null,
      "network_id": "550e8400-e29b-41d4-a716-446655440002",
      "port_id": "550e8400-e29b-41d4-a716-446655440006",
      "service_id": "550e8400-e29b-41d4-a716-446655440007",
      "type": "Port",
      "updated_at": "2026-07-23T16:42:02.473192Z",
      "valid_from": "2026-07-23T16:42:02.473192Z",
      "valid_to": null
    }
  ],
  "created_at": "2026-01-15T10:30:00Z",
  "first_discovery_id": null,
  "host_id": "550e8400-e29b-41d4-a716-446655440003",
  "id": "550e8400-e29b-41d4-a716-446655440007",
  "last_discovery_id": null,
  "last_seen_at": "2026-01-15T10:30:00Z",
  "lineage_id": null,
  "name": "nginx",
  "network_id": "550e8400-e29b-41d4-a716-446655440002",
  "position": 0,
  "service_definition": "Zigbee2MQTT",
  "source": {
    "type": "Manual"
  },
  "tags": [],
  "updated_at": "2026-01-15T10:30:00Z",
  "valid_from": "2026-01-15T10:30:00Z",
  "valid_to": null,
  "virtualization": null
}

Response

Service updated

errorstring nullable
successboolean required

Example response

{
  "data": {
    "bindings": [
      {
        "created_at": "2026-07-23T16:42:02.487945Z",
        "first_discovery_id": null,
        "id": "bb435bf7-e9c4-49ca-817e-5f14e7371d99",
        "ip_address_id": "550e8400-e29b-41d4-a716-446655440005",
        "last_discovery_id": null,
        "last_seen_at": "2026-07-23T16:42:02.487945Z",
        "lineage_id": null,
        "network_id": "550e8400-e29b-41d4-a716-446655440002",
        "port_id": "550e8400-e29b-41d4-a716-446655440006",
        "service_id": "550e8400-e29b-41d4-a716-446655440007",
        "type": "Port",
        "updated_at": "2026-07-23T16:42:02.487945Z",
        "valid_from": "2026-07-23T16:42:02.487945Z",
        "valid_to": null
      }
    ],
    "created_at": "2026-01-15T10:30:00Z",
    "first_discovery_id": null,
    "host_id": "550e8400-e29b-41d4-a716-446655440003",
    "id": "550e8400-e29b-41d4-a716-446655440007",
    "last_discovery_id": null,
    "last_seen_at": "2026-01-15T10:30:00Z",
    "lineage_id": null,
    "name": "nginx",
    "network_id": "550e8400-e29b-41d4-a716-446655440002",
    "position": 0,
    "service_definition": "Zigbee2MQTT",
    "source": {
      "type": "Manual"
    },
    "tags": [],
    "updated_at": "2026-01-15T10:30:00Z",
    "valid_from": "2026-01-15T10:30:00Z",
    "valid_to": null,
    "virtualization": null
  },
  "meta": {
    "api_version": 1,
    "server_version": "0.17.5"
  }
}

Changes