Source Systems API
Manage source-system inventory, access roles, and masked credentials.
All endpoints are mounted under /api/v1.0. Paths below omit that prefix for readability.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /spaces/{slug}/source-systems | List source systems |
| POST | /spaces/{slug}/source-systems | Create source system |
| GET | /spaces/{slug}/source-systems/{source_system_id} | Get source system details |
| PATCH | /spaces/{slug}/source-systems/{source_system_id} | Update source system |
| DELETE | /spaces/{slug}/source-systems/{source_system_id} | Delete source system |
| GET | /source-systems/resolve/{source_system_id} | Resolve owning space slug |
| POST | /spaces/{slug}/source-systems/{source_system_id}/roles | Create role |
| GET | /spaces/{slug}/source-systems/{source_system_id}/roles/{role_id} | Get role details |
| PATCH | /spaces/{slug}/source-systems/{source_system_id}/roles/{role_id} | Update role |
| DELETE | /spaces/{slug}/source-systems/{source_system_id}/roles/{role_id} | Delete role |
| GET | /spaces/{slug}/source-systems/{source_system_id}/credentials | List credentials |
| POST | /spaces/{slug}/source-systems/{source_system_id}/credentials | Create credential |
| PATCH | /spaces/{slug}/source-systems/{source_system_id}/credentials/{credential_id} | Update credential |
| DELETE | /spaces/{slug}/source-systems/{source_system_id}/credentials/{credential_id} | Delete credential |
Source Systems
List Source Systems
GET /spaces/{slug}/source-systems
Response: 200 OK
[
{
"id": "source-system-uuid",
"space_id": "space-uuid",
"space_name": "Marketing Analytics",
"space_slug": "marketing-analytics",
"name": "Production Snowflake",
"platform_type": "snowflake",
"description_markdown": "Primary analytics warehouse",
"documentation_url": "https://docs.example.com/warehouse",
"runbook_url": "https://docs.example.com/runbooks/warehouse",
"business_purpose": "Analytics reporting",
"system_owner": "Data Platform",
"system_owner_email": "data-platform@example.com",
"support_channel": "#data-platform",
"contact_persons": [],
"icon": "snowflake",
"role_count": 2,
"connector_count": 3
}
]
Create Source System
POST /spaces/{slug}/source-systems
{
"name": "Production Snowflake",
"platform_type": "snowflake",
"description_markdown": "Primary analytics warehouse",
"documentation_url": "https://docs.example.com/warehouse",
"runbook_url": "https://docs.example.com/runbooks/warehouse",
"business_purpose": "Analytics reporting",
"system_owner": "Data Platform",
"system_owner_email": "data-platform@example.com",
"support_channel": "#data-platform",
"contact_persons": [
{
"name": "Jane Smith",
"email": "jane@example.com"
}
],
"icon": "snowflake"
}
Response: 201 Created
Returns a SourceSystemResponse.
Get Source System
GET /spaces/{slug}/source-systems/{source_system_id}
Response: 200 OK
Returns a SourceSystemResponse including roles, connector summaries, and connector_count.
Update Source System
PATCH /spaces/{slug}/source-systems/{source_system_id}
{
"system_owner_email": "new-owner@example.com",
"support_channel": "#data-help"
}
Response: 200 OK
Returns the updated SourceSystemResponse.
Delete Source System
DELETE /spaces/{slug}/source-systems/{source_system_id}
Response: 204 No Content
Deleting a source system unlinks associated connectors.
Resolve Source System Space
GET /source-systems/resolve/{source_system_id}
Response: 200 OK
{
"space_slug": "marketing-analytics"
}
Roles
Create Role
POST /spaces/{slug}/source-systems/{source_system_id}/roles
{
"name": "Analytics Reader",
"description": "Read access to analytics schemas",
"role_identifier": "ANALYTICS_READER",
"access_level": "read",
"workflow_id": "workflow-uuid",
"workflow_definition_id": "workflow-definition-uuid"
}
Response: 201 Created
Returns a SourceSystemRoleResponse.
Get Role Details
GET /spaces/{slug}/source-systems/{source_system_id}/roles/{role_id}
Response: 200 OK
Returns role metadata plus users with active access.
Update Role
PATCH /spaces/{slug}/source-systems/{source_system_id}/roles/{role_id}
{
"access_level": "admin"
}
Response: 200 OK
Returns the updated SourceSystemRoleResponse.
Delete Role
DELETE /spaces/{slug}/source-systems/{source_system_id}/roles/{role_id}
Response: 204 No Content
Credentials
Credentials are stored separately from source-system metadata. Secret values can be supplied on create or update, but responses only indicate whether a secret exists.
List Credentials
GET /spaces/{slug}/source-systems/{source_system_id}/credentials
Response: 200 OK
[
{
"id": "credential-uuid",
"source_system_id": "source-system-uuid",
"name": "Read-only service account",
"description": "Used by catalog sync",
"credential_type": "service_account",
"connection_config": {
"warehouse": "ANALYTICS"
},
"is_active": true,
"created_by_id": "user-uuid",
"created_by_name": "Jane Smith",
"created_at": "2026-01-10T00:00:00Z",
"updated_at": "2026-01-10T00:00:00Z",
"has_secret": true
}
]
Create Credential
POST /spaces/{slug}/source-systems/{source_system_id}/credentials
{
"name": "Read-only service account",
"description": "Used by catalog sync",
"credential_type": "service_account",
"connection_config": {
"warehouse": "ANALYTICS"
},
"secret": "redacted-secret",
"is_active": true
}
Response: 201 Created
Returns a CredentialResponse with secret omitted.
Update Credential
PATCH /spaces/{slug}/source-systems/{source_system_id}/credentials/{credential_id}
{
"name": "Rotated service account",
"secret": "new-redacted-secret",
"is_active": true
}
Response: 200 OK
Returns the updated CredentialResponse.
Delete Credential
DELETE /spaces/{slug}/source-systems/{source_system_id}/credentials/{credential_id}
Response: 204 No Content