Writing Connector Documentation
This topic guides you through writing documentation for Airbyte connectors. The systems and practices described in Updating Documentation apply here as well. However, there are several features and restrictions that only apply to connectors.
QA checks
If you're writing docs for a new connector, your docs must pass our QA checks.
Custom Markdown extensions for connector docs
Airbyte's connector documentation must gracefully support different contexts in a way platform documentation doesn't.
- https://docs.airbyte.com
- In-app documentation in self-managed versions of Airbyte
- In-app documentation in the Cloud version of Airbyte
Key details about setting up a connection may differ between Cloud and Self-Managed. We created custom Markdown extensions that can show or hide different pieces of content based on the reader's environment. This is a rudimentary form of a concept called single-sourcing: writing content once, but using it in multiple contexts. This prevents us from having to maintain multiple highly similar pools of content.
The following features for single-sourcing are available. You can combine them to produce a more meaningful result.
Hide content from the Airbyte UI
Some content is important to document, but unhelpful in Airbyte's UI. This could be:
- Background information that helps people understand a connector but doesn't affect the configuration process
- Edge cases with complex solutions
- Context about each environment, which doesn't need to be seen if you're in that environment
Wrapping content in <HideInUI>...</HideInUI>
tags prevents Airbyte from rendering that content in-app, but https://docs.airbyte.com renders it normally.
Hide content from Cloud
You can hide content from Airbyte Cloud, while still rendering it in Self-Managed and https://docs.airbyte.com.
<!-- env:oss -->
Only Self-Managed builds of the Airbyte UI will render this content.
<!-- /env:oss -->
Hide content from Self-Managed
You can hide content from Airbyte Self-Managed, while still rendering it in Cloud and https://docs.airbyte.com.
<!-- env:cloud -->
Only Cloud builds of the Airbyte UI will render this content.
<!-- /env:cloud -->
Example
Here's an example where the configuration steps are different in Cloud and Self-Managed. In this case, you want to render everything on https://docs.airbyte.com, but you want in-app content reflect only the environment the user is running.
# My connector
This content is rendered everywhere.
<!-- env:oss -->
<HideInUI>
## For open source:
</HideInUI>
Only self-managed builds of the Airbyte UI will render this content.
<!-- /env:oss -->
<!-- env:cloud -->
<HideInUI>
## For Airbyte Cloud:
</HideInUI>
Only Cloud builds of the Airbyte UI will render this content.
<!-- /env:oss -->