npm package: @fern-api/twilio-core-snippets
Description: Generate usage snippets for Twilio Core SDKs
Author: Fern
Latest version: 0.1.0

# Twilio Core Snippets SDK

[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-SDK%20generated%20by%20Fern-brightgreen)](https://github.com/fern-api/fern)

The Twilio Core Snippets SDK produces valid usage snippets from arbitrary request data for the Twilio Core API.

## Supported Languages

The SDK supports generating code snippets for the following languages:
- **Python** - Python SDK snippets
- **Java** - Java SDK snippets

## Usage

The SDK can be used as follows:

```typescript
import { SnippetResolver } from "@fern-api/twilio-core-snippets";

const resolver = new SnippetResolver();
const python = resolver.sdk("python");
const endpoint = python.endpoint("GET /v1/Credentials/AWS");
const response = await endpoint.generate({
    auth: {
        type: "basic",
        username: "<TWILIO_ACCOUNT_SID>",
        password: "<TWILIO_AUTH_TOKEN>"
    }
});
```

The generated `response.snippet` will contain a valid Python snippet using the SDK.

## Default snippets

You can call the `generate` method without a request payload to retrieve the default example of the endpoint like so:

```typescript
import { SnippetResolver } from "@fern-api/twilio-core-snippets";

const resolver = new SnippetResolver();
const python = resolver.sdk("python");
const endpoint = python.endpoint("POST /v1/Credentials/AWS");
const response = await endpoint.generate();
```

The generated snippet will include required fields with example values.

Note that the result will omit optional properties, so if a request is entirely composed of optional values, you're better off providing your own request payload.

## Sync Methods

The SDK also exposes a `generateSync` method for users that don't have access to `async` and `await` in specific contexts. It uses the same parameters as `generate` and can be invoked like so:

```typescript
import { SnippetResolver } from "@fern-api/twilio-core-snippets";

const resolver = new SnippetResolver();
const python = resolver.sdk("python");
const endpoint = python.endpoint("GET /v1/Credentials/AWS")
const response = endpoint.generateSync({ ... });
```

## API Disambiguation

Some endpoints share the same HTTP method and path across different Twilio APIs (e.g., `GET /v1/Services/{Sid}` exists in conversations, notify, proxy, serverless, and sync). When resolving an ambiguous path, the SDK throws an error listing the available APIs. Use the `api` option to disambiguate:

```typescript
import { SnippetResolver } from "@fern-api/twilio-core-snippets";

const resolver = new SnippetResolver();
const python = resolver.sdk("python");

// Ambiguous — throws an error listing available apis
python.endpoint("GET /v1/Knowledge");

// Disambiguated — resolves to the notify variant
python.endpoint("GET /v1/Knowledge", { api: "knowledge" });
```

Unique paths (like `GET /v1/Credentials/AWS`) continue to work without the `api` option.

You can discover all available API names with `listApis()`:

```typescript
const apis = python.listApis();
// ["accounts", "assistants", "chat", "conversations", ...]
```

## Auth Helpers

The `Auth` factory provides type-safe constructors for auth values:

```typescript
import { Auth } from "@fern-api/twilio-core-snippets";

Auth.basic("username", "password") // { type: "basic", username, password }
Auth.bearer("token")               // { type: "bearer", token }
Auth.header("api-key")             // { type: "header", value }
```

You can also inspect an endpoint's auth scheme:

```typescript
const endpoint = python.endpoint("GET /v1/Credentials/AWS");
endpoint.authScheme(); // "basic"
```

## Endpoint Filtering

For performance, the `endpoint` method filters the provided API specification to only contain the selected endpoint (e.g. `GET /v1/Credentials/AWS`). This means you can reuse the filtered result with a simple variable for the endpoint like so:

```typescript
// The 'endpoint' variable acts upon an API specification that only contains the selected endpoint.
const endpoint = python.endpoint("POST /v1/Credentials/AWS")

// Generate multiple snippets using the same instance.
const one = endpoint.generateSync({ ... });
const two = endpoint.generateSync({ ... });
...
```