Skip to main content

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

ParameterType
optsDashboardClientOptions

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

ParameterTypeDescription
queryDashboardAppQueryApp 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

ParameterTypeDescription
queryDashboardAppQueryApp 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

ParameterTypeDescription
query?DashboardApplicationsOverviewQueryTime 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);
}