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
CreateProgramRequestschema.
See also
GET /api/v1/programs
Summary: List programs available to the authenticated user/organization.
Security: Authorization: Bearer <token>
Responses
200— JSON list withitems: 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— ReturnsCreateResponsewith the newid.
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—Programobject404— 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"