Validate all dashboards in a project
Runs the same validation checks as single-dashboard validation across every dashboard in the project and returns a per-dashboard result set with an aggregate summary. Use this for project-wide audits — for example, after renaming database columns or migrating a connection.
You can scope the validation to specific dashboards using the filter option
(e.g., only organization-owned dashboards or a specific tenant's dashboards).
Authorization
BearerAuth A project-scoped or dashboard-scoped access token. Generate one via the Token API using your project ID and project secret.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X post "https://semaphor.cloud/api/v1/dashboard/validate-all" \ -H "Content-Type: application/json" \ -d '{}'{
"projectId": "string",
"validatedAt": "2019-08-24T14:15:22Z",
"summary": {
"totalDashboards": 0,
"validDashboards": 0,
"invalidDashboards": 0
},
"dashboardResults": [
{
"dashboardId": "string",
"dashboardTitle": "string",
"isValid": true,
"validatedAt": "2019-08-24T14:15:22Z",
"summary": {
"totalCards": 0,
"validCards": 0,
"invalidCards": 0,
"totalFields": 0,
"validFields": 0,
"invalidFields": 0,
"totalFilters": 0,
"validFilters": 0,
"invalidFilters": 0,
"totalJoins": 0,
"validJoins": 0,
"invalidJoins": 0,
"totalConnections": 0,
"validConnections": 0,
"invalidConnections": 0,
"totalDatasets": 0,
"validDatasets": 0,
"invalidDatasets": 0,
"totalDatamodels": 0,
"validDatamodels": 0,
"invalidDatamodels": 0,
"aiContextValid": true,
"assistantProfileValid": true
},
"cardResults": [
{
"cardId": "string",
"cardTitle": "string",
"sheetId": "string",
"sheetTitle": "string",
"frameId": "string",
"isValid": true,
"connectionId": "string",
"connectionName": "string",
"dataSourceType": "table",
"dataSourceName": "string",
"fieldResults": [
{
"fieldId": "string",
"fieldName": "string",
"fieldRole": "groupby",
"entityId": "string",
"entityName": "string",
"qualifiedFieldName": "string",
"isValid": true,
"errorType": "string",
"errorMessage": "string",
"availableColumns": [
"string"
],
"suggestion": "string"
}
],
"joinResults": {
"isValid": true,
"baseEntityValid": true,
"baseEntityName": "string",
"baseEntityError": "string",
"joins": [
{
"joinId": "string",
"sourceEntity": "string",
"targetEntity": "string",
"sourceEntityValid": true,
"targetEntityValid": true,
"keyResults": [
{
"sourceField": "string",
"targetField": "string",
"sourceFieldValid": true,
"targetFieldValid": true,
"sourceErrorMessage": "string",
"targetErrorMessage": "string",
"sourceSuggestion": "string",
"targetSuggestion": "string"
}
]
}
]
},
"errors": [
"string"
]
}
],
"filterResults": [
{
"filterId": "string",
"filterTitle": "string",
"connectionId": "string",
"isValid": true,
"fieldResults": [
{
"fieldId": "string",
"fieldName": "string",
"fieldRole": "groupby",
"entityId": "string",
"entityName": "string",
"qualifiedFieldName": "string",
"isValid": true,
"errorType": "string",
"errorMessage": "string",
"availableColumns": [
"string"
],
"suggestion": "string"
}
],
"errors": [
"string"
]
}
],
"resourceResults": {
"connections": [
{
"connectionId": "string",
"connectionName": "string",
"isValid": true,
"errorMessage": "string",
"usedByCards": [
"string"
]
}
],
"datasets": [
{
"domainId": "string",
"datasetName": "string",
"isValid": true,
"errorMessage": "string",
"usedByCards": [
"string"
]
}
],
"datamodels": [
{
"datamodelId": "string",
"datamodelName": "string",
"isValid": true,
"errorMessage": "string",
"usedByCards": [
"string"
]
}
]
},
"aiContextResult": {},
"aiScopeTableResults": [
{}
],
"assistantProfileResult": {},
"errors": [
"string"
],
"warnings": [
"string"
]
}
]
}{
"error": "string",
"code": "string",
"details": {},
"success": true
}{
"error": "string",
"code": "string",
"details": {},
"success": true
}{
"error": "string",
"code": "string",
"details": {},
"success": true
}{
"error": "string",
"code": "string",
"details": {},
"success": true
}