### Example Organization API Request
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/organization
Demonstrates how to make a basic GET request to the Organization API endpoint.
```bash
curl https://api.planningcenteronline.com/calendar/v2
```
--------------------------------
### ListResult Example Request
Source: https://api.planningcenteronline.com/docs/apps/people/versions/2026-06-04/vertices/list_result
Shows how to make a GET request to list list results for a specific list.
```curl
curl https://api.planningcenteronline.com/people/v2/lists/{list_id}/list_results
```
--------------------------------
### Resource Suggestion Object Example
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/resource_suggestion
This is an example of the JSON object representing a resource suggestion. It includes details about the suggested resource, quantity, and associated room setup.
```json
{
"type": "ResourceSuggestion",
"id": "1",
"attributes": {
"created_at": "2000-01-01T12:00:00Z",
"quantity": 1,
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {
"resource": {
"data": {
"type": "Resource",
"id": "1"
}
},
"room_setup": {
"data": {
"type": "RoomSetup",
"id": "1"
}
}
}
}
```
--------------------------------
### List School Options
Source: https://api.planningcenteronline.com/docs/apps/people/versions/2026-06-04/vertices/school_option
Use this endpoint to retrieve a list of all school options. No specific setup is required beyond making the GET request.
```bash
curl https://api.planningcenteronline.com/people/v2/school_options
```
--------------------------------
### Example Request to List Batches
Source: https://api.planningcenteronline.com/docs/apps/giving/versions/2019-10-18/vertices/batch
Use this cURL command to make a GET request to the batches endpoint.
```bash
curl https://api.planningcenteronline.com/giving/v2/batches
```
--------------------------------
### Example Request for Public View
Source: https://api.planningcenteronline.com/docs/apps/services/versions/2018-11-01/vertices/public_view
Demonstrates how to make a GET request to retrieve public view settings for a specific service type. Replace `{service_type_id}` with the actual ID.
```curl
curl https://api.planningcenteronline.com/services/v2/service_types/{service_type_id}/public_view
```
--------------------------------
### Install Add-ons CLI Tool
Source: https://api.planningcenteronline.com/docs/overview/add-ons/building-your-first-add-on
Installs the PlanningCenter add-ons CLI tool globally using npm. Ensure Node.js and npm are installed beforehand.
```bash
npm install --global @planningcenter/add-ons-cli
```
--------------------------------
### List Room Setups
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/room_setup
Use this endpoint to retrieve a list of all room setups. No specific setup is required.
```curl
curl https://api.planningcenteronline.com/calendar/v2/room_setups
```
--------------------------------
### Get Room Setup for an Event Resource Request
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/event_resource_request
Retrieves the room setup details for a specific event resource request.
```APIDOC
## GET /calendar/v2/event_resource_requests/{event_resource_request_id}/room_setup
### Description
Retrieves the room setup details for a specific event resource request.
### Method
GET
### Endpoint
https://api.planningcenteronline.com/calendar/v2/event_resource_requests/{event_resource_request_id}/room_setup
### Parameters
#### Path Parameters
- **event_resource_request_id** (integer) - Required - The ID of the event resource request.
```
--------------------------------
### config.yaml Example
Source: https://api.planningcenteronline.com/docs/overview/add-ons/add-ons-cli
Example configuration file for a Planning Center add-on. This YAML file defines OAuth settings and UI extensions for different deployment environments.
```yaml
testing_oauth_config: &testing_oauth_config
authorize_url: http://myapp.local/oauth/authorize
token_url: http://myapp.local/oauth/token
redirect_url: http://myapp.local/oauth/complete
identifier: "{{ TESTING_INTEGRATOR_OAUTH_IDENTIFIER }}"
secret: "{{ TESTING_INTEGRATOR_OAUTH_SECRET }}"
scopes: []
production_oauth_config: &production_oauth_config
authorize_url: https://example.com/oauth/authorize
token_url: https://example.com/oauth/token
redirect_url: https://example.com/oauth/complete
identifier: "{{ PRODUCTION_INTEGRATOR_OAUTH_IDENTIFIER }}"
secret: "{{ PRODUCTION_INTEGRATOR_OAUTH_SECRET }}"
scopes: []
add_on:
oauth_application_id: "300"
environments:
testing:
integrator_oauth: *testing_oauth_config
beta:
integrator_oauth: *production_oauth_config
ui_extensions:
- people.list.send_message
organization_ids: []
production:
integrator_oauth: *production_oauth_config
ui_extensions:
- people.list.send_message
scopes:
- people
ui_extensions:
people.list.send_message:
title: Send text with Foo
icon_url: data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iMTAiIGN5PSIxMCIgcj0iOCIgc3Ryb2tlPSJoc2woMjY4LCA3MSUsIDI3JSkiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==
icon_dark_url: data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iMTAiIGN5PSIxMCIgcj0iOCIgc3Ryb2tlPSJoc2woMjY4LCA3MCUsIDg4JSkiIHN0cm9rZS13aWR0aD0iMiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==
component_version: "6"
```
--------------------------------
### List Room Setups
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/resource
Retrieves a list of room setups for a specific resource.
```APIDOC
## GET /calendar/v2/resources/{resource_id}/room_setups
### Description
Retrieves a list of room setups for a specific resource.
### Method
GET
### Endpoint
https://api.planningcenteronline.com/calendar/v2/resources/{resource_id}/room_setups
### Parameters
#### Path Parameters
- **resource_id** (integer) - Required - The ID of the resource.
```
--------------------------------
### Example FolderPath Object
Source: https://api.planningcenteronline.com/docs/apps/services/versions/2018-11-01/vertices/folder_path
This is an example of the FolderPath object structure returned by the API.
```json
{
"type": "FolderPath",
"id": "1",
"attributes": {
"path": []
},
"relationships": {}
}
```
--------------------------------
### List Room Setups
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/organization
Retrieves a list of room setups. Supports filtering for shared room setups.
```APIDOC
## GET https://api.planningcenteronline.com/calendar/v2/room_setups
### Description
Retrieves a list of room setups. Supports filtering for shared room setups.
### Method
GET
### Endpoint
https://api.planningcenteronline.com/calendar/v2/room_setups
### Parameters
#### Query Parameters
- **shared_room_setups** (boolean) - Optional - Filter for shared room setups.
### Returns
RoomSetup
```
--------------------------------
### Read Room Setup
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/room_setup
Retrieves a specific room setup by its ID.
```APIDOC
## GET /calendar/v2/room_setups/{id}
### Description
Retrieves a specific room setup by its unique identifier.
### Method
GET
### Endpoint
`/calendar/v2/room_setups/{id}`
### Parameters
#### Path Parameters
- **id** (primary_key) - Required - Unique identifier for the room setup.
### Response
#### Success Response (200)
- `data` (object) - The requested RoomSetup object.
### Response Example
```json
{
"data": {
"type": "RoomSetup",
"id": "1",
"attributes": {
"created_at": "2000-01-01T12:00:00Z",
"description": "string",
"diagram": "string",
"diagram_thumbnail_url": "string",
"diagram_url": "string",
"name": "string",
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {
"room_setup": {"data": {"type": "RoomSetup", "id": "1"}},
"resource_suggestions": {"data": [{"type": "ResourceSuggestion", "id": "1"}]},
"containing_resource": {"data": {"type": "Resource", "id": "1"}}
}
}
}
```
```
--------------------------------
### Example Location Request
Source: https://api.planningcenteronline.com/docs/apps/groups/versions/2023-07-10/vertices/location
This snippet shows how to make a GET request to retrieve location information for a specific event. Replace `{event_id}` with the actual event ID.
```bash
curl https://api.planningcenteronline.com/groups/v2/events/{event_id}/location
```
--------------------------------
### Example Request for Workflow Assignee Summaries
Source: https://api.planningcenteronline.com/docs/apps/people/versions/2026-06-04/vertices/workflow_assignee_summary
Use this cURL command to fetch workflow assignee summaries. This is a basic GET request to the API endpoint.
```bash
curl https://api.planningcenteronline.com/people/v2/workflow_assignee_summaries
```
--------------------------------
### Room Setup Associations
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/room_setup
Endpoints for accessing associated resources and suggestions for a given room setup.
```APIDOC
## GET /calendar/v2/room_setups/{room_setup_id}/containing_resource
### Description
Retrieves the containing resource associated with a specific room setup.
### Method
GET
### Endpoint
`/calendar/v2/room_setups/{room_setup_id}/containing_resource`
### Parameters
#### Path Parameters
- **room_setup_id** (primary_key) - Required - The ID of the room setup.
## GET /calendar/v2/room_setups/{room_setup_id}/resource_suggestions
### Description
Retrieves the list of resource suggestions associated with a specific room setup.
### Method
GET
### Endpoint
`/calendar/v2/room_setups/{room_setup_id}/resource_suggestions`
### Parameters
#### Path Parameters
- **room_setup_id** (primary_key) - Required - The ID of the room setup.
```
--------------------------------
### List Room Setups
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/room_setup
Retrieves a list of all available room setups. Supports filtering, ordering, and pagination.
```APIDOC
## GET /calendar/v2/room_setups
### Description
Retrieves a list of room setups. This endpoint supports filtering by attributes, ordering the results, and paginating the response.
### Method
GET
### Endpoint
`/calendar/v2/room_setups`
### Query Parameters
#### Filtering
- `where[created_at]` (date_time) - Optional - Query on a specific created_at date.
- `where[name]` (string) - Optional - Query on a specific name.
- `where[updated_at]` (date_time) - Optional - Query on a specific updated_at date.
#### Ordering
- `order` (string) - Optional - Specify the order of results. Prefix with a hyphen (-) to reverse the order (e.g., `-created_at`).
- `created_at`
- `name`
- `updated_at`
#### Pagination
- `per_page` (integer) - Optional - Number of records to return per page (min=1, max=100, default=25).
- `offset` (integer) - Optional - Get results starting from the given offset.
### Response
#### Success Response (200)
- `data` (array) - An array of RoomSetup objects.
- `meta` (object) - Pagination and other metadata.
### Response Example
```json
{
"data": [
{
"type": "RoomSetup",
"id": "1",
"attributes": {
"created_at": "2000-01-01T12:00:00Z",
"description": "string",
"diagram": "string",
"diagram_thumbnail_url": "string",
"diagram_url": "string",
"name": "string",
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {
"room_setup": {"data": {"type": "RoomSetup", "id": "1"}},
"resource_suggestions": {"data": [{"type": "ResourceSuggestion", "id": "1"}]},
"containing_resource": {"data": {"type": "Resource", "id": "1"}}
}
}
],
"meta": {
"count": 1
}
}
```
```
--------------------------------
### List Star Example Request
Source: https://api.planningcenteronline.com/docs/apps/people/versions/2026-06-04/vertices/list_star
This snippet shows an example of how to make a request to star a list.
```curl
curl https://api.planningcenteronline.com/people/v2/lists/{list_id}/star
```
--------------------------------
### Signup Time Object Structure
Source: https://api.planningcenteronline.com/docs/apps/registrations/versions/2025-05-01/vertices/signup_time
This is an example of the SignupTime object returned by the API. It includes attributes like start and end times, and whether it's an all-day event.
```json
{
"type": "SignupTime",
"id": "1",
"attributes": {
"all_day": true,
"created_at": "2000-01-01T12:00:00Z",
"ends_at": "2000-01-01T12:00:00Z",
"starts_at": "2000-01-01T12:00:00Z",
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {}
}
```
--------------------------------
### Query by First Name Example
Source: https://api.planningcenteronline.com/docs/apps/groups/versions/2023-07-10/vertices/person
This example shows how to query for people using their first name. Append `?where[first_name]=string` to the base URL to filter results.
```http
?where[first_name]=string
```
--------------------------------
### Room Setup Belongs To
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/room_setup
Endpoints for accessing the parent resource or organization a room setup belongs to.
```APIDOC
## GET /calendar/v2/event_resource_requests/{event_resource_request_id}/room_setup
### Description
Retrieves the room setup associated with a specific event resource request.
### Method
GET
### Endpoint
`/calendar/v2/event_resource_requests/{event_resource_request_id}/room_setup`
### Parameters
#### Path Parameters
- **event_resource_request_id** (primary_key) - Required - The ID of the event resource request.
## GET /calendar/v2/room_setups
### Description
Retrieves the organization that the room setup belongs to. This endpoint can also be used to query shared room setups.
### Method
GET
### Endpoint
`/calendar/v2/room_setups`
### Query Parameters
#### Filtering
- `filter[shared_room_setups]` (boolean) - Optional - Filter for shared room setups.
## GET /calendar/v2/resources/{resource_id}/room_setups
### Description
Retrieves the room setups associated with a specific resource.
### Method
GET
### Endpoint
`/calendar/v2/resources/{resource_id}/room_setups`
### Parameters
#### Path Parameters
- **resource_id** (primary_key) - Required - The ID of the resource.
```
--------------------------------
### Query by Last Name Example
Source: https://api.planningcenteronline.com/docs/apps/groups/versions/2023-07-10/vertices/person
This example demonstrates how to query for people using their last name. Append `?where[last_name]=string` to the base URL to filter results.
```http
?where[last_name]=string
```
--------------------------------
### Example MAU Object
Source: https://api.planningcenteronline.com/docs/apps/api/versions/2025-09-30/vertices/oauth_application_mau
This is an example of the JSON object returned for a Monthly Active User stat.
```json
{
"type": "OauthApplicationMau",
"id": "1",
"attributes": {
"count": 1,
"month": 1,
"year": 1
},
"relationships": {
"oauth_application": {
"data": {
"type": "OauthApplication",
"id": "1"
}
}
}
}
```
--------------------------------
### Room Setup Object Structure
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/room_setup
This is the structure of a Room Setup object, showing its attributes and relationships. It includes details like creation time, description, and URLs for diagrams.
```json
{
"type": "RoomSetup",
"id": "1",
"attributes": {
"created_at": "2000-01-01T12:00:00Z",
"description": "string",
"diagram": "string",
"diagram_thumbnail_url": "string",
"diagram_url": "string",
"name": "string",
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {
"room_setup": {
"data": {
"type": "RoomSetup",
"id": "1"
}
},
"resource_suggestions": {
"data": [
{
"type": "ResourceSuggestion",
"id": "1"
}
]
},
"containing_resource": {
"data": {
"type": "Resource",
"id": "1"
}
}
}
}
```
--------------------------------
### Example Arrangement Section Object
Source: https://api.planningcenteronline.com/docs/apps/services/versions/2018-11-01/vertices/arrangement_sections
This is an example of the JSON object returned when querying arrangement sections. It includes the type, ID, attributes, and relationships.
```json
{
"type": "ArrangementSections",
"id": "1",
"attributes": {
"sections": []
},
"relationships": {}
}
```
--------------------------------
### Create and Navigate to New Add-on Directory
Source: https://api.planningcenteronline.com/docs/overview/add-ons/building-your-first-add-on
Creates a new add-on project using the CLI and changes the current directory into the new add-on's folder.
```bash
planningcenter-add-ons create my-add-on
cd my-add-on
```
--------------------------------
### Example Request for AttachmentActivity
Source: https://api.planningcenteronline.com/docs/apps/services/versions/2018-11-01/vertices/attachment_activity
Use this cURL command to make a GET request to the AttachmentActivity collection endpoint.
```bash
curl https://api.planningcenteronline.com/services/v2
```
--------------------------------
### Example Organization Request
Source: https://api.planningcenteronline.com/docs/apps/giving/versions/2019-10-18/vertices/organization
Demonstrates how to make a request to the Giving API to retrieve organization data.
```bash
curl https://api.planningcenteronline.com/giving/v2
```
--------------------------------
### Example Name Prefix Object
Source: https://api.planningcenteronline.com/docs/apps/people/versions/2026-06-04/vertices/name_prefix
This is an example of the JSON object structure returned when retrieving a name prefix. It includes the type, ID, attributes, and relationships.
```json
{
"type": "NamePrefix",
"id": "1",
"attributes": {
"value": "string"
},
"relationships": {}
}
```
--------------------------------
### Signup Object Structure
Source: https://api.planningcenteronline.com/docs/apps/registrations/versions/2025-05-01/vertices/signup
This is an example of a Signup object, illustrating its attributes and relationships. Note the various date-time fields and capacity information.
```json
{
"type": "Signup",
"id": "1",
"attributes": {
"archived": true,
"at_maximum_capacity": true,
"close_at": "2000-01-01T12:00:00Z",
"closed": true,
"created_at": "2000-01-01T12:00:00Z",
"description": "string",
"logo_url": "string",
"maximum_capacity": 1,
"name": "string",
"new_registration_url": "string",
"open": true,
"open_at": "2000-01-01T12:00:00Z",
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {}
}
```
--------------------------------
### Create a Resource Folder
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/resource_folder
Create a new resource folder by sending a POST request with the folder's kind and name. The 'kind' can be 'Room' or 'Resource'.
```bash
curl -X POST https://api.planningcenteronline.com/calendar/v2/resource_folders -d '{"name": "string", "kind": "string"}'
```
--------------------------------
### Get PledgeCampaign
Source: https://api.planningcenteronline.com/docs/apps/giving/versions/2019-10-18/vertices/pledge_campaign
Example of how to retrieve a specific PledgeCampaign using its ID. Replace `{person_id}` and `{pledge_id}` with actual IDs.
```bash
curl https://api.planningcenteronline.com/giving/v2/people/{person_id}/pledges/{pledge_id}/pledge_campaign
```
--------------------------------
### Get Resource by Resource Suggestion ID
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/resource
Retrieves a specific resource associated with a resource suggestion within a room setup.
```APIDOC
## GET /calendar/v2/room_setups/{room_setup_id}/resource_suggestions/{resource_suggestion_id}/resource
### Description
Retrieves a specific resource associated with a resource suggestion within a room setup.
### Method
GET
### Endpoint
https://api.planningcenteronline.com/calendar/v2/room_setups/{room_setup_id}/resource_suggestions/{resource_suggestion_id}/resource
```
--------------------------------
### List Resource Questions
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/resource_question
Use this endpoint to retrieve a list of all resource questions. No specific setup is required beyond authentication.
```bash
curl https://api.planningcenteronline.com/calendar/v2/resource_questions
```
--------------------------------
### Example ChannelNextTime Object
Source: https://api.planningcenteronline.com/docs/apps/publishing/versions/2024-03-25/vertices/channel_next_time
This is the structure of a ChannelNextTime object returned by the API. It includes the type, ID, and attributes such as the start time.
```json
{
"type": "ChannelNextTime",
"id": "1",
"attributes": {
"starts_at": "2000-01-01T12:00:00Z"
},
"relationships": {}
}
```
--------------------------------
### List Stations - cURL Example
Source: https://api.planningcenteronline.com/docs/apps/check-ins/versions/2025-05-28/vertices/station
Use this cURL command to make a GET request to the /check-ins/v2/stations endpoint to retrieve a list of all stations.
```bash
curl https://api.planningcenteronline.com/check-ins/v2/stations
```
--------------------------------
### Mount React app with onRender
Source: https://api.planningcenteronline.com/docs/overview/add-ons/api-reference
Use `onRender` as the main entry point to mount your React app. It receives an `args` object with rendering context and should return JSX.
```javascript
import { Avatar, Button, Text } from '@planningcenter/add-ons-ui';
onRender((args) => {
const { location, closeModal, currentPersonId, currentOrganizationId } = args;
console.log('Rendering at:', location);
console.log('Current person:', currentPersonId);
console.log('Current organization:', currentOrganizationId);
return (
<>
Hello from {location}!
>
);
});
```
--------------------------------
### EventTime Object Structure
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/event_time
This is an example of the JSON structure for an EventTime object. It includes attributes like start and end times, and relationships to other objects.
```json
{
"type": "EventTime",
"id": "1",
"attributes": {
"ends_at": "2000-01-01T12:00:00Z",
"name": "string",
"starts_at": "2000-01-01T12:00:00Z",
"visible_on_kiosks": true,
"visible_on_widget_and_ical": true
},
"relationships": {
"event": {
"data": {
"type": "Event",
"id": "1"
}
}
}
}
```
--------------------------------
### PlanTime Object Structure
Source: https://api.planningcenteronline.com/docs/apps/services/versions/2018-11-01/vertices/plan_time
This is an example of the PlanTime object returned by the API. It includes attributes like start and end times, and relationships to teams and positions.
```json
{
"type": "PlanTime",
"id": "1",
"attributes": {
"created_at": "2000-01-01T12:00:00Z",
"ends_at": "2000-01-01T12:00:00Z",
"live_ends_at": "2000-01-01T12:00:00Z",
"live_starts_at": "2000-01-01T12:00:00Z",
"name": "string",
"recorded": true,
"scheduled_team_ids": [],
"starts_at": "2000-01-01T12:00:00Z",
"team_reminders": [],
"time_type": "string",
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {
"assigned_teams": {
"data": [
{
"type": "Team",
"id": "1"
}
]
},
"assigned_positions": {
"data": [
{
"type": "TeamPosition",
"id": "1"
}
]
}
}
}
```
--------------------------------
### List Options - cURL
Source: https://api.planningcenteronline.com/docs/apps/check-ins/versions/2025-05-28/vertices/option
Use this endpoint to retrieve a list of all available options. No specific setup is required beyond having access to the API.
```bash
curl https://api.planningcenteronline.com/check-ins/v2/options
```
--------------------------------
### Example Organization Request
Source: https://api.planningcenteronline.com/docs/apps/groups/versions/2023-07-10/vertices/organization
Use this cURL command to make a request to the Organization endpoint.
```bash
curl https://api.planningcenteronline.com/groups/v2
```
--------------------------------
### Signup Sheet Metadata Object Structure
Source: https://api.planningcenteronline.com/docs/apps/services/versions/2018-11-01/vertices/signup_sheet_metadata
This is an example of the SignupSheetMetadata object returned by the API. It includes attributes like conflicts, start and end times, and time names.
```json
{
"type": "SignupSheetMetadata",
"id": "1",
"attributes": {
"conflicts": {},
"ends_at": "2000-01-01T12:00:00Z",
"starts_at": "2000-01-01T12:00:00Z",
"time_name": "string",
"time_type": "string"
},
"relationships": {
"plan_time": {
"data": {
"type": "PlanTime",
"id": "1"
}
}
}
}
```
--------------------------------
### EventInstance Object Structure
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/event_instance
This is an example of the EventInstance object returned by the API. It includes attributes like start and end times, recurrence information, and associated event details.
```json
{
"type": "EventInstance",
"id": "1",
"attributes": {
"all_day_event": true,
"church_center_url": "string",
"compact_recurrence_description": "string",
"created_at": "2000-01-01T12:00:00Z",
"description": "string",
"ends_at": "2000-01-01T12:00:00Z",
"image_url": "string",
"kind": "string",
"location": "string",
"name": "string",
"published_ends_at": "string",
"published_starts_at": "string",
"recurrence": "string",
"recurrence_description": "string",
"starts_at": "2000-01-01T12:00:00Z",
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {
"event": {
"data": {
"type": "Event",
"id": "1"
}
}
}
}
```
--------------------------------
### JSON API: Filtering by String Prefix
Source: https://api.planningcenteronline.com/docs/overview/json-api
To match a partial string, append a URL-encoded '%' character to the value. This example finds people whose first name starts with 'Tim'.
```http
https://api.planningcenteronline.com/people/v2/people?where[first_name]=Tim%25
```
--------------------------------
### Query Media by Title
Source: https://api.planningcenteronline.com/docs/apps/services/versions/2018-11-01/vertices/media
Example of how to query media assets filtered by a specific title.
```bash
?where[title]=string
```
--------------------------------
### Query Resource Questions by Created At
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/resource_question
Example of how to filter resource questions based on their creation date. Ensure the date format is correct.
```bash
curl "https://api.planningcenteronline.com/calendar/v2/resource_questions?where[created_at]=2000-01-01T12:00:00Z"
```
--------------------------------
### RecurringDonation Object Example
Source: https://api.planningcenteronline.com/docs/apps/giving/versions/2019-10-18/vertices/recurring_donation
This is an example of the structure of a RecurringDonation object returned by the API.
```json
{
"type": "RecurringDonation",
"id": "1",
"attributes": {
"amount_cents": 1,
"amount_currency": "USD",
"created_at": "2000-01-01T12:00:00Z",
"last_donation_received_at": "2000-01-01T12:00:00Z",
"next_occurrence": "2000-01-01T12:00:00Z",
"release_hold_at": "2000-01-01T12:00:00Z",
"schedule": {
"day_in_month": {
"day": 1
}
},
"status": "string",
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {
"person": {
"data": {
"type": "Person",
"id": "1"
}
}
}
}
```
--------------------------------
### PeopleImport Object Example
Source: https://api.planningcenteronline.com/docs/apps/people/versions/2026-06-04/vertices/people_import
This is an example of the PeopleImport object structure, showing its attributes and relationships.
```json
{
"type": "PeopleImport",
"id": "1",
"attributes": {
"attribs": "string",
"created_at": "2000-01-01T12:00:00Z",
"processed_at": "2000-01-01T12:00:00Z",
"status": "value",
"undone_at": "2000-01-01T12:00:00Z",
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {
"created_by": {
"data": {
"type": "Person",
"id": "1"
}
},
"undone_by": {
"data": {
"type": "Person",
"id": "1"
}
}
}
}
```
--------------------------------
### Example Public View Object
Source: https://api.planningcenteronline.com/docs/apps/services/versions/2018-11-01/vertices/public_view
Shows the structure of a PublicView object returned by the API, detailing various display options.
```json
{
"type": "PublicView",
"id": "1",
"attributes": {
"amazon": true,
"headers": true,
"item_descriptions": true,
"item_lengths": true,
"itunes": true,
"media_items": true,
"regular_items": true,
"series_and_plan_titles": true,
"series_artwork": true,
"service_times": true,
"song_items": true,
"spotify": true,
"vimeo": true,
"youtube": true
},
"relationships": {}
}
```
--------------------------------
### Example Marital Status Object
Source: https://api.planningcenteronline.com/docs/apps/people/versions/2026-06-04/vertices/marital_status
This is an example of the JSON object structure for a marital status.
```json
{
"type": "MaritalStatus",
"id": "1",
"attributes": {
"value": "string"
},
"relationships": {}
}
```
--------------------------------
### Example Request to Live Endpoint
Source: https://api.planningcenteronline.com/docs/apps/services/versions/2018-11-01/vertices/live
Use this cURL command to make a request to the Live endpoint for a specific series and plan.
```bash
curl https://api.planningcenteronline.com/services/v2/series/{series_id}/plans/{plan_id}/live
```
--------------------------------
### Get Organization for Notes
Source: https://api.planningcenteronline.com/docs/apps/people/versions/2026-06-04/vertices/note
Retrieve the Organization to which the notes belong using this GET endpoint.
```HTTP
GET https://api.planningcenteronline.com/people/v2/notes
```
--------------------------------
### Example Enrollment Request
Source: https://api.planningcenteronline.com/docs/apps/groups/versions/2023-07-10/vertices/enrollment
Use this cURL command to request enrollment details for a specific group. Replace `{group_id}` with the actual group ID.
```curl
curl https://api.planningcenteronline.com/groups/v2/groups/{group_id}/enrollment
```
--------------------------------
### Get Associated Person
Source: https://api.planningcenteronline.com/docs/apps/people/versions/2026-06-04/vertices/note
Retrieve the Person to whom the note is attached using this GET endpoint.
```HTTP
GET https://api.planningcenteronline.com/people/v2/notes/{note_id}/person
```
--------------------------------
### addOnEnvironment
Source: https://api.planningcenteronline.com/docs/overview/add-ons/api-reference
Returns a string indicating the current environment ('testing', 'beta', or 'production'), useful for conditional logic.
```APIDOC
## `addOnEnvironment`
### Description
This function returns a string indicating which environment your add-on is currently running in. This is useful for conditional logic or debugging.
### Method
`addOnEnvironment()`
### Parameters
None
### Request Example
```javascript
const env = addOnEnvironment();
console.log(env); // "testing", "beta", or "production"
if (env === 'testing') {
console.log('Running in testing mode');
}
```
### Response
#### Success Response
- **env** (string) - The current environment. Possible values: "testing", "beta", "production".
```
--------------------------------
### Get Associated Creator
Source: https://api.planningcenteronline.com/docs/apps/people/versions/2026-06-04/vertices/note
Retrieve the Person who created the note using this GET endpoint.
```HTTP
GET https://api.planningcenteronline.com/people/v2/notes/{note_id}/created_by
```
--------------------------------
### Example Resource Object
Source: https://api.planningcenteronline.com/docs/apps/groups/versions/2023-07-10/vertices/resource
This is a sample JSON object representing a resource. It includes details like description, name, type, and relationships to other entities such as the creator.
```json
{
"type": "Resource",
"id": "1",
"attributes": {
"description": "string",
"last_updated": "2000-01-01T12:00:00Z",
"name": "string",
"type": "string",
"visibility": "value"
},
"relationships": {
"created_by": {
"data": {
"type": "Person",
"id": "1"
}
}
}
}
```
--------------------------------
### Resource Booking Object Example
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/resource_booking
This is an example of a Resource Booking object, showing its structure and attributes. It includes details about the booking's timing, quantity, and associated events and resources.
```json
{
"type": "ResourceBooking",
"id": "1",
"attributes": {
"created_at": "2000-01-01T12:00:00Z",
"ends_at": "2000-01-01T12:00:00Z",
"quantity": 1,
"starts_at": "2000-01-01T12:00:00Z",
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {
"event": {
"data": {
"type": "Event",
"id": "1"
}
},
"event_instance": {
"data": {
"type": "EventInstance",
"id": "1"
}
},
"resource": {
"data": {
"type": "Resource",
"id": "1"
}
}
}
}
```
--------------------------------
### Query Resource Questions by Kind
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/resource_question
Example of how to filter resource questions by their kind. Valid kinds include 'dropdown', 'paragraph', 'text', 'yesno', and 'section_header'.
```bash
curl "https://api.planningcenteronline.com/calendar/v2/resource_questions?where[kind]=string"
```
--------------------------------
### Example Address Object
Source: https://api.planningcenteronline.com/docs/apps/giving/versions/2019-10-18/vertices/person
This snippet shows an example of an address object within the Person object.
```json
{
"street_line_1": "2790 Gateway Rd",
"street_line_2": "",
"city": "Carlsbad",
"state": "CA",
"zip": "92009",
"location": "Home",
"primary": true,
"street": "2790 Gateway Rd",
"line_1": "2790 Gateway Rd",
"line_2": "Carlsbad, CA 92009"
}
```
--------------------------------
### Example Headcount Request
Source: https://api.planningcenteronline.com/docs/apps/check-ins/versions/2025-05-28/vertices/headcount
Use this endpoint to list headcounts. You can filter and order results using query parameters.
```bash
curl https://api.planningcenteronline.com/check-ins/v2/headcounts
```
--------------------------------
### Pledge Object Example
Source: https://api.planningcenteronline.com/docs/apps/giving/versions/2019-10-18/vertices/pledge
This is an example of the JSON structure for a Pledge object, including its attributes and relationships.
```json
{
"type": "Pledge",
"id": "1",
"attributes": {
"amount_cents": 1,
"amount_currency": "USD",
"created_at": "2000-01-01T12:00:00Z",
"donated_total_cents": 1,
"joint_giver_amount_cents": 1,
"joint_giver_donated_total_cents": 1,
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {
"person": {
"data": {
"type": "Person",
"id": "1"
}
},
"pledge_campaign": {
"data": {
"type": "PledgeCampaign",
"id": "1"
}
}
}
}
```
--------------------------------
### BatchGroup Object Example
Source: https://api.planningcenteronline.com/docs/apps/giving/versions/2019-10-18/vertices/batch_group
This is an example of the JSON object structure for a BatchGroup, including its attributes and relationships.
```json
{
"type": "BatchGroup",
"id": "1",
"attributes": {
"committed": true,
"created_at": "2000-01-01T12:00:00Z",
"description": "string",
"status": "string",
"total_cents": 1,
"total_currency": "string",
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {}
}
```
--------------------------------
### List Field Options
Source: https://api.planningcenteronline.com/docs/apps/people/versions/2026-06-04/vertices/field_option
Use this endpoint to retrieve a list of field options for a specific field definition. No specific setup is required beyond having a valid field definition ID.
```bash
curl https://api.planningcenteronline.com/people/v2/field_definitions/{field_definition_id}/field_options
```
--------------------------------
### TagGroup Object Example
Source: https://api.planningcenteronline.com/docs/apps/calendar/versions/2026-06-22/vertices/tag_group
This is an example of the JSON object structure for a TagGroup, including its attributes and relationships.
```json
{
"type": "TagGroup",
"id": "1",
"attributes": {
"created_at": "2000-01-01T12:00:00Z",
"name": "string",
"required": true,
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {}
}
```
--------------------------------
### Go to Next Item Action
Source: https://api.planningcenteronline.com/docs/apps/services/versions/2018-11-01/vertices/live
Use this POST request to advance the live event to the next item in the sequence.
```bash
POST https://api.planningcenteronline.com/services/v2/series/{series_id}/plans/{plan_id}/live/{live_id}/go_to_next_item
```
--------------------------------
### Query Media by Creator Name
Source: https://api.planningcenteronline.com/docs/apps/services/versions/2018-11-01/vertices/media
Example of how to query media assets filtered by a specific creator's name.
```bash
?where[creator_name]=string
```
--------------------------------
### Webhook Subscription Object Example
Source: https://api.planningcenteronline.com/docs/apps/webhooks/versions/2022-10-20/vertices/webhook_subscription
This is an example of the structure of a webhook subscription object, including its attributes and relationships.
```json
{
"type": "WebhookSubscription",
"id": "1",
"attributes": {
"active": true,
"application_id": "string",
"authenticity_secret": "string",
"created_at": "2000-01-01T12:00:00Z",
"name": "string",
"updated_at": "2000-01-01T12:00:00Z",
"url": "string"
},
"relationships": {}
}
```
--------------------------------
### onRender
Source: https://api.planningcenteronline.com/docs/overview/add-ons/api-reference
The main entry point for your add-on, used to mount your React app. It receives an `args` object with rendering context.
```APIDOC
## `onRender`
### Description
This is the main entry point for your add-on. You must call this function to mount your React app. It receives an `args` object that contains context about where and how your add-on is being rendered.
### Method
`onRender(callback)`
### Parameters
- **callback** (function) - Required - A function that receives an `args` object and returns a React component or JSX.
- **`args` Object**:
- `location` (string) - The insertion point where your add-on is being rendered (e.g., `"people.list.send_message"`).
- `currentPersonId` (string) - The ID of the currently logged-in user.
- `currentOrganizationId` (string) - The ID of the current organization.
- Additional properties specific to each insertion point.
### Request Example
```javascript
import { Avatar, Button, Text } from '@planningcenter/add-ons-ui';
onRender((args) => {
const { location, closeModal, currentPersonId, currentOrganizationId } = args;
console.log('Rendering at:', location);
console.log('Current person:', currentPersonId);
console.log('Current organization:', currentOrganizationId);
return (
<>
Hello from {location}!
>
);
});
```
### Response
This function does not return a value directly, but it mounts your React application.
```
--------------------------------
### Pass Object Example
Source: https://api.planningcenteronline.com/docs/apps/check-ins/versions/2025-05-28/vertices/pass
This is an example of the Pass object structure, including its type, ID, attributes, and relationships.
```json
{
"type": "Pass",
"id": "1",
"attributes": {
"code": "string",
"created_at": "2000-01-01T12:00:00Z",
"kind": "string",
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {}
}
```
--------------------------------
### Create a New Campus
Source: https://api.planningcenteronline.com/docs/apps/people/versions/2026-06-04/vertices/campus
Use a POST request to create a new campus. Requires Organization Administrator privileges. Assignable attributes are listed.
```bash
POST /people/v2/campuses
```
--------------------------------
### Get Associated Note Category
Source: https://api.planningcenteronline.com/docs/apps/people/versions/2026-06-04/vertices/note
Retrieve the NoteCategory associated with a specific note using this GET endpoint.
```HTTP
GET https://api.planningcenteronline.com/people/v2/notes/{note_id}/category
```
--------------------------------
### Get the current add-on environment
Source: https://api.planningcenteronline.com/docs/overview/add-ons/api-reference
Use `addOnEnvironment` to determine if your add-on is running in 'testing', 'beta', or 'production'. This is useful for conditional logic.
```javascript
const env = addOnEnvironment();
console.log(env); // "testing", "beta", or "production"
if (env === 'testing') {
console.log('Running in testing mode');
}
```
--------------------------------
### Workflow Step Object Example
Source: https://api.planningcenteronline.com/docs/apps/people/versions/2026-06-04/vertices/workflow_step
An example of the JSON structure for a Workflow Step object, including attributes and relationships.
```json
{
"type": "WorkflowStep",
"id": "1",
"attributes": {
"auto_snooze_days": 1,
"auto_snooze_interval": "value",
"auto_snooze_value": 1,
"created_at": "2000-01-01T12:00:00Z",
"default_assignee_id": "primary_key",
"description": "string",
"expected_response_time_in_days": 1,
"my_ready_card_count": 1,
"name": "string",
"sequence": 1,
"skip_conditions_enabled": true,
"total_ready_card_count": 1,
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {
"default_assignee": {
"data": {
"type": "Person",
"id": "1"
}
},
"workflow": {
"data": {
"type": "Workflow",
"id": "1"
}
}
}
}
```
--------------------------------
### Create a Folder
Source: https://api.planningcenteronline.com/docs/apps/services/versions/2018-11-01/vertices/folder
Use a POST request to create a new folder. You can specify the name, parent ID, and campus ID as assignable attributes.
```http
POST /services/v2/folders
```
--------------------------------
### NoteCategorySubscription Object Example
Source: https://api.planningcenteronline.com/docs/apps/people/versions/2026-06-04/vertices/note_category_subscription
This is an example of the JSON object structure for a NoteCategorySubscription. It includes type, id, attributes, and relationships.
```json
{
"type": "NoteCategorySubscription",
"id": "1",
"attributes": {
"created_at": "2000-01-01T12:00:00Z",
"updated_at": "2000-01-01T12:00:00Z"
},
"relationships": {
"person": {
"data": {
"type": "Person",
"id": "1"
}
},
"note_category": {
"data": {
"type": "NoteCategory",
"id": "1"
}
}
}
}
```