## Airbyte Schema

```mermaid
graph LR
O(Organization) -- RESOURCE --> W(Workspace)
O -- RESOURCE --> U(User)
O -- RESOURCE --> S(Source)
O -- RESOURCE --> D(Destination)
O -- RESOURCE --> T(Tag)
O -- RESOURCE --> C(Connection)
O -- RESOURCE --> Str(Stream)
W -- CONTAINS --> S
W -- CONTAINS --> D
W -- CONTAINS --> T
W -- CONTAINS --> C
C -- SYNC_FROM --> S
C -- SYNC_TO --> D
C -- TAGGED --> T
C -- HAS --> Str
U -- ADMIN_OF --> O
U -- ADMIN_OF --> W
U -- MEMBER_OF --> W
```

### AirbyteOrganization

Provides details of a single organization for a user.

> **Ontology Mapping**: This node has the extra label `Tenant` to enable cross-platform queries for organizational tenants across different systems (e.g., OktaOrganization, AWSAccount).

| Field | Description |
|-------|-------------|
| id | The organization UUID |
| name | The name of the organization |
| email | Contact email for the organization  |
| firstseen| Timestamp of when a sync job first created this node  |
| lastupdated |  Timestamp of the last time the node was updated |


#### Relationships
- `Workspace`, `User`, `Source`, `Destination`, `Tag`, `Connection`, `Stream` belong to an `Organization`.
    ```
    (:AirbyteOrganization)-[:RESOURCE]->(
        :AirbyteWorkspace,
        :AirbyteUser,
        :AirbyteSource,
        :AirbyteDestination,
        :AirbyteTag,
        :AirbyteConnection,
        :AirbyteStream
    )
    ```
- `User` is admin of an `Organization`
    ```
    (:AirbyteUser)-[:ADMIN_OF]->(:AirbyteOrganization)
    ```


### AirbyteWorkspace

Provides details of a single workspace.

| Field | Description |
|-------|-------------|
| id | UUID of the workspace |
| name | Name of the workspace |
| data_residency | Localization of the data (us, eu) |
| firstseen| Timestamp of when a sync job first created this node  |
| lastupdated |  Timestamp of the last time the node was updated |


#### Relationships
- `Workspace` belong to an `Organization`
    ```
    (:AirbyteOrganization)-[:RESOURCE]->(:AirbyteWorkspace)
    ```
- `Workspace` contains `Source`, `Destination`, `Tag`, `Connection`
    ```
    (:AirbyteWorkspace)-[:CONTAINS]->(
        :AirbyteSource,
        :AirbyteDestination,
        :AirbyteTag,
        :AirbyteConnection
    )
    ```
- `User` is admin of an `Workspace`
    ```
    (:AirbyteUser)-[:ADMIN_OF]->(:AirbyteWorkspace)
    ```
- `User` is member of an `Workspace`
    ```
    (:AirbyteUser)-[:MEMBER_OF]->(:AirbyteWorkspace)
    ```


### AirbyteUser

Provides details of a single user in an organization.

> **Ontology Mapping**: This node has the extra label `UserAccount` to enable cross-platform queries for user accounts across different systems (e.g., OktaUser, AWSSSOUser).

| Field | Description |
|-------|-------------|
| id | Internal Airbyte user ID |
| name | Name of the user |
| email | Email of the user |
| firstseen| Timestamp of when a sync job first created this node  |
| lastupdated |  Timestamp of the last time the node was updated |

#### Relationships
- `User` belong to an `Organization`
    ```
    (:AirbyteOrganization)-[:RESOURCE]->(:AirbyteUser)
    ```
- `User` is admin of an `Organization`
    ```
    (:AirbyteUser)-[:ADMIN_OF]->(:AirbyteOrganization)
    ```
- `User` is admin of an `Workspace`
    ```
    (:AirbyteUser)-[:ADMIN_OF]->(:AirbyteWorkspace)
    ```
- `User` is member of an `Workspace`
    ```
    (:AirbyteUser)-[:ADMIN_OF]->(:AirbyteWorkspace)
    ```


### AirbyteSource

Provides details of a single source.

| Field | Description |
|-------|-------------|
| id | UUID of the source |
| name | Name of the source |
| type | Type of the source (eg. postgres, s3) |
| config_host | Host of the source |
| config_port | Port of the source |
| config_name | Name of the source (can be database name, bucket name, container name ...) |
| config_region | Name of the regions (can be the AWS region) |
| config_endpoint | Endpoint for the source |
| config_account | Account of the source (can be AWSAccount, AzureAccount)
| firstseen| Timestamp of when a sync job first created this node  |
| lastupdated |  Timestamp of the last time the node was updated |


#### Relationships

- `Source` belong to an `Organization`
    ```
    (:AirbyteOrganization)-[:RESOURCE]->(:AirbyteSource)
    ```
- `Workspace` contains `Source`
    ```
    (:AirbyteWorkspace)-[:CONTAINS]->(:AirbyteSource)
    ```
- `Connection` synchronizes data from a `Source`
    ```
    (:AirbyteConnection)-[:SYNC_FROM]->(:AirbyteSource)
    ```


### AirbyteDestination

Provides details of a single destination.

| Field | Description |
|-------|-------------|
| id | UUID of the destination |
| name | Name of the destination |
| type | Type of the destination (eg. postgres, s3) |
| config_host | Host of the destination |
| config_port | Port of the destination |
| config_name | Name of the destination (can be database name, bucket name, container name ...) |
| config_region | Name of the regions (can be the AWS region) |
| config_endpoint | Endpoint for the destination |
| config_account | Account of the destination (can be AWSAccount, AzureAccount)
| firstseen| Timestamp of when a sync job first created this node  |
| lastupdated |  Timestamp of the last time the node was updated |

#### Relationships

- `Destination` belong to an `Organization`
    ```
    (:AirbyteOrganization)-[:RESOURCE]->(:AirbyteDestination)
    ```
- `Workspace` contains `Destination`
    ```
    (:AirbyteWorkspace)-[:CONTAINS]->(:AirbyteDestination)
    ```
- `Connection` synchronizes data to a `Destination`
    ```
    (:AirbyteConnection)-[:SYNC_TO]->(:AirbyteDestination)
    ```

### AirbyteTag

Provides details of a single tag.

| Field | Description |
|-------|-------------|
| id | UUID of the tag |
| name | Name of the tag |
| color | hex color of the tag |
| firstseen| Timestamp of when a sync job first created this node  |
| lastupdated |  Timestamp of the last time the node was updated |

#### Relationships
- `Tag` belong to an `Organization`
    ```
    (:AirbyteOrganization)-[:RESOURCE]->(:AirbyteTag)
    ```
- `Workspace` contains `Tag`
    ```
    (:AirbyteWorkspace)-[:CONTAINS]->(:AirbyteTag)
    ```
- `Connection` is tagged with a `Tag`
    ```
    (:AirbyteConnection)-[:TAGGED]->(:AirbyteTag)
    ```

### AirbyteConnection

Provides details of a single connection.

| Field | Description |
|-------|-------------|
| id | UUID of the connection |
| name | name of the connection
| namespace_format |  |
| prefix | Prefix text to each stream name in the destination |
| status | Status of the connection |
| data_residency | Localization of the connection (eg. us, eu) |
| namespace_definition | Define the location where the data will be stored in the destination |
| non_breaking_schema_updates_behavior | Set how Airbyte handles syncs when it detects a non-breaking schema change in the source |
| firstseen| Timestamp of when a sync job first created this node  |
| lastupdated |  Timestamp of the last time the node was updated |


#### Relationships
- `Connection` belong to an `Organization`
    ```
    (:AirbyteOrganization)-[:RESOURCE]->(:AirbyteConnection)
    ```
- `Workspace` contains `Connection`
    ```
    (:AirbyteWorkspace)-[:CONTAINS]->(:AirbyteConnection)
    ```
- `Connection` is tagged with a `Tag`
    ```
    (:AirbyteConnection)-[:TAGGED]->(:AirbyteTag)
    ```
- `Connection` synchronizes data from a `Source`
    ```
    (:AirbyteConnection)-[:SYNC_FROM]->(:AirbyteSource)
    ```
- `Connection` synchronizes data to a `Destination`
    ```
    (:AirbyteConnection)-[:SYNC_TO]->(:AirbyteDestination)
    ```
- `Connection` has `Stream`
    ```
    (:AirbyteConnection)-[:HAS]->(:AirbyteStream)
    ```

### AirbyteStream

Represents a single stream of a connection.

| Field | Description |
|-------|-------------|
| id | Crafted ID for the stream (`connectionUUID_streamName`) |
| name | name of the stream |
| sync_mode | sync method for the stream |
| cursor_field | name of the column that is used as a cursor |
| primary_key | primary key for the stream |
| include_files | flag for including raw files for blob sync |
| selected_fields | fields to sync for the stream |
| mappers | custom mappers for the stream |
| firstseen| Timestamp of when a sync job first created this node  |
| lastupdated |  Timestamp of the last time the node was updated |

#### Relationships
- `Stream` belong to an `Organization`
    ```
    (:AirbyteOrganization)-[:RESOURCE]->(:AirbyteStream)
    ```
- `Connection` has `Stream`
    ```
    (:AirbyteConnection)-[:HAS]->(:AirbyteStream)
    ```
