Python Examples
Python Examples
Integrate GovernanceAI with Python applications.
Installation
pip install requests python-dotenv
Basic Setup
import requestsimport osfrom dotenv import load_dotenvload_dotenv()API_KEY = os.getenv('GOVERNANCEAI_API_KEY')ORG_ID = os.getenv('GOVERNANCEAI_ORG_ID')BASE_URL = 'https://api.governanceai.com/v1'headers = {'Authorization': f'Bearer {API_KEY}','Content-Type': 'application/json'}
Evaluate Guardrails
def evaluate_guardrails(user_message, user_id):"""Evaluate a message against guardrails"""payload = {"messages": [{"role": "user", "content": user_message}],"context": {"org_id": ORG_ID,"user_id": user_id}}response = requests.post(f'{BASE_URL}/guardrails/evaluate',headers=headers,json=payload)if response.status_code == 200:result = response.json()return {'decision': result['decision'],'risk_score': result.get('risk_score', 0),'violations': result.get('policy_violations', [])}else:raise Exception(f"API error: {response.status_code}")# Usageresult = evaluate_guardrails("My credit card is 4532-1111-2222-3333", "user_123")print(f"Decision: {result['decision']}")print(f"Risk Score: {result['risk_score']}")
Create Policy
def create_policy(policy_name, guardrail_ids):"""Create a new policy"""payload = {"name": policy_name,"guardrail_ids": guardrail_ids,"scope": "organization","enforcement": {"mode": "blocking","log_violations": True}}response = requests.post(f'{BASE_URL}/policies',headers=headers,json=payload)return response.json()# Usagepolicy = create_policy("Production Safety",["guardrail_pii", "guardrail_toxic"])print(f"Policy created: {policy['policy_id']}")
Run Scan
def run_scan(scan_type, repositories):"""Run a code scan"""payload = {"scan_type": scan_type,"repositories": repositories}response = requests.post(f'{BASE_URL}/scans',headers=headers,json=payload)scan = response.json()return scan['scan_id']# Usagescan_id = run_scan("code_scan", ["repo_1", "repo_2"])print(f"Scan started: {scan_id}")
Error Handling
def make_request(method, endpoint, data=None):"""Make API request with error handling"""try:if method == 'GET':response = requests.get(f'{BASE_URL}{endpoint}', headers=headers)elif method == 'POST':response = requests.post(f'{BASE_URL}{endpoint}', headers=headers, json=data)if response.status_code == 401:raise ValueError("Invalid API key")elif response.status_code == 403:raise PermissionError("Insufficient permissions")elif response.status_code >= 500:raise RuntimeError("Server error")return response.json()except requests.RequestException as e:print(f"Network error: {e}")return None
Next Steps
- Node.js Examples - JavaScript code
- API Patterns - Common patterns
- Quick Start - First API call