Class: DashboardClient
Defined in: src/management/dashboard.ts:122
Client for AIRS SCM dashboard endpoints that power the "AI Security > Runtime > API Applications" panel.
The dashboard buckets traffic by the literal metadata.app_name value scan payloads
actually sent. A single registered customer-app (customer_apps.customer_appId) can therefore
map to multiple dashboard buckets, one per distinct scan-payload name. Use
applicationsOverview to enumerate all dashboard buckets, then application and
applicationViolationBreakdown to drill into any specific (id, name) pair.
Example
import { ManagementClient } from '@cdot65/prisma-airs-sdk';
const mgmt = new ManagementClient();
const apps = await mgmt.customerApps.list();
const first = apps.customer_apps?.[0];
if (!first?.customer_appId) return;
const overview = await mgmt.dashboard.application({
appId: first.customer_appId,
appName: first.app_name,
});
// overview.token_stats?.monthly_total_tokens + scale ("K" | "M") = current month consumption
const violations = await mgmt.dashboard.applicationViolationBreakdown({
appId: first.customer_appId,
appName: first.app_name,
});
// violations.detection_type_violation_breakdown -> per-detector severity counts
Constructors
Constructor
new DashboardClient(opts): DashboardClient;
Defined in: src/management/dashboard.ts:127
Parameters
| Parameter | Type |
|---|---|
opts | DashboardClientOptions |
Returns
DashboardClient
Methods
application()
application(query): Promise<objectOutputType<{
id: ZodOptional<ZodNullable<ZodString>>;
name: ZodOptional<ZodNullable<ZodString>>;
cloud: ZodOptional<ZodNullable<ZodString>>;
source: ZodOptional<ZodNullable<ZodString>>;
created_at: ZodOptional<ZodNullable<ZodString>>;
updated_at: ZodOptional<ZodNullable<ZodString>>;
profiles: ZodOptional<ZodNullable<ZodArray<ZodString, "many">>>;
token_stats: ZodOptional<ZodNullable<ZodObject<{
average_daily_tokens: ZodOptional<ZodNullable<ZodNumber>>;
average_daily_tokens_scale: ZodOptional<ZodNullable<ZodString>>;
monthly_total_tokens: ZodOptional<ZodNullable<ZodNumber>>;
monthly_total_tokens_scale: ZodOptional<ZodNullable<ZodString>>;
}, "passthrough", ZodTypeAny, objectOutputType<{
average_daily_tokens: ZodOptional<ZodNullable<ZodNumber>>;
average_daily_tokens_scale: ZodOptional<ZodNullable<ZodString>>;
monthly_total_tokens: ZodOptional<ZodNullable<ZodNumber>>;
monthly_total_tokens_scale: ZodOptional<ZodNullable<ZodString>>;
}, ZodTypeAny, "passthrough">, objectInputType<{
average_daily_tokens: ZodOptional<ZodNullable<ZodNumber>>;
average_daily_tokens_scale: ZodOptional<ZodNullable<ZodString>>;
monthly_total_tokens: ZodOptional<ZodNullable<ZodNumber>>;
monthly_total_tokens_scale: ZodOptional<ZodNullable<ZodString>>;
}, ZodTypeAny, "passthrough">>>>;
session_stats: ZodOptional<ZodNullable<ZodObject<{
total: ZodOptional<ZodNumber>;
violating: ZodOptional<ZodNumber>;
violation_breakdown: ZodOptional<ZodObject<{
critical: ZodOptional<...>;
high: ZodOptional<...>;
medium: ZodOptional<...>;
low: ZodOptional<...>;
total: ZodOptional<...>;
}, "passthrough", ZodTypeAny, objectOutputType<{
critical: ...;
high: ...;
medium: ...;
low: ...;
total: ...;
}, ZodTypeAny, "passthrough">, objectInputType<{
critical: ...;
high: ...;
medium: ...;
low: ...;
total: ...;
}, ZodTypeAny, "passthrough">>>;
last_session_id: ZodOptional<ZodNullable<ZodString>>;
most_recent_session_time: ZodOptional<ZodNullable<ZodString>>;
}, "passthrough", ZodTypeAny, objectOutputType<{
total: ZodOptional<ZodNumber>;
violating: ZodOptional<ZodNumber>;
violation_breakdown: ZodOptional<ZodObject<{
critical: ...;
high: ...;
medium: ...;
low: ...;
total: ...;
}, "passthrough", ZodTypeAny, objectOutputType<..., ..., ...>, objectInputType<..., ..., ...>>>;
last_session_id: ZodOptional<ZodNullable<ZodString>>;
most_recent_session_time: ZodOptional<ZodNullable<ZodString>>;
}, ZodTypeAny, "passthrough">, objectInputType<{
total: ZodOptional<ZodNumber>;
violating: ZodOptional<ZodNumber>;
violation_breakdown: ZodOptional<ZodObject<{
critical: ...;
high: ...;
medium: ...;
low: ...;
total: ...;
}, "passthrough", ZodTypeAny, objectOutputType<..., ..., ...>, objectInputType<..., ..., ...>>>;
last_session_id: ZodOptional<ZodNullable<ZodString>>;
most_recent_session_time: ZodOptional<ZodNullable<ZodString>>;
}, ZodTypeAny, "passthrough">>>>;
}, ZodTypeAny, "passthrough">>;
Defined in: src/management/dashboard.ts:156
Get per-application token consumption and session activity over the requested window.
Parameters
| Parameter | Type | Description |
|---|---|---|
query | DashboardAppQuery | App identity and time window. appId and appName are both required. |
Returns
Promise<objectOutputType<{
id: ZodOptional<ZodNullable<ZodString>>;
name: ZodOptional<ZodNullable<ZodString>>;
cloud: ZodOptional<ZodNullable<ZodString>>;
source: ZodOptional<ZodNullable<ZodString>>;
created_at: ZodOptional<ZodNullable<ZodString>>;
updated_at: ZodOptional<ZodNullable<ZodString>>;
profiles: ZodOptional<ZodNullable<ZodArray<ZodString, "many">>>;
token_stats: ZodOptional<ZodNullable<ZodObject<{
average_daily_tokens: ZodOptional<ZodNullable<ZodNumber>>;
average_daily_tokens_scale: ZodOptional<ZodNullable<ZodString>>;
monthly_total_tokens: ZodOptional<ZodNullable<ZodNumber>>;
monthly_total_tokens_scale: ZodOptional<ZodNullable<ZodString>>;
}, "passthrough", ZodTypeAny, objectOutputType<{
average_daily_tokens: ZodOptional<ZodNullable<ZodNumber>>;
average_daily_tokens_scale: ZodOptional<ZodNullable<ZodString>>;
monthly_total_tokens: ZodOptional<ZodNullable<ZodNumber>>;
monthly_total_tokens_scale: ZodOptional<ZodNullable<ZodString>>;
}, ZodTypeAny, "passthrough">, objectInputType<{
average_daily_tokens: ZodOptional<ZodNullable<ZodNumber>>;
average_daily_tokens_scale: ZodOptional<ZodNullable<ZodString>>;
monthly_total_tokens: ZodOptional<ZodNullable<ZodNumber>>;
monthly_total_tokens_scale: ZodOptional<ZodNullable<ZodString>>;
}, ZodTypeAny, "passthrough">>>>;
session_stats: ZodOptional<ZodNullable<ZodObject<{
total: ZodOptional<ZodNumber>;
violating: ZodOptional<ZodNumber>;
violation_breakdown: ZodOptional<ZodObject<{
critical: ZodOptional<...>;
high: ZodOptional<...>;
medium: ZodOptional<...>;
low: ZodOptional<...>;
total: ZodOptional<...>;
}, "passthrough", ZodTypeAny, objectOutputType<{
critical: ...;
high: ...;
medium: ...;
low: ...;
total: ...;
}, ZodTypeAny, "passthrough">, objectInputType<{
critical: ...;
high: ...;
medium: ...;
low: ...;
total: ...;
}, ZodTypeAny, "passthrough">>>;
last_session_id: ZodOptional<ZodNullable<ZodString>>;
most_recent_session_time: ZodOptional<ZodNullable<ZodString>>;
}, "passthrough", ZodTypeAny, objectOutputType<{
total: ZodOptional<ZodNumber>;
violating: ZodOptional<ZodNumber>;
violation_breakdown: ZodOptional<ZodObject<{
critical: ...;
high: ...;
medium: ...;
low: ...;
total: ...;
}, "passthrough", ZodTypeAny, objectOutputType<..., ..., ...>, objectInputType<..., ..., ...>>>;
last_session_id: ZodOptional<ZodNullable<ZodString>>;
most_recent_session_time: ZodOptional<ZodNullable<ZodString>>;
}, ZodTypeAny, "passthrough">, objectInputType<{
total: ZodOptional<ZodNumber>;
violating: ZodOptional<ZodNumber>;
violation_breakdown: ZodOptional<ZodObject<{
critical: ...;
high: ...;
medium: ...;
low: ...;
total: ...;
}, "passthrough", ZodTypeAny, objectOutputType<..., ..., ...>, objectInputType<..., ..., ...>>>;
last_session_id: ZodOptional<ZodNullable<ZodString>>;
most_recent_session_time: ZodOptional<ZodNullable<ZodString>>;
}, ZodTypeAny, "passthrough">>>>;
}, ZodTypeAny, "passthrough">>
The application overview with token_stats, session_stats, attached profiles,
and monitoring metadata.
Example
import { ManagementClient } from '@cdot65/prisma-airs-sdk';
const mgmt = new ManagementClient(); // reads PANW_MGMT_* env vars
const overview = await mgmt.dashboard.application({
appId: 'd8dc4033-593b-45e7-9633-e0dfc130cc82',
appName: 'chatbot',
});
// overview =>
// { name: 'chatbot', cloud: 'other', source: 'api',
// token_stats: { average_daily_tokens: 744.233, average_daily_tokens_scale: 'K',
// monthly_total_tokens: 17.71, monthly_total_tokens_scale: 'M' },
// session_stats: { total: 56935, violating: 31136, ... },
// profiles: ['ms-tuned', 'golden-v2'] }
applicationViolationBreakdown()
applicationViolationBreakdown(query): Promise<objectOutputType<{
detection_type_violation_breakdown: ZodOptional<ZodArray<ZodObject<{
detection_type: ZodOptional<ZodString>;
violation_breakdown: ZodOptional<ZodObject<{
critical: ZodOptional<...>;
high: ZodOptional<...>;
medium: ZodOptional<...>;
low: ZodOptional<...>;
total: ZodOptional<...>;
}, "passthrough", ZodTypeAny, objectOutputType<{
critical: ...;
high: ...;
medium: ...;
low: ...;
total: ...;
}, ZodTypeAny, "passthrough">, objectInputType<{
critical: ...;
high: ...;
medium: ...;
low: ...;
total: ...;
}, ZodTypeAny, "passthrough">>>;
}, "passthrough", ZodTypeAny, objectOutputType<{
detection_type: ZodOptional<ZodString>;
violation_breakdown: ZodOptional<ZodObject<{
critical: ...;
high: ...;
medium: ...;
low: ...;
total: ...;
}, "passthrough", ZodTypeAny, objectOutputType<..., ..., ...>, objectInputType<..., ..., ...>>>;
}, ZodTypeAny, "passthrough">, objectInputType<{
detection_type: ZodOptional<ZodString>;
violation_breakdown: ZodOptional<ZodObject<{
critical: ...;
high: ...;
medium: ...;
low: ...;
total: ...;
}, "passthrough", ZodTypeAny, objectOutputType<..., ..., ...>, objectInputType<..., ..., ...>>>;
}, ZodTypeAny, "passthrough">>, "many">>;
total_violating: ZodOptional<ZodNumber>;
}, ZodTypeAny, "passthrough">>;
Defined in: src/management/dashboard.ts:201
Get per-detector violation severity counts for the application over the requested window.
Parameters
| Parameter | Type | Description |
|---|---|---|
query | DashboardAppQuery | App identity and time window. appId and appName are both required. |
Returns
Promise<objectOutputType<{
detection_type_violation_breakdown: ZodOptional<ZodArray<ZodObject<{
detection_type: ZodOptional<ZodString>;
violation_breakdown: ZodOptional<ZodObject<{
critical: ZodOptional<...>;
high: ZodOptional<...>;
medium: ZodOptional<...>;
low: ZodOptional<...>;
total: ZodOptional<...>;
}, "passthrough", ZodTypeAny, objectOutputType<{
critical: ...;
high: ...;
medium: ...;
low: ...;
total: ...;
}, ZodTypeAny, "passthrough">, objectInputType<{
critical: ...;
high: ...;
medium: ...;
low: ...;
total: ...;
}, ZodTypeAny, "passthrough">>>;
}, "passthrough", ZodTypeAny, objectOutputType<{
detection_type: ZodOptional<ZodString>;
violation_breakdown: ZodOptional<ZodObject<{
critical: ...;
high: ...;
medium: ...;
low: ...;
total: ...;
}, "passthrough", ZodTypeAny, objectOutputType<..., ..., ...>, objectInputType<..., ..., ...>>>;
}, ZodTypeAny, "passthrough">, objectInputType<{
detection_type: ZodOptional<ZodString>;
violation_breakdown: ZodOptional<ZodObject<{
critical: ...;
high: ...;
medium: ...;
low: ...;
total: ...;
}, "passthrough", ZodTypeAny, objectOutputType<..., ..., ...>, objectInputType<..., ..., ...>>>;
}, ZodTypeAny, "passthrough">>, "many">>;
total_violating: ZodOptional<ZodNumber>;
}, ZodTypeAny, "passthrough">>
The detection-type breakdown (one entry per detector observed live:
agent_security, contextual_grounding, dbs (database security), dlp,
malicious_code, pi (prompt injection), source_code, tc (toxic content),
topic_guardrails, uf (URL filtering)) plus total_violating. Detector set may
evolve; .passthrough() schemas accept additions.
Example
import { ManagementClient } from '@cdot65/prisma-airs-sdk';
const mgmt = new ManagementClient(); // reads PANW_MGMT_* env vars
const breakdown = await mgmt.dashboard.applicationViolationBreakdown({
appId: 'd8dc4033-593b-45e7-9633-e0dfc130cc82',
appName: 'chatbot',
});
// breakdown =>
// { detection_type_violation_breakdown: [
// { detection_type: 'topic_guardrails',
// violation_breakdown: { critical: 0, high: 0, medium: 3, low: 0, total: 3 } },
// { detection_type: 'dlp',
// violation_breakdown: { critical: 0, high: 0, medium: 0, low: 0, total: 0 } },
// ... ],
// total_violating: 3 }
applicationsOverview()
applicationsOverview(query?): Promise<objectOutputType<{
items: ZodOptional<ZodArray<ZodObject<{
id: ZodOptional<ZodNullable<ZodString>>;
name: ZodOptional<ZodNullable<ZodString>>;
cloud: ZodOptional<ZodNullable<ZodString>>;
source: ZodOptional<ZodNullable<ZodString>>;
created_at: ZodOptional<ZodNullable<ZodString>>;
sessions: ZodOptional<ZodNullable<ZodArray<ZodObject<..., ..., ..., ..., ...>, "many">>>;
sessions_total: ZodOptional<ZodNullable<ZodNumber>>;
sessions_violated: ZodOptional<ZodNullable<ZodNumber>>;
}, "passthrough", ZodTypeAny, objectOutputType<{
id: ZodOptional<ZodNullable<ZodString>>;
name: ZodOptional<ZodNullable<ZodString>>;
cloud: ZodOptional<ZodNullable<ZodString>>;
source: ZodOptional<ZodNullable<ZodString>>;
created_at: ZodOptional<ZodNullable<ZodString>>;
sessions: ZodOptional<ZodNullable<ZodArray<..., ...>>>;
sessions_total: ZodOptional<ZodNullable<ZodNumber>>;
sessions_violated: ZodOptional<ZodNullable<ZodNumber>>;
}, ZodTypeAny, "passthrough">, objectInputType<{
id: ZodOptional<ZodNullable<ZodString>>;
name: ZodOptional<ZodNullable<ZodString>>;
cloud: ZodOptional<ZodNullable<ZodString>>;
source: ZodOptional<ZodNullable<ZodString>>;
created_at: ZodOptional<ZodNullable<ZodString>>;
sessions: ZodOptional<ZodNullable<ZodArray<..., ...>>>;
sessions_total: ZodOptional<ZodNullable<ZodNumber>>;
sessions_violated: ZodOptional<ZodNullable<ZodNumber>>;
}, ZodTypeAny, "passthrough">>, "many">>;
pagination: ZodOptional<ZodObject<{
limit: ZodOptional<ZodNumber>;
skip: ZodOptional<ZodNumber>;
total_items: ZodOptional<ZodNumber>;
}, "passthrough", ZodTypeAny, objectOutputType<{
limit: ZodOptional<ZodNumber>;
skip: ZodOptional<ZodNumber>;
total_items: ZodOptional<ZodNumber>;
}, ZodTypeAny, "passthrough">, objectInputType<{
limit: ZodOptional<ZodNumber>;
skip: ZodOptional<ZodNumber>;
total_items: ZodOptional<ZodNumber>;
}, ZodTypeAny, "passthrough">>>;
}, ZodTypeAny, "passthrough">>;
Defined in: src/management/dashboard.ts:251
Enumerate all dashboard application buckets the tenant has data for.
This is the canonical apps-list source for the dashboard. The customer-apps endpoint
(mgmt.customerApps.list) lists registered customer applications, but each registered
customer-app can have multiple dashboard buckets when its API key is used to send scan
requests carrying different metadata.app_name values - one bucket per distinct
scan-payload name. This endpoint returns every bucket, so it is what you want for
per-app token-consumption reporting and dashboard inventory.
The id field on each item is the registered customer_appId UUID; the name field is
the scan-payload value. Pass that (id, name) pair to application or
applicationViolationBreakdown to retrieve drill-down data for a specific bucket.
Parameters
| Parameter | Type | Description |
|---|---|---|
query? | DashboardApplicationsOverviewQuery | Time window and pagination. |
Returns
Promise<objectOutputType<{
items: ZodOptional<ZodArray<ZodObject<{
id: ZodOptional<ZodNullable<ZodString>>;
name: ZodOptional<ZodNullable<ZodString>>;
cloud: ZodOptional<ZodNullable<ZodString>>;
source: ZodOptional<ZodNullable<ZodString>>;
created_at: ZodOptional<ZodNullable<ZodString>>;
sessions: ZodOptional<ZodNullable<ZodArray<ZodObject<..., ..., ..., ..., ...>, "many">>>;
sessions_total: ZodOptional<ZodNullable<ZodNumber>>;
sessions_violated: ZodOptional<ZodNullable<ZodNumber>>;
}, "passthrough", ZodTypeAny, objectOutputType<{
id: ZodOptional<ZodNullable<ZodString>>;
name: ZodOptional<ZodNullable<ZodString>>;
cloud: ZodOptional<ZodNullable<ZodString>>;
source: ZodOptional<ZodNullable<ZodString>>;
created_at: ZodOptional<ZodNullable<ZodString>>;
sessions: ZodOptional<ZodNullable<ZodArray<..., ...>>>;
sessions_total: ZodOptional<ZodNullable<ZodNumber>>;
sessions_violated: ZodOptional<ZodNullable<ZodNumber>>;
}, ZodTypeAny, "passthrough">, objectInputType<{
id: ZodOptional<ZodNullable<ZodString>>;
name: ZodOptional<ZodNullable<ZodString>>;
cloud: ZodOptional<ZodNullable<ZodString>>;
source: ZodOptional<ZodNullable<ZodString>>;
created_at: ZodOptional<ZodNullable<ZodString>>;
sessions: ZodOptional<ZodNullable<ZodArray<..., ...>>>;
sessions_total: ZodOptional<ZodNullable<ZodNumber>>;
sessions_violated: ZodOptional<ZodNullable<ZodNumber>>;
}, ZodTypeAny, "passthrough">>, "many">>;
pagination: ZodOptional<ZodObject<{
limit: ZodOptional<ZodNumber>;
skip: ZodOptional<ZodNumber>;
total_items: ZodOptional<ZodNumber>;
}, "passthrough", ZodTypeAny, objectOutputType<{
limit: ZodOptional<ZodNumber>;
skip: ZodOptional<ZodNumber>;
total_items: ZodOptional<ZodNumber>;
}, ZodTypeAny, "passthrough">, objectInputType<{
limit: ZodOptional<ZodNumber>;
skip: ZodOptional<ZodNumber>;
total_items: ZodOptional<ZodNumber>;
}, ZodTypeAny, "passthrough">>>;
}, ZodTypeAny, "passthrough">>
Paginated bucket list plus pagination metadata.
Example
import { ManagementClient } from '@cdot65/prisma-airs-sdk';
const mgmt = new ManagementClient();
const { items } = await mgmt.dashboard.applicationsOverview();
for (const item of items ?? []) {
const overview = await mgmt.dashboard.application({
appId: item.id ?? '',
appName: item.name ?? '',
});
console.log(item.name, overview.token_stats?.monthly_total_tokens);
}