home / skills / bwl21 / bwl-flyer-generator / churchtools-api

churchtools-api skill

/.ona/skills/churchtools-api

npx playbooks add skill bwl21/bwl-flyer-generator --skill churchtools-api

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
2.1 KB
---
name: churchtools-api
description: Apply when making API calls to ChurchTools, using churchtoolsClient methods, handling API responses, or working with Tags API. Covers correct HTTP method names, parameter structure, and response handling patterns.
---

# ChurchTools API Patterns

## Client HTTP Methods

Use the correct method names - `delete` is NOT available:

```typescript
churchtoolsClient.get()       // GET requests
churchtoolsClient.post()      // POST requests  
churchtoolsClient.put()       // PUT requests
churchtoolsClient.deleteApi() // DELETE requests - NOT .delete()!
churchtoolsClient.patch()     // PATCH requests
```

## Parameter Structure

Pass parameters directly as the second argument, NOT nested in a "params" object:

```typescript
// Correct
churchtoolsClient.get('/api/endpoint', { param1: 'value1', param2: 'value2' })

// Wrong - will fail
churchtoolsClient.get('/api/endpoint', { params: { param1: 'value1' } })
```

## Tags API

The Tags API returns data directly as an array, not nested in a "data" property:

```typescript
// Correct
const response = await churchtoolsClient.get<Tag[]>('/tags/person')
const tags = Array.isArray(response) ? response : []

// Wrong - response.data is undefined
const tags = response.data
```

Supported tag domains: `'person' | 'song' | 'group'` (NOT `'appointment'`)

Tag updates require ALL fields:
```typescript
const tagData = {
  name: tag.name,
  description: tag.description || '',  // Required, use empty string
  color: tag.color || 'basic'          // Required, use default color
}
await churchtoolsClient.put(`/tags/${tagId}`, tagData)
```

## API Documentation

Check your ChurchTools instance OpenAPI spec at `/system/runtime/swagger/openapi.json` for correct endpoints, methods, and schemas.

## Standard API Pattern

```typescript
try {
  loading.value = true
  const response = await churchtoolsClient.get('/api/endpoint', {
    param1: 'value1',
    param2: 'value2'
  })
  // Handle response
} catch (err) {
  error.value = 'Error message'
  console.error('API Error:', err)
} finally {
  loading.value = false
}
```