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

  • 200Program 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

  • 200SuccessResponse

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: 200SuccessResponse


DELETE /api/v1/programs/{id}

Summary: Delete a program.

Responses

  • 200SuccessResponse

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"