Find the right option
Work through these questions in order and stop at the first one that fits.- Is there a pre-built connector for the application? Check the connector library and the capabilities index. If one exists, use it. C1 maintains pre-built connectors, they need only credentials to set up, and many can provision access as well as sync it.
- Is the application a SQL database? Use SQL authoring (baton-sql).
- Does the application support SCIM? Use SCIM authoring (baton-scim).
- Does the application have a REST API?
- If you only need to sync who has access to what, the API is reachable over HTTPS on the public internet, and you want C1 to build and host the connector, use a C1AI custom connector.
- If you need to grant or revoke access, the application isn’t reachable from the internet, or you want to control the configuration yourself, use HTTP authoring (baton-http).
- Does the application have no API? If you can export its data, use a file connector. If you need ongoing sync and the application has a web UI, use RPA authoring (baton-rpa) to drive the UI with a declarative playbook.
- Does none of that fit? For another protocol, account creation through an API, custom business logic, or an authentication method the other options don’t support, build a connector with the Baton SDK.
Compare the options
About each option
Pre-built connectors
Use a pre-built connector whenever one exists. You don’t build or maintain anything, and each connector’s page shows whether it can provision and how it can be hosted. A custom connector, a configuration-driven connector, or SDK code is only worth the effort when no pre-built connector covers your application.C1AI custom connectors
Describe the application to the C1AI assistant, and the assistant builds and tests a connector against its API. After you approve it, C1 hosts it. Choose this when:- The application has an HTTP API with published documentation or an OpenAPI specification.
- You only need to sync access data.
- The API is reachable over HTTPS on the public internet.
- You’d rather not write or host anything.
Configuration-driven connectors
These connectors read a configuration file instead of Go code. You download the connector, write the configuration, and run it in your own environment, so they can reach systems that aren’t exposed to the internet.- HTTP authoring fits applications with a REST API where the access model maps to users, groups, and resources. Choose it when you need to grant and revoke access, or when you want someone other than a developer to maintain the integration. It can’t create accounts, and you need the SDK for authentication it doesn’t support, such as Kerberos or SAML.
- SQL authoring fits internal user directories, custom applications, and legacy systems where you have database access but no API. It supports PostgreSQL, MySQL, Microsoft SQL Server, Oracle, SAP HANA, SQLite, and Amazon Redshift, and IBM DB2 on request.
- SCIM authoring fits applications that support SCIM. It has built-in service providers for Miro, Postman, Slack, and Zoom, and you can write a configuration for others.
- RPA authoring fits applications with no API at all. It signs in to the application’s own web UI and extracts data according to a declarative playbook, instead of calling an API. It’s sync-only and can’t provision or deprovision access. It can run self-hosted or cloud-hosted against a browser on AWS Bedrock AgentCore.
File connectors
Use a file connector for an application with no automated connector and no API, such as a legacy or homegrown on-premises application. You upload an.xlsx, .csv, or .c1z file, or sync from an external data source. See Import application data from a file.