atp-sdk
Version:
Official TypeScript SDK for Agent Trust Protocol™ - Build secure, verifiable, and trustworthy applications with decentralized identity, verifiable credentials, and robust access control
211 lines (163 loc) • 5.92 kB
Markdown
# ATP™ SDK Examples
This directory contains comprehensive examples demonstrating the capabilities of the Agent Trust Protocol™ SDK.
## Quick Start
Run all examples:
```bash
node examples/index.js --all
```
Run a specific example:
```bash
node examples/index.js 1 # Basic setup
node examples/index.js 2 # Identity management
# ... etc
```
## Examples Overview
### 1. Basic Setup (`01-basic-setup.js`)
**Demonstrates:** SDK initialization and connectivity testing
- Basic client configuration
- Service connectivity testing
- Error handling basics
**Key concepts:**
- `ATPClient` initialization
- `createQuickConfig()` helper
- Service health checks
### 2. Identity Management (`02-identity-management.js`)
**Demonstrates:** DID creation, registration, and MFA setup
- Generate new DIDs and key pairs
- Register identities with the ATP network
- Set up multi-factor authentication
- Manage trust levels and verification
**Key concepts:**
- `DIDUtils.generateDID()`
- Identity registration and resolution
- MFA setup and verification
- Trust score management
### 3. Verifiable Credentials (`03-verifiable-credentials.js`)
**Demonstrates:** Credential issuance, verification, and presentations
- Create credential schemas
- Issue verifiable credentials
- Create and verify presentations
- Credential lifecycle management
**Key concepts:**
- Schema creation and management
- Credential issuance workflow
- Presentation creation and verification
- Credential revocation and status
### 4. Permissions & Access Control (`04-permissions-and-access-control.js`)
**Demonstrates:** Policy management and access control
- Create permission policies
- Grant and revoke permissions
- Evaluate access decisions
- Capability token delegation
**Key concepts:**
- Policy-based access control
- Permission grants and evaluation
- Capability tokens for delegation
- Audit trails for permissions
### 5. Audit Logging (`05-audit-logging.js`)
**Demonstrates:** Comprehensive audit trail management
- Log audit events across services
- Query and search audit trails
- Verify audit chain integrity
- Generate compliance reports
**Key concepts:**
- Structured audit event logging
- Advanced audit queries and search
- Blockchain integration for immutability
- Compliance reporting and data export
### 6. Real-time Monitoring (`06-real-time-monitoring.js`)
**Demonstrates:** WebSocket events and live monitoring
- Connect to real-time event streams
- Handle different event types
- Monitor security events and alerts
- WebSocket connection management
**Key concepts:**
- WebSocket event streaming
- Event filtering and processing
- Real-time security monitoring
- Connection management and reconnection
### 7. Advanced Use Cases (`07-advanced-use-cases.js`)
**Demonstrates:** Complex workflows and patterns
- Multi-party credential workflows
- Complex permission delegation chains
- Cross-service orchestration
- Error handling and retry patterns
- Batch operations
**Key concepts:**
- Multi-party trust relationships
- Atomic transactions across services
- Circuit breaker and retry patterns
- Batch processing and error recovery
## Prerequisites
1. **ATP™ Services Running**: Ensure all ATP services are running:
- Identity Service (port 3001)
- Credentials Service (port 3002)
- Permissions Service (port 3003)
- Audit Service (port 3004)
- Gateway Service (port 3000)
2. **Node.js Environment**: Node.js 18+ with ES modules support
3. **Network Access**: Local network access to ATP services
## Configuration
The examples use `createQuickConfig('http://localhost')` for local development. For production environments, update the base URL and add authentication:
```javascript
const config = createQuickConfig('https://your-atp-instance.com', {
timeout: 30000,
auth: {
did: 'your-did',
privateKey: 'your-private-key'
}
});
```
## Error Handling
The examples demonstrate various error handling patterns:
- **Basic try/catch**: Simple error handling for individual operations
- **Retry patterns**: Exponential backoff for transient failures
- **Circuit breakers**: Fail-fast for cascading failures
- **Graceful degradation**: Continue operation when non-critical services fail
## Security Considerations
These examples are for demonstration purposes. In production:
1. **Never hardcode private keys** - use secure key management
2. **Validate all inputs** - implement proper input validation
3. **Use HTTPS/TLS** - ensure encrypted communication
4. **Implement rate limiting** - prevent abuse and DoS attacks
5. **Monitor and audit** - track all access and operations
## Extending Examples
To create custom examples:
1. Follow the existing pattern structure
2. Import required SDK components
3. Implement proper error handling
4. Add comprehensive logging
5. Clean up resources in finally blocks
```javascript
import { ATPClient, createQuickConfig } from '@atp/sdk';
async function myCustomExample() {
const client = new ATPClient(createQuickConfig('http://localhost'));
try {
// Your example code here
} catch (error) {
console.error('Example failed:', error.message);
} finally {
client.cleanup();
}
}
```
## Troubleshooting
**Common Issues:**
1. **Connection Refused**: Ensure ATP services are running
2. **Authentication Errors**: Check DID and private key configuration
3. **Permission Denied**: Verify proper permissions and trust levels
4. **Timeout Errors**: Increase timeout values or check network connectivity
**Debug Mode:**
Enable debug logging by setting the debug flag:
```javascript
const config = createQuickConfig('http://localhost', {
debug: true
});
```
## Support
For questions or issues with the examples:
- Check the main SDK documentation
- Review the troubleshooting section
- Submit issues to the ATP™ repository
## License
These examples are part of the ATP™ SDK and are subject to the same license terms.