openapi: 3.0.3 info: title: Planning Center Calendar Groups API description: 'A representative OpenAPI description of the Planning Center suite of church management APIs. Planning Center exposes a documented public REST API for each of its products - People, Services, Giving, Groups, Check-Ins, Calendar, Registrations, Publishing - plus a cross-product Webhooks API, all under the shared base host https://api.planningcenteronline.com. Every product is versioned under its own path prefix (for example /people/v2, /services/v2, /giving/v2). All responses conform to the JSON:API 1.0 specification: resource objects are wrapped in a top-level `data` member (an object or an array), each with `id`, `type`, `attributes`, and `relationships`, and collections support `include`, `where[]` filtering, `order`, and offset-based pagination via `per_page` and `offset`. Authenticate with HTTP Basic using a Personal Access Token (application id / secret) or with an OAuth 2.0 bearer token. A `User-Agent` header is required on every request. Endpoint coverage: the resource collections and base paths modeled here are grounded in Planning Center''s published documentation. Individual method/path combinations are a representative CRUD-shaped subset; consult the live API reference at developer.planning.center for the authoritative, exhaustive list and per-resource attributes.' version: '2.0' contact: name: Planning Center Developers url: https://developer.planning.center/docs/ license: name: Proprietary url: https://www.planningcenter.com/terms servers: - url: https://api.planningcenteronline.com description: Planning Center API (all products) security: - basicAuth: [] - oauth2: - people - services - giving - groups - check_ins - calendar - registrations - publishing tags: - name: Groups description: Small groups, memberships, and group events. paths: /groups/v2/groups: get: operationId: listGroups tags: - Groups summary: List groups responses: '200': $ref: '#/components/responses/Collection' /groups/v2/groups/{id}: parameters: - $ref: '#/components/parameters/Id' get: operationId: getGroup tags: - Groups summary: Get a group responses: '200': $ref: '#/components/responses/Resource' /groups/v2/group_types: get: operationId: listGroupTypes tags: - Groups summary: List group types responses: '200': $ref: '#/components/responses/Collection' /groups/v2/groups/{group_id}/memberships: parameters: - name: group_id in: path required: true schema: type: string get: operationId: listGroupMemberships tags: - Groups summary: List memberships for a group responses: '200': $ref: '#/components/responses/Collection' post: operationId: createGroupMembership tags: - Groups summary: Add a member to a group requestBody: $ref: '#/components/requestBodies/JsonApiBody' responses: '201': $ref: '#/components/responses/Resource' /groups/v2/events: get: operationId: listGroupEvents tags: - Groups summary: List group events responses: '200': $ref: '#/components/responses/Collection' components: parameters: Id: name: id in: path required: true schema: type: string description: The resource ID. schemas: JsonApiResource: type: object description: A JSON:API resource object. properties: id: type: string type: type: string attributes: type: object additionalProperties: true relationships: type: object additionalProperties: true links: type: object additionalProperties: true JsonApiCollectionDocument: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/JsonApiResource' included: type: array items: $ref: '#/components/schemas/JsonApiResource' meta: type: object properties: total_count: type: integer count: type: integer links: type: object properties: self: type: string next: type: string JsonApiResourceDocument: type: object required: - data properties: data: $ref: '#/components/schemas/JsonApiResource' included: type: array items: $ref: '#/components/schemas/JsonApiResource' responses: Resource: description: A single JSON:API resource. content: application/json: schema: $ref: '#/components/schemas/JsonApiResourceDocument' Collection: description: A JSON:API collection of resources. content: application/json: schema: $ref: '#/components/schemas/JsonApiCollectionDocument' requestBodies: JsonApiBody: required: true description: A JSON:API single-resource document. content: application/json: schema: $ref: '#/components/schemas/JsonApiResourceDocument' securitySchemes: basicAuth: type: http scheme: basic description: HTTP Basic auth using a Personal Access Token - application id as the username and secret as the password. oauth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://api.planningcenteronline.com/oauth/authorize tokenUrl: https://api.planningcenteronline.com/oauth/token scopes: people: Access the People product services: Access the Services product giving: Access the Giving product groups: Access the Groups product check_ins: Access the Check-Ins product calendar: Access the Calendar product registrations: Access the Registrations product publishing: Access the Publishing product