> ## Documentation Index
> Fetch the complete documentation index at: https://conductorone-docs-baton-kubernetes.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Set up a Breathe connector

> C1 provides identity governance for Breathe. Integrate your Breathe instance with C1 for unified visibility and governance over user access.

C1 provides identity governance for Breathe. Integrate your Breathe instance
with C1 for unified visibility and governance over user access.

## Capabilities

| Resource    | Sync                                                          | Provision |
| ----------- | ------------------------------------------------------------- | --------- |
| Employees   | <Icon icon="square-check" iconType="solid" color="#c937ae" /> |           |
| Departments | <Icon icon="square-check" iconType="solid" color="#c937ae" /> |           |

## Gather Breathe credentials

<Warning>
  You need an account in Breathe that can create an API key. The key inherits the
  access of the account that created it, so use an account that can read your
  employee and department directory.
</Warning>

<Steps>
  <Step>
    In Breathe, open **Account settings**.
  </Step>

  <Step>
    Open the **API key** section.
  </Step>

  <Step>
    Create an API key and copy its value. Treat it like a password.
  </Step>

  <Step>
    Note your Breathe API URL. For Breathe accounts this is
    `https://api.breathehr.com`.
  </Step>
</Steps>

## Configuration fields

| Field      | Required | Description                                                                                                        |
| ---------- | -------- | ------------------------------------------------------------------------------------------------------------------ |
| `base-url` | Yes      | The base URL of the Breathe API, with no trailing slash. For Breathe accounts this is `https://api.breathehr.com`. |
| `api-key`  | Yes      | A Breathe API key. It is sent in the `X-API-KEY` request header.                                                   |

## Synced resource types

* **Employees**: people from `/v1/employees`. Each employee becomes a user.
* **Departments**: departments from `/v1/departments`. Each department becomes a
  group with a single `member` entitlement.
* **Department membership**: an employee is a member of the department named by
  the employee's `department_id`.

## Special notes

* Provisioning is not supported. The connector reads employees and departments
  only.
* The connector authenticates with a single API key sent in the `X-API-KEY`
  request header.
* An employee whose record marks them as deleted, records an employment end date
  in the past, or reports a non-active status is synced with a disabled status.
* An employee with no department is synced as a user but holds no department
  membership.
* Breathe does not list the members of a department directly, so the connector
  reads each employee's department from the employee record and matches it to
  the department.

## Configure the Breathe connector

<Tabs>
  <Tab title="Cloud-hosted">
    Follow these instructions to use a built-in, no-code connector hosted by C1.

    <Steps>
      <Step>
        In C1, navigate to **Integrations** > **Connectors** and click **Add connector**.
      </Step>

      <Step>
        Search for **Breathe** and click **Add**.
      </Step>

      <Step>
        Choose how to set up the new Breathe connector.
      </Step>

      <Step>
        Set the owner for this connector.
      </Step>

      <Step>
        Click **Next**.
      </Step>

      <Step>
        Find the **Settings** area of the page and click **Edit**.
      </Step>

      <Step>
        Paste the Breathe credentials into the relevant fields:

        * **Breathe API URL**: `https://api.breathehr.com`.
        * **API key**: The API key you created in Breathe.
      </Step>

      <Step>
        Click **Save**.
      </Step>

      <Step>
        The connector's label changes to **Syncing**, followed by
        **Connected**. You can view the logs to ensure that information is
        syncing.
      </Step>
    </Steps>

    **Done.** Your Breathe connector is now pulling access data into C1.
  </Tab>

  <Tab title="Self-hosted">
    Follow these instructions to run the Breathe connector in your own
    environment.

    <Steps>
      <Step>
        In C1, navigate to **Integrations** > **Connectors** and click **Add connector**.
      </Step>

      <Step>
        Search for **Baton** and click **Add**.
      </Step>

      <Step>
        Choose how to set up the new Breathe connector, set the owner, and
        click **Next**.
      </Step>

      <Step>
        In the **Settings** area, click **Edit**, then click **Rotate** to
        generate a new Client ID and Client Secret. Store these values
        securely for your deployment.
      </Step>

      <Step>
        Configure C1 credentials and Breathe credentials as environment
        variables:

        ```bash theme={"theme":{"light":"css-variables","dark":"css-variables"}}
        BATON_CLIENT_ID=<C1 client ID>
        BATON_CLIENT_SECRET=<C1 client secret>
        BATON_HOST_ID=baton-breathehr
        BATON_BASE_URL=https://api.breathehr.com
        BATON_API_KEY=<Breathe API key>
        ```
      </Step>

      <Step>
        Deploy the connector using the Public ECR image:

        ```bash theme={"theme":{"light":"css-variables","dark":"css-variables"}}
        public.ecr.aws/conductorone/baton-breathehr:<version>
        ```

        Use a version tag without the leading `v`, such as `0.0.1`.
      </Step>
    </Steps>

    **Done.** Your Breathe connector is now pulling access data into C1.
  </Tab>
</Tabs>
