Skip to main content

Source Systems

The Source Systems resource (client.source_systems) manages the system inventory behind your catalog: warehouses, CRM platforms, lakehouses, SaaS systems, roles, and masked credentials.

Methods

list(space_slug)

List all source systems in a space.

ParameterTypeDescription
space_slugstrSpace identifier

Returns: list[SourceSystem]

systems = await client.source_systems.list("marketing-analytics")

get(space_slug, source_system_id)

Get a source system by ID, including nested roles and connector summaries when returned by the API.

ParameterTypeDescription
space_slugstrSpace identifier
source_system_idUUIDSource system UUID

Returns: SourceSystem


resolve_space(source_system_id)

Resolve the owning space slug for a source system.

ParameterTypeDescription
source_system_idUUIDSource system UUID

Returns: str


create(space_slug, *, name, platform_type, ...)

Create a source system.

ParameterTypeDefaultDescription
space_slugstrrequiredTarget space
namestrrequiredSource system display name
platform_typestrrequiredPlatform type, such as snowflake, postgresql, or salesforce
description_markdownstr | NoneNoneSource system description
documentation_urlstr | NoneNoneLink to system documentation
runbook_urlstr | NoneNoneLink to operational runbook
system_ownerstr | NoneNoneOwner name
system_owner_emailstr | NoneNoneOwner email
support_channelstr | NoneNoneSupport channel
contact_personslist[dict[str, str]] | NoneNoneAdditional contacts
iconstr | NoneNoneIcon identifier

Returns: SourceSystem

source_system = await client.source_systems.create(
"marketing-analytics",
name="Production Warehouse",
platform_type="snowflake",
system_owner_email="data-platform@example.com",
)

update(space_slug, source_system_id, **fields)

Update a source system.

ParameterTypeDescription
space_slugstrSpace identifier
source_system_idUUIDSource system UUID
**fieldsAnyFields to update

Returns: SourceSystem


delete(space_slug, source_system_id)

Delete a source system. Associated connectors are unlinked by the API.

ParameterTypeDescription
space_slugstrSpace identifier
source_system_idUUIDSource system UUID

Returns: None

Roles

create_role(space_slug, source_system_id, *, name, ...)

Create a role on a source system.

ParameterTypeDefaultDescription
space_slugstrrequiredSpace identifier
source_system_idUUIDrequiredSource system UUID
namestrrequiredRole display name
descriptionstr | NoneNoneRole description
role_identifierstr | NoneNoneExternal role name or identifier
access_levelstrreadAccess level
workflow_idUUID | NoneNoneLinked workflow
workflow_definition_idUUID | NoneNoneLinked workflow definition

Returns: SourceSystemRole

role = await client.source_systems.create_role(
"marketing-analytics",
source_system.id,
name="Warehouse Readers",
role_identifier="WAREHOUSE_READERS",
)

get_role(space_slug, source_system_id, role_id)

Get role detail, including users with access.

Returns: SourceSystemRoleDetail

update_role(space_slug, source_system_id, role_id, **fields)

Update a source-system role.

Returns: SourceSystemRole

delete_role(space_slug, source_system_id, role_id)

Delete a source-system role.

Returns: None

Credentials

Credential responses are masked. Secrets can be supplied on create or update, but are never returned by the API.

list_credentials(space_slug, source_system_id)

List credentials for a source system.

Returns: list[SourceSystemCredential]

create_credential(space_slug, source_system_id, *, name, ...)

Create a credential for a source system.

ParameterTypeDefaultDescription
space_slugstrrequiredSpace identifier
source_system_idUUIDrequiredSource system UUID
namestrrequiredCredential display name
descriptionstr | NoneNoneCredential description
credential_typestrdatabaseCredential type
connection_configdict | NoneNoneNon-secret connection settings
secretstr | NoneNoneSecret value to store
is_activeboolTrueWhether the credential is active

Returns: SourceSystemCredential

credential = await client.source_systems.create_credential(
"marketing-analytics",
source_system.id,
name="Read-only service account",
credential_type="service_account",
connection_config={"warehouse": "ANALYTICS"},
secret="...",
)

update_credential(space_slug, source_system_id, credential_id, **fields)

Update a credential. Pass secret= to rotate the secret.

Returns: SourceSystemCredential

delete_credential(space_slug, source_system_id, credential_id)

Delete a credential.

Returns: None

Sync Client

The synchronous client exposes the same methods without await:

from qarion import QarionSyncClient

with QarionSyncClient(api_key="qk_...") as client:
systems = client.source_systems.list("marketing-analytics")