Skip to main content

Programs

Overview

Programs represent the divisions or departments inside an organization (e.g., Community Emergency Response Team, Animal Shelter). Volunteers must be accepted into one of these programs before they can see or join that division’s missions, so every API integration should mirror the org chart and enforce program-level ownership.

Typical operations: list, create, update, delete.

Endpoints (examples)

  • GET /api/v1/programs — list programs
  • POST /api/v1/programs — create program
  • GET /api/v1/programs/{id} — get program
  • PUT/PATCH /api/v1/programs/{id} — update program
  • GET /api/v1/programs/{id}/schedule — program schedule
  • GET /api/v1/programs/{id}/volunteers — program volunteers list

Examples

# List programs
curl -H "Authorization: Bearer <token>" "{{baseUrl}}/api/v1/programs"

Guidance

  • Model each division/department as its own program so downstream volunteer onboarding, capacity planning, and mission permissions line up with real leadership structures.
  • Volunteers cannot access opportunities until they have an accepted membership in a specific program—surface program labels anywhere you show volunteer-facing copy (welcome emails, onboarding steps, digests) to reinforce this contract.
  • Use pagination when listing large numbers of programs.
  • Program creation requires CreateProgramRequest schema.

See also


GET /api/v1/programs​

Summary: List programs available to the authenticated user/organization.

Security: Authorization: Bearer <token>

Responses

  • 200 — JSON list with items: Program[]

Example

curl -H "Authorization: Bearer <token>" "{{baseUrl}}/api/v1/programs"

POST /api/v1/programs​

Summary: Create a new program.

Security: Authorization: Bearer <token>

Request

  • Body schema: CreateProgramRequest

Responses

  • 200 — Returns CreateResponse with the new id.

Example

curl -X POST "{{baseUrl}}/api/v1/programs" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"name":"Community Health","timezone":"UTC"}'

GET /api/v1/programs/{id}​

Summary: Retrieve program details by ID.

Path parameters: id (integer)

Responses

  • 200 — Program object
  • 404 — Not found

Example

curl -H "Authorization: Bearer <token>" "{{baseUrl}}/api/v1/programs/123"

PUT /api/v1/programs/{id}​

Summary: Replace program data.

Request

  • Body schema: UpdateProgramRequest

Responses

  • 200 — SuccessResponse

Example

curl -X PUT "{{baseUrl}}/api/v1/programs/123" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"name":"Updated Program"}'

PATCH /api/v1/programs/{id}​

Summary: Partially update a program (fields in UpdateProgramRequest).

Responses: 200 — SuccessResponse


DELETE /api/v1/programs/{id}​

Summary: Delete a program.

Responses

  • 200 — SuccessResponse

GET /api/v1/programs/{id}/schedule​

Summary: Retrieve the program's schedule.

Responses: 200 — schedule object


GET /api/v1/programs/{id}/volunteers​

Summary: List volunteers assigned to the program.

Responses: 200 — list of volunteers

Example

curl -H "Authorization: Bearer <token>" "{{baseUrl}}/api/v1/programs/123/volunteers"