Connector catalog
Open Settings and select Connectors, then click New Connector to browse the catalog. Ingestly offers six connector types:Creating a connector
- Click New Connector and pick a type from the catalog.
- Read the Setup instructions shown with the form. Each type lists the prerequisites you need on the external service (for example registering an app, choosing scopes, or copying an identifier into the form).
- Give the connector a name.
- Configure the Development credentials. This profile is required and is used while you build and test the connector.
- Optionally configure the Production credentials now, or add them later. Production credentials are used when a workflow runs in Production.
- Save the connector.
Production credentials are optional at creation. You can create a connector with only its Development profile connected and add Production later from the connector’s edit dialog. Connect the Production profile before you copy a workflow that uses it into Production.
QuickBooks Online (OAuth)
For QuickBooks Online, click Connect to start the OAuth flow for that environment. You sign in on Intuit’s consent screen and grant the requested permissions, then you are redirected back to Ingestly when authorization completes.Business Central (client credentials)
Business Central uses an app-only connection: Ingestly requests tokens directly from Microsoft with your app registration’s client ID and secret. There is no sign-in or consent screen, and the connection does not expire from inactivity. Before creating the connector:- Register an app in Microsoft Entra ID and grant it the Application permission
Dynamics 365 Business Central > API.ReadWrite.Allwith admin consent. - Create a client secret and note its expiry date.
- In Business Central, open Microsoft Entra Applications, add the app’s client ID, set its state to Enabled, and assign a user permission set that covers the entities you write.
- To confirm purchase orders from vendor confirmations, install the Ingestly Connector extension, turn on Enable purchase order amendments in its setup page, and assign the Ingestly Purchase Amendment permission set to the same application. The Business Central node’s Confirm Purchase Order operation checks this and reports Purchase order confirmations are supported when both are in place.
- Tenant ID, Client ID, Client Secret from the app registration.
- Secret expires on (optional): the secret’s expiry date. Ingestly shows a warning beside the profile status 30 days before it lapses and marks it expired on and after that date. Rotate the secret from the profile’s Rotate credentials panel.
- Environment: the Business Central environment name (for example
production). Use 1 to 50 characters made up of letters, digits, dots, underscores, or hyphens. - Company ID: the company GUID. It is required and must be a valid GUID.
API Key connectors
The API Key connector is not an OAuth integration. Instead you supply one or more header credentials and a base URL:- Header rows: one or more Header name and Header value pairs sent with every outbound request (for example
Authorization: Bearer ...orX-Api-Key: ...). - Base URL: the host outbound requests are restricted to.
OAuth 2.0 (authorization code)
Use the OAuth 2.0 connector for any API that authenticates through a provider’s consent screen. Before creating the connector, register an app with the provider and set its redirect URI to the value shown in the connector’s setup instructions:{your-ingestly-server-url}/connectors/oauth/callback. The setup instructions in the app show this with the placeholder already filled in for your server.
Each environment profile takes:
- Authorization URL: the provider’s authorization endpoint, where the user signs in and grants access.
- Token URL: the provider’s token endpoint, used to exchange the authorization code, and later the refresh token, for an access token.
- Scopes: space-separated scopes to request.
- Audience (optional): the audience some providers require to scope the token to a specific API.
- Token endpoint auth: how client credentials are sent to the token endpoint: Request body (
client_secret_post) or HTTP Basic header (client_secret_basic). - Use PKCE: on by default, using the S256 challenge method. Leave it on unless the provider does not support PKCE.
- Extra parameters: key/value pairs sent to both the authorization and token requests, for example
access_type=offlineto make a provider issue a refresh token. Reserved OAuth parameter names such asclient_id,scope,state, andredirect_uriare rejected here because Ingestly sets them itself. - Base URL: the host outbound requests through this connector are restricted to.
Changing the Authorization URL, Scopes, or Audience disconnects the environment: reconnect after changing any of them. Changing the Token URL or Base URL also disconnects the environment and clears its stored client credentials, because those hosts are the ones that receive the secret and the tokens; enter the Client ID and Client Secret again to reconnect. Disconnecting clears the stored credentials but keeps this configuration, so reconnecting does not require retyping it.
Refresh and expiry
Ingestly refreshes the access token five minutes before it expires, using the refresh token the provider issued during the original authorization.If the provider never issued a refresh token, or the stored refresh token is no longer valid, the profile shows Expired once the access token lapses. Reconnect the environment to restore it. Some providers only issue a refresh token when the authorization request carries an extra parameter (for example
access_type=offline); add it under Extra parameters if reconnecting keeps expiring.Security
- The Authorization URL and Token URL must use
https.httpis accepted only forlocalhost, for local development. - Requests through the connector are restricted to the connector’s Base URL host; private network and internal addresses are refused.
- Client secrets are encrypted at rest and are never shown again after saving.
- If the token endpoint cannot be reached or returns an invalid response, Test shows a fixed error message instead of the raw provider response. A provider’s own
error_descriptionfor rejected credentials is still shown.
OAuth 2.0 (client credentials)
Use the OAuth 2.0 (Client Credentials) connector for an API that authenticates app-only, with no user sign-in. Each environment profile takes the same Token URL, Scopes, Audience (optional), Token endpoint auth, Extra parameters, and Base URL fields as OAuth 2.0 (authorization code). There is no Authorization URL and no PKCE option, since client credentials never involve a browser redirect. Click Connect to mint a token immediately. The environment is marked Connected on success, or Error if the token endpoint rejects the client credentials. There is no refresh token in this flow. Ingestly requests a fresh token directly from the token endpoint whenever the current one is close to expiring, the same as the Business Central connector’s client credentials connection. The samehttps-only rule, Base URL host restriction, encrypted secrets, and fixed error message on an unreachable or invalid token endpoint apply here as well. Disconnecting clears the stored credentials but keeps the rest of the configuration.
Basic Auth
Use the Basic Auth connector for an API that authenticates with a plain username and password:- Username
- Password (may be left blank)
- Base URL: the host outbound requests are restricted to.
Authorization header from the username and password; you never need to build it yourself. Click Connect to save the credentials and mark the environment Connected; it does not call the Base URL. Use Test afterwards to verify the credentials against it. Changing the Base URL of a connected environment clears the stored credentials and disconnects it, since that host is the one that receives them; enter the password again to reconnect. To rotate a stored password to an empty one, tick Use an empty password before clicking Rotate. Disconnecting clears the stored credentials but keeps the Base URL configuration.
Managing connectors
The connectors list shows a Name column, a Type column, and two status columns: Development and Production. Each status column shows the profile’s status for that environment, or Not set when that environment has no profile configured yet. Each row has two actions:- Edit: open the connector’s edit dialog. The dialog shows both environment profiles (Development and Production) side by side so you can configure, test, or rotate either one.
- Delete: permanently remove the connector.
Per-environment profile actions
Test, disconnect, and credential rotation are configured separately for each environment inside the edit dialog. Each profile offers:- Connect: shown when the profile is not connected. Enter the credentials and connect that environment.
- Test: verify a connected profile is still authorized and healthy.
- Disconnect: revoke that environment’s access while keeping the connector entry.
- Rotate credentials: replace a connected profile’s credentials without re-authorizing from scratch.
There is no standalone Rotate Credentials dialog. Rotation lives in each environment profile inside the connector’s edit dialog, alongside Test and Disconnect.
What rotation asks you to re-enter
Rotation only ever asks for the secret parts. Everything Ingestly can safely echo back is prefilled, so swapping a secret does not mean retyping the whole profile.- Client credentials profiles (Business Central app-only): the panel opens with the Client ID and Tenant ID already filled in. Only the new Client Secret is required. Set Secret expires on at the same time so the expiry warning tracks the new secret.
- API Key profiles: the Base URL and the Header name of each stored header are prefilled, with the header values blank. Re-enter the values. A rotate replaces the whole header set, so remove a row here to drop that header.
Connector status
Each environment profile reports one of these statuses:Permissions
Managing connectors requires theAccount.Connector permission. Among the built-in roles only Admins have it, but you can grant it to a custom role. See roles and permissions for details.