@parall/sdk 1.55.4 → 1.55.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/types.ts CHANGED
@@ -4,6 +4,13 @@ import type {
4
4
  LabelDeletedData,
5
5
  LabelUpdatedData,
6
6
  } from './task-label-types.js';
7
+ export type {
8
+ CompletedUploadPart,
9
+ FileUrlResponse,
10
+ PresignedUploadPart,
11
+ PresignResponse,
12
+ PresignUploadRequest,
13
+ } from './attachment-types.js';
7
14
 
8
15
  // ============================================================
9
16
  // Entity Types — mirror server data model
@@ -60,12 +67,31 @@ export interface Chat {
60
67
  pinned: boolean;
61
68
  hidden: boolean;
62
69
  my_notification_level?: NotificationLevel;
70
+ /**
71
+ * Resolved per-(agent, chat) reply policy for an AGENT caller: override →
72
+ * room default → mentions_only floor, gated on the runtime capability.
73
+ * Absent for human callers, DMs, and smart chats — a runtime reading
74
+ * nothing here falls back to its legacy agent_routing_mode check.
75
+ */
76
+ my_agent_reply_policy?: AgentReplyPolicy;
63
77
  }
64
78
 
65
79
  export type ChatMemberRole = 'owner' | 'admin' | 'member';
66
80
 
67
81
  export type NotificationLevel = 'all' | 'mentions_only' | 'none';
68
82
 
83
+ /** Trigger axis of the per-(agent, chat) reply policy. No 'none': @mentions
84
+ * are an unsuppressible floor, so it would equal 'mentions_only'. */
85
+ export type AgentReplyTrigger = 'all' | 'mentions_only';
86
+
87
+ /** Reply-form axis; V1 defines only 'full'. */
88
+ export type AgentReplyForm = 'full';
89
+
90
+ export interface AgentReplyPolicy {
91
+ trigger: AgentReplyTrigger;
92
+ form: AgentReplyForm;
93
+ }
94
+
69
95
  // Push notification subscription
70
96
  export interface PushSubscribeRequest {
71
97
  platform: 'web' | 'ios' | 'android';
@@ -101,6 +127,14 @@ export interface ChatMember {
101
127
  pinned: boolean;
102
128
  hidden: boolean;
103
129
  joined_at: string;
130
+ /**
131
+ * Per-(agent, chat) trigger override on an AGENT member row; absent/null =
132
+ * follow the room default. Writable by chat owners/admins and org admins
133
+ * only — never by the agent itself.
134
+ */
135
+ agent_reply_trigger?: AgentReplyTrigger | null;
136
+ /** Reply-form axis; always 'full' in V1. Absent on older servers. */
137
+ agent_reply_form?: AgentReplyForm;
104
138
  /** Org-scoped public title. Omitted by older servers and for former DM peers. */
105
139
  title?: string;
106
140
  user?: User;
@@ -111,6 +145,11 @@ export interface UpdateChatMemberRequest {
111
145
  pinned?: boolean;
112
146
  hidden?: boolean;
113
147
  notification_level?: NotificationLevel;
148
+ /** 'all' | 'mentions_only' sets the override; '' clears it (follow the
149
+ * room default). Chat-governance authz — agents can never write it. */
150
+ agent_reply_trigger?: AgentReplyTrigger | '';
151
+ /** V1 accepts only 'full'. */
152
+ agent_reply_form?: AgentReplyForm;
114
153
  }
115
154
 
116
155
  export interface TransferChatOwnershipRequest {
@@ -237,6 +276,8 @@ export interface ApprovalCardContent {
237
276
  display: {
238
277
  title: string;
239
278
  description?: string;
279
+ request_reason?: string;
280
+ resource_label?: string;
240
281
  requester?: { id: string; name: string };
241
282
  };
242
283
  interaction: {
@@ -248,6 +289,7 @@ export interface ApprovalCardContent {
248
289
  status: string;
249
290
  decided_by?: string;
250
291
  decided_at?: string;
292
+ decision_reason?: string | null;
251
293
  execution_status?: ExecutionStatus | null;
252
294
  execution_error?: string | null;
253
295
  executed_at?: string | null;
@@ -289,6 +331,7 @@ export interface SystemContent {
289
331
  actor_name: string;
290
332
  target_id?: string;
291
333
  target_name?: string;
334
+ decision_reason?: string;
292
335
  }
293
336
 
294
337
  export type MessageContent =
@@ -381,9 +424,12 @@ export interface Approval {
381
424
  resource_uri: string;
382
425
  action_payload: Record<string, unknown>;
383
426
  title: string;
427
+ request_reason?: string | null;
428
+ resource_label?: string | null;
384
429
  requester_id: string;
385
430
  decided_by: string | null;
386
431
  decided_at: string | null;
432
+ decision_reason?: string | null;
387
433
  status: ApprovalStatus;
388
434
  expires_at: string | null;
389
435
  execution_status?: ExecutionStatus | null;
@@ -412,6 +458,9 @@ export interface Organization {
412
458
  avatar_url: string | null;
413
459
  is_personal: boolean;
414
460
  member_limit: number | null;
461
+ attachment_max_file_size_bytes?: number | null;
462
+ attachment_storage_limit_bytes?: number | null;
463
+ attachment_storage_used_bytes?: number;
415
464
  /** Org-level default smart routing strategy: 'llm' | 'agent' | null. */
416
465
  smart_routing_strategy: string | null;
417
466
  /** Agent ID for strategy='agent'. NULL when strategy is 'llm' or unset. */
@@ -699,12 +748,6 @@ export interface CheckEmailResponse {
699
748
  pending_verification?: boolean;
700
749
  }
701
750
 
702
- export interface PresignResponse {
703
- upload_url: string;
704
- attachment_id: string;
705
- expires_in: number;
706
- }
707
-
708
751
  export interface WsTicketResponse {
709
752
  ticket: string;
710
753
  expires_at: string;
@@ -1536,23 +1579,6 @@ export interface LaunchCredentialResponse {
1536
1579
  agent_id: string;
1537
1580
  }
1538
1581
 
1539
- export interface PresignUploadRequest {
1540
- file_name: string;
1541
- file_size: number;
1542
- mime_type?: string;
1543
- }
1544
-
1545
- export interface FileUrlResponse {
1546
- url: string;
1547
- is_proxy_url?: boolean;
1548
- expires_in: number;
1549
- width?: number;
1550
- height?: number;
1551
- file_name: string;
1552
- file_size: number;
1553
- mime_type: string;
1554
- }
1555
-
1556
1582
  export interface AvatarUploadResponse {
1557
1583
  avatar_url: string;
1558
1584
  }
@@ -2255,10 +2281,35 @@ export type WikiChangesetStatus =
2255
2281
  | 'superseded'
2256
2282
  | 'conflict';
2257
2283
 
2284
+ export type WikiAccessTier = 'public' | 'restricted' | 'private';
2285
+ export type WikiMemberRole = 'viewer' | 'editor' | 'manager';
2286
+
2287
+ export interface WikiAccessPolicyMember {
2288
+ subject: string; // usr_* or team ID
2289
+ role: WikiMemberRole;
2290
+ }
2291
+
2292
+ /** GET/PUT shape of the who-can-access projection (membership design §4).
2293
+ * PUT must echo the revision from the latest GET (409 POLICY_REVISION_STALE
2294
+ * on mismatch). Container policy bits ride the root ('' path) PUT only. */
2295
+ export interface WikiAccessPolicy {
2296
+ path: string;
2297
+ general_access: WikiAccessTier | 'inherit';
2298
+ default_role?: 'editor' | 'viewer';
2299
+ discoverable: boolean;
2300
+ members: WikiAccessPolicyMember[];
2301
+ revision: string;
2302
+ /** Stored rows the projection cannot express — route to the advanced rules surface. */
2303
+ advanced?: boolean;
2304
+ editors_can_invite?: boolean;
2305
+ viewers_can_download?: boolean;
2306
+ }
2307
+
2258
2308
  export interface Wiki {
2259
2309
  id: string;
2260
2310
  org_id: string;
2261
- slug: string;
2311
+ /** Absent on degraded listing entries (discoverable-but-unreadable). */
2312
+ slug?: string;
2262
2313
  name: string;
2263
2314
  repo_owner: string;
2264
2315
  repo_name: string;
@@ -2279,6 +2330,14 @@ export interface Wiki {
2279
2330
  purge_eligible_at?: string | null;
2280
2331
  /** Server-computed restore availability for recycle-bin rows. */
2281
2332
  restorable?: boolean | null;
2333
+ /** Derived from the root path rules (never stored): public | restricted | private. */
2334
+ access_tier?: 'public' | 'restricted' | 'private';
2335
+ /** Caller's explicit membership at the library root: none | viewer | editor | manager. */
2336
+ my_membership?: 'none' | 'viewer' | 'editor' | 'manager';
2337
+ /** True for discoverable-but-unreadable listing entries: only id, name and
2338
+ * access_tier are populated — enough to request to join, nothing else.
2339
+ * Degraded entries must not be mounted, synced or treated as content. */
2340
+ degraded?: boolean;
2282
2341
  }
2283
2342
 
2284
2343
  export interface WikiFileChange {
@@ -2316,6 +2375,12 @@ export interface WikiTreeEntry {
2316
2375
  * entry; use it to badge private folders, never for access decisions.
2317
2376
  */
2318
2377
  restricted?: boolean;
2378
+ /**
2379
+ * Committer date (RFC3339) of the newest default-branch commit touching this
2380
+ * entry — the listing's "Last published" value. Present only when the tree
2381
+ * was requested with `last_commit: true` and the lookup succeeded.
2382
+ */
2383
+ last_commit_at?: string;
2319
2384
  }
2320
2385
 
2321
2386
  export interface WikiTreeResponse {
@@ -2858,6 +2923,7 @@ export interface CardUpdateData {
2858
2923
  execution_status?: ExecutionStatus | null;
2859
2924
  decided_by?: string;
2860
2925
  decided_at?: string;
2926
+ decision_reason?: string | null;
2861
2927
  executed_at?: string | null;
2862
2928
  execution_error?: string | null;
2863
2929
  }
@@ -2873,7 +2939,7 @@ export interface WatchingData {
2873
2939
  export interface MembershipChangedData {
2874
2940
  chat_id: string;
2875
2941
  user_id: string;
2876
- action: 'added' | 'removed' | 'role_changed';
2942
+ action: 'added' | 'removed' | 'role_changed' | 'policy_changed';
2877
2943
  }
2878
2944
 
2879
2945
  /**
@@ -5015,6 +5081,12 @@ export interface EdgeBrowserProfile {
5015
5081
  edge_id: string;
5016
5082
  name: string;
5017
5083
  is_default: boolean;
5084
+ /** Stable compare-and-swap revision for Local BYOC Profile operations. */
5085
+ version: number;
5086
+ /** Stable configuration binding used by Alias readiness and execution. */
5087
+ config_revision: number;
5088
+ /** Authoritative persisted Profile operation lifecycle. */
5089
+ lifecycle_state: 'active' | 'pending_create' | 'pending_rename' | 'pending_delete';
5018
5090
  created_at: string;
5019
5091
  updated_at: string;
5020
5092
  /**
@@ -5026,6 +5098,338 @@ export interface EdgeBrowserProfile {
5026
5098
  proxy_configured?: boolean;
5027
5099
  }
5028
5100
 
5101
+ export type EdgeProfileOperationAction = 'create' | 'rename' | 'delete';
5102
+ export type EdgeProfileOperationStatus =
5103
+ | 'confirmation_required'
5104
+ | 'pending'
5105
+ | 'retryable'
5106
+ | 'rejected'
5107
+ | 'outcome_unknown'
5108
+ | 'succeeded';
5109
+ export type EdgeProfileOperationOutcome = 'applied' | 'retryable' | 'rejected';
5110
+
5111
+ export type EdgeProfileOperationErrorCode =
5112
+ | 'JWT_REQUIRED'
5113
+ | 'HUMAN_REQUIRED'
5114
+ | 'EDGE_NOT_FOUND'
5115
+ | 'EDGE_OFFLINE'
5116
+ | 'EDGE_STATUS_UNAVAILABLE'
5117
+ | 'PROFILE_NOT_FOUND'
5118
+ | 'PROFILE_VERSION_CONFLICT'
5119
+ | 'PROFILE_OPERATION_IN_PROGRESS'
5120
+ | 'PROFILE_OPERATION_NOT_FOUND'
5121
+ | 'PROFILE_OPERATION_CONFLICT'
5122
+ | 'PROFILE_DELETE_IMPACT_CHANGED'
5123
+ | 'IDEMPOTENCY_CONFLICT'
5124
+ | 'INVALID_IDEMPOTENCY_KEY'
5125
+ | 'INVALID_INPUT';
5126
+
5127
+ export type EdgeProfileOperationRequest =
5128
+ | { action: 'create'; name: string }
5129
+ | { action: 'rename'; profile_id: string; expected_version: number; name: string }
5130
+ | { action: 'delete'; profile_id: string; expected_version: number };
5131
+
5132
+ export interface EdgeProfileOperationConfirmRequest {
5133
+ impact_hash: string;
5134
+ confirmation_token: string;
5135
+ }
5136
+
5137
+ export interface EdgeProfileDeleteImpact {
5138
+ profile_id: string;
5139
+ profile_version: number;
5140
+ aliases: Array<{ alias_id: string; name: string }>;
5141
+ /** Classified legacy rows block confirmation; they are never silently deleted. */
5142
+ legacy_connections: Array<{ connection_id: string; classification: string }>;
5143
+ grants_count: number;
5144
+ accepted_or_running_executions: number;
5145
+ impact_hash: string;
5146
+ confirmation_token: string;
5147
+ }
5148
+
5149
+ export interface EdgeProfileOperationReceipt {
5150
+ operation_id: string;
5151
+ edge_id: string;
5152
+ profile_id: string;
5153
+ action: EdgeProfileOperationAction;
5154
+ status: EdgeProfileOperationStatus;
5155
+ expected_version?: number;
5156
+ target_version: number;
5157
+ attempt: number;
5158
+ name_before?: string;
5159
+ name_after?: string;
5160
+ impact?: EdgeProfileDeleteImpact;
5161
+ /** Present only while a Delete is awaiting the explicit strong confirmation. */
5162
+ confirmation_token?: string;
5163
+ /** Exact Edge outcome only; Server-private lifecycle evidence is never exposed here. */
5164
+ edge_outcome?: EdgeProfileOperationOutcome;
5165
+ error?: { code: string; message?: string };
5166
+ created_at: string;
5167
+ updated_at: string;
5168
+ completed_at?: string;
5169
+ }
5170
+
5171
+ export interface BrowserAliasCreateRequest {
5172
+ name: string;
5173
+ clip_id: string;
5174
+ edge_id: string;
5175
+ profile_id: string;
5176
+ idempotency_key: string;
5177
+ }
5178
+
5179
+ export interface BrowserAliasRenameRequest {
5180
+ name: string;
5181
+ expected_version: number;
5182
+ idempotency_key: string;
5183
+ }
5184
+
5185
+ export interface BrowserAliasDeleteRequest {
5186
+ expected_version: number;
5187
+ idempotency_key: string;
5188
+ }
5189
+
5190
+ export type BrowserAliasErrorCode =
5191
+ | 'JWT_REQUIRED'
5192
+ | 'HUMAN_REQUIRED'
5193
+ | 'INVALID_REQUEST'
5194
+ | 'INVALID_ALIAS_NAME'
5195
+ | 'CLIP_NOT_AVAILABLE'
5196
+ | 'PROFILE_NOT_FOUND'
5197
+ | 'ALIAS_NOT_FOUND'
5198
+ | 'ALIAS_NOT_READY'
5199
+ | 'ALIAS_NAME_TAKEN'
5200
+ | 'ALIAS_STALE'
5201
+ | 'PROFILE_OPERATION_IN_PROGRESS'
5202
+ | 'IDEMPOTENCY_CONFLICT'
5203
+ | 'EDGE_OFFLINE'
5204
+ | 'EDGE_STATUS_UNAVAILABLE';
5205
+
5206
+ export interface BrowserAliasVersion {
5207
+ id: string;
5208
+ version_seq: number;
5209
+ source_kind: 'publisher_working_copy' | 'approved_public_snapshot';
5210
+ source_clip_version_id?: string;
5211
+ source_working_revision?: string;
5212
+ version_label?: string;
5213
+ artifact_digest?: string;
5214
+ preparation_status: 'pending' | 'preparing' | 'ready' | 'failed';
5215
+ preparation_result?: Record<string, unknown>;
5216
+ created_at: string;
5217
+ updated_at: string;
5218
+ }
5219
+
5220
+ export type BrowserAliasReadinessStatus =
5221
+ | 'checking'
5222
+ | 'ready'
5223
+ | 'needs_action'
5224
+ | 'unavailable'
5225
+ | 'error';
5226
+
5227
+ export const BROWSER_ALIAS_READINESS_REASON_CODES = [
5228
+ 'edge_offline',
5229
+ 'profile_not_found',
5230
+ 'profile_damaged',
5231
+ 'artifact_invalid',
5232
+ 'runtime_incompatible',
5233
+ 'needs_login',
5234
+ 'target_service_unavailable',
5235
+ 'readiness_check_running',
5236
+ 'readiness_check_timeout',
5237
+ 'readiness_contract_error',
5238
+ ] as const;
5239
+
5240
+ export type BrowserAliasReadinessReasonCode = (typeof BROWSER_ALIAS_READINESS_REASON_CODES)[number];
5241
+
5242
+ export interface BrowserAliasReadinessReason {
5243
+ code: BrowserAliasReadinessReasonCode;
5244
+ status: BrowserAliasReadinessStatus;
5245
+ hint: string;
5246
+ observed_at: string;
5247
+ retry_after_ms?: number;
5248
+ }
5249
+
5250
+ export interface BrowserAliasReadiness {
5251
+ alias_id: string;
5252
+ status: BrowserAliasReadinessStatus;
5253
+ blocking_reasons: BrowserAliasReadinessReason[];
5254
+ primary_reason?: BrowserAliasReadinessReasonCode;
5255
+ hint?: string;
5256
+ observed_at: string;
5257
+ source: 'server' | 'edge';
5258
+ retry_after_ms?: number;
5259
+ alias_revision: number;
5260
+ active_alias_version_id?: string;
5261
+ profile_revision: number;
5262
+ profile_config_revision: number;
5263
+ generation: number;
5264
+ updated_at: string;
5265
+ }
5266
+
5267
+ export interface BrowserAliasReadinessCheckRequest {
5268
+ idempotency_key: string;
5269
+ }
5270
+
5271
+ export type BrowserAliasReadinessCheckStatus = 'pending' | 'dispatched' | 'succeeded' | 'rejected';
5272
+
5273
+ export interface BrowserAliasReadinessCheckReceipt {
5274
+ check_id: string;
5275
+ alias_id: string;
5276
+ status: BrowserAliasReadinessCheckStatus;
5277
+ error_code?: 'REPORT_STALE';
5278
+ generation: number;
5279
+ attempt: number;
5280
+ readiness?: BrowserAliasReadiness;
5281
+ created_at: string;
5282
+ updated_at: string;
5283
+ dispatched_at?: string;
5284
+ completed_at?: string;
5285
+ }
5286
+
5287
+ export interface BrowserAlias {
5288
+ id: string;
5289
+ name: string;
5290
+ version: number;
5291
+ lifecycle: 'preparing' | 'active' | 'update_preparing' | 'update_failed' | 'deleting';
5292
+ edge: { id: string; name: string; status: 'online' | 'offline'; placement: 'byoc' | 'hosted' };
5293
+ profile: {
5294
+ id: string;
5295
+ name: string;
5296
+ version: number;
5297
+ config_revision: number;
5298
+ lifecycle_state: string;
5299
+ };
5300
+ clip: { id: string; name: string; version?: string };
5301
+ desired_version?: BrowserAliasVersion;
5302
+ active_version?: BrowserAliasVersion;
5303
+ active_artifact_digest?: string;
5304
+ preparation_result?: Record<string, unknown>;
5305
+ update_result?: Record<string, unknown>;
5306
+ readiness?: BrowserAliasReadiness;
5307
+ created_at: string;
5308
+ updated_at: string;
5309
+ }
5310
+
5311
+ export interface BrowserAliasDeleteProof {
5312
+ alias_deleted: true;
5313
+ grants_deleted: number;
5314
+ name_released: true;
5315
+ }
5316
+
5317
+ export interface BrowserAliasCommandContractSnapshot {
5318
+ command_name: string;
5319
+ input_schema: Record<string, unknown>;
5320
+ output_schema: Record<string, unknown> | null;
5321
+ side_effect_level: string;
5322
+ data_scopes: string[];
5323
+ allowed_domains: string[];
5324
+ required_capabilities: string[];
5325
+ }
5326
+
5327
+ export interface BrowserAliasGrantContractEvidence {
5328
+ contract_hash: string;
5329
+ contract_snapshot: BrowserAliasCommandContractSnapshot;
5330
+ }
5331
+
5332
+ export interface BrowserAliasGrantCommand {
5333
+ command_name: string;
5334
+ status: 'missing' | 'active' | 'review_required';
5335
+ authorized?: BrowserAliasGrantContractEvidence;
5336
+ current: BrowserAliasGrantContractEvidence;
5337
+ delta?: { changed_fields: string[] };
5338
+ }
5339
+
5340
+ export interface BrowserAliasGrantSet {
5341
+ key_id: string;
5342
+ alias: { id: string; name: string; clip: BrowserAlias['clip'] };
5343
+ /** Zero means this Key+Alias set has never been written. */
5344
+ version: number;
5345
+ commands: BrowserAliasGrantCommand[];
5346
+ updated_at?: string;
5347
+ }
5348
+
5349
+ export interface BrowserAliasGrantReplaceRequest {
5350
+ expected_version: number;
5351
+ idempotency_key: string;
5352
+ commands: Array<{
5353
+ command_name: string;
5354
+ authorized_contract_hash: string;
5355
+ authorized_contract_snapshot: BrowserAliasCommandContractSnapshot;
5356
+ }>;
5357
+ }
5358
+
5359
+ export interface ManagedBrowserAliasSummary {
5360
+ id: string;
5361
+ name: string;
5362
+ clip: BrowserAlias['clip'];
5363
+ readiness?: BrowserAliasReadiness;
5364
+ commands: string[];
5365
+ needs_owner_review: string[];
5366
+ }
5367
+
5368
+ export interface ManagedBrowserAliasCommand {
5369
+ name: string;
5370
+ status: 'active';
5371
+ description: string;
5372
+ input_schema: Record<string, unknown>;
5373
+ output_schema: Record<string, unknown> | null;
5374
+ side_effect_level: string;
5375
+ data_scopes: string[];
5376
+ allowed_domains: string[];
5377
+ required_capabilities: string[];
5378
+ }
5379
+
5380
+ export interface ManagedBrowserAliasReviewRequiredCommand {
5381
+ name: string;
5382
+ status: 'review_required';
5383
+ hint: string;
5384
+ }
5385
+
5386
+ export interface ManagedBrowserAliasInfo {
5387
+ id: string;
5388
+ name: string;
5389
+ clip: BrowserAlias['clip'];
5390
+ readiness?: BrowserAliasReadiness;
5391
+ commands: ManagedBrowserAliasCommand[];
5392
+ needs_owner_review: ManagedBrowserAliasReviewRequiredCommand[];
5393
+ }
5394
+
5395
+ export type BrowserAliasExecutionStatus =
5396
+ | 'accepted'
5397
+ | 'running'
5398
+ | 'succeeded'
5399
+ | 'failed'
5400
+ | 'outcome_unknown';
5401
+
5402
+ export interface BrowserAliasExecutionRequest {
5403
+ request_id: string;
5404
+ alias: string;
5405
+ command: string;
5406
+ args: Record<string, unknown>;
5407
+ }
5408
+
5409
+ export interface BrowserAliasExecutionError {
5410
+ code: string;
5411
+ message: string;
5412
+ hint?: string;
5413
+ }
5414
+
5415
+ /** Redacted managed-key/Owner recovery DTO. It never contains target IDs,
5416
+ * hashes, dispatch claims or Edge-ledger evidence. */
5417
+ export interface BrowserAliasExecutionReceipt {
5418
+ request_id: string;
5419
+ alias: string;
5420
+ command: string;
5421
+ status: BrowserAliasExecutionStatus;
5422
+ dispatched: true;
5423
+ command_timeout_ms: number;
5424
+ execution_deadline: string;
5425
+ result?: Record<string, unknown>;
5426
+ error?: BrowserAliasExecutionError;
5427
+ accepted_at: string;
5428
+ running_at?: string;
5429
+ terminal_at?: string;
5430
+ updated_at: string;
5431
+ }
5432
+
5029
5433
  /**
5030
5434
  * Sanitized per-profile egress proxy status (hosted Cloud Profiles) — the GET
5031
5435
  * response and the PUT/DELETE result. NEVER carries the password; `password_set`