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
132 lines • 3.59 kB
JavaScript
import { BaseClient } from './base.js';
export class PermissionsClient extends BaseClient {
constructor(config) {
super(config, 'permissions');
}
/**
* Grant permission to a subject
*/
async grantPermission(request) {
return this.post('/permissions/grant', request);
}
/**
* Check if a subject has permission for a specific action
*/
async checkAccess(request) {
return this.post('/permissions/check', request);
}
/**
* Revoke a permission grant
*/
async revokePermission(grantId, reason) {
return this.delete(`/permissions/grant/${encodeURIComponent(grantId)}`, {
data: { reason }
});
}
/**
* Get permission grant by ID
*/
async getPermission(grantId) {
return this.get(`/permissions/grant/${encodeURIComponent(grantId)}`);
}
/**
* Query permission grants with filters
*/
async queryPermissions(query) {
return this.get('/permissions/grants', { params: query });
}
/**
* Get all permissions for a subject
*/
async getPermissionsForSubject(subject, params) {
return this.get(`/permissions/subject/${encodeURIComponent(subject)}`, { params });
}
/**
* Get all permissions for a resource
*/
async getPermissionsForResource(resource, params) {
return this.get(`/permissions/resource/${encodeURIComponent(resource)}`, { params });
}
// Policy Management
/**
* Create a policy rule
*/
async createPolicy(policy) {
return this.post('/policies', policy);
}
/**
* Get policy by ID
*/
async getPolicy(policyId) {
return this.get(`/policies/${encodeURIComponent(policyId)}`);
}
/**
* Update a policy rule
*/
async updatePolicy(policyId, policy) {
return this.put(`/policies/${encodeURIComponent(policyId)}`, policy);
}
/**
* Delete a policy rule
*/
async deletePolicy(policyId) {
return this.delete(`/policies/${encodeURIComponent(policyId)}`);
}
/**
* List all policies
*/
async listPolicies(params) {
return this.get('/policies', { params });
}
/**
* Evaluate policies for a specific request
*/
async evaluatePolicies(request) {
return this.post('/policies/evaluate', request);
}
// Capability Tokens
/**
* Issue a capability token
*/
async issueCapabilityToken(request) {
return this.post('/capabilities/issue', request);
}
/**
* Verify a capability token
*/
async verifyCapabilityToken(token) {
return this.post('/capabilities/verify', { token });
}
/**
* Revoke a capability token
*/
async revokeCapabilityToken(tokenId) {
return this.delete(`/capabilities/${encodeURIComponent(tokenId)}`);
}
/**
* List capability tokens for a subject
*/
async getCapabilityTokens(subject) {
return this.get(`/capabilities/subject/${encodeURIComponent(subject)}`);
}
// Permission Analytics
/**
* Get permission usage statistics
*/
async getPermissionStats(params) {
return this.get('/permissions/stats', { params });
}
/**
* Get access audit trail
*/
async getAccessAuditTrail(params) {
return this.get('/permissions/audit', { params });
}
/**
* Check service health
*/
async getHealth() {
return this.get('/health');
}
}
//# sourceMappingURL=permissions.js.map