Access and manage third-party integrations in the Control Plane
The Integrations Service provides programmatic access to third-party service integrations configured in Kubiya, enabling agents to interact with external systems like GitHub, Slack, AWS, and more.
Integrations in Kubiya connect the platform to external services and APIs. The Integrations Service allows you to:
List Integrations: View all configured integrations and their connection status
Get Integration Details: Access specific integration configurations and metadata
Retrieve Credentials: Securely access integration credentials for API calls
Integration configuration (adding, updating, deleting integrations) is performed through the Kubiya Dashboard. The SDK provides read-only access to integration information.
from kubiya import ControlPlaneClient# Initialize the clientclient = ControlPlaneClient(api_key="your-api-key")# List all integrationsintegrations = client.integrations.list()for integration in integrations: print(f"Integration: {integration['name']} ({integration['vendor']}) - Connected: {integration['connected']}")# Get specific integration detailsgithub_integration = client.integrations.get(integration_id="github-prod")print(f"GitHub: {github_integration['config']}")# Get integration credentialscredentials = client.integrations.get_integration_credentials( vendor="github", id="github-prod")
from kubiya import ControlPlaneClientclient = ControlPlaneClient(api_key="your-api-key")# List all integrationsintegrations = client.integrations.list()print(f"Total integrations: {len(integrations)}")for integration in integrations: status = "✅" if integration['connected'] else "❌" print(f"{status} {integration['name']} ({integration['vendor']})") print(f" Type: {integration['type']}") print(f" Connected: {integration['connected']}") if integration.get('last_sync'): print(f" Last Sync: {integration['last_sync']}") print("---")
from kubiya import ControlPlaneClientclient = ControlPlaneClient(api_key="your-api-key")# Get specific integration by IDintegration = client.integrations.get(integration_id="github-prod")print(f"Integration: {integration['name']}")print(f"Vendor: {integration['vendor']}")print(f"Type: {integration['type']}")print(f"Connected: {integration['connected']}")print(f"Configuration: {integration['config']}")
from kubiya import ControlPlaneClientclient = ControlPlaneClient(api_key="your-api-key")# Special integrations (Jira, GitHub App) automatically use ID "0"jira_credentials = client.integrations.get_integration_credentials( vendor="jira", id="any-id" # Will be automatically converted to "0")github_app_credentials = client.integrations.get_integration_credentials( vendor="github_app", id="any-id" # Will be automatically converted to "0")
Special integrations (Jira, GitHub App) always use ID "0" internally, regardless of the ID you provide. This is handled automatically by the SDK.
Monitor all integrations and report connection status:
Copy
Ask AI
from kubiya import ControlPlaneClientfrom datetime import datetime, timedeltafrom typing import Dict, Anydef generate_integration_health_report(client: ControlPlaneClient) -> Dict[str, Any]: """Generate comprehensive integration health report.""" integrations = client.integrations.list() connected = [] disconnected = [] stale = [] by_vendor = {} by_type = {} now = datetime.utcnow() for integration in integrations: # Track by connection status if integration['connected']: connected.append(integration) # Check for stale sync (no sync in last 24 hours) if integration.get('last_sync'): last_sync = datetime.fromisoformat(integration['last_sync'].replace('Z', '+00:00')) if now - last_sync > timedelta(hours=24): stale.append(integration) else: disconnected.append(integration) # Track by vendor vendor = integration['vendor'] if vendor not in by_vendor: by_vendor[vendor] = [] by_vendor[vendor].append(integration) # Track by type int_type = integration['type'] if int_type not in by_type: by_type[int_type] = [] by_type[int_type].append(integration) # Print report print("Integration Health Report") print("=" * 60) print(f"Total Integrations: {len(integrations)}") print(f"✅ Connected: {len(connected)}") print(f"❌ Disconnected: {len(disconnected)}") print(f"⚠️ Stale (no sync in 24h): {len(stale)}") if disconnected: print("\nDisconnected Integrations:") for integration in disconnected: print(f" ❌ {integration['name']} ({integration['vendor']})") if stale: print("\nStale Integrations:") for integration in stale: hours_since = (now - datetime.fromisoformat(integration['last_sync'].replace('Z', '+00:00'))).seconds // 3600 print(f" ⚠️ {integration['name']}: {hours_since}h since last sync") print("\nBy Vendor:") for vendor, items in by_vendor.items(): print(f" {vendor}: {len(items)}") print("\nBy Type:") for int_type, items in by_type.items(): print(f" {int_type}: {len(items)}") return { "total": len(integrations), "connected": len(connected), "disconnected": len(disconnected), "stale": len(stale), "by_vendor": {v: len(items) for v, items in by_vendor.items()}, "by_type": {t: len(items) for t, items in by_type.items()} }# Usageclient = ControlPlaneClient(api_key="your-api-key")health_report = generate_integration_health_report(client)
from kubiya import ControlPlaneClient# Special integrations that always use ID "0"SPECIAL_INTEGRATIONS = {"jira", "github_app"}def get_credentials_safely( client: ControlPlaneClient, vendor: str, integration_id: str): """Get credentials with special integration handling.""" # SDK handles this automatically, but good to be aware if vendor.lower() in SPECIAL_INTEGRATIONS: print(f"Note: {vendor} is a special integration using ID '0'") return client.integrations.get_integration_credentials( vendor=vendor, id=integration_id )# Usageclient = ControlPlaneClient(api_key="your-api-key")jira_creds = get_credentials_safely(client, "jira", "any-id")
import schedulefrom kubiya import ControlPlaneClientdef check_critical_integrations(client: ControlPlaneClient): """Monitor critical integrations.""" critical = ["github", "slack", "aws"] connected = client.integrations.list(connected_only=True) connected_vendors = {i['vendor'] for i in connected} for vendor in critical: if vendor not in connected_vendors: # Alert or take action print(f"ALERT: Critical integration {vendor} is not connected!")# Schedule checksclient = ControlPlaneClient(api_key="your-api-key")schedule.every(15).minutes.do(lambda: check_critical_integrations(client))