Skip to main content

Scorecards

Toolkit Scorecards represent B-BBEE scorecards generated within BEEtoolkit, covering all pillars such as Ownership, Management Control, Skills Development, Enterprise/Supplier Development, and SED. These APIs allow you to programmatically create, retrieve, update, and delete scorecards.

Each scorecard has a unique ID used for all subsequent interactions.


Endpoints

MethodPathPurpose
GET/api/public/v1/scorecardsRetrieve all scorecards
GET/api/public/v1/scorecards/{scorecard_id}Retrieve a specific scorecard
POST/api/public/v1/scorecardsCreate a new scorecard
PUT/api/public/v1/scorecards/{scorecard_id}Update an existing scorecard
PUT/api/public/v1/scorecards/{scorecard_id}/recalculateRecalculate scorecard totals after data changes
DELETE/api/public/v1/scorecards/{scorecard_id}Delete a scorecard
Authentication

Include the following headers on every request:

  • Authorization: HMAC <signature>
  • X-Api-Key: <your account key>
  • Accept: application/json

See Authentication.


Attributes

Unless otherwise specified, all fields are optional.

FieldTypeRequiredDescription
descriptionstringyesFree-text description for internal use.
start_datestringyesStart date for the scorecard period (YYYY-MM-DD).
end_datestringyesEnd date for the scorecard period (YYYY-MM-DD).
charter_idstringyesB-BBEE charter used for calculations. See Accepted Charter IDs.
provincestringyesProvince used for reporting and funding allocation.

System Fields (Response Only)

FieldTypeDescription
idstringUnique scorecard identifier.
created_atdatetimeCreation timestamp.
updated_atdatetimeLast update timestamp.

Notes

  • Dates must be in ISO 8601 format (YYYY-MM-DD).
  • charter_id must match one of the Accepted Charter IDs.
  • Updates are partial — only send the fields you want to modify.
  • The API returns structured JSON representing the full scorecard record.

List scorecards

Retrieve all scorecards.

GET /api/public/v1/scorecards

Code examples

curl -X GET "https://www.beetoolkit.co.za/api/public/v1/scorecards" \
-H "Accept: application/json" \
-H "X-Api-Key: <your account key>" \
-H "Authorization: HMAC <your signature>"

Response

[
{
"id": "scorecard_mG712bEVavpq3ukr0Z5R89qY",
"description": "YTD Scorecard Nov 2024",
"start_date": "2024-01-01",
"end_date": "2024-11-30",
"charter_id": "bravo_generic",
"province": "National",
"created_at": "2024-11-15T08:00:00.000Z",
"updated_at": "2024-11-15T08:00:00.000Z"
}
]

Create a scorecard

Create a new scorecard.

POST /api/public/v1/scorecards

Request body

Send a JSON object with a scorecard key:

{
"scorecard": {
"description": "YTD Scorecard Nov 2024",
"start_date": "2024-01-01",
"end_date": "2024-11-30",
"charter_id": "bravo_generic",
"province": "National"
}
}

Code examples

curl -X POST "https://www.beetoolkit.co.za/api/public/v1/scorecards" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Api-Key: <your account key>" \
-H "Authorization: HMAC <your signature>" \
-d '{
"scorecard": {
"description": "YTD Scorecard Nov 2024",
"start_date": "2024-01-01",
"end_date": "2024-11-30",
"charter_id": "bravo_generic",
"province": "National"
}
}'

Response

Returns the created scorecard record.


Update a scorecard

Update an existing scorecard. Only send the fields you want to modify.

PUT /api/public/v1/scorecards/{scorecard_id}

Path parameters

NameTypeRequiredDescription
scorecard_idstringyesThe scorecard identifier.

Request body

Send a JSON object with a scorecard key containing only the fields to update:

{
"scorecard": {
"description": "Updated Scorecard Description"
}
}

Code examples

curl -X PUT "https://www.beetoolkit.co.za/api/public/v1/scorecards/{scorecard_id}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Api-Key: <your account key>" \
-H "Authorization: HMAC <your signature>" \
-d '{
"scorecard": {
"description": "Updated Scorecard Description"
}
}'

Response

Returns the updated scorecard record.


Delete a scorecard

Delete a scorecard by ID.

DELETE /api/public/v1/scorecards/{scorecard_id}

Path parameters

NameTypeRequiredDescription
scorecard_idstringyesThe scorecard identifier.

Code examples

curl -X DELETE "https://www.beetoolkit.co.za/api/public/v1/scorecards/{scorecard_id}" \
-H "Accept: application/json" \
-H "X-Api-Key: <your account key>" \
-H "Authorization: HMAC <your signature>"

Response

Returns 204 No Content on success.


Recalculate a scorecard

After loading or updating related scorecard data (for example employees, training programs, or training participants), call the recalculate endpoint to refresh the scorecard totals.

PUT /api/public/v1/scorecards/{scorecard_id}/recalculate

Path parameters

NameTypeRequiredDescription
scorecard_idstringyesThe scorecard identifier.

The endpoint does not require a request body.

Processing behaviour
  • Recalculation runs asynchronously in the background.
  • For datasets larger than 20,000 records, processing can take up to 1 hour.
  • If a recalculation is already running for the scorecard and you submit another request, the API responds with 409 Conflict.

If you receive 409 Conflict, wait for the current recalculation to finish before retrying.

Code examples

curl -X PUT "https://www.beetoolkit.co.za/api/public/v1/scorecards/{scorecard_id}/recalculate" \
-H "Accept: application/json" \
-H "X-Api-Key: <your account key>" \
-H "Authorization: HMAC <your signature>"

Errors

StatusDescription
409A recalculation is already in progress for this scorecard.

Accepted Charter IDs

The following values are accepted for charter_id:

  • bravo_generic
  • bravo_agri
  • bravo_forestry
  • bravo_transport_public_sector
  • bravo_construction_built_environment_professionals
  • bravo_construction_contractors
  • bravo_specialised
  • bravo_tourism
  • bravo_specialised_ict
  • bravo_ict
  • bravo_mac
  • bravo_transport_road_freight
  • bravo_transport_bus_commuter
  • bravo_transport_coach_services
  • bravo_financial_long_term
  • bravo_financial_short_term
  • bravo_financial_other
  • bravo_financial_specialised
  • bravo_financial_stock_exchanges
  • bravo_financial_banking
  • bravo_property_internal_management
  • bravo_property_owners
  • bravo_defence
  • bravo_legal_attorneys