# Integration development

An integration connects an application's operations to Coordinator DB and translates results into the application's own values and errors. Begin with the interface and session behavior your application requires.

## Select the connection boundary

Use the [HTTP interface](https://coordinatordb.com/docs/concepts/features/interfaces/http) for ordinary HTTP SQL requests and documented row formats. Use the [supplied native client](https://coordinatordb.com/docs/concepts/features/interfaces/client) for interactive work, scripted exact-byte output and client-side file input. The native protocol is specific to Coordinator DB.

An embedded application can open a connection directly and use [prepared statements](https://coordinatordb.com/docs/guides/clickhouse/data-modelling/stored-procedures-and-prepared-statements). Its API differs from the server interfaces: server database commands and format encoders are outside the embedded contract.

## Develop a complete example

Start with a connection, one read and one rejected request. Add writes only after defining transaction ownership and the response to a connection failure. A failed connection can leave a caller uncertain whether a write completed; retry policy needs to account for that outcome.

Follow [building an integration](https://coordinatordb.com/docs/resources/develop-contribute/integrations/building-integrations), then [test it](https://coordinatordb.com/docs/resources/develop-contribute/integrations/testing-your-integration) against its promised behavior. Finish with [documentation](https://coordinatordb.com/docs/resources/develop-contribute/integrations/documenting-your-integration) that states authentication, database selection, supported formats and tested versions.
