There are two modes of authentication:
Returns the complete recursive tree structure of a BA with all its indicators. BA children outside the user's ACL scope are visible (name + impact) but not expandable; they carry acl_restricted: true on the indicator node so the front can render them greyed and forbid editing. In-scope BA nodes carry acl_restricted: false. The field is absent for non-Business-Activity indicators.
| id required | string BusinessActivityTree identifier |
{- "@context": "/centreon/api/latest/contexts/BusinessActivityTree",
- "@id": "/centreon/api/latest/configuration/business-activities/1/tree",
- "@type": "BusinessActivityTree",
- "id": 1,
- "name": "Netflix - Frontend",
- "description": "Frontend journey business activity",
- "calculation_method": {
- "id": 1,
- "name": "Best Status",
- "is_percentage": false,
- "warning_threshold": null,
- "critical_threshold": null
}, - "downtime_inheritance_mode": 1,
- "indicators": [
- {
- "id": 100,
- "type": "service",
- "resource_id": 10,
- "name": "HTTP",
- "impact": {
- "type": "value",
- "warning": 25,
- "critical": 50,
- "unknown": 75
}, - "parent_resource_id": 5,
- "parent_resource_name": "web-server-01"
}, - {
- "id": 101,
- "type": "business-activity",
- "resource_id": 12,
- "name": "Payment - Backend",
- "impact": {
- "type": "word",
- "warning": 2,
- "critical": 4,
- "unknown": 1
}, - "calculation_method": {
- "id": 2,
- "name": "Worst Status",
- "is_percentage": false
}, - "downtime_inheritance_mode": 2,
- "indicators": [ ],
- "acl_restricted": true
}
]
}Partially updates a Business Activity tree. All sections (business_activities, indicators_added, indicators_updated, indicators_removed) are optional. Mutations targeting Business Activities outside the user's ACL scope are silently ignored (no info leak on the existence of unauthorised resources). The companion GET acl_restricted: true flag tells the front which BA nodes to filter out of the payload client-side; the back-side silent-drop remains as defense-in-depth.
Indicator references — kpi_id or uuid: entries in indicators_removed and the id field of indicators_updated accept either the kpi_id (positive integer) or the uuid string from GET /tree (<shortType><resourceId>, optionally prefixed with h<host>- for host-scoped types). The uuid form is stable across the legacy centreon_business_activity PUT that drops and re-inserts kpi rows on every save — clients that may interleave that PUT with this PATCH should reference indicators by uuid to avoid stale kpi_id lookups. A single uuid resolves to every kpi_id matching it (duplicate-link case), so the action applies to every matching row.
Silent-drop on unknown indicator references: by design, an id in indicators_updated or indicators_removed that does not resolve to anything in the loaded tree — truly unknown, stale kpi_id, unknown uuid, or belonging to a tree the user cannot access — is dropped without error. The endpoint still returns 204. This extends the ACL anti-probing policy to indicator identity: response codes must not reveal whether an unknown id corresponds to a real resource. Clients relying on feedback about their own mistakes (typoed field names, stale ids) must validate client-side.
Validation errors — 400 vs 422: the two codes cohabit by design. 400 covers payload-level validation (Symfony constraints on the input DTOs, raised as ValidationException and mapped to 400 by the legacy global configuration). 422 covers business-rule violations that require database context (BA existence, tree membership, name uniqueness, resource references). The split is transitional: both classes will converge on 422 once the legacy 400 mapping is dropped platform-wide.
| id required | string BusinessActivityTree identifier |
The updated BusinessActivityTree resource
| business_activities | Array of strings or null or null |
| indicators_added | Array of strings or null or null |
| indicators_updated | Array of strings or null or null |
| indicators_removed | Array of strings or null or null |
{- "business_activities": [
- "string"
], - "indicators_added": [
- "string"
], - "indicators_updated": [
- "string"
], - "indicators_removed": [
- "string"
]
}{- "code": 0,
- "message": "[indicators_added[0].parent_resource_id] parent_resource_id is required for service and anomaly-detection indicators.\n"
}Returns the paginated list of Business Activities the user is allowed to see. Admins and users with the all_business_views grant see every BA; other users only see the BAs reachable through their business views. Searchable / sortable fields: id, name, description, is_enabled.
| search | object Filter by field and operator, e.g. ?name[lk]=foo, ?id[eq]=1, ?is_enabled[eq]=true. Allowed operators: eq, neq, lk, nlk, in, nin. |
| sort | object Sort by field and direction, e.g. ?sort[name]=ASC. |
| show_only_top_level | boolean When true, only top-level Business Activities (roots and orphans) are returned; BAs referenced as a child of another (accessible) BA are hidden. Absent or false keeps every accessible BA. |
| page | integer Default: 1 The collection page number |
| itemsPerPage | integer [ 0 .. 30 ] Default: 30 The number of items per page |
{- "totalItems": 0,
- "search": {
- "@type": "string",
- "template": "string",
- "variableRepresentation": "string",
- "mapping": [
- {
- "@type": "string",
- "variable": "string",
- "property": "string",
- "required": true
}
]
}, - "view": {
- "@id": "string",
- "@type": "string",
- "first": "string",
- "last": "string",
- "previous": "string",
- "next": "string"
}, - "member": [
- {
- "@context": "string",
- "@id": "string",
- "@type": "string",
- "id": 0,
- "name": "Netflix - Frontend",
- "description": "string",
- "is_enabled": true,
- "level_warning": 0,
- "level_critical": 0,
- "calculation_method": {
- "id": 0,
- "name": "string",
- "is_percentage": true
}, - "icon": {
- "name": "string",
- "url": "string"
}
}
]
}Available since : 20.10.0
Returns all business views.
The available parameters to search / sort_by are:
| limit | integer >= 1 Default: 10 Example: limit=20 Number of items per page |
| page | integer >= 1 Default: 1 Example: page=4 Number of the requested page |
| search | string Retrieve only data matching the defined search value.
A simple search can be done like in the following example
Available search operators are:
Examples without nested aggregators:
Example with nested aggregators:
|
| sort_by | string Example: sort_by={"host.name":"ASC"} Sort the resulting data by its properties |
{- "result": [
- {
- "id": 1,
- "name": "BV1",
- "description": "bv 1",
- "is_enabled": true
}
], - "meta": {
- "page": 1,
- "limit": 10,
- "search": { },
- "sort_by": { },
- "total": 1
}
}Available since : 24.10.0
Returns the list of business views from real time context
The available parameters to search / sort_by are:
{- "result": [
- {
- "id": 1,
- "name": "Applications - France"
}
], - "meta": {
- "page": 1,
- "limit": 10,
- "search": { },
- "sort_by": { },
- "total": 1
}
}Find a business activity
| id required | integer >= 1 Example: 1 Business activity ID |
{- "id": 1,
- "name": "BA1",
- "is_activated": true,
- "description": "ba 1",
- "icon": {
- "id": 1,
- "name": "linux.png",
- "url": "/centreon/img/media/ppm/linux.png"
}, - "business_views": [
- {
- "id": 1,
- "name": "BV-name"
}
], - "monitoring_servers": [
- {
- "id": 1,
- "name": "monitoring-server-name"
}
], - "geo_coordinates": "48.10,12.5",
- "map_view": "map-view-name",
- "notification": {
- "is_activated": true,
- "options": 12,
- "interval": 5,
- "timeperiod": {
- "id": 1,
- "name": "24x7"
}, - "first_delay": 5,
- "recovery_delay": 5,
- "contact_groups": [
- {
- "id": 1,
- "name": "Supervisor"
}
], - "escalations": [
- {
- "id": 1,
- "name": "escalation-name"
}
]
}, - "reporting": {
- "service_level_agreement": {
- "percentage": 80,
- "duration": 90
}, - "service_level_objective": {
- "percentage": 90,
- "duration": 120
}, - "timeperiods": {
- "default": {
- "id": 1,
- "name": "24x7"
}, - "extra": [
- {
- "id": 1,
- "name": "24x7"
}
]
}
}, - "event_handler": {
- "is_activated": true,
- "command": {
- "id": 1,
- "name": "command-name"
}
}, - "indicator": {
- "calculation_method": 1,
- "downtime_option": 1,
- "indicators": [
- {
- "uuid": "h13-s56",
- "name": "Centreon-Server - Ping"
}
]
}
}Available since : 24.04.0
Returns A Business Activity with its KPIs.
| id required | integer >= 1 Example: 1 Business activity ID |
{- "id": 0,
- "name": "string",
- "status": 0,
- "type": "Business Activity",
- "calculation_method": {
- "id": 0,
- "name": "string",
- "is_percentage": true,
- "value": 0
}, - "indicators": [
- {
- "type": "Service",
- "id": 0,
- "name": "string",
- "status": 0,
- "host_id": 0,
- "host_name": "string",
- "calculation_method": {
- "id": 0,
- "name": "string",
- "is_percentage": true,
- "value": 0
}, - "indicators": [ ]
}
]
}Available since : 24.10.0
Returns the list of Business Activities from the real time context
The available parameters to search / sort_by are:
{- "result": [
- {
- "id": 1,
- "name": "Applications - France",
- "status": {
- "code": 0,
- "name": "OK",
- "severity_code": 1
}, - "business_views": {
- "id": 1,
- "name": "Business-View1"
}
}
], - "meta": {
- "page": 1,
- "limit": 10,
- "search": { },
- "sort_by": { },
- "total": 1
}
}Available since : 24.10.0
Returns the list of Business Activities statuses from the real time context
The available parameters to search / sort_by are:
{- "critical": {
- "total": 0
}, - "unknown": {
- "total": 0
}, - "ok": {
- "total": 0
}, - "down": {
- "total": 0
}, - "pending": {
- "total": 0
}, - "total": 0
}Available since : 24.10.0
Returns the detail of a Business Activity from the real time context with associated indicators
{- "id": 1,
- "name": "string",
- "status": {
- "name": "OK",
- "code": 0,
- "severity_code": 5
}, - "infrastructure_view": "Geoview1",
- "calculation_method": {
- "id": 1,
- "name": "Ratio",
- "is_percentage": false,
- "critical_threshold": 70,
- "health": 70,
- "warning_threshold": 80
}, - "current_level": 0,
- "inherit_kpi_downtimes": 1,
- "indicators": [
- {
- "id": 1,
- "type": "Service",
- "name": "Ping",
- "status": {
- "code": 0,
- "name": "OK",
- "severity_code": 1
}, - "impact": {
- "warning": 0,
- "critical": 0,
- "unknown": 0
}, - "resource": {
- "id": 1,
- "name": "Ping",
- "parent_id": 10,
- "parent_name": "Central-Server"
}
}
]
}Available since : 24.10.0
Returns the impacting indicators of a Business Activity from the real time context
| start required | string <date-time> Example: start=2024-09-10T12:45:00.000Z Start date of indicator timeline |
| end required | string <date-time> Example: end=2024-09-10T13:45:00.000Z End date of indicator timeline |
{- "result": [
- [
- {
- "id": 3,
- "type": "Service",
- "name": "testba1",
- "impact": 75,
- "details": "(Execute command failed)",
- "is_in_downtime": false,
- "is_acknowledged": false,
- "status": {
- "code": 3,
- "name": "UNKNOWN",
- "severity_code": 3
}, - "business_activity": {
- "id": 2,
- "name": "testba2"
}, - "resource": {
- "id": 1,
- "name": "testba1",
- "parent_id": null,
- "parent_name": null
}
}
]
], - "meta": {
- "page": 1,
- "limit": 10,
- "search": { },
- "sort_by": { },
- "total": 1
}
}Available since : 24.10.0
Returns the timeline of a Business Activity status
{- "id": 1,
- "name": "Marketing Web App",
- "timeline": [
- {
- "critical": {
- "start": "2023-10-01T12:00:00+02:00",
- "end": "2023-10-01T12:30:00+02:00"
}, - "unknown": {
- "start": "2023-10-01T13:30:00+02:00",
- "end": "2023-10-01T14:00:00+02:00"
}, - "ok": {
- "start": "2023-10-01T14:00:00+02:00",
- "end": "2023-10-01T14:30:00+02:00"
}, - "down": {
- "start": "2023-10-01T14:30:00+02:00",
- "end": "2023-10-01T15:00:00+02:00"
}, - "pending": {
- "start": "2023-10-01T15:00:00+02:00",
- "end": "2023-10-01T15:30:00+02:00"
}
}
]
}Available since : 23.04.0
Returns all available indicators.
The available parameters to search / sort_by are:
| limit | integer >= 1 Default: 10 Example: limit=20 Number of items per page |
| page | integer >= 1 Default: 1 Example: page=4 Number of the requested page |
| search | string Retrieve only data matching the defined search value.
A simple search can be done like in the following example
Available search operators are:
Examples without nested aggregators:
Example with nested aggregators:
|
| sort_by | string Example: sort_by={"host.name":"ASC"} Sort the resulting data by its properties |
{- "result": [
- {
- "uuid": "h10-s20",
- "name": "Centreon-Server - Ping",
- "type": "service",
- "short_type": "s",
- "enabled": true,
- "resource": {
- "id": 20,
- "parent_id": 10
}
}
], - "meta": {
- "page": 1,
- "limit": 10,
- "search": { },
- "sort_by": { },
- "total": 1
}
}Available since : 24.10.0
Returns the list of indicators linked to Business Activities from the real time context
The available parameters to search / sort_by are:
{- "result": [
- {
- "id": 1,
- "type": "Service",
- "name": "Ping",
- "impact": 50,
- "details": "(Execute command failed)\\n",
- "is_in_downtime": false,
- "is_acknowledged": false,
- "status": {
- "code": 0,
- "name": "OK",
- "severity_code": 1
}, - "business_activity": {
- "id": 1,
- "name": "BA1"
}, - "resource": {
- "id": 1,
- "name": "Ping",
- "parent_id": 10,
- "parent_name": "Central-Server"
}
}
], - "meta": {
- "page": 1,
- "limit": 10,
- "search": { },
- "sort_by": { },
- "total": 1
}
}Available since : 24.10.0
Returns the list of indicator statuses linked to Business Activities from the real time context
The available parameters to search / sort_by are:
{- "ok": {
- "total": 0
}, - "warning": {
- "total": 0
}, - "critical": {
- "total": 0
}, - "unknown": {
- "total": 0
}, - "pending": {
- "total": 0
}, - "total": 0
}Available since : 24.10.0
Returns the detailed information of boolean rule from the real time context
{- "id": 1,
- "name": "boolean-rule-1",
- "status": {
- "code": 0,
- "name": "OK",
- "severity_code": 1
}, - "is_impacting_when_expression_true": true,
- "expression_status": true
}Returns all impacts configurations.
| page | integer >= 1 Default: 1 Example: page=4 Number of the requested page |
| limit | integer >= 1 Default: 10 Example: limit=20 Number of items per page |
{- "status": true,
- "result": {
- "entitities": [
- {
- "id": 1,
- "impact": 75,
- "color": "#ff0000",
- "name": "Blocking"
}
]
}, - "pagination": {
- "total": 5,
- "offset": 0,
- "limit": 10
}
}