Official JavaScript/TypeScript client for the GridLogs API
The official JavaScript/TypeScript client library for interacting with the GridLogs API. This client simplifies API interactions by providing type-safe methods for all GridLogs endpoints.
# If you're working within the GridLogs monorepo
pnpm add @repo/client
# If you're using the published package
npm install @gridlogs/client
# or
yarn add @gridlogs/client
import { GridLogsClient } from '@repo/client';
// Initialize the client
const client = new GridLogsClient({
baseUrl: 'https://api.gridlogs.co/v1',
apiKey: 'your-api-key'
});
// Examples
async function main() {
// Get all business cases
const businessCases = await client.businessCase.getAll({
page: 1,
limit: 10
});
// Get a specific business case
const businessCase = await client.businessCase.getById('business-case-id');
// Create a new business case
const newBusinessCase = await client.businessCase.create({
legalName: 'Acme Corporation',
dbaName: 'Acme Inc',
websiteUrl: 'https://www.acmecorp.com',
businessType: 'LLC'
});
}
Methods for interacting with business cases.
// Get all business cases with pagination
const businessCases = await client.businessCase.getAll({
page: 1,
limit: 10,
status: 'PENDING' // optional filter
});
// Get a business case by ID
const businessCase = await client.businessCase.getById('business-case-id');
// Create a new business case
const newBusinessCase = await client.businessCase.create({
legalName: 'Acme Corporation',
dbaName: 'Acme Inc',
websiteUrl: 'https://www.acmecorp.com',
businessType: 'LLC'
});
// Update a business case
const updatedBusinessCase = await client.businessCase.update('business-case-id', {
websiteUrl: 'https://www.acme-updated.com',
status: 'APPROVED'
});
// Delete a business case
const deletedBusinessCase = await client.businessCase.delete('business-case-id');
// Run KYB analysis
const kybResult = await client.businessCase.runKybAnalysis('business-case-id');
// Toggle auto-check
const businessCaseWithAutoCheck = await client.businessCase.toggleAutoCheck('business-case-id', true);
Methods for interacting with tasks associated with business cases.
// Get all tasks with pagination
const tasks = await client.task.getAll({
page: 1,
limit: 10,
businessCaseId: 'business-case-id', // optional filter
status: 'NEW' // optional filter
});
// Get a task by ID
const task = await client.task.getById('task-id');
// Create a new task
const newTask = await client.task.create({
subject: 'Verify business documents',
types: ['IDENTITY_THEFT', 'ACCOUNT_FRAUD'],
sources: ['SUSPICIOUS_ACTIVITY_REPORTS'],
expiryDate: '2023-12-31T23:59:59Z',
comments: 'High priority verification needed',
businessCaseId: 'business-case-id',
assigneeIds: ['user-id-1', 'user-id-2'] // optional
});
// Update a task
const updatedTask = await client.task.update('task-id', {
status: 'UNDER_INVESTIGATION',
comments: 'In progress, found suspicious activity'
});
// Delete a task
const deletedTask = await client.task.delete('task-id');
// Assign a user to a task
const assignment = await client.task.assignUser('task-id', 'user-id');
// Unassign a user from a task
await client.task.unassignUser('task-id', 'user-id');
Methods for interacting with documents.
// Get all documents with pagination
const documents = await client.document.getAll({
page: 1,
limit: 10,
businessCaseId: 'business-case-id', // optional filter
approvalStatus: 'VERIFICATION_PENDING' // optional filter
});
// Get a document by ID
const document = await client.document.getById('document-id');
// Upload a new document
const file = new File([...], 'certificate.pdf', { type: 'application/pdf' });
const newDocument = await client.document.upload({
title: 'Certificate of Incorporation',
file: file,
businessCaseId: 'business-case-id',
organizationId: 'organization-id'
});
// Update a document
const updatedDocument = await client.document.update('document-id', {
title: 'Updated Certificate Title',
approvalStatus: 'APPROVED'
});
// Delete a document
const deletedDocument = await client.document.delete('document-id');
Methods for interacting with notes.
// Get all notes with pagination
const notes = await client.note.getAll({
page: 1,
limit: 10,
businessCaseId: 'business-case-id' // optional filter
});
// Get a note by ID
const note = await client.note.getById('note-id');
// Create a new note
const newNote = await client.note.create({
content: 'This company has been verified through multiple sources.',
businessCaseId: 'business-case-id'
});
// Update a note
const updatedNote = await client.note.update('note-id', {
content: 'Updated verification information.'
});
// Delete a note
const deletedNote = await client.note.delete('note-id');
Methods for interacting with organizations.
// Get all organizations with pagination
const organizations = await client.organization.getAll({
page: 1,
limit: 10,
status: 'ACTIVE' // optional filter
});
// Get an organization by ID
const organization = await client.organization.getById('organization-id');
// Create a new organization
const newOrganization = await client.organization.create({
name: 'Example Financial Services',
address: '123 Finance St, New York, NY',
domain: 'examplefinancial.com'
});
// Update an organization
const updatedOrganization = await client.organization.update('organization-id', {
address: '456 Banking Ave, New York, NY'
});
// Delete an organization
const deletedOrganization = await client.organization.delete('organization-id');
// Add a user to an organization
await client.organization.addUser({
organizationId: 'organization-id',
userId: 'user-id',
role: 'ADMIN'
});
// Remove a user from an organization
await client.organization.removeUser({
organizationId: 'organization-id',
userId: 'user-id'
});
Methods for interacting with users.
// Get all users with pagination
const users = await client.user.getAll({
page: 1,
limit: 10,
status: 'VERIFIED' // optional filter
});
// Get a user by ID
const user = await client.user.getById('user-id');
// Create a new user
const newUser = await client.user.create({
name: 'Jane Doe',
email: 'jane.doe@example.com',
globalRole: 'USER'
});
// Update a user
const updatedUser = await client.user.update('user-id', {
name: 'Jane Smith',
status: 'VERIFIED'
});
// Delete a user
const deletedUser = await client.user.delete('user-id');
Methods for interacting with consumer cases.
// Get all consumer cases with pagination
const consumerCases = await client.consumerCase.getAll({
page: 1,
limit: 10,
status: 'PENDING' // optional filter
});
// Get a consumer case by ID
const consumerCase = await client.consumerCase.getById('consumer-case-id');
// Create a new consumer case
const newConsumerCase = await client.consumerCase.create({
fullName: 'John Smith',
email: 'john.smith@example.com',
phone: '+1234567890',
organizationId: 'organization-id'
});
// Update a consumer case
const updatedConsumerCase = await client.consumerCase.update('consumer-case-id', {
status: 'APPROVED'
});
// Delete a consumer case
const deletedConsumerCase = await client.consumerCase.delete('consumer-case-id');
The client includes built-in error handling. Errors thrown by the client include detailed information about what went wrong.
try {
const businessCase = await client.businessCase.getById('non-existent-id');
} catch (error) {
console.error(`Error ${error.status}: ${error.message}`);
// Additional error details may be available in error.data
}
The client is built with TypeScript and includes comprehensive type definitions for all API resources and parameters.