This commit is contained in:
naudachu 2026-02-13 15:21:30 +05:00
commit 2c0505f16f
3 changed files with 1354 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
.DS_Store
references/docs

760
SKILL.md Normal file
View File

@ -0,0 +1,760 @@
---
name: coda-pack-dev
description: Use when the user asks about building Coda Packs, creating formulas, sync tables, actions, authentication, schemas, parameters, or any Coda Pack SDK questions.
---
# Coda Pack Development Expert
Expert assistance for building Coda Packs using the Coda Pack SDK. Provides guidance on formulas, sync tables, actions, authentication, and best practices.
## What Are Coda Packs?
Coda Packs are extensions that add new capabilities to Coda documents. They're built using TypeScript/JavaScript and run on Coda's servers as serverless applications.
### Four Core Extension Types
1. **Formulas** - Custom functions for calculations or data retrieval
2. **Actions** - Special formulas that modify external applications (used in buttons/automations)
3. **Column Formats** - Control how values display in tables
4. **Sync Tables** - Automated tables that pull data from external sources
## Pack Structure
### Basic pack.ts Template
```typescript
import * as coda from "@codahq/packs-sdk";
export const pack = coda.newPack();
// Add network domains your pack will access
pack.addNetworkDomain("api.example.com");
// Add formulas, sync tables, etc.
```
## Creating Formulas
### Formula Anatomy
```typescript
pack.addFormula({
name: "FormulaName", // Upper camel case, letters/numbers/underscores only
description: "What it does",
parameters: [ // Array of parameters
coda.makeParameter({
type: coda.ParameterType.String,
name: "paramName",
description: "What this param does",
optional: false, // Optional: mark as optional param
}),
],
resultType: coda.ValueType.String, // Return type
isAction: false, // Set true for actions (buttons/automations)
execute: async function(args, context) {
// Your code here
return result;
},
});
```
### Parameter Types
Common parameter types:
- `ParameterType.String` - Text values
- `ParameterType.Number` - Numeric values
- `ParameterType.Boolean` - True/false
- `ParameterType.Date` - Date values
- `ParameterType.StringArray` - Array of strings
- `ParameterType.NumberArray` - Array of numbers
- `ParameterType.Html` - HTML content
- `ParameterType.Image` - Image URL or data
### Result Types
Common result types:
- `ValueType.String` - Text
- `ValueType.Number` - Numbers
- `ValueType.Boolean` - True/false
- `ValueType.Array` - Array of values
- `ValueType.Object` - Structured object (requires schema)
### Formula Naming Best Practices
- **Data sources**: Use plural nouns (`Tasks`, `Users`)
- **Transformations**: Use verbs (`Reverse`, `Truncate`)
- **Multiple words**: Upper camel case (`BugReport`, `DeletedFiles`)
- **Avoid prefixes**: Skip "Get", "Lookup", "Query"
- **Unique names**: Must be unique within pack
⚠️ **Warning**: Renaming formulas breaks existing documents using them!
### Making HTTP Requests
```typescript
execute: async function([param1, param2], context) {
let response = await context.fetcher.fetch({
method: "POST",
url: "https://api.example.com/endpoint",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
key: "value",
}),
});
// Check status
if (response.status !== 200) {
throw new coda.UserVisibleError("API request failed");
}
// Access response body
let data = response.body;
return data.result;
}
```
## Actions vs Regular Formulas
**Actions** (`isAction: true`) are formulas designed for buttons and automations:
- Can modify external systems (create, update, delete)
- Show differently in the formula picker
- Used in button formulas and automations
**Regular formulas** are for calculations and data retrieval:
- Should be idempotent (same inputs = same output)
- Cached for performance
- Used in table columns and document calculations
## Sync Tables
### Basic Sync Table Structure
```typescript
// 1. Define schema
const ItemSchema = coda.makeObjectSchema({
properties: {
id: {
type: coda.ValueType.Number,
fromKey: "id",
required: true,
},
name: {
type: coda.ValueType.String,
fromKey: "name",
required: true,
},
url: {
type: coda.ValueType.String,
fromKey: "url",
codaType: coda.ValueHintType.Url,
},
},
displayProperty: "name", // Primary column
idProperty: "id", // Unique identifier
featuredProperties: ["name", "url"], // Show by default
});
// 2. Add sync table
pack.addSyncTable({
name: "Items",
identityName: "Item", // Singular form
schema: ItemSchema,
formula: {
name: "SyncItems",
description: "Sync items from API",
parameters: [
// Optional filter parameters
],
execute: async function(args, context) {
let response = await context.fetcher.fetch({
method: "GET",
url: "https://api.example.com/items",
});
let items = response.body.items;
return {
result: items, // Array of objects matching schema
};
},
},
});
```
### Sync Table Key Concepts
**Identity**: Every sync table needs `identityName` (singular form of table name)
**Schema Properties**: Define the structure of each row
- Use `fromKey` to map API field names to schema properties
- Set `required: true` for mandatory fields
- Use `displayProperty` for the primary column
- Use `idProperty` for unique identification
**Row Limits**:
- Default: 1,000 rows
- Maximum: 10,000 rows
**Continuations**: For paginated results exceeding 60s timeout:
```typescript
execute: async function(args, context) {
let url = context.sync.continuation?.nextUrl || "https://api.example.com/items";
let response = await context.fetcher.fetch({ method: "GET", url });
let continuation;
if (response.body.next_page) {
continuation = {
nextUrl: response.body.next_page,
};
}
return {
result: response.body.items,
continuation: continuation,
};
}
```
### Dynamic Sync Tables
For APIs with multiple similar endpoints:
```typescript
pack.addDynamicSyncTable({
name: "DynamicTable",
getName: async function(context) {
// Return table name based on context
},
getSchema: async function(context) {
// Return schema based on selected entity
},
getDisplayUrl: async function(context) {
// Return URL to view the data
},
listDynamicUrls: async function(context) {
// Return list of available tables
},
formula: {
// Same as regular sync table
},
});
```
**See [Advanced Sync Tables](references/advanced-sync-tables.md) for:**
- Complete dynamic sync table implementation guide
- Two-way sync (editable sync tables)
- Property options and dynamic dropdowns
- Folder organization, search, and manual URL entry
### Two-Way Sync Tables
Enable users to edit synced data and push changes back to external sources. Mark columns as editable with `mutable: true` and implement an `executeUpdate` function:
```typescript
const TaskSchema = coda.makeObjectSchema({
properties: {
id: { type: coda.ValueType.Number, required: true },
name: {
type: coda.ValueType.String,
mutable: true, // Editable column
},
status: {
type: coda.ValueType.String,
codaType: coda.ValueHintType.SelectList,
options: ["Todo", "In Progress", "Done"],
mutable: true,
},
},
displayProperty: "name",
idProperty: "id",
});
pack.addSyncTable({
name: "Tasks",
identityName: "Task",
schema: TaskSchema,
formula: {
name: "SyncTasks",
description: "Sync tasks",
parameters: [],
execute: async function([], context) {
// Fetch data from API
let response = await context.fetcher.fetch({
method: "GET",
url: "https://api.example.com/tasks",
});
return { result: response.body.tasks };
},
executeUpdate: async function([], context, updates) {
// Push changes back to API
let results = [];
for (let update of updates) {
let response = await context.fetcher.fetch({
method: "PATCH",
url: `https://api.example.com/tasks/${update.previousValue.id}`,
body: JSON.stringify({
name: update.newValue.name,
status: update.newValue.status,
}),
});
results.push(response.body);
}
return { result: results };
},
},
});
```
**See [Advanced Sync Tables](references/advanced-sync-tables.md) for:**
- Property options (static and dynamic)
- Batch updates with `maxUpdateBatchSize`
- Error handling in updates
- OAuth incremental authorization
## Authentication
### Setting Up Authentication
```typescript
// User authentication (most common)
pack.setUserAuthentication({
type: coda.AuthenticationType.HeaderBearerToken,
instructionsUrl: "https://example.com/get-api-key",
});
// Or system authentication (shared credentials)
pack.setSystemAuthentication({
type: coda.AuthenticationType.HeaderBearerToken,
});
```
### Authentication Types
- **HeaderBearerToken** - Bearer token in Authorization header
- **CustomHeaderToken** - Custom header name
- **QueryParamToken** - Token in query string
- **WebBasic** - Username and password
- **OAuth2** - OAuth 2.0 flow
- **CodaApiHeaderBearerToken** - For Coda API
- **AWSAccessKey** - AWS Signature v4
### OAuth2 Authentication
```typescript
pack.setUserAuthentication({
type: coda.AuthenticationType.OAuth2,
authorizationUrl: "https://example.com/oauth/authorize",
tokenUrl: "https://example.com/oauth/token",
scopes: ["read", "write"],
// Get account name for the connection
getConnectionName: async function(context) {
let response = await context.fetcher.fetch({
method: "GET",
url: "https://api.example.com/me",
});
return response.body.username;
},
});
```
### Per-Account Endpoints
For services with account-specific domains:
```typescript
pack.setUserAuthentication({
type: coda.AuthenticationType.HeaderBearerToken,
// Prompt user for their account URL
getConnectionName: async function(context) {
return context.endpoint || "Unknown";
},
endpointDomain: async function(context) {
return context.endpoint;
},
networkDomain: "example.com",
});
// Access endpoint in formulas
execute: async function(args, context) {
let url = `https://${context.endpoint}/api/endpoint`;
// ...
}
```
## Schemas
### Object Schema
```typescript
const PersonSchema = coda.makeObjectSchema({
properties: {
id: { type: coda.ValueType.Number },
name: { type: coda.ValueType.String },
email: {
type: coda.ValueType.String,
codaType: coda.ValueHintType.Email,
},
joinDate: {
type: coda.ValueType.String,
codaType: coda.ValueHintType.Date,
},
avatar: {
type: coda.ValueType.String,
codaType: coda.ValueHintType.ImageReference,
},
isActive: { type: coda.ValueType.Boolean },
},
displayProperty: "name",
idProperty: "id",
featuredProperties: ["name", "email"],
});
```
### Value Hints (codaType)
Make data more interactive:
- `ValueHintType.Url` - Clickable links
- `ValueHintType.Email` - Email addresses
- `ValueHintType.Date` - Date formatting
- `ValueHintType.DateTime` - Date and time
- `ValueHintType.ImageReference` - Display images
- `ValueHintType.ImageAttachment` - Inline images
- `ValueHintType.Markdown` - Render markdown
- `ValueHintType.Html` - Render HTML
### Array Schemas
```typescript
// Array of objects
const resultType = coda.ValueType.Array;
const schema = coda.makeSchema({
type: coda.ValueType.Array,
items: PersonSchema, // Schema for each item
});
```
## Network Domains
Whitelist domains your pack will access:
```typescript
pack.addNetworkDomain("api.example.com");
pack.addNetworkDomain("cdn.example.com");
// Support subdomains
pack.addNetworkDomain("example.com"); // Allows *.example.com
```
## Error Handling
### User-Visible Errors
```typescript
execute: async function(args, context) {
if (!args[0]) {
throw new coda.UserVisibleError("Parameter is required");
}
let response = await context.fetcher.fetch({...});
if (response.status === 404) {
throw new coda.UserVisibleError("Item not found");
}
if (response.status !== 200) {
throw new coda.UserVisibleError(
`API error: ${response.status} - ${response.body.message}`
);
}
return response.body;
}
```
### Status Code Error
```typescript
// Automatically throw error for non-2xx responses
let response = await context.fetcher.fetch({
method: "GET",
url: "https://api.example.com/endpoint",
cacheTtlSecs: 0, // Disable caching
throwOnError: true, // Throw on non-2xx status
});
```
## Caching
### Cache Control
```typescript
// Set cache TTL (time-to-live in seconds)
let response = await context.fetcher.fetch({
method: "GET",
url: "https://api.example.com/data",
cacheTtlSecs: 300, // Cache for 5 minutes
});
// Disable caching
cacheTtlSecs: 0
```
### When to Cache
- ✅ Reference data (countries, categories)
- ✅ Slowly changing data (user profiles)
- ❌ Real-time data (stock prices, live scores)
- ❌ User-specific data that changes frequently
## Best Practices
### Formula Development
1. **Descriptive names**: Clear, concise, descriptive names
2. **Good descriptions**: Explain what the formula does and when to use it
3. **Parameter validation**: Check required parameters early
4. **Error messages**: Clear, actionable error messages
5. **Examples**: Add examples to aid documentation
```typescript
pack.addFormula({
name: "ConvertCurrency",
description: "Convert amount from one currency to another using current exchange rates",
parameters: [
coda.makeParameter({
type: coda.ParameterType.Number,
name: "amount",
description: "The amount to convert",
}),
coda.makeParameter({
type: coda.ParameterType.String,
name: "from",
description: "Source currency code (e.g., USD, EUR)",
}),
coda.makeParameter({
type: coda.ParameterType.String,
name: "to",
description: "Target currency code (e.g., USD, EUR)",
}),
],
resultType: coda.ValueType.Number,
examples: [
{ params: [100, "USD", "EUR"], result: 85.50 },
{ params: [50, "GBP", "USD"], result: 65.75 },
],
execute: async function([amount, from, to], context) {
// Implementation
},
});
```
### Sync Table Best Practices
1. **Identity**: Always set `identityName` and `idProperty`
2. **Display property**: Choose the most meaningful column
3. **Featured properties**: Show 3-5 most important columns by default
4. **Continuations**: Handle pagination for large datasets
5. **Parameters**: Add filter parameters to reduce API calls
### API Integration
1. **Rate limits**: Respect API rate limits
2. **Pagination**: Handle paginated responses properly
3. **Error handling**: Graceful handling of API errors
4. **Authentication**: Use appropriate auth type
5. **Caching**: Cache when appropriate to reduce API calls
### Performance
1. **Minimize API calls**: Batch requests when possible
2. **Use caching**: Cache stable data
3. **Optimize schemas**: Only include needed properties
4. **Continuations**: Use for large datasets
5. **Timeout awareness**: 60-second execution limit
## Common Patterns
### Handling API Pagination
```typescript
execute: async function(args, context) {
let page = context.sync.continuation?.page || 1;
let allItems = context.sync.continuation?.items || [];
let response = await context.fetcher.fetch({
method: "GET",
url: `https://api.example.com/items?page=${page}`,
});
allItems = allItems.concat(response.body.items);
let continuation;
if (response.body.has_more) {
continuation = {
page: page + 1,
items: allItems,
};
}
return {
result: allItems,
continuation: continuation,
};
}
```
### Building URLs with Parameters
```typescript
execute: async function([filter, sortBy], context) {
let params = new URLSearchParams();
if (filter) params.append("filter", filter);
if (sortBy) params.append("sort", sortBy);
let url = `https://api.example.com/items?${params.toString()}`;
let response = await context.fetcher.fetch({ method: "GET", url });
return response.body;
}
```
### Transforming API Data
```typescript
execute: async function(args, context) {
let response = await context.fetcher.fetch({
method: "GET",
url: "https://api.example.com/users",
});
// Transform API data to match schema
let users = response.body.users.map(user => ({
id: user.user_id, // Map API field to schema
name: user.full_name,
email: user.email_address,
isActive: user.status === "active",
}));
return { result: users };
}
```
## Development Commands
```bash
# Install dependencies
npm install
# Upload/deploy pack
npx coda upload pack.ts --notes "Description of changes"
# Validate pack
npx coda validate pack.ts
# Execute formula locally (for testing)
npx coda execute pack.ts FormulaName param1 param2
# Create new pack
npx coda init
```
## Testing
### Unit Testing
```typescript
import { executeFormulaFromPackDef } from '@codahq/packs-sdk/dist/development';
import { pack } from './pack';
// Test a formula
let result = await executeFormulaFromPackDef(
pack,
"FormulaName",
["param1", "param2"]
);
console.assert(result === expectedValue);
```
### Common Issues
**"Network domain not whitelisted"**
- Add the domain with `pack.addNetworkDomain()`
**"Formula already exists"**
- Formula names must be unique within the pack
**"Invalid parameter type"**
- Check parameter types match expected values
**"Execution timeout"**
- Use continuations for long-running operations
- Optimize API calls and data processing
**"Authentication failed"**
- Verify auth configuration
- Check user credentials
- Ensure proper headers/tokens
## Resources
### Official Documentation
- **Official Docs**: https://coda.io/packs/build/latest/
- **SDK Reference**: https://coda.io/packs/build/latest/reference/sdk/
- **Pack Studio**: https://coda.io/packs/build
- **Example Packs**: Available in Pack Studio
### Skill Reference Guides
- **[Advanced Sync Tables](references/advanced-sync-tables.md)** - Two-way sync, dynamic tables, property options
- **[Quick Examples](references/quick-examples.md)** - Common formula and sync table patterns
- **[Troubleshooting](references/troubleshooting.md)** - Common errors and debugging strategies
## Quick Reference
### Common Imports
```typescript
import * as coda from "@codahq/packs-sdk";
```
### Pack Initialization
```typescript
export const pack = coda.newPack();
```
### Add Formula
```typescript
pack.addFormula({ name, description, parameters, resultType, execute });
```
### Add Sync Table
```typescript
pack.addSyncTable({ name, identityName, schema, formula });
```
### Make Parameter
```typescript
coda.makeParameter({ type, name, description, optional });
```
### Make Schema
```typescript
coda.makeObjectSchema({ properties, displayProperty, idProperty });
```
### Fetch Data
```typescript
await context.fetcher.fetch({ method, url, headers, body });
```
### Throw Error
```typescript
throw new coda.UserVisibleError("Error message");
```

592
references/index.yaml Normal file
View File

@ -0,0 +1,592 @@
---
# Coda Pack SDK Documentation Structure
# Complete file tree of all documentation (370+ files)
root: docs/
structure:
# Main landing page
index.md: Home page
# Agents section
agents:
index.md: Agents overview
development.md: Agent development
examples.md: Agent examples
quickstart.md: Agent quickstart
troubleshooting.md: Agent troubleshooting
upgrade.md: Agent upgrade guide
features:
chat.md: Chat features
context.md: Context management
mcp.md: MCP (Model Context Protocol)
skills.md: Skills system
tools.md: Agent tools
indexing:
index.md: Indexing overview
crawling.md: Content crawling
incremental.md: Incremental indexing
schema.md: Index schema
# Blog
blog:
index.md: Blog index
posts:
new_agent_features.md: New agent features announcement
# Guides - main documentation
guides:
overview.md: Pack development overview
design.md: Pack design guidelines
best-practices.md: Best practices
# Basics
basics:
data-types.md: Working with data types
fetcher.md: Making HTTP requests
authentication:
index.md: Authentication overview
oauth2.md: OAuth2 authentication
aws.md: AWS authentication
parameters:
index.md: Parameters overview
autocomplete.md: Parameter autocomplete
# Building blocks
blocks:
formulas.md: Creating formulas
actions.md: Building actions
cards.md: Creating cards
column-formats.md: Custom column formats
sync-tables:
index.md: Sync tables overview
dynamic.md: Dynamic sync tables
two-way.md: Two-way sync
# Advanced topics
advanced:
schemas.md: Advanced schema patterns
caching.md: Caching strategies
errors.md: Error handling
images.md: Working with images
embeds.md: Embedded content
timezones.md: Timezone handling
.card_schema.md: Card schema (internal)
# Development
development:
cli.md: Command line interface
testing.md: Testing packs
troubleshooting.md: Troubleshooting
libraries.md: Using libraries
pack-maker-tools.md: Pack maker tools
versions.md: Version management
# Tutorials
tutorials:
index.md: Tutorials index
videos.md: Video tutorials
get-started:
web.md: Web IDE tutorial
cli.md: CLI tutorial
github.md: GitHub development
gitpod.md: Gitpod development
replit.md: Replit development
.cli.md: CLI (internal)
.cli-before.md: CLI setup (internal)
.cli-test.md: CLI testing (internal)
.rebuild.md: Rebuild (internal)
.use.md: Usage (internal)
build:
formula.md: Building formulas
fetcher.md: Using fetcher
sync-table.md: Building sync tables
oauth.md: Implementing OAuth
# Code samples
samples:
index.md: Samples index
# Full pack examples
full:
hello-world.md: Hello World pack
cats.md: Cat photos pack
math.md: Math pack
github.md: GitHub pack
todoist.md: Todoist pack
daylight.md: Daylight pack
dnd.md: D&D pack
# Topic-specific samples
topic:
formula.md: Formula examples
action.md: Action examples
sync-table.md: Sync table examples
dynamic-sync-table.md: Dynamic sync table examples
two-way.md: Two-way sync examples
authentication.md: Authentication examples
fetcher.md: Fetcher examples
parameter.md: Parameter examples
autocomplete.md: Autocomplete examples
schema.md: Schema examples
data-type.md: Data type examples
column-format.md: Column format examples
card.md: Card examples
image.md: Image examples
dates.md: Date handling examples
apis.md: API integration examples
# SDK Reference
reference:
sdk:
index.md: SDK reference index
# Core SDK
core:
index.md: Core SDK index
# Classes
classes:
PackDefinitionBuilder.md: Pack definition builder
UserVisibleError.md: User visible error
StatusCodeError.md: Status code error
MissingScopesError.md: Missing scopes error
ResponseSizeTooLargeError.md: Response size error
# Enumerations
enumerations:
AuthenticationType.md: Authentication types
ParameterType.md: Parameter types
ValueType.md: Value types
ValueHintType.md: Value hint types
ConnectionRequirement.md: Connection requirements
Type.md: Schema types
HttpStatusCode.md: HTTP status codes
InvocationErrorType.md: Invocation error types
InvocationSource.md: Invocation sources
PostSetupType.md: Post-setup types
OptionsType.md: Options types
NetworkConnection.md: Network connection types
PermissionSyncMode.md: Permission sync modes
EmbeddedContentType.md: Embedded content types
AttributionNodeType.md: Attribution node types
LinkDisplayType.md: Link display types
EmailDisplayType.md: Email display types
CurrencyFormat.md: Currency formats
DurationUnit.md: Duration units
PrecannedDateRange.md: Precanned date ranges
ImageCornerStyle.md: Image corner styles
ImageOutline.md: Image outlines
ImageShapeStyle.md: Image shape styles
ScaleIconSet.md: Scale icon sets
ToolType.md: Tool types
TokenExchangeCredentialsLocation.md: Token exchange locations
ScreenAnnotationType.md: Screen annotation types
KnowledgeToolSourceType.md: Knowledge tool source types
SkillModel.md: Skill models
# Functions
functions:
newPack.md: Create new pack
makeFormula.md: Make formula
makeParameter.md: Make parameter
makeSchema.md: Make schema
makeObjectSchema.md: Make object schema
makeSyncTable.md: Make sync table
makeDynamicSyncTable.md: Make dynamic sync table
makeMetadataFormula.md: Make metadata formula
makeEmptyFormula.md: Make empty formula
makeAttributionNode.md: Make attribution node
makeReferenceSchemaFromObjectSchema.md: Make reference schema
makeTranslateObjectFormula.md: Make translate object formula
makeSimpleAutocompleteMetadataFormula.md: Simple autocomplete metadata
simpleAutocomplete.md: Simple autocomplete
autocompleteSearchObjects.md: Autocomplete search objects
generateSchema.md: Generate schema
getEffectivePropertyKeysFromSchema.md: Get effective property keys
joinUrl.md: Join URL
getQueryParams.md: Get query params
withQueryParams.md: With query params
withIdentity.md: With identity
assertCondition.md: Assert condition
ensureExists.md: Ensure exists
ensureNonEmptyString.md: Ensure non-empty string
ensureUnreachable.md: Ensure unreachable
# Interfaces (100+ interfaces)
interfaces:
# Core interfaces
PackDefinition.md: Pack definition
PackVersionDefinition.md: Pack version definition
ExecutionContext.md: Execution context
SyncExecutionContext.md: Sync execution context
UpdateSyncExecutionContext.md: Update sync execution context
Fetcher.md: Fetcher interface
FetchRequest.md: Fetch request
FetchResponse.md: Fetch response
Network.md: Network interface
TemporaryBlobStorage.md: Temporary blob storage
InvocationLocation.md: Invocation location
# Formula interfaces
BaseFormulaDef.md: Base formula definition
CommonPackFormulaDef.md: Common pack formula definition
PackFormulaDef.md: Pack formula definition
ObjectArrayFormulaDef.md: Object array formula definition
EmptyFormulaDef.md: Empty formula definition
MetadataFormulaObjectResultType.md: Metadata formula result type
# Parameter interfaces
ParamDef.md: Parameter definition
RequiredParamDef.md: Required parameter
OptionalParamDef.md: Optional parameter
CustomAuthParameter.md: Custom auth parameter
DynamicOptions.md: Dynamic options
PropertyWithOptions.md: Property with options
PropertyOptionsExecutionContext.md: Property options context
# Schema interfaces
ObjectSchemaDefinition.md: Object schema definition
ObjectSchemaProperty.md: Object schema property
ArraySchema.md: Array schema
BooleanSchema.md: Boolean schema
NumericSchema.md: Numeric schema
StringEmbedSchema.md: String embed schema
SimpleStringSchema.md: Simple string schema
StringWithOptionsSchema.md: String with options
ImageSchema.md: Image schema
LinkSchema.md: Link schema
EmailSchema.md: Email schema
CurrencySchema.md: Currency schema
DurationSchema.md: Duration schema
NumericDurationSchema.md: Numeric duration schema
StringDateSchema.md: String date schema
StringDateTimeSchema.md: String datetime schema
StringTimeSchema.md: String time schema
NumericDateSchema.md: Numeric date schema
NumericDateTimeSchema.md: Numeric datetime schema
NumericTimeSchema.md: Numeric time schema
ProgressBarSchema.md: Progress bar schema
ScaleSchema.md: Scale schema
SliderSchema.md: Slider schema
ArrayType.md: Array type
Format.md: Format interface
# Authentication interfaces
BaseAuthentication.md: Base authentication
NoAuthentication.md: No authentication
CustomAuthentication.md: Custom authentication
CustomHeaderTokenAuthentication.md: Custom header token
HeaderBearerTokenAuthentication.md: Header bearer token
MultiHeaderTokenAuthentication.md: Multi-header token
QueryParamTokenAuthentication.md: Query param token
MultiQueryParamTokenAuthentication.md: Multi-query param token
WebBasicAuthentication.md: Web basic auth
OAuth2Authentication.md: OAuth2 authentication
OAuth2ClientCredentialsAuthentication.md: OAuth2 client credentials
CodaApiBearerTokenAuthentication.md: Coda API bearer token
AWSAccessKeyAuthentication.md: AWS access key
AWSAssumeRoleAuthentication.md: AWS assume role
# Sync table interfaces
SyncTableDef.md: Sync table definition
SyncTableOptions.md: Sync table options
SyncFormulaDef.md: Sync formula definition
SyncFormulaResult.md: Sync formula result
DynamicSyncTableDef.md: Dynamic sync table definition
DynamicSyncTableOptions.md: Dynamic sync table options
SyncBase.md: Sync base
SyncFull.md: Full sync
SyncIncremental.md: Incremental sync
SyncUpdate.md: Sync update
UpdateSync.md: Update sync
SyncUpdateResult.md: Sync update result
SyncTableRelation.md: Sync table relation
SyncCompletionMetadata.md: Sync completion metadata
SyncCompletionMetadataIncomplete.md: Incomplete sync metadata
# Identity and indexing
Identity.md: Identity interface
IdentityDefinition.md: Identity definition
PropertyIdentifierDetails.md: Property identifier details
CustomIndexDefinition.md: Custom index definition
CrawlStrategy.md: Crawl strategy
# Embedded content
EmbeddedContentTool.md: Embedded content tool
CopyableBlockEmbeddedContent.md: Copyable block content
CarouselViewEmbeddedContent.md: Carousel view content
TabViewEmbeddedContent.md: Tab view content
# Attribution
ImageAttributionNode.md: Image attribution node
LinkAttributionNode.md: Link attribution node
TextAttributionNode.md: Text attribution node
# Tools and skills
PackTool.md: Pack tool
ContactResolutionTool.md: Contact resolution tool
KnowledgeTool.md: Knowledge tool
PackKnowledgeToolSource.md: Pack knowledge source
ScreenAnnotationTool.md: Screen annotation tool
RewriteScreenAnnotation.md: Rewrite screen annotation
Skill.md: Skill interface
SkillEntrypoints.md: Skill entrypoints
SkillEntrypointConfig.md: Skill entrypoint config
SkillModelConfiguration.md: Skill model configuration
MCPServer.md: MCP server interface
# Validation and errors
ParameterValidationDetail.md: Parameter validation detail
ValidParameterValidationResult.md: Valid parameter validation
InvalidParameterValidationResult.md: Invalid parameter validation
StatusCodeErrorResponse.md: Status code error response
# Post-setup and endpoints
SetEndpoint.md: Set endpoint
RequestHandlerTemplate.md: Request handler template
ResponseHandlerTemplate.md: Response handler template
# Autocomplete
SimpleAutocompleteOption.md: Simple autocomplete option
# Continuation
Continuation.md: Continuation interface
# Type aliases (100+ type aliases)
type-aliases:
# Formula type aliases
Formula.md: Formula type
BaseFormula.md: Base formula
PackFormulaResult.md: Pack formula result
PackFormulaValue.md: Pack formula value
StringFormulaDef.md: String formula definition
NumericFormulaDef.md: Numeric formula definition
BooleanFormulaDef.md: Boolean formula definition
ArrayFormulaDef.md: Array formula definition
ObjectFormulaDef.md: Object formula definition
TypedPackFormula.md: Typed pack formula
StringPackFormula.md: String pack formula
NumericPackFormula.md: Numeric pack formula
BooleanPackFormula.md: Boolean pack formula
ObjectPackFormula.md: Object pack formula
# Schema type aliases
Schema.md: Schema type
SchemaType.md: Schema type enum
NumberSchema.md: Number schema
StringSchema.md: String schema
StringHintTypes.md: String hint types
NumberHintTypes.md: Number hint types
BooleanHintTypes.md: Boolean hint types
ObjectHintTypes.md: Object hint types
ObjectSchemaProperties.md: Object schema properties
PropertySchemaOptions.md: Property schema options
# Sync table type aliases
SyncTable.md: Sync table
GenericSyncTable.md: Generic sync table
GenericDynamicSyncTable.md: Generic dynamic sync table
SyncFormula.md: Sync formula
GenericSyncFormula.md: Generic sync formula
GenericSyncFormulaResult.md: Generic sync formula result
Sync.md: Sync type
SyncCompletionMetadataResult.md: Sync completion metadata result
GenericSyncUpdate.md: Generic sync update
GenericSyncUpdateSingleResult.md: Generic sync update single
SyncUpdateSingleResult.md: Sync update single result
# Authentication type aliases
Authentication.md: Authentication type
AuthenticationDef.md: Authentication definition
SystemAuthentication.md: System authentication
SystemAuthenticationDef.md: System authentication definition
UserAuthenticationDef.md: User authentication definition
# Metadata type aliases
MetadataFormula.md: Metadata formula
MetadataFormulaDef.md: Metadata formula definition
MetadataFormulaResultType.md: Metadata formula result
MetadataFunction.md: Metadata function
MetadataContext.md: Metadata context
LegacyDefaultMetadataReturnType.md: Legacy metadata return
PropertyOptionsMetadataFunction.md: Property options metadata function
PropertyOptionsMetadataResult.md: Property options metadata result
# Parameter type aliases
ParamDefs.md: Parameter definitions
ParamValues.md: Parameter values
ParameterOptions.md: Parameter options
ParameterValidationResult.md: Parameter validation result
ParamDefFromOptionsUnion.md: Param def from options
SuggestedValueType.md: Suggested value type
# Pack definition type aliases
BasicPackDefinition.md: Basic pack definition
PackId.md: Pack ID
# Error type aliases
InvocationError.md: Invocation error
HttpStatusInvocationError.md: HTTP status error
TimeoutInvocationError.md: Timeout error
RateLimitExceededInvocationError.md: Rate limit error
ResponseTooLargeInvocationError.md: Response too large error
UnknownInvocationError.md: Unknown error
# Formula options type aliases
FormulaDefinitionOptions.md: Formula definition options
FormulaOptions.md: Formula options
# Post-setup type aliases
PostSetup.md: Post-setup type
PostSetupDef.md: Post-setup definition
SetEndpointDef.md: Set endpoint definition
# Attribution type aliases
AttributionNode.md: Attribution node
# Embedded content type aliases
EmbeddedContent.md: Embedded content type
# Indexing type aliases
IndexDefinition.md: Index definition
BasicIndexedProperty.md: Basic indexed property
IndexedProperty.md: Indexed property
FilterableProperty.md: Filterable property
PropertyIdentifier.md: Property identifier
# Context type aliases
ContextProperties.md: Context properties
# Screen annotation type aliases
ScreenAnnotation.md: Screen annotation
# Knowledge tool type aliases
KnowledgeToolSource.md: Knowledge tool source
# Skills type aliases
PartialSkillDef.md: Partial skill definition
# Fetch type aliases
FetchMethodType.md: Fetch method type
# Inference type aliases
InferrableTypes.md: Inferrable types
# Variables
variables:
PropertyLabelValueTemplate.md: Property label value template
ValidFetchMethods.md: Valid fetch methods
# Namespaces
namespaces:
SvgConstants:
index.md: SVG constants
variables:
DataUrlPrefix.md: Data URL prefix
DataUrlPrefixWithDarkModeSupport.md: Data URL with dark mode
DarkModeFragmentId.md: Dark mode fragment ID
# Testing SDK
testing:
index.md: Testing SDK index
# Testing functions
functions:
executeFormulaFromPackDef.md: Execute formula from pack
executeFormulaOrSyncWithVM.md: Execute with VM
executeSyncFormula.md: Execute sync formula
executeSyncFormulaFromPackDef.md: Execute sync from pack
executeSyncFormulaFromPackDefSingleIteration.md: Execute single iteration
executeMetadataFormula.md: Execute metadata formula
newMockExecutionContext.md: New mock execution context
newMockSyncExecutionContext.md: New mock sync context
newRealFetcherExecutionContext.md: New real fetcher context
newRealFetcherSyncExecutionContext.md: New real fetcher sync context
newJsonFetchResponse.md: New JSON fetch response
# Testing interfaces
interfaces:
MockExecutionContext.md: Mock execution context
MockSyncExecutionContext.md: Mock sync execution context
ExecuteOptions.md: Execute options
ContextOptions.md: Context options
# Testing type aliases
type-aliases:
SyncExecutionContextAsMock.md: Sync execution context as mock
# Support
support:
index.md: Support index
faq.md: Frequently asked questions
errors.md: Common errors
changes.md: Changelog
contributing:
index.md: Contributing guide
style.md: Style guide
migration:
index.md: Migration guide
v0.11.0.md: Migrate to v0.11.0
# Quick reference paths
quick_paths:
# Getting started
getting_started: docs/tutorials/get-started/web.md
overview: docs/guides/overview.md
# Core building blocks
formulas: docs/guides/blocks/formulas.md
actions: docs/guides/blocks/actions.md
sync_tables: docs/guides/blocks/sync-tables/index.md
dynamic_sync_tables: docs/guides/blocks/sync-tables/dynamic.md
two_way_sync: docs/guides/blocks/sync-tables/two-way.md
column_formats: docs/guides/blocks/column-formats.md
cards: docs/guides/blocks/cards.md
# Basics
authentication: docs/guides/basics/authentication/index.md
oauth2: docs/guides/basics/authentication/oauth2.md
fetcher: docs/guides/basics/fetcher.md
data_types: docs/guides/basics/data-types.md
parameters: docs/guides/basics/parameters/index.md
autocomplete: docs/guides/basics/parameters/autocomplete.md
# Advanced
schemas: docs/guides/advanced/schemas.md
caching: docs/guides/advanced/caching.md
errors: docs/guides/advanced/errors.md
images: docs/guides/advanced/images.md
embeds: docs/guides/advanced/embeds.md
timezones: docs/guides/advanced/timezones.md
# Development
cli: docs/guides/development/cli.md
testing: docs/guides/development/testing.md
troubleshooting: docs/guides/development/troubleshooting.md
libraries: docs/guides/development/libraries.md
versions: docs/guides/development/versions.md
# SDK Reference
sdk_core: docs/reference/sdk/core/index.md
sdk_testing: docs/reference/sdk/testing/index.md
new_pack: docs/reference/sdk/core/functions/newPack.md
make_formula: docs/reference/sdk/core/functions/makeFormula.md
make_sync_table: docs/reference/sdk/core/functions/makeSyncTable.md
make_dynamic_sync_table: docs/reference/sdk/core/functions/makeDynamicSyncTable.md
# Samples
samples_index: docs/samples/index.md
hello_world: docs/samples/full/hello-world.md
formula_samples: docs/samples/topic/formula.md
sync_table_samples: docs/samples/topic/sync-table.md
auth_samples: docs/samples/topic/authentication.md
# Support
faq: docs/support/faq.md
best_practices: docs/guides/best-practices.md
design: docs/guides/design.md
# Statistics
total_files: 370
total_directories: 40