---
title: "Clear all operator-tunable overrides on a Link Label"
method: DELETE
path: "/link/{workspace_id}/label/{label}/operator-tunables-overrides"
tags: ["LinkLabel"]
---

# Clear all operator-tunable overrides on a Link Label

`DELETE /link/{workspace_id}/label/{label}/operator-tunables-overrides`

Clear every label-level operator-tunable override in one call, restoring the label's resolved tunables to the static defaults (per-Agent overrides on individual `LinkAgent` records still layer on top). The resolved `operator_tunables` view is recomputed on the response. To clear a single override instead, PATCH that field to `null` via `PATCH /link/{workspace_id}/label/{label}`. Idempotent — clearing when no label-level overrides are set is a no-op success.

## Path parameters

- `workspace_id` string, required
- `label` string, required

## Headers

- `If-Match` string

## Response `200`

The updated Link Label (with the resolved `operator_tunables` view recomputed).

- LinkLabel — Represents a label used by a Link Agent and Server
  - `id` string — UUID for this Link Label
  - `created_time` integer — Time at which the Link Label was created
  - `label` string — The link label
  - `cloud_safe_canonical_name` string — The globally unique name for this label that is safe to use in FQDNs (based on label and workspace ID).
  - `client_certificate` string — The serialized X.509 certificate Link Agents use as their client identity on the legacy Link Tunnel mTLS path. Not used by mablnet: mablnet's `HostCredentials` are a separate JSON blob (workspace_id + label + host_id + issued_at + nonce); the mabl-deployment `HostAuthenticator` validates that blob via the `POST /link/mablnet/authorize/host` endpoint and maps it to `mablnet_tenant_id`. Also distinct from the per-Host peer QUIC certs mablnet's `CertificateAuthority` issues at join time, which embed `(tenantId, hostId)` in SAN OtherName extensions.
  - `server_certificate` string — The serialized certificate for Link Servers to use
  - `client_fingerprint` string — The fingerprint of the client certificate
  - `client_public_key` string — The public key of the client certificate
  - `server_fingerprint` string — The fingerprint of the server certificate
  - `server_public_key` string — The public key of the server certificate
  - `link_server_image_tag` string — If specified, overrides the default Link Server image tag in this environment
  - `link_server_size` 'small' | 'large' — The size of the Link Server, which determines its resource allocation
  - `termination_time` integer — The time this was terminated at
  - `terminated_by_id` string — The client id that terminated this link labe;l
  - `workspace_id` string — The workspace that owns this label, for `workspace`-owned tunnels. Also the identity the legacy Link Tunnel path and the per-label mTLS certs are keyed by. Unset for `company`-owned tunnels (which are mablnet-only) — read `owner_type`/`owner_id` for the canonical scope.
  - `owner_type` 'workspace' | 'company' | 'user' — The kind of entity a mablnet tunnel is scoped to — its "owner". `workspace` is the classic scope: one tunnel per workspace. `company` scopes a single tunnel to an entire company, so every workspace under that company shares one mablnet tenant (and one Link Agent fleet) instead of needing a tunnel each. `user` is a personal tunnel scoped to a single user, private to that user — its egress is the user's own machine, used to route a cloud test run through it. All three are mablnet-only: legacy Link Tunnel is always workspace-scoped.
  - `owner_id` string — The id of the owning entity — equals `workspace_id` for `workspace` tunnels, the company id for `company` tunnels.
  - `link_infrastructure_key` string — The link infrastructure cluster this tunnel lives on, recorded for personal (`user`-owned) tunnels only. Server-derived at announce from the owner's workspace associations and folded into the label's identity (the label is a hash of `machine_identity` and this key), so a placement change produces a new tunnel rather than mutating this one. Absent on workspace- and company-owned labels — their placement always derives live from the owning company's `link_infrastructure_key` — and on personal labels announced before placement existed, which live on the shared cluster.
  - `mablnet_tenant_id` integer — 32-bit mablnet tenant identifier assigned at LinkLabel creation. Derived deterministically from a stable hash of `<owner-key>:<label>` — where `<owner-key>` is the workspace id for `workspace` tunnels and `company:<company-id>` for `company` tunnels — truncated into the 32-bit unsigned range, with a defensive collision check against existing LinkLabels — on the unlikely event the hash collides with an already-allocated tenant id, the value is offset (by 1 or a small random delta) until it lands in an unused slot. The chosen value is immutable for the lifetime of the LinkLabel. Used as the `tenantId` in mablnet's protocol. Populated lazily for legacy labels during the migration cutover; absent until the LinkLabel has been migrated or recreated. The legacy mablnet documentation calls this the "tenant id"; mabl's customer-facing name for the same concept is "Link label", and this field ties the two together.
  - `mablnet_tenant_id_hex` string — Zero-padded 8-character lowercase hex form of `mablnet_tenant_id`, e.g. `bee85e2b`. Provided for log/grep/observability ergonomics; the numeric and hex forms always agree (both written in the same pass).
  - `operator_tunables` LinkAgentOperatorTunables — Operator-tunable parameters for a running Link Agent. Used in two contexts: as the read-only resolved view (`operator_tunables`) and as the sparse overrides (`operator_tunables_overrides`). In the overrides context absent fields fall through to the next merge layer; `null` explicitly clears the override (`x-dao-apply-nulls: true` per-field). In the resolved-view context the api populates every field by merging static defaults (in `LinkLabelServiceImpl`) with label-level overrides and (on `LinkAgent`) agent-level overrides.
    - `mablnet_min_carriers` integer, nullable — Steady-state target carrier count for the mablnet Host. PATCH `null` to clear an override and fall back to the next merge layer.
    - `mablnet_max_carriers` integer, nullable — Advisory ceiling — overlap budget for in-flight carrier churn.
    - `mablnet_join_timeout` string, duration, nullable — Per-carrier-join timeout. Tighten only when investigating a misbehaving LB.
    - `mablnet_telemetry_export_interval` string, duration, nullable — Cadence at which the Agent-side SDK MeterProvider flushes to the mablnet-metrics-collector. Drop to ~`PT5S` during incidents.
    - `mablnet_carrier_recycle_interval` string, duration, nullable — Period between proactive carrier-recycle ticks: the worker retires its oldest carrier (make-before-break, so existing QUIC sessions migrate without disruption) and the LB redistributes the replacement across the Router fleet. Default `PT60M`. Set `PT0S` to disable proactive recycle (the worker still retires unhealthy carriers). PATCH `null` to clear an override.
    - `mablnet_carrier_recycle_jitter` string, duration, nullable — Random offset added to the first carrier-recycle tick, to desync the fleet so recycles don't bunch into a thundering-herd reconnect. Default `PT30M`. No effect when `mablnet_carrier_recycle_interval` is `PT0S`.
    - `mablnet_allowed_protocols` LinkAgentProtocolEnum[], nullable — The set of mablnet carrier protocols this tunnel is allowed to use (default `[mablnet_quic, mablnet_wss]`). This is the mabl-controlled *policy* — which carriers are permitted — NOT a try-order: order here is not significant. Each host selects the best available protocol from this set (and the fallback order among them) using local signals the operator can't know ahead of time — UDP socket-buffer clamp, an HTTP proxy in the path, live reachability. Set `[mablnet_wss]` to disable QUIC for a tunnel on a known UDP-blocked network, or `[mablnet_quic]` to require QUIC. Only `mablnet_*` values are valid; the worker rebuilds on change. PATCH `null` to clear an override.
    - `mablnet_carrier_connect_timeouts` object, nullable — Per-protocol carrier establishment deadline in milliseconds, keyed by `LinkAgentProtocolEnum` value (default `{mablnet_quic: 8000, mablnet_wss: 45000}`): how long the worker waits for a carrier on that protocol to JOIN before falling back to the next protocol the host tries (from `mablnet_allowed_protocols`). The deadline is intrinsic to the protocol — QUIC fast-fails to escape silently-blackholing networks; WSS is patient — and is independent of order. A protocol absent from the map uses the worker's built-in default. PATCH `null` to clear the override.
    - `mablnet_client_pool_size` integer, nullable — Multi-carrier peer-pool size for CLIENT legs connecting to this tunnel. Deliberately has NO server-side default: unset means each client auto-selects a fixed pool size from its own machine's resources (total memory, capped by cores) — the api can't know them. An explicit value pins the size for every client of the tunnel: `1` = pool off, N > 1 boots N mablnet Hosts per client — one slot identity each, each with its own carriers — and spreads connections across them, lifting the one-pinned-carrier-per-peer throughput cap for many-connection workloads (browser tests). Does not speed up a single bulk stream, and the Link Agent itself is unaffected — this rides to clients on the resolved tunnel (`client_pool_size`). Consumers treat explicit values < 1 as 1; keep N modest (2-4). PATCH `null` to restore client auto-selection.
    - `ready_heartbeat_interval` string, duration, nullable — Heartbeat cadence once the Agent reaches `ready` status. While the Agent is still bringing up the legacy / mablnet stacks (status != `ready`) it heartbeats at the hard-coded 10 s tick — fast feedback is what ops + the UI need during startup, and the startup window is short. Once `ready` the cadence drops to this value (default `PT60S`); steady-state Agents mostly only need the heartbeat to guard against sudden death (laptop suspend, network drop) and that doesn't repay 10 s × every Agent in the fleet of api-side load. The Agent reverts to 10 s if `status` ever leaves `ready`. Must stay below the api's dead-agent cleanup threshold (10 min) — `PT300S` (5 min) is a safe upper bound.
    - `agent_log_level` 'trace' | 'debug' | 'info' | 'warn' | 'error', nullable — Root logger level. Applied in-place — no Host rebuild. Deliberately has no server-side default, and should not be given one. The Agent applies this to its process-global root logger on the first announce, which happens *after* it has applied the level from its own config file / command line — so any value set here silently overrides what the customer configured locally. Left unset (the default) the local config stays authoritative; set explicitly, it means an operator chose this level for this tunnel and it wins.
  - `operator_tunables_overrides` LinkAgentOperatorTunables — Operator-tunable parameters for a running Link Agent. Used in two contexts: as the read-only resolved view (`operator_tunables`) and as the sparse overrides (`operator_tunables_overrides`). In the overrides context absent fields fall through to the next merge layer; `null` explicitly clears the override (`x-dao-apply-nulls: true` per-field). In the resolved-view context the api populates every field by merging static defaults (in `LinkLabelServiceImpl`) with label-level overrides and (on `LinkAgent`) agent-level overrides.
    - `mablnet_min_carriers` integer, nullable — Steady-state target carrier count for the mablnet Host. PATCH `null` to clear an override and fall back to the next merge layer.
    - `mablnet_max_carriers` integer, nullable — Advisory ceiling — overlap budget for in-flight carrier churn.
    - `mablnet_join_timeout` string, duration, nullable — Per-carrier-join timeout. Tighten only when investigating a misbehaving LB.
    - `mablnet_telemetry_export_interval` string, duration, nullable — Cadence at which the Agent-side SDK MeterProvider flushes to the mablnet-metrics-collector. Drop to ~`PT5S` during incidents.
    - `mablnet_carrier_recycle_interval` string, duration, nullable — Period between proactive carrier-recycle ticks: the worker retires its oldest carrier (make-before-break, so existing QUIC sessions migrate without disruption) and the LB redistributes the replacement across the Router fleet. Default `PT60M`. Set `PT0S` to disable proactive recycle (the worker still retires unhealthy carriers). PATCH `null` to clear an override.
    - `mablnet_carrier_recycle_jitter` string, duration, nullable — Random offset added to the first carrier-recycle tick, to desync the fleet so recycles don't bunch into a thundering-herd reconnect. Default `PT30M`. No effect when `mablnet_carrier_recycle_interval` is `PT0S`.
    - `mablnet_allowed_protocols` LinkAgentProtocolEnum[], nullable — The set of mablnet carrier protocols this tunnel is allowed to use (default `[mablnet_quic, mablnet_wss]`). This is the mabl-controlled *policy* — which carriers are permitted — NOT a try-order: order here is not significant. Each host selects the best available protocol from this set (and the fallback order among them) using local signals the operator can't know ahead of time — UDP socket-buffer clamp, an HTTP proxy in the path, live reachability. Set `[mablnet_wss]` to disable QUIC for a tunnel on a known UDP-blocked network, or `[mablnet_quic]` to require QUIC. Only `mablnet_*` values are valid; the worker rebuilds on change. PATCH `null` to clear an override.
    - `mablnet_carrier_connect_timeouts` object, nullable — Per-protocol carrier establishment deadline in milliseconds, keyed by `LinkAgentProtocolEnum` value (default `{mablnet_quic: 8000, mablnet_wss: 45000}`): how long the worker waits for a carrier on that protocol to JOIN before falling back to the next protocol the host tries (from `mablnet_allowed_protocols`). The deadline is intrinsic to the protocol — QUIC fast-fails to escape silently-blackholing networks; WSS is patient — and is independent of order. A protocol absent from the map uses the worker's built-in default. PATCH `null` to clear the override.
    - `mablnet_client_pool_size` integer, nullable — Multi-carrier peer-pool size for CLIENT legs connecting to this tunnel. Deliberately has NO server-side default: unset means each client auto-selects a fixed pool size from its own machine's resources (total memory, capped by cores) — the api can't know them. An explicit value pins the size for every client of the tunnel: `1` = pool off, N > 1 boots N mablnet Hosts per client — one slot identity each, each with its own carriers — and spreads connections across them, lifting the one-pinned-carrier-per-peer throughput cap for many-connection workloads (browser tests). Does not speed up a single bulk stream, and the Link Agent itself is unaffected — this rides to clients on the resolved tunnel (`client_pool_size`). Consumers treat explicit values < 1 as 1; keep N modest (2-4). PATCH `null` to restore client auto-selection.
    - `ready_heartbeat_interval` string, duration, nullable — Heartbeat cadence once the Agent reaches `ready` status. While the Agent is still bringing up the legacy / mablnet stacks (status != `ready`) it heartbeats at the hard-coded 10 s tick — fast feedback is what ops + the UI need during startup, and the startup window is short. Once `ready` the cadence drops to this value (default `PT60S`); steady-state Agents mostly only need the heartbeat to guard against sudden death (laptop suspend, network drop) and that doesn't repay 10 s × every Agent in the fleet of api-side load. The Agent reverts to 10 s if `status` ever leaves `ready`. Must stay below the api's dead-agent cleanup threshold (10 min) — `PT300S` (5 min) is a safe upper bound.
    - `agent_log_level` 'trace' | 'debug' | 'info' | 'warn' | 'error', nullable — Root logger level. Applied in-place — no Host rebuild. Deliberately has no server-side default, and should not be given one. The Agent applies this to its process-global root logger on the first announce, which happens *after* it has applied the level from its own config file / command line — so any value set here silently overrides what the customer configured locally. Left unset (the default) the local config stays authoritative; set explicitly, it means an operator chose this level for this tunnel and it wins.
  - `worker_release_override` MablnetWorkerReleaseOverride — Per-tenant override of the worker release a Link Label receives, set by a mabl operator (not customer-writable). Consulted by `GET /link/mablnet/manifest` before the channel's staged rollout: `channel` (when set) replaces the channel the Host requested; `version` (when set) pins that exact version, bypassing the staged percentage. Either or both may be set; an absent override means the tenant follows the normal channel rollout. Used to give one customer an experimental or branch build to confirm a fix, then cleared once the version is promoted channel-wide via `PUT /link/mablnet/channels/{channel}/current`.
    - `channel` string — Channel this tenant follows instead of the one its Host requests (e.g. `latest`, `stable`, `branch:<name>`). Unset = use the requested channel. The effective channel is alias-resolved, so a channel alias applies here too.
    - `version` string — Exact worker version pinned for this tenant, bypassing the staged rollout. Unset = follow the (effective) channel's rollout.

## Other responses

- `400` — Invalid or missing parameter
- `401` — User not authenticated
- `403` — User not authorized
- `404` — Link Label not found
- `412` — If-Match precondition failed (ETag mismatch).
- `default` — Unknown error

---

[API](https://skmtc.net/mabl/apis/mabl-api.md) · [All operations](https://skmtc.net/mabl/apis/mabl-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mabl/mabl-api/revisions/d0fc0114da66/schema)
