API reference v1.0
Connect your applications to Bifrost's KPI data platform.
Quick start
1. Get your API token
Contact your system administrator to obtain an API token for authentication.
2. Base URL
https://www.matsobi.nl/api/
3. Authentication
Include your token in the Authorization header:
Authorization: Token your_token_here
4. Test connection
curl https://www.matsobi.nl/api/tables/ \
-H "Authorization: Token your_token_here"
Main endpoints
KPI tables
List all tables
/api/tables/
Get a list of KPI tables you can access.
Table details
/api/tables/{id}/
Get detailed information about a specific table.
Table data (recommended)
/api/tables/{id}/data/
Get flattened data from a table for Power BI, Excel, and reporting tools.
Pending approvals
/api/tables/{id}/pending/
Get data pending approval for a table.
Available filters
search- Search by name or descriptionordering- Sort results (e.g., -created_at)page- Pagination
Example
/api/tables/?search=sales&ordering=-created_at
Data rows
List all rows
/api/rows/
Get all data rows with nested cell structure.
Row details
/api/rows/{id}/
Get detailed information about a specific row.
Available filters
table- Filter by table IDstatus- Filter by approval statuscreated_by- Filter by creatorcreated_at- Date range filtering
Example
/api/rows/?table=1&status=approved
Approving & rejecting data
Move a pending row through the approval workflow. These actions require approver rights on the table, and you cannot approve a row you submitted yourself.
Approve a row
/api/rows/{id}/approve/
curl -X POST \
https://www.matsobi.nl/api/rows/1/approve/ \
-H "Authorization: Token your_token_here"
Reject a row
/api/rows/{id}/reject/
curl -X POST \
https://www.matsobi.nl/api/rows/1/reject/ \
-H "Authorization: Token your_token_here" \
-H "Content-Type: application/json" \
-d '{"reason": "Numbers do not match source"}'
A reason is required when rejecting.
Response examples
Table Data Response
GET /api/tables/1/data/[
{
"id": 1,
"table_name": "Sales Data",
"status": "approved",
"created_at": "2025-01-28T10:30:00Z",
"created_by_email": "user@company.com",
"Employee Name": "John Doe",
"Monthly Sales": "50000",
"Target Met": "true",
"Region": "North"
},
{
"id": 2,
"table_name": "Sales Data",
"status": "approved",
"created_at": "2025-01-28T11:15:00Z",
"created_by_email": "manager@company.com",
"Employee Name": "Jane Smith",
"Monthly Sales": "75000",
"Target Met": "true",
"Region": "South"
}
]
Tables List Response
GET /api/tables/{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"name": "Sales Data",
"description": "Monthly sales figures",
"version_name": "Q1 2025",
"version_number": 1,
"created_at": "2025-01-01T00:00:00Z",
"company_name": "Your Company",
"columns": [
{
"id": 1,
"name": "Employee Name",
"data_type": "text",
"required": true
},
{
"id": 2,
"name": "Monthly Sales",
"data_type": "number",
"required": true
}
]
}
]
}
Integration Examples
Power BI
- Get Data → Web
- URL:
/api/tables/1/data/ - Add Authorization header
- Connect and transform
Excel
- Data → Get Data → From Web
- Enter API URL
- Configure authentication
- Load and refresh
Python
import requests
headers = {
'Authorization': 'Token your_token'
}
response = requests.get(
'https://www.matsobi.nl/api/tables/1/data/',
headers=headers
)
data = response.json()
cURL
# List the tables you can access
curl https://www.matsobi.nl/api/tables/ \
-H "Authorization: Token your_token"
# Pull flattened data from one table
curl https://www.matsobi.nl/api/tables/1/data/ \
-H "Authorization: Token your_token"
JavaScript
const res = await fetch(
"https://www.matsobi.nl/api/tables/1/data/",
{ headers: { Authorization: "Token your_token" } }
);
const data = await res.json();
console.log(data);
Authentication Methods
Token Authentication (Recommended)
Most secure method for API integrations.
Authorization: Token abc123def456
Basic Authentication
Use your username and password (base64 encoded).
Authorization: Basic dXNlcjpwYXNz
Session Authentication
For web-based applications using cookies.
Cookie: sessionid=abc123
Error Handling
| Status Code | Meaning |
|---|---|
| 200 | Success - Request completed |
| 400 | Bad Request - Check parameters |
| 401 | Unauthorized - Check authentication |
| 403 | Forbidden - No permission |
| 404 | Not Found - Resource doesn't exist |
Common Issues
- 401 Unauthorized: Check your token format and validity
- 403 Forbidden: You don't have access to this table
- 404 Not Found: Check the table/row ID exists
- Rate Limiting: Reduce request frequency
Need Help?
Contact your system administrator or IT support team for:
- API token generation
- Permission issues
- Integration support
Rate Limits & Best Practices
- Use the
/data/endpoint for reporting tools - Cache responses when possible
- Filter data at the API level (not client-side)
- Use pagination for large datasets
- Implement exponential backoff for retries
- Monitor your API usage
- Keep tokens secure and rotate regularly
- Test with small datasets first
Need Support?
Our team is here to help you integrate with the Bifrost API successfully.