Raritan / Server Technology Xerus™ PDU JSON-RPC API: IDL Interface Versioning

Raritan / Server Technology Xerus™ PDU JSON-RPC API

IDL Interface Versioning

Interfaces defined in IDL have version numbers that are incremented whenever the interface is changed. Version numbers consist of three numbers appended to the interface identifier with underscores, for example `sensors.Logger_2_3_7`. If an interface identifier does not contain an explicitly specified version number the version defaults to `_1_0_0`.

The three version components signify different types of interface changes:

- The last component (minor version) is incremented whenever an interface is changed in a backwards-compatible manner. Compatible means that an existing client program will continue to work with a server implementing the newer interface version.

  Examples for compatible changes are new methods or added fields in structures that are sent from the server to the client (as method return value or out parameter).

- The first component (major version) is incremented when an interface change breaks compatibility. Existing client programs may need to be adapted to work with a server implementing the newer interface.

  Examples for incompatible changes are changed method parameters or extra fields in structures that are sent from client to server (in parameter).

- The middle component (sub-major version) is incremented whenever a referenced interface is changed in an incompatible manner.

  A client program that uses only methods of the interface itself will continue to work unchanged. A program that retrieves references to other interfaces from this one may need to be reviewed and updated.

  For example, a change from `Pdu_3_0_0` to `Pdu_3_1_0` indicates that a client program using only methods of the Pdu interface will continue to work without changes. The Outlet interface may have been changed in an incompatible manner, though, so references returned by getOutlets() may no longer work as expected.

## History of Interface Changes

A full list of interface changes in all firmware releases can be found in Changelog.txt.

## Latest Version Numbers

A list of current version numbers for all supported interfaces is available as interface_versions.txt.