Skip to content

Configuration

Detailed configuration options for the de.iterate SDK.

Client Configuration

typescript
interface DeIterateClientConfig {
  apiKey: string;
  organizationId: string;
  baseUrl?: string;
  timeout?: number;
  retries?: number;
  headers?: Record<string, string>;
}

Required Options

apiKey

Your de.iterate API key. Get this from your dashboard under Settings → API Tokens.

typescript
const client = new DeIterateClient({
  apiKey: 'deit_your_api_key_here',
  organizationId: 'your-org-id',
});

Security

Never hardcode API keys in your source code. Use environment variables.

organizationId

Your organization/tenancy ID. This determines which organization's data you access.

typescript
const client = new DeIterateClient({
  apiKey: process.env.DEITERATE_API_KEY!,
  organizationId: 'org_abc123', // Your org ID
});

Optional Options

baseUrl

Custom API base URL. Defaults to the production API.

typescript
const client = new DeIterateClient({
  apiKey: '...',
  organizationId: '...',
  baseUrl: 'https://api.staging.deiterate.com/v1', // Staging
});
EnvironmentURL
Productionhttps://api.deiterate.com/v1
Staginghttps://api.staging.deiterate.com/v1
Localhttp://localhost:3000/v1

timeout

Request timeout in milliseconds. Default is 30000 (30 seconds).

typescript
const client = new DeIterateClient({
  apiKey: '...',
  organizationId: '...',
  timeout: 60000, // 60 seconds for slow operations
});

retries

Number of automatic retry attempts for failed requests. Default is 3.

typescript
const client = new DeIterateClient({
  apiKey: '...',
  organizationId: '...',
  retries: 5, // More retries for unreliable networks
});

Retries apply to:

  • Network errors
  • 5xx server errors
  • 429 rate limit errors (with backoff)

Retries do NOT apply to:

  • 4xx client errors (except 429)
  • Validation errors
  • Authentication errors

headers

Custom headers to include with every request.

typescript
const client = new DeIterateClient({
  apiKey: '...',
  organizationId: '...',
  headers: {
    'X-Custom-Header': 'value',
    'X-Request-Source': 'my-integration',
  },
});

Environment Variables

Recommended environment variable names:

bash
# .env
DEITERATE_API_KEY=deit_your_api_key_here
DEITERATE_ORG_ID=your_organization_id
DEITERATE_API_URL=https://api.deiterate.com/v1
typescript
import 'dotenv/config';
import { DeIterateClient } from '@deiterate/sdk';

const client = new DeIterateClient({
  apiKey: process.env.DEITERATE_API_KEY!,
  organizationId: process.env.DEITERATE_ORG_ID!,
  baseUrl: process.env.DEITERATE_API_URL,
});

Configuration Patterns

Development vs Production

typescript
const isDev = process.env.NODE_ENV === 'development';

const client = new DeIterateClient({
  apiKey: process.env.DEITERATE_API_KEY!,
  organizationId: process.env.DEITERATE_ORG_ID!,
  baseUrl: isDev 
    ? 'http://localhost:3000/v1' 
    : 'https://api.deiterate.com/v1',
  timeout: isDev ? 60000 : 30000,
  retries: isDev ? 1 : 3,
});

Multiple Organizations

typescript
// Create clients for different organizations
const orgAClient = new DeIterateClient({
  apiKey: process.env.DEITERATE_API_KEY!,
  organizationId: 'org-a-id',
});

const orgBClient = new DeIterateClient({
  apiKey: process.env.DEITERATE_API_KEY!,
  organizationId: 'org-b-id',
});

Service Account (Cross-Tenancy)

typescript
// Service accounts can access multiple orgs
const serviceClient = new DeIterateClient({
  apiKey: 'deit_sa_service_account_token',
  organizationId: 'default-org', // Can override per-request
});

// Access different orgs
const orgARisks = await serviceClient.risks.list({
  headers: { 'X-Tenancy-Id': 'org-a-id' }
});

Validation

The SDK validates configuration on client creation:

typescript
// ❌ Throws: API key is required
const client = new DeIterateClient({
  apiKey: '',
  organizationId: 'org-id',
});

// ❌ Throws: Organization ID is required
const client = new DeIterateClient({
  apiKey: 'deit_key',
  organizationId: '',
});

TypeScript Support

Full TypeScript support with IntelliSense:

typescript
import { DeIterateClient, DeIterateClientConfig } from '@deiterate/sdk';

// Type-safe configuration
const config: DeIterateClientConfig = {
  apiKey: process.env.DEITERATE_API_KEY!,
  organizationId: process.env.DEITERATE_ORG_ID!,
};

const client = new DeIterateClient(config);

Released under the MIT License.