Please note that when using API Token authentication this header must not be set!
All clients must set the
X-Client-Version header to their applicable Client ID and Version, like
MyCustomerApp/1.0.0. The header
is used for identifying the applicable tenant to enable multi-tenancy, as well as for enabling the expiration of outdated clients.
410 GoneHTTP response code. Upon this response clients must show a notification to the user to upgrade their app.
400HTTP response with the
403HTTP response code will be returned with the
client_role_mismatch. It's up to the client to handle this specific status and error code combination gracefully.
All clients must set the standard
Accept-Language HTTP header explicitly and manually
to the IETF language tag (
or ISO639-1 (
en) locale chosen
by the client for client-side message localization.
The reason for this is aligning translated messages stored and shown on the
client side with those from the backend, most notably on validation error messages. For
example if a client supports only
de but the device is actually set
the client does not explicitly state which language it picked the backend might make a
differing choice based on available backend languages or configured default fallback
Note that this does not affect "core" translations, which should not be fetched from the backend dynamically but be defined and used in the clients themselves.
Additionally the backend stores the user's current language to use for server-side issued user-facing communication like e-mails and push notifications.
From the total pool of supported languages, only a subset is enabled for any tenant, and one of these is the default locale.
Clients must use only available locales for the tenant, so if a tenant supports
has a default of
fr is also a M-TOOLS supported language a client on a device configured to be
locale must then fall back to the default locale
fr is not in the enabled list.
For mobile apps, the default and supported locales are baked in the apps at compile time currently. For web clients the frontend configuration endpoint is used
Many resources contain images URLs that should be displayed to the user. We host these images through the Cloudinary CDN at the highest available resolution and quality, i.e. collecting SVG images where possible and so on.
In order for clients to be able to use those images at the contextually required size and format cloudinary transformations must be utilized:
Take for example this c