KMP PHP API Reference

PlatformDataConsoleService
in package

FinalYes

Executes the platform admin data console's allowlisted read-only queries.

Table of Contents

Constants

DEFAULT_LIMIT  : mixed = 25
MAX_LIMIT  : mixed = 100
QUERIES  : array<string, array{label: string, description: string, sql: string, columns: list}> = ['tenants' => ['label' => 'Tenants', 'descripti...

Properties

$connection  : Connection

Methods

__construct()  : mixed
Constructor.
queryList()  : array<string, array{label: string, description: string}>
Return query metadata for UI selection.
run()  : array{query: string, label: string, description: string, columns: list, rows: list>, page: int, limit: int, hasNext: bool}
isSensitiveKey()  : bool
Return whether a column or JSON field name should never be displayed.
scrubRows()  : array<int, array<string, mixed>>
scrubString()  : string
Redact scalar strings that look like they contain secrets.
scrubValue()  : mixed
Scrub one value by key name and secret-like scalar content.

Constants

QUERIES

private array<string, array{label: string, description: string, sql: string, columns: list}> QUERIES = ['tenants' => ['label' => 'Tenants', 'description' => 'Tenant registry metadata without database credentials or feature configuration.', 'columns' => ['id', 'slug', 'display_name', 'status', 'region', 'primary_host', 'schema_version', 'created_at', 'activated_at', 'suspended_at', 'archived_at'], 'sql' => 'SELECT id, slug, display_name, status, region, primary_host, schema_version, created_at, activated_at, suspended_at, archived_at FROM tenants ORDER BY display_name ASC, slug ASC'], 'jobs' => ['label' => 'Jobs', 'description' => 'Platform job status with sensitive parameters and error text reduced to indicators.', 'columns' => ['id', 'job_type', 'status', 'tenant_slug', 'created_at', 'started_at', 'finished_at', 'has_error'], 'sql' => 'SELECT j.id, j.job_type, j.status, t.slug AS tenant_slug, j.created_at, j.started_at, j.finished_at, CASE WHEN j.last_error IS NULL OR j.last_error = :empty THEN 0 ELSE 1 END AS has_error FROM platform_jobs j LEFT JOIN tenants t ON t.id = j.tenant_id ORDER BY j.created_at DESC, j.id ASC'], 'schedules' => ['label' => 'Schedules', 'description' => 'Schedule cadence and status without raw failure details.', 'columns' => ['name', 'cron_expression', 'command', 'enabled', 'tenant_scope', 'tenant_slug', 'status', 'last_run_at', 'next_run_at', 'last_success_at', 'last_failure_at', 'has_error'], 'sql' => 'SELECT s.name, s.cron_expression, s.command, s.enabled, s.tenant_scope, t.slug AS tenant_slug, s.status, s.last_run_at, s.next_run_at, s.last_success_at, s.last_failure_at, CASE WHEN s.last_error IS NULL OR s.last_error = :empty THEN 0 ELSE 1 END AS has_error FROM platform_schedules s LEFT JOIN tenants t ON t.id = s.tenant_id ORDER BY s.enabled DESC, s.next_run_at ASC, s.name ASC'], 'backups' => ['label' => 'Backups', 'description' => 'Tenant and platform backup status without object URIs or encryption material.', 'columns' => ['backup_scope', 'id', 'tenant_slug', 'resource_name', 'backup_type', 'status', 'object_size_bytes', 'created_at', 'completed_at', 'retention_until'], 'sql' => "SELECT 'tenant' AS backup_scope, b.id, t.slug AS tenant_slug, NULL AS resource_name, " . "b.backup_type, b.status, b.object_size_bytes, b.created_at, b.completed_at, b.retention_until\n FROM tenant_backups b\n JOIN tenants t ON t.id = b.tenant_id\n UNION ALL\n SELECT 'platform' AS backup_scope, id, NULL AS tenant_slug, database_name AS resource_name,\n backup_type, status, object_size_bytes, created_at, completed_at, retention_until\n FROM platform_database_backups\n ORDER BY created_at DESC, id ASC"], 'audit_summaries' => ['label' => 'Audit summaries', 'description' => 'Grouped platform audit activity for operations review.', 'columns' => ['action', 'subject_type', 'event_count', 'latest_at'], 'sql' => 'SELECT action, subject_type, COUNT(*) AS event_count, MAX(created_at) AS latest_at FROM audit_events GROUP BY action, subject_type ORDER BY latest_at DESC, action ASC']]

Properties

Methods

__construct()

Constructor.

public __construct(Connection $connection) : mixed
Parameters
$connection : Connection

Platform metadata connection

queryList()

Return query metadata for UI selection.

public queryList() : array<string, array{label: string, description: string}>
Return values
array<string, array{label: string, description: string}>

run()

public run(string $queryName[, int $page = 1 ][, int $limit = self::DEFAULT_LIMIT ]) : array{query: string, label: string, description: string, columns: list, rows: list>, page: int, limit: int, hasNext: bool}
Parameters
$queryName : string
$page : int = 1
$limit : int = self::DEFAULT_LIMIT
Return values
array{query: string, label: string, description: string, columns: list, rows: list>, page: int, limit: int, hasNext: bool}

isSensitiveKey()

Return whether a column or JSON field name should never be displayed.

private isSensitiveKey(string $key) : bool
Parameters
$key : string
Return values
bool

scrubRows()

private scrubRows(array<int, array<string, mixed>> $rows) : array<int, array<string, mixed>>
Parameters
$rows : array<int, array<string, mixed>>
Return values
array<int, array<string, mixed>>

scrubString()

Redact scalar strings that look like they contain secrets.

private scrubString(string $value) : string
Parameters
$value : string
Return values
string

scrubValue()

Scrub one value by key name and secret-like scalar content.

private scrubValue(string $key, mixed $value) : mixed
Parameters
$key : string
$value : mixed
On this page

Search results