API Reference
=============


The module :mod:`iqm.data_definitions` contains autogenerated Python code for `Protobuf <https://protobuf.dev/>`_
prototypes.
The prototypes are used in client--server communication between IQM Station Control and it's clients.
Users are not expected to interact with this module directly, except when integrating custom client libraries against
IQM's QCCSW.

The module :mod:`iqm.models` contains the Python-native representations of the some of the prototypes.
Users of ``iqm-pulse`` might encounter these.


.. autosummary::
   :toctree: api
   :template: autosummary-module-template.rst
   :recursive:

   iqm.models
   iqm.data_definitions

.. note::

    The API documentation of :mod:`iqm.data_definitions` is generated automatically based on the raw ``.proto`` files
    that define the cross-platform communication protocols.
    As such, the minimal HTML documentation is missing the typical docstrings.
    However, the Python module :mod:`iqm.data_definitions` includes Python stub files (``.pyi``), which include
    proper type hints and docstrings, so they are displayed in IDEs.
    Furthermore, the HTML documentation of the ``_pb2`` modules include the ``.proto`` source files,
    including docstrings, so that low-level integrators can use them generate compatible code for their chosen language.
