GridLogs Client Library

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.

Installation

# 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

Getting Started

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'
  });
}

API Reference

Business Cases

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);

Tasks

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');

Documents

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');

Notes

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');

Organizations

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'
});

Users

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');

Consumer Cases

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');

Error Handling

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
}

TypeScript Support

The client is built with TypeScript and includes comprehensive type definitions for all API resources and parameters.