Node.js Examples
Node.js Examples
Integrate GovernanceAI with Node.js applications.
Installation
$ npm install axios dotenv
Basic Setup
1 require('dotenv').config(); 2 const axios = require('axios'); 3 4 const API_KEY = process.env.GOVERNANCEAI_API_KEY; 5 const ORG_ID = process.env.GOVERNANCEAI_ORG_ID; 6 const BASE_URL = 'https://api.governanceai.com/v1'; 7 8 const client = axios.create({ 9 baseURL: BASE_URL, 10 headers: { 11 'Authorization': `Bearer ${API_KEY}`, 12 'Content-Type': 'application/json' 13 } 14 });
Evaluate Guardrails
1 async function evaluateGuardrails(userMessage, userId) { 2 try { 3 const response = await client.post('/guardrails/evaluate', { 4 messages: [ 5 { 6 role: 'user', 7 content: userMessage 8 } 9 ], 10 context: { 11 org_id: ORG_ID, 12 user_id: userId 13 } 14 }); 15 16 return { 17 decision: response.data.decision, 18 riskScore: response.data.risk_score, 19 violations: response.data.policy_violations 20 }; 21 } catch (error) { 22 console.error('Guardrail evaluation failed:', error.message); 23 throw error; 24 } 25 } 26 27 // Usage 28 const result = await evaluateGuardrails( 29 "What is the capital of France?", 30 "user_123" 31 ); 32 console.log(`Decision: ${result.decision}`); 33 console.log(`Risk Score: ${result.riskScore}`);
Create Policy
1 async function createPolicy(policyName, guardrailIds) { 2 const response = await client.post('/policies', { 3 name: policyName, 4 guardrail_ids: guardrailIds, 5 scope: 'organization', 6 enforcement: { 7 mode: 'blocking', 8 log_violations: true 9 } 10 }); 11 12 return response.data; 13 } 14 15 // Usage 16 const policy = await createPolicy( 17 'Production Safety', 18 ['guardrail_pii', 'guardrail_toxic'] 19 ); 20 console.log(`Policy created: ${policy.policy_id}`);
Run Scan with Async/Await
1 async function runScan(scanType, repositories) { 2 // Start scan 3 const scanResponse = await client.post('/scans', { 4 scan_type: scanType, 5 repositories: repositories 6 }); 7 8 const scanId = scanResponse.data.scan_id; 9 console.log(`Scan started: ${scanId}`); 10 11 // Poll for completion 12 let completed = false; 13 let results = null; 14 15 while (!completed) { 16 const statusResponse = await client.get(`/scans/${scanId}`); 17 const scan = statusResponse.data; 18 19 if (scan.status === 'completed') { 20 completed = true; 21 results = scan; 22 } else { 23 // Wait 5 seconds before polling again 24 await new Promise(resolve => setTimeout(resolve, 5000)); 25 } 26 } 27 28 return results; 29 } 30 31 // Usage 32 const scanResults = await runScan('code_scan', ['repo_1', 'repo_2']); 33 console.log(`Found ${scanResults.models_found} models`);
Error Handling
1 async function makeRequest(method, endpoint, data = null) { 2 try { 3 let response; 4 5 if (method === 'GET') { 6 response = await client.get(endpoint); 7 } else if (method === 'POST') { 8 response = await client.post(endpoint, data); 9 } 10 11 return response.data; 12 } catch (error) { 13 if (error.response?.status === 401) { 14 throw new Error('Invalid API key'); 15 } else if (error.response?.status === 403) { 16 throw new Error('Insufficient permissions'); 17 } else if (error.response?.status >= 500) { 18 throw new Error('Server error - try again later'); 19 } else if (error.message === 'Network Error') { 20 throw new Error('Network error - check your connection'); 21 } 22 23 throw error; 24 } 25 }
TypeScript Support
1 interface GuardrailEvaluationResult { 2 decision: 'allow' | 'block' | 'transform'; 3 riskScore: number; 4 violations: any[]; 5 } 6 7 async function evaluateGuardrails( 8 userMessage: string, 9 userId: string 10 ): Promise<GuardrailEvaluationResult> { 11 const response = await client.post('/guardrails/evaluate', { 12 messages: [{ role: 'user', content: userMessage }], 13 context: { org_id: ORG_ID, user_id: userId } 14 }); 15 16 return { 17 decision: response.data.decision, 18 riskScore: response.data.risk_score, 19 violations: response.data.policy_violations 20 }; 21 }
Next Steps
- Python Examples - Python code
- API Patterns - Common patterns
- Quick Start - First API call