uipath-typescript
uipath-typescript copied to clipboard
A comprehensive Typescript SDK for interacting with UiPath's Automation Platform
UiPath TypeScript SDK
Documentation • Getting Started • Usage • Samples
A comprehensive TypeScript SDK for interacting with UiPath Platform services.
Table of Contents
- Overview
- Getting Started
- Prerequisites
- Installation
- Quick Start
- Authentication
- Authentication Methods
- SDK Initialization
- OAuth Integration Patterns
- Usage
- Samples
- Development
Overview
The UiPath TypeScript SDK is a comprehensive, type-safe library for interacting with UiPath Platform services. Built with modern TypeScript, it provides seamless integration for both browser and Node.js applications, enabling developers to build sophisticated automation solutions with enterprise-grade reliability.
Getting Started
Prerequisites
- Node.js 18.x or higher
- npm 8.x or higher (or yarn/pnpm)
- TypeScript 4.5+ (for TypeScript projects)
Installation
# Using npm
npm install @uipath/uipath-typescript
# Using yarn
yarn add @uipath/uipath-typescript
# Using pnpm
pnpm add @uipath/uipath-typescript
Quick Start
import { UiPath } from '@uipath/uipath-typescript';
// Initialize the SDK with OAuth
const sdk = new UiPath({
baseUrl: 'https://cloud.uipath.com',
orgName: 'your-organization',
tenantName: 'your-tenant',
clientId: 'your-client-id',
redirectUri: 'your-redirect-uri',
scope: 'your-scopes'
});
// Initialize OAuth flow
await sdk.initialize();
// Use the services
const processes = await sdk.maestro.processes.getAll();
const tasks = await sdk.tasks.getAll();
↑ Back to top
Authentication
Authentication Methods
The SDK supports two authentication methods:
For OAuth, first create a non confidential External App with the required scopes and provide the clientId, redirectUri, and scope here.
1. OAuth Authentication (Recommended)
const sdk = new UiPath({
baseUrl: 'https://cloud.uipath.com',
orgName: 'your-organization',
tenantName: 'your-tenant',
clientId: 'your-client-id',
redirectUri: 'your-redirect-uri',
scope: 'your-scopes'
});
// IMPORTANT: OAuth requires calling initialize()
await sdk.initialize();
2. Secret-based Authentication
const sdk = new UiPath({
baseUrl: 'https://cloud.uipath.com',
orgName: 'your-organization',
tenantName: 'your-tenant',
secret: 'your-secret' //PAT Token or Bearer Token
});
SDK Initialization
When to Use initialize()
The initialize() method completes the authentication process for the SDK:
- Secret Authentication: Auto-initializes when creating the SDK instance - no need to call initialize()
- OAuth Authentication: MUST call
await sdk.initialize()before using any SDK services
Example: Secret Authentication (Auto-initialized)
const sdk = new UiPath({
baseUrl: 'https://cloud.uipath.com',
orgName: 'your-organization',
tenantName: 'your-tenant',
secret: 'your-secret' //PAT Token or Bearer Token
});
// Ready to use immediately - no initialize() needed
const tasks = await sdk.tasks.getAll();
Example: OAuth Authentication (Requires initialize)
const sdk = new UiPath({
baseUrl: 'https://cloud.uipath.com',
orgName: 'your-organization',
tenantName: 'your-tenant',
clientId: 'your-client-id',
redirectUri: 'http://localhost:3000',
scope: 'your-scopes'
});
// Must initialize before using services
try {
await sdk.initialize();
console.log('SDK initialized successfully');
// Now you can use the SDK
const tasks = await sdk.tasks.getAll();
} catch (error) {
console.error('Failed to initialize SDK:', error);
}
OAuth Integration Patterns
View Integration Patterns
Auto-login on App Load
useEffect(() => {
const initSDK = async () => {
const sdk = new UiPath({...oauthConfig});
await sdk.initialize();
};
initSDK();
}, []);
User-Triggered Login
const onLogin = async () => {
await sdk.initialize();
};
// Handle OAuth callback
const oauthCompleted = useRef(false);
useEffect(() => {
if (sdk.isInitialized() && !oauthCompleted.current) {
oauthCompleted.current = true;
sdk.completeOAuth();
}
}, []);
Available OAuth Methods
sdk.initialize()- Start OAuth flow (auto completes also based on callback state)sdk.isInitialized()- Check if SDK initialization completedsdk.isAuthenticated()- Check if user has valid tokensdk.isInOAuthCallback()- Check if processing OAuth redirectsdk.completeOAuth()- Manually complete OAuth (advanced use)
↑ Back to top
Usage
The SDK provides access to the following services through a consistent API:
sdk.maestro.processes- Manage agentic maestro processessdk.maestro.processes.instances- Manage maestro process executionssdk.maestro.cases- Manage maestro case management processessdk.maestro.cases.instances- Manage maestro case executionssdk.tasks- Create and manage taskssdk.entities- Data Fabric entity operationssdk.processes- Manage Orchestrator processessdk.buckets- Manage storage buckets in Orchestratorsdk.queues- Manage Orchestrator queuessdk.assets- Manage Orchestrator assets
View Example Usage
// Maestro - Get processes and their instances
const processes = await sdk.maestro.processes.getAll();
const instances = await sdk.maestro.processes.instances.getAll({
processKey: 'my-process',
pageSize: 10
});
// Control Process Instances
await sdk.maestro.processes.instances.pause(instanceId, 'folder-key');
await sdk.maestro.processes.instances.resume(instanceId, 'folder-key');
await sdk.maestro.processes.instances.cancel(instanceId, 'folder-key', {
comment: 'Cancelled due to error'
});
// Maestro Case Instances
const caseInstance = await sdk.maestro.cases.instances.getById(instanceId, 'folder-key');
const stages = await sdk.maestro.cases.instances.getStages(instanceId, 'folder-key');
// Control Case Instances
await sdk.maestro.cases.instances.close(instanceId, 'folder-key', {
comment: 'Case resolved successfully'
});
// Orchestrator Processes - Start a process
const result = await sdk.processes.start({
processKey: 'MyProcess_Key',
}, folderId);
// Tasks - Create, assign, and complete
const task = await sdk.tasks.create({
title: 'Review Invoice',
priority: 'High'
}, folderId);
await sdk.tasks.assign({
taskId: task.id,
userNameOrEmail: '[email protected]'
}, folderId);
await sdk.tasks.complete(TaskType.App, {
taskId: task.id,
data: {},
action: 'submit'
}, folderId);
// Buckets - File operations
const bucket = await sdk.buckets.getById(bucketId, folderId);
const fileMetadata = await sdk.buckets.getFileMetaData(bucketId, folderId, {
prefix: '/invoices/'
});
// Upload file
await sdk.buckets.uploadFile({
bucketId: bucketId,
folderId: folderId,
prefix: '/folder1'
});
// Get download URL
const downloadUrl = await sdk.buckets.getReadUri({
bucketId: bucketId,
folderId: folderId,
path: '/folder/file.pdf'
});
// Data Fabric Entities - CRUD operations
const entity = await sdk.entities.getById('entity-uuid');
const records = await sdk.entities.getRecordsById('entity-uuid', {
pageSize: 100,
expansionLevel: 1
});
// Insert records
await sdk.entities.insertById('entity-uuid', [
{ name: 'John Doe', email: '[email protected]', status: 'Active' },
{ name: 'Jane Smith', email: '[email protected]', status: 'Active' }
]);
// Update records
await sdk.entities.updateById('entity-uuid', [
{ Id: 'record-id-1', status: 'Inactive' }
]);
// Delete records
await sdk.entities.deleteById('entity-uuid', ['record-id-1', 'record-id-2']);
↑ Back to top
Samples
Check out the /samples folder to see sample applications built using the SDK:
- process-app: A Maestro process management application demonstrating OAuth authentication and SDK usage
↑ Back to top
Development
Before submitting a pull request, please review our Contribution Guidelines.
↑ Back to top