Skip to main content

API Overview

The COPA REST API provides access to cooperative and member data.

Base URL

https://api.copa.rw/api/v1/

Available Endpoints

MethodEndpointDescriptionScope
GET/cooperativesList all cooperativescooperatives:read
GET/cooperatives/{id}Get cooperative by IDcooperatives:read
GET/cooperatives/{id}/membersList cooperative membersmembers:read
GET/membersList all membersmembers:read
GET/members/{id}Get member by IDmembers:read

Request Headers

HeaderRequiredDescription
AuthorizationYesBearer {api_key}
Content-TypeYesapplication/json
AcceptNoapplication/json

Pagination

List endpoints support pagination:

ParameterTypeDefaultDescription
pageinteger1Page number
page_sizeinteger20Items per page (max 100)

Example:

GET /api/v1/cooperatives?page=2&page_size=50

Filtering

Some endpoints support filtering:

# Filter cooperatives by district
GET /api/v1/cooperatives?district=Gasabo

# Filter members by status
GET /api/v1/members?status=Active

Response Format

Success Response

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"code": "COOP001",
"name": "Koperative y'Abahinzi",
"created_at": "2024-01-15T10:30:00Z"
}

List Response

[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"code": "COOP001",
"name": "Koperative y'Abahinzi"
},
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"code": "COOP002",
"name": "Twungubumwe"
}
]

Error Response

{
"detail": "Not found."
}

HTTP Status Codes

CodeDescription
200Success
401Unauthorized — Invalid API key
403Forbidden — Insufficient scope
404Not Found — Resource doesn't exist
429Too Many Requests — Rate limit exceeded
500Internal Server Error

Date Formats

All dates use ISO 8601 format:

2024-01-15T10:30:00Z