The updater expects a JSON response from the update server; you can find various implementation details and examples below. The updater as a client is quite resilient; every property/field marked as optional/nullable can be omitted entirely in the response. In theory you don't even need to provide any releases in the response, just make it an empty array and you're good to go.
The response types (classes, enums) are available via the example server implementation.
You can find the C++ types used here.
Swagger API documentation
Check out the Swagger documentation for the example implementations.
An ever growing collection of example configurations is hosted here.