Configuring Moderna Sistemas as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Moderna Sistemas option from the list of connectors. Click Next and you’ll be prompted to add your access.1. Add account access
The connector authenticates with the username and password of an integration user that Moderna creates for you (or a Client ID and Client Secret for the v2 API). The following configurations are available:-
API URL: the address of the ModernaNet integration API, provided by Moderna when they enable the integration for your installation (for example
https://<your-server>/api/Moderna, orhttps://<your-server>/api/v2for the Moderna API v2). This is not the address of the ModernaNet login page. Required. -
Username: the integration username provided by Moderna. For the Moderna API v2, use the
client_idgenerated in ModernaNet (Configurações > TI > Acessos > Cliente API - oAuth). Moderna must also authorize this user to run each query the connector reads. Required. -
Password: the integration password provided by Moderna. For the Moderna API v2, use the
client_secretgenerated together with the client_id. Required. - Start Date: the first day to extract on the first sync. Leave it empty to start one year back.
- Lookback Days: how many days before the last sync point are read again on every sync, so appointments whose status changed afterwards (confirmed, attended, cancelled) are updated. The default is 7.
- Future Days: how many days after today are read on every sync, so upcoming appointments are captured and kept up to date. The default is 60.
-
Appointments Query Name: the name of the Moderna query that returns the appointments of a day. The default,
DADOSAGENDAMENTO, is the name in Moderna’s documentation; change it only if Moderna enabled it under another name. -
Custom Queries: other queries Moderna enabled for your integration (for example billing or financial reports). Each one becomes its own table. For each query, fill in:
- Table name: lowercase letters, numbers, and underscores, starting with a letter (for example
billing). - Moderna query name: the name of the query as Moderna enabled it (for example
DADOSFATURAMENTO). - Date parameter (optional): the name of the query’s date filter (for example
DATAPARAM). When filled, the query is read one day at a time and synced incrementally; leave it empty to read the whole query on every sync. - Date format (optional): the layout of the date sent in the date parameter. The default is
YYYYMMDD(for example20251117). Note: for the v2 API, useYYYY-MM-DDas it expects standard date formats. - Fixed filters (optional): other filters sent on every call, as a JSON object, such as
{"ID_UNIDADE": 1}. Note: in the v2 API, filters must be equality filters on the view’s exact column names. - Key columns (optional): the columns that identify a row, as Moderna names them (for example
ID_CONTA). Without them, rows are identified by their full content.
- Table name: lowercase letters, numbers, and underscores, starting with a letter (for example
-
Time Zone: the time zone of the clinic, used to decide which day is today and to build appointment timestamps. The default is
America/Sao_Paulo. - Requests Per Minute: the maximum number of calls per minute sent to Moderna. Every call runs a query on your ModernaNet database, so the default of 60 is deliberately gentle.
2. Select streams
Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis.Tip: The stream can be found more easily by typing its name.Select the streams and click Next.
3. Configure data streams
Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.- Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
- Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
- Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
- Sync Type: Appointments, and custom queries with a date parameter, support INCREMENTAL. Custom queries without a date parameter are always read in full. Read more about Sync Types here.
4. Configure data source
Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:- Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
- Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.
Moderna’s v1 API returns a whole day in a single call, while the v2 API uses pages of 1,000 rows. The connector reads your agenda one day at a time in both versions. The first sync of a long history takes at least one call per day (about 6 minutes per year at the default pace).
5. Check your new source
You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.Streams and Fields
Below you’ll find all available data streams from Moderna Sistemas and their corresponding fields. Columns keep the names Moderna uses in its queries, in lowercase, so they match Moderna’s documentation.Appointments
Appointments
Every appointment of each day, from the
DADOSAGENDAMENTO query. Each sync reads from the last sync point minus the lookback days up to the configured number of future days.Primary key: id_agendamento · Replication key: query_dateCustom queries
Custom queries
One table per entry of Custom Queries, named after its table name. The columns of a custom query are defined by Moderna, so each row is stored whole as JSON.Primary key:
row_key · Replication key: query_date (only when a date parameter is configured)Troubleshooting
Implementation Notes
The v2 API
Moderna supports a v2 API that introduces OAuth token authentication and offset pagination. The connector automatically switches to the v2 standard whenever the API URL contains/api/v2 (e.g., https://<server>/api/v2/).
- Authentication: Instead of passing headers, it uses the provided
username(Client ID) andpassword(Client Secret) to fetch a Bearer token viaclient_credentials. The token is cached and reused for the run, getting refreshed automatically if it expires or receives a401 Unauthorized. - Pagination: The v2 API limits pages to 1,000 rows. The connector sequentially paginates through the data utilizing the
limitandoffsetparameters until a short page or the maximumtotalis reached.
Rate Limiting and Retries
Moderna publishes no official rate limit, and every API call executes a query on the customer’s database. To be safe, the connector paces itself based on the configured Requests Per Minute (default 60).429 Too Many Requestsand standard5xx Server Errorsare retried up to 5 times using exponential backoff.- SQL Execution Errors (such as
Invalid object name,Invalid column name, andConversion failed) resulting in500 Server Erroron the v2 API are known, deterministic failures that fail the run rather than wasting time retrying. Ensure your custom query parameters match your specific database view columns.