openwrt-iac / uapi / docs / 3.0.0 / uapi deprecations log

uapi deprecations log

Canonical list of wire-surface fields that have been deprecated but are still accepted during a deprecation window. Each entry lives here from the release that deprecated it through the release that removes it.

A field is in the table below if and only if it is currently accepted-but-deprecated. Once removed (in a major release), the entry moves to the "Removed in past releases" section. Contract changes that are not field deprecations, and so cannot be expressed as a table row, are announced under "Announced response-shape changes".

Policy: a deprecation in a minor release means both forms (old and new) are accepted; the old form is marked deprecated: true in build/openapi.json so codegen tools surface a warning; the removal of the old form happens no sooner than the next major. One exception to the marker, explained under "How to migrate": a field that is not disappearing but losing only its write half cannot say so through that flag, because it has no read/write split.

Active deprecations

None. 3.0.0 removed everything 2.5.0 had announced, and nothing new is deprecated yet.

A field belongs in this section if and only if it is currently accepted-but-deprecated. Once removed in a major it moves to Removed in past releases below.

How to migrate

For each deprecated input field your client sends, switch to the replacement column. uapi accepts both during the window, so the migration can be staged: update writes first, observe nothing breaks, then drop the old field. Reads are unaffected (response shape unchanged during the window).

The OpenAPI spec at /openapi.json carries deprecated: true on every deprecated request field. Codegen tools that respect that flag (openapi-generator, oapi-codegen, etc.) will emit warnings in the generated client when you regenerate; that's the signal your client has surface area to migrate.

network/interfaces.ipaddr was the exception, and deliberately so. OpenAPI's deprecated is a property-level flag with no read/write split, so setting it would have told a generator the field was disappearing when in fact it survives as a read field and only lost its write half. The v3 spec says it precisely: readOnly: true in the response schema, and no ipaddr at all in the request one. While the window was open the announcement lived in this table and in the field's own description, which was the honest signal available.

Announced response-shape changes

None. See Removed in past releases for what 3.0.0 carried out.

Removed in past releases

3.0.0

Field Replaced by Deprecated since Removed in
network/interfaces.name (request input) network/interfaces.id 2.2.0 3.0.0
dhcp/hosts.mac (request and response) dhcp/hosts.macs 2.5.0 3.0.0
dhcp/hosts.mac_aliases (request and response) dhcp/hosts.macs 2.5.0 3.0.0

Also removed in 3.0.0, announced as response-shape changes rather than as ledger rows because neither survived as a read:

See docs/migration-v2-to-v3.md for the full upgrade path.