@fern-api/twilio-core-snippets
v0.1.1
Published
Generate usage snippets for Twilio Core SDKs
Readme
Twilio Core Snippets SDK
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:
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:
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:
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:
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():
const apis = python.listApis();
// ["accounts", "assistants", "chat", "conversations", ...]Auth Helpers
The Auth factory provides type-safe constructors for auth values:
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:
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:
// 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({ ... });
...