open-index/open-npm huggingface dataset:
npm package: @outerport/outerport
Description: Outerport TypeScript SDK
Author: Outerport
Latest version: 0.1.0

# Outerport TypeScript SDK

This is the official TypeScript SDK for the Outerport API. It provides a convenient way to interact with the Outerport API from TypeScript or JavaScript applications.

## Installation

```bash
npm install outerport
```

## Usage

### Initializing the Client

```typescript
import { OuterportClient } from "outerport";

// Initialize the client with your API key
const client = new OuterportClient("your_api_key", "https://api.outerport.com");
```

### Working with Documents

```typescript
// Upload a document
import * as fs from "fs";
const fileBuffer = fs.readFileSync("path/to/document.pdf");
const doc = await client.documents.create(fileBuffer, "document.pdf");

// List all documents
const allDocs = await client.documents.list();

// Retrieve a document by ID
const doc = await client.documents.retrieve(123);

// Update document metadata
await doc.updateMetadata({
  name: "Updated Document Name",
  summary: "Updated summary",
});

// Add tags to a document
await doc.addTags(["tag1", "tag2"]);

// Get tags for a document
const tags = await doc.getTags();

// Delete a document
await doc.delete();
```

### Asking Questions

```typescript
// Ask a question about a document
const question = await client.questions.create(
  "What are the key points in this document?",
  [doc], // Pass one or more Document objects or document IDs
);

console.log(question.finalAnswer);

// List all questions
const allQuestions = await client.questions.list();

// Retrieve a question by ID
const question = await client.questions.retrieve(123);

// Delete a question
await question.delete();
```

### Working with Retention Policies

```typescript
// Create a retention policy
const policy = await client.retentionPolicies.create(
  "Policy Name",
  "Policy Description",
  30, // retention period in days
);

// List all retention policies
const allPolicies = await client.retentionPolicies.list();

// Retrieve a retention policy by ID
const policy = await client.retentionPolicies.retrieve(123);

// Update a retention policy
await policy.update({
  name: "Updated Policy Name",
  description: "Updated description",
  retentionPeriodDays: 60,
});

// Add a document to a retention policy
await policy.addDocument(doc.id);

// Get all documents for a retention policy
const docs = await policy.getDocuments();

// Delete a retention policy
await policy.delete();
```

## Error Handling

The SDK throws errors for API errors and network issues. You can catch these errors using standard try/catch blocks:

```typescript
try {
  const doc = await client.documents.retrieve(123);
} catch (error) {
  console.error("Error retrieving document:", error);
}
```

## Development

### Building the SDK

```bash
npm run build
```

### Running Tests

```bash
npm test
```

## License

This SDK is licensed under the Apache License 2.0. See the LICENSE file for details.