ScanopyScanopy
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 interface_id: null (all interfaces) 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}
Authorization<token>

User API key (Bearer scp_u_...). Create in Platform > API Keys.

In: header

Path Parameters

id*string

Service ID

Formatuuid

Request Body

application/json

bindings*
host_id*string
Formatuuid
name*string
network_id*string
Formatuuid
position*integer

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

Formatint32
service_definition*string
source*||||

Will be automatically set to Manual for creation through API

tags*array<string>
virtualization?null|

Response Body

application/json

application/json

application/json

curl -X PUT "https://loading/api/v1/services/497f6eca-6276-4993-bfeb-53cbbbba6f08" \  -H "Content-Type: application/json" \  -d '{    "bindings": [      {        "created_at": "2026-01-12T14:59:13.659334Z",        "id": "17e02403-98fe-4406-8133-df42a43de7de",        "interface_id": "550e8400-e29b-41d4-a716-446655440005",        "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-01-12T14:59:13.659334Z"      }    ],    "created_at": "2026-01-15T10:30:00Z",    "host_id": "550e8400-e29b-41d4-a716-446655440003",    "id": "550e8400-e29b-41d4-a716-446655440007",    "name": "nginx",    "network_id": "550e8400-e29b-41d4-a716-446655440002",    "position": 0,    "service_definition": "Remote Desktop",    "source": {      "type": "Manual"    },    "tags": [],    "updated_at": "2026-01-15T10:30:00Z",    "virtualization": null  }'
{
  "meta": {
    "api_version": 1,
    "server_version": "0.13.5"
  },
  "success": true,
  "data": {
    "bindings": [
      {
        "created_at": "2026-01-12T14:59:13.664906Z",
        "id": "942cd687-2e6b-488e-a36d-b40f5608a386",
        "interface_id": "550e8400-e29b-41d4-a716-446655440005",
        "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-01-12T14:59:13.664906Z"
      }
    ],
    "created_at": "2026-01-15T10:30:00Z",
    "host_id": "550e8400-e29b-41d4-a716-446655440003",
    "id": "550e8400-e29b-41d4-a716-446655440007",
    "name": "nginx",
    "network_id": "550e8400-e29b-41d4-a716-446655440002",
    "position": 0,
    "service_definition": "Remote Desktop",
    "source": {
      "type": "Manual"
    },
    "tags": [],
    "updated_at": "2026-01-15T10:30:00Z",
    "virtualization": null
  },
  "error": "string"
}
{
  "success": true,
  "error": "string"
}
{
  "success": true,
  "error": "string"
}