@chainpatrol/sdk 1.10.0 → 1.12.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # @chainpatrol/sdk
2
2
 
3
+ ## 1.12.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 2552904: Add Time to Detection: `getMetricsTimeToDetection` in the SDK,
8
+ `chainpatrol metrics time-to-detection` in the CLI, and the
9
+ `metrics_time_to_detection` MCP tool, all backed by the new
10
+ `POST /metrics/time-to-detection` endpoint. It reports how long threats were
11
+ already live before the earliest automated detection of the asset, for any
12
+ organization, per asset type. The clock runs from when the asset was first
13
+ seen live to its earliest automated detection; a human report does not stop
14
+ it. Each number is a minimum, published with how many blocked assets are in
15
+ the sample. Server-side work lives in @chainpatrol/external-trpc,
16
+ @chainpatrol/validation and @chainpatrol/metrics; those are private packages
17
+ and need no version bump.
18
+
19
+ ## 1.11.0
20
+
21
+ ### Minor Changes
22
+
23
+ - 3895c2f: `/asset/list` no longer requires `type`. Omitting it returns assets of every
24
+ type on a single pagination cursor, so mirroring the whole blocklist no longer
25
+ means looping the `AssetType` enum. Supplying `type` behaves exactly as before.
26
+
27
+ - `@chainpatrol/sdk`: `listAssets` accepts an input without `type`.
28
+ - `@chainpatrol/mcp`: the generated `asset_list` tool drops `type` from its
29
+ required fields.
30
+
31
+ Server-side work lives in @chainpatrol/validation and @chainpatrol/external-trpc;
32
+ both are private packages and don't need version bumps.
33
+
34
+ - 7812a3b: Adds a `proofs` array to takedown list items, carrying provider confirmations that they removed the asset. Each entry has a `type` discriminator so further kinds of evidence can be added without a breaking change. Gated by a feature flag and empty until it is enabled.
35
+ - 8a78f60: Add `getMetricsFalsePositiveRate` for the false positive rate by asset type.
36
+
3
37
  ## 1.10.0
4
38
 
5
39
  ### Minor Changes
@@ -68,6 +68,8 @@ interface ApiClient {
68
68
  getMetricsTakedownTime: (input: MetricsTakedownTimeInput) => Promise<MetricsTakedownTimeResult>;
69
69
  getMetricsTakedownTimeByProvider: (input: MetricsTakedownTimeByProviderInput) => Promise<MetricsTakedownTimeByProviderResult>;
70
70
  getMetricsTakedownSuccessRate: (input: MetricsTakedownSuccessRateInput) => Promise<MetricsTakedownSuccessRateResult>;
71
+ getMetricsFalsePositiveRate: (input: MetricsFalsePositiveRateInput) => Promise<MetricsFalsePositiveRateResult>;
72
+ getMetricsTimeToDetection: (input: MetricsTimeToDetectionInput) => Promise<MetricsTimeToDetectionResult>;
71
73
  getMetricsTakedownTimeTrend: (input: MetricsTakedownTimeTrendInput) => Promise<MetricsTakedownTimeTrendResult>;
72
74
  createReport: (input: ReportCreateInput) => Promise<ReportCreateResult>;
73
75
  listOrganizationReports: (input: OrganizationReportsListInput) => Promise<OrganizationReportsListResult>;
@@ -170,7 +172,11 @@ interface AssetSearchResult extends AssetSearchResultItem {
170
172
  results?: AssetSearchResultItem[];
171
173
  }
172
174
  interface AssetListInput {
173
- type: string;
175
+ /**
176
+ * Asset type to list. Omit the field entirely to list every asset type on a
177
+ * single cursor; the API rejects an explicit `null`.
178
+ */
179
+ type?: string;
174
180
  status?: string;
175
181
  startDate?: string;
176
182
  endDate?: string;
@@ -484,6 +490,36 @@ interface MetricsTakedownSuccessRateResult {
484
490
  resolvedSuccessRate: number | null;
485
491
  }>;
486
492
  }
493
+ interface MetricsFalsePositiveRateInput {
494
+ slug: string;
495
+ startDate?: string;
496
+ endDate?: string;
497
+ brandIds?: number[];
498
+ countryCodes?: string[];
499
+ }
500
+ interface MetricsFalsePositiveRateResult {
501
+ byAssetType: Array<{
502
+ assetType: string;
503
+ blocked: number;
504
+ falsePositives: number;
505
+ falsePositiveRate: number | null;
506
+ }>;
507
+ }
508
+ interface MetricsTimeToDetectionInput {
509
+ slug: string;
510
+ startDate?: string;
511
+ endDate?: string;
512
+ brandIds?: number[];
513
+ countryCodes?: string[];
514
+ }
515
+ interface MetricsTimeToDetectionResult {
516
+ byAssetType: Array<{
517
+ assetType: string;
518
+ blocked: number;
519
+ withEvidence: number;
520
+ medianDaysAtLeast: number | null;
521
+ }>;
522
+ }
487
523
  interface MetricsTakedownTimeTrendInput {
488
524
  slug: string;
489
525
  months?: number;
@@ -1076,11 +1112,60 @@ interface TakedownItem {
1076
1112
  * Null when unresolved.
1077
1113
  */
1078
1114
  tldRegistrar: TakedownProviderRef | null;
1115
+ /**
1116
+ * Providers confirming they removed the asset — evidence that this takedown
1117
+ * is ours. Newest first, at most 5.
1118
+ *
1119
+ * A takedown filed at several providers can be confirmed by more than one of
1120
+ * them, so this is a list.
1121
+ *
1122
+ * Empty unless the takedown is COMPLETED and we hold a confirmation, which is
1123
+ * the common case: most providers either never reply or reply without
1124
+ * confirming they acted. An empty list is not evidence that the asset is
1125
+ * still up.
1126
+ *
1127
+ * Requires the `takedown-proof-api` feature flag; without it this is always
1128
+ * empty.
1129
+ */
1130
+ proofs: TakedownProof[];
1079
1131
  }
1080
1132
  interface TakedownProviderRef {
1081
1133
  id: number;
1082
1134
  name: string;
1083
1135
  }
1136
+ /**
1137
+ * Kinds of takedown evidence. More may be added over time — switch on
1138
+ * `TakedownProof["type"]` with a default branch rather than assuming this is
1139
+ * exhaustive.
1140
+ */
1141
+ type TakedownProofType = "provider-email";
1142
+ interface TakedownProof {
1143
+ /**
1144
+ * Which kind of evidence this is. Read it before reading any type-specific
1145
+ * object, and treat an unrecognised value as an opaque proof rather than an
1146
+ * error.
1147
+ */
1148
+ type: TakedownProofType;
1149
+ /**
1150
+ * Who confirmed the takedown, in whatever form that provider identifies
1151
+ * itself — an address such as `abuse@example.com` for `provider-email`.
1152
+ */
1153
+ source: string | null;
1154
+ /** When the provider confirmed the takedown (ISO 8601, UTC). */
1155
+ confirmedAt: string;
1156
+ /** Present when `type` is `provider-email`, null for every other type. */
1157
+ email: TakedownProofEmail | null;
1158
+ }
1159
+ interface TakedownProofEmail {
1160
+ /**
1161
+ * The provider's reply, verbatim. Plain-text body where the provider sent
1162
+ * one, otherwise the raw HTML body — treat it as untrusted content and
1163
+ * escape it before rendering.
1164
+ */
1165
+ text: string;
1166
+ /** Subject line of the provider's reply. */
1167
+ subject: string | null;
1168
+ }
1084
1169
  interface TakedownsListResult {
1085
1170
  takedowns: TakedownItem[];
1086
1171
  next_page: string | null;
@@ -1420,6 +1505,8 @@ declare class ChainPatrolApiClient implements ApiClient {
1420
1505
  getMetricsTakedownTime(input: MetricsTakedownTimeInput): Promise<MetricsTakedownTimeResult>;
1421
1506
  getMetricsTakedownTimeByProvider(input: MetricsTakedownTimeByProviderInput): Promise<MetricsTakedownTimeByProviderResult>;
1422
1507
  getMetricsTakedownSuccessRate(input: MetricsTakedownSuccessRateInput): Promise<MetricsTakedownSuccessRateResult>;
1508
+ getMetricsFalsePositiveRate(input: MetricsFalsePositiveRateInput): Promise<MetricsFalsePositiveRateResult>;
1509
+ getMetricsTimeToDetection(input: MetricsTimeToDetectionInput): Promise<MetricsTimeToDetectionResult>;
1423
1510
  getMetricsTakedownTimeTrend(input: MetricsTakedownTimeTrendInput): Promise<MetricsTakedownTimeTrendResult>;
1424
1511
  createReport(input: ReportCreateInput): Promise<ReportCreateResult>;
1425
1512
  listOrganizationReports(input: OrganizationReportsListInput): Promise<OrganizationReportsListResult>;
@@ -1451,4 +1538,4 @@ declare function parseIsoDateString(value: string | undefined): string | undefin
1451
1538
  */
1452
1539
  declare function parseIsoDateEndOfDay(value: string | undefined): Date | undefined;
1453
1540
 
1454
- export { ACTOR_KINDS, type ActorKind, type ApiClient, type ApiCredential, type AssetCheckInput, type AssetCheckResult, type AssetCheckSourceEntry, type AssetCheckStatus, type AssetGroupItem, type AssetListInput, type AssetListItem, type AssetListResult, type AssetSearchInput, type AssetSearchResult, type AssetSearchResultItem, type BrandItem, type BrandLegalDocument, type BrandLegalDocuments, type BrandTrademarkRegistrationItem, type BrandType, ChainPatrolApiClient, type ChainPatrolApiClientOptions, type ConfigEntry, type CredentialProvider, type CustomerReviewDecision, DETECTION_CONFIDENCE_LEVELS, DETECTION_REPORTED_FILTERS, type DetectionBrand, type DetectionConfidence, type DetectionConfigRunInput, type DetectionConfigRunResult, type DetectionConfigUpdateInput, type DetectionConfigUpdateResult, type DetectionConfigValidateInput, type DetectionConfigValidateResult, type DetectionDriftInput, type DetectionDriftResult, type DetectionListInput, type DetectionListItem, type DetectionListResult, type DetectionReportStatus, type DetectionReportedFilter, type DetectionSource, type HealthcheckCategory, type HealthcheckFinding, type HealthcheckRegistryEntry, type HealthcheckResult, type HealthcheckSeverity, type HealthchecksListResult, LIVENESS_FILTER_VALUES, LIVENESS_STATUSES, type LivenessFilterValue, type LivenessStatus, type MetricsBreakdownInput, type MetricsBreakdownResult, type MetricsFoundInput, type MetricsFoundResult, type MetricsSummaryInput, type MetricsSummaryResult, type MetricsTakedownSuccessRateInput, type MetricsTakedownSuccessRateResult, type MetricsTakedownTimeByProviderInput, type MetricsTakedownTimeByProviderResult, type MetricsTakedownTimeInput, type MetricsTakedownTimeResult, type MetricsTakedownTimeTrendInput, type MetricsTakedownTimeTrendPoint, type MetricsTakedownTimeTrendResult, ORGANIZATION_METRICS_INCLUDE_FIELDS, type OperationsQueuesSnapshotInput, type OperationsQueuesSnapshotResult, type OrganizationAssetGroupsListResult, type OrganizationAssetItem, type OrganizationAssetsListInput, type OrganizationAssetsListResult, type OrganizationBrandsListResult, type OrganizationMetricsIncludeField, type OrganizationMetricsInput, type OrganizationMetricsResult, type OrganizationMetricsResultMetrics, type OrganizationMetricsServicesFilter, type OrganizationMetricsVisibility, type OrganizationPortalVisibility, type OrganizationProposalsReviewInput, type OrganizationProposalsReviewResult, type OrganizationReportAssetScan, type OrganizationReportAssetScanEnrichment, type OrganizationReportAttachment, type OrganizationReportVisibility, type OrganizationReportsListInput, type OrganizationReportsListResult, PROPOSAL_REJECT_REASONS, PROPOSAL_WATCHLIST_REASONS, type PendingApprovalService, type PendingServiceApproval, type ProposalRejectReason, type ProposalWatchlistReason, REPORT_REVIEW_DECISIONS, REPORT_STATUSES, type ReportAssetInput, type ReportCreateInput, type ReportCreateResult, type ReportReviewDecision, type ReportStatus, type ReportsSearchInput, type ReportsSearchResult, type ReportsSearchResultItem, TAKEDOWN_SORT_KEYS, TAKEDOWN_STATUSES, type TakedownItem, type TakedownProviderRef, type TakedownProviderRole, type TakedownSortKey, type TakedownStatus, type TakedownsListInput, type TakedownsListResult, type ThreatItem, type ThreatsListInput, type ThreatsListResult, type UserMeResult, type UserOrg, type UserOrgBrandMetadata, type UserOrgGetInput, type UserOrgGetResult, type UserOrgIntegrations, type UserOrgLegalDocument, type UserOrgLegalDocuments, type UserOrgPortalCustomization, type UserOrgTrademarkRegistration, type UserOrgsInput, type UserOrgsObligatoryAdminApprovalFilter, type UserOrgsPendingServiceApprovalFilter, type UserOrgsResult, type UserOrgsServiceFilters, type UserOrgsSubscriptionStatus, type ValidateApiKeyResult, WATCHLIST_FILTER_VALUES, type WatchlistFilterValue, parseIsoDate, parseIsoDateEndOfDay, parseIsoDateString, staticApiKey, staticBearerToken };
1541
+ export { ACTOR_KINDS, type ActorKind, type ApiClient, type ApiCredential, type AssetCheckInput, type AssetCheckResult, type AssetCheckSourceEntry, type AssetCheckStatus, type AssetGroupItem, type AssetListInput, type AssetListItem, type AssetListResult, type AssetSearchInput, type AssetSearchResult, type AssetSearchResultItem, type BrandItem, type BrandLegalDocument, type BrandLegalDocuments, type BrandTrademarkRegistrationItem, type BrandType, ChainPatrolApiClient, type ChainPatrolApiClientOptions, type ConfigEntry, type CredentialProvider, type CustomerReviewDecision, DETECTION_CONFIDENCE_LEVELS, DETECTION_REPORTED_FILTERS, type DetectionBrand, type DetectionConfidence, type DetectionConfigRunInput, type DetectionConfigRunResult, type DetectionConfigUpdateInput, type DetectionConfigUpdateResult, type DetectionConfigValidateInput, type DetectionConfigValidateResult, type DetectionDriftInput, type DetectionDriftResult, type DetectionListInput, type DetectionListItem, type DetectionListResult, type DetectionReportStatus, type DetectionReportedFilter, type DetectionSource, type HealthcheckCategory, type HealthcheckFinding, type HealthcheckRegistryEntry, type HealthcheckResult, type HealthcheckSeverity, type HealthchecksListResult, LIVENESS_FILTER_VALUES, LIVENESS_STATUSES, type LivenessFilterValue, type LivenessStatus, type MetricsBreakdownInput, type MetricsBreakdownResult, type MetricsFalsePositiveRateInput, type MetricsFalsePositiveRateResult, type MetricsFoundInput, type MetricsFoundResult, type MetricsSummaryInput, type MetricsSummaryResult, type MetricsTakedownSuccessRateInput, type MetricsTakedownSuccessRateResult, type MetricsTakedownTimeByProviderInput, type MetricsTakedownTimeByProviderResult, type MetricsTakedownTimeInput, type MetricsTakedownTimeResult, type MetricsTakedownTimeTrendInput, type MetricsTakedownTimeTrendPoint, type MetricsTakedownTimeTrendResult, type MetricsTimeToDetectionInput, type MetricsTimeToDetectionResult, ORGANIZATION_METRICS_INCLUDE_FIELDS, type OperationsQueuesSnapshotInput, type OperationsQueuesSnapshotResult, type OrganizationAssetGroupsListResult, type OrganizationAssetItem, type OrganizationAssetsListInput, type OrganizationAssetsListResult, type OrganizationBrandsListResult, type OrganizationMetricsIncludeField, type OrganizationMetricsInput, type OrganizationMetricsResult, type OrganizationMetricsResultMetrics, type OrganizationMetricsServicesFilter, type OrganizationMetricsVisibility, type OrganizationPortalVisibility, type OrganizationProposalsReviewInput, type OrganizationProposalsReviewResult, type OrganizationReportAssetScan, type OrganizationReportAssetScanEnrichment, type OrganizationReportAttachment, type OrganizationReportVisibility, type OrganizationReportsListInput, type OrganizationReportsListResult, PROPOSAL_REJECT_REASONS, PROPOSAL_WATCHLIST_REASONS, type PendingApprovalService, type PendingServiceApproval, type ProposalRejectReason, type ProposalWatchlistReason, REPORT_REVIEW_DECISIONS, REPORT_STATUSES, type ReportAssetInput, type ReportCreateInput, type ReportCreateResult, type ReportReviewDecision, type ReportStatus, type ReportsSearchInput, type ReportsSearchResult, type ReportsSearchResultItem, TAKEDOWN_SORT_KEYS, TAKEDOWN_STATUSES, type TakedownItem, type TakedownProof, type TakedownProofEmail, type TakedownProofType, type TakedownProviderRef, type TakedownProviderRole, type TakedownSortKey, type TakedownStatus, type TakedownsListInput, type TakedownsListResult, type ThreatItem, type ThreatsListInput, type ThreatsListResult, type UserMeResult, type UserOrg, type UserOrgBrandMetadata, type UserOrgGetInput, type UserOrgGetResult, type UserOrgIntegrations, type UserOrgLegalDocument, type UserOrgLegalDocuments, type UserOrgPortalCustomization, type UserOrgTrademarkRegistration, type UserOrgsInput, type UserOrgsObligatoryAdminApprovalFilter, type UserOrgsPendingServiceApprovalFilter, type UserOrgsResult, type UserOrgsServiceFilters, type UserOrgsSubscriptionStatus, type ValidateApiKeyResult, WATCHLIST_FILTER_VALUES, type WatchlistFilterValue, parseIsoDate, parseIsoDateEndOfDay, parseIsoDateString, staticApiKey, staticBearerToken };
@@ -68,6 +68,8 @@ interface ApiClient {
68
68
  getMetricsTakedownTime: (input: MetricsTakedownTimeInput) => Promise<MetricsTakedownTimeResult>;
69
69
  getMetricsTakedownTimeByProvider: (input: MetricsTakedownTimeByProviderInput) => Promise<MetricsTakedownTimeByProviderResult>;
70
70
  getMetricsTakedownSuccessRate: (input: MetricsTakedownSuccessRateInput) => Promise<MetricsTakedownSuccessRateResult>;
71
+ getMetricsFalsePositiveRate: (input: MetricsFalsePositiveRateInput) => Promise<MetricsFalsePositiveRateResult>;
72
+ getMetricsTimeToDetection: (input: MetricsTimeToDetectionInput) => Promise<MetricsTimeToDetectionResult>;
71
73
  getMetricsTakedownTimeTrend: (input: MetricsTakedownTimeTrendInput) => Promise<MetricsTakedownTimeTrendResult>;
72
74
  createReport: (input: ReportCreateInput) => Promise<ReportCreateResult>;
73
75
  listOrganizationReports: (input: OrganizationReportsListInput) => Promise<OrganizationReportsListResult>;
@@ -170,7 +172,11 @@ interface AssetSearchResult extends AssetSearchResultItem {
170
172
  results?: AssetSearchResultItem[];
171
173
  }
172
174
  interface AssetListInput {
173
- type: string;
175
+ /**
176
+ * Asset type to list. Omit the field entirely to list every asset type on a
177
+ * single cursor; the API rejects an explicit `null`.
178
+ */
179
+ type?: string;
174
180
  status?: string;
175
181
  startDate?: string;
176
182
  endDate?: string;
@@ -484,6 +490,36 @@ interface MetricsTakedownSuccessRateResult {
484
490
  resolvedSuccessRate: number | null;
485
491
  }>;
486
492
  }
493
+ interface MetricsFalsePositiveRateInput {
494
+ slug: string;
495
+ startDate?: string;
496
+ endDate?: string;
497
+ brandIds?: number[];
498
+ countryCodes?: string[];
499
+ }
500
+ interface MetricsFalsePositiveRateResult {
501
+ byAssetType: Array<{
502
+ assetType: string;
503
+ blocked: number;
504
+ falsePositives: number;
505
+ falsePositiveRate: number | null;
506
+ }>;
507
+ }
508
+ interface MetricsTimeToDetectionInput {
509
+ slug: string;
510
+ startDate?: string;
511
+ endDate?: string;
512
+ brandIds?: number[];
513
+ countryCodes?: string[];
514
+ }
515
+ interface MetricsTimeToDetectionResult {
516
+ byAssetType: Array<{
517
+ assetType: string;
518
+ blocked: number;
519
+ withEvidence: number;
520
+ medianDaysAtLeast: number | null;
521
+ }>;
522
+ }
487
523
  interface MetricsTakedownTimeTrendInput {
488
524
  slug: string;
489
525
  months?: number;
@@ -1076,11 +1112,60 @@ interface TakedownItem {
1076
1112
  * Null when unresolved.
1077
1113
  */
1078
1114
  tldRegistrar: TakedownProviderRef | null;
1115
+ /**
1116
+ * Providers confirming they removed the asset — evidence that this takedown
1117
+ * is ours. Newest first, at most 5.
1118
+ *
1119
+ * A takedown filed at several providers can be confirmed by more than one of
1120
+ * them, so this is a list.
1121
+ *
1122
+ * Empty unless the takedown is COMPLETED and we hold a confirmation, which is
1123
+ * the common case: most providers either never reply or reply without
1124
+ * confirming they acted. An empty list is not evidence that the asset is
1125
+ * still up.
1126
+ *
1127
+ * Requires the `takedown-proof-api` feature flag; without it this is always
1128
+ * empty.
1129
+ */
1130
+ proofs: TakedownProof[];
1079
1131
  }
1080
1132
  interface TakedownProviderRef {
1081
1133
  id: number;
1082
1134
  name: string;
1083
1135
  }
1136
+ /**
1137
+ * Kinds of takedown evidence. More may be added over time — switch on
1138
+ * `TakedownProof["type"]` with a default branch rather than assuming this is
1139
+ * exhaustive.
1140
+ */
1141
+ type TakedownProofType = "provider-email";
1142
+ interface TakedownProof {
1143
+ /**
1144
+ * Which kind of evidence this is. Read it before reading any type-specific
1145
+ * object, and treat an unrecognised value as an opaque proof rather than an
1146
+ * error.
1147
+ */
1148
+ type: TakedownProofType;
1149
+ /**
1150
+ * Who confirmed the takedown, in whatever form that provider identifies
1151
+ * itself — an address such as `abuse@example.com` for `provider-email`.
1152
+ */
1153
+ source: string | null;
1154
+ /** When the provider confirmed the takedown (ISO 8601, UTC). */
1155
+ confirmedAt: string;
1156
+ /** Present when `type` is `provider-email`, null for every other type. */
1157
+ email: TakedownProofEmail | null;
1158
+ }
1159
+ interface TakedownProofEmail {
1160
+ /**
1161
+ * The provider's reply, verbatim. Plain-text body where the provider sent
1162
+ * one, otherwise the raw HTML body — treat it as untrusted content and
1163
+ * escape it before rendering.
1164
+ */
1165
+ text: string;
1166
+ /** Subject line of the provider's reply. */
1167
+ subject: string | null;
1168
+ }
1084
1169
  interface TakedownsListResult {
1085
1170
  takedowns: TakedownItem[];
1086
1171
  next_page: string | null;
@@ -1420,6 +1505,8 @@ declare class ChainPatrolApiClient implements ApiClient {
1420
1505
  getMetricsTakedownTime(input: MetricsTakedownTimeInput): Promise<MetricsTakedownTimeResult>;
1421
1506
  getMetricsTakedownTimeByProvider(input: MetricsTakedownTimeByProviderInput): Promise<MetricsTakedownTimeByProviderResult>;
1422
1507
  getMetricsTakedownSuccessRate(input: MetricsTakedownSuccessRateInput): Promise<MetricsTakedownSuccessRateResult>;
1508
+ getMetricsFalsePositiveRate(input: MetricsFalsePositiveRateInput): Promise<MetricsFalsePositiveRateResult>;
1509
+ getMetricsTimeToDetection(input: MetricsTimeToDetectionInput): Promise<MetricsTimeToDetectionResult>;
1423
1510
  getMetricsTakedownTimeTrend(input: MetricsTakedownTimeTrendInput): Promise<MetricsTakedownTimeTrendResult>;
1424
1511
  createReport(input: ReportCreateInput): Promise<ReportCreateResult>;
1425
1512
  listOrganizationReports(input: OrganizationReportsListInput): Promise<OrganizationReportsListResult>;
@@ -1451,4 +1538,4 @@ declare function parseIsoDateString(value: string | undefined): string | undefin
1451
1538
  */
1452
1539
  declare function parseIsoDateEndOfDay(value: string | undefined): Date | undefined;
1453
1540
 
1454
- export { ACTOR_KINDS, type ActorKind, type ApiClient, type ApiCredential, type AssetCheckInput, type AssetCheckResult, type AssetCheckSourceEntry, type AssetCheckStatus, type AssetGroupItem, type AssetListInput, type AssetListItem, type AssetListResult, type AssetSearchInput, type AssetSearchResult, type AssetSearchResultItem, type BrandItem, type BrandLegalDocument, type BrandLegalDocuments, type BrandTrademarkRegistrationItem, type BrandType, ChainPatrolApiClient, type ChainPatrolApiClientOptions, type ConfigEntry, type CredentialProvider, type CustomerReviewDecision, DETECTION_CONFIDENCE_LEVELS, DETECTION_REPORTED_FILTERS, type DetectionBrand, type DetectionConfidence, type DetectionConfigRunInput, type DetectionConfigRunResult, type DetectionConfigUpdateInput, type DetectionConfigUpdateResult, type DetectionConfigValidateInput, type DetectionConfigValidateResult, type DetectionDriftInput, type DetectionDriftResult, type DetectionListInput, type DetectionListItem, type DetectionListResult, type DetectionReportStatus, type DetectionReportedFilter, type DetectionSource, type HealthcheckCategory, type HealthcheckFinding, type HealthcheckRegistryEntry, type HealthcheckResult, type HealthcheckSeverity, type HealthchecksListResult, LIVENESS_FILTER_VALUES, LIVENESS_STATUSES, type LivenessFilterValue, type LivenessStatus, type MetricsBreakdownInput, type MetricsBreakdownResult, type MetricsFoundInput, type MetricsFoundResult, type MetricsSummaryInput, type MetricsSummaryResult, type MetricsTakedownSuccessRateInput, type MetricsTakedownSuccessRateResult, type MetricsTakedownTimeByProviderInput, type MetricsTakedownTimeByProviderResult, type MetricsTakedownTimeInput, type MetricsTakedownTimeResult, type MetricsTakedownTimeTrendInput, type MetricsTakedownTimeTrendPoint, type MetricsTakedownTimeTrendResult, ORGANIZATION_METRICS_INCLUDE_FIELDS, type OperationsQueuesSnapshotInput, type OperationsQueuesSnapshotResult, type OrganizationAssetGroupsListResult, type OrganizationAssetItem, type OrganizationAssetsListInput, type OrganizationAssetsListResult, type OrganizationBrandsListResult, type OrganizationMetricsIncludeField, type OrganizationMetricsInput, type OrganizationMetricsResult, type OrganizationMetricsResultMetrics, type OrganizationMetricsServicesFilter, type OrganizationMetricsVisibility, type OrganizationPortalVisibility, type OrganizationProposalsReviewInput, type OrganizationProposalsReviewResult, type OrganizationReportAssetScan, type OrganizationReportAssetScanEnrichment, type OrganizationReportAttachment, type OrganizationReportVisibility, type OrganizationReportsListInput, type OrganizationReportsListResult, PROPOSAL_REJECT_REASONS, PROPOSAL_WATCHLIST_REASONS, type PendingApprovalService, type PendingServiceApproval, type ProposalRejectReason, type ProposalWatchlistReason, REPORT_REVIEW_DECISIONS, REPORT_STATUSES, type ReportAssetInput, type ReportCreateInput, type ReportCreateResult, type ReportReviewDecision, type ReportStatus, type ReportsSearchInput, type ReportsSearchResult, type ReportsSearchResultItem, TAKEDOWN_SORT_KEYS, TAKEDOWN_STATUSES, type TakedownItem, type TakedownProviderRef, type TakedownProviderRole, type TakedownSortKey, type TakedownStatus, type TakedownsListInput, type TakedownsListResult, type ThreatItem, type ThreatsListInput, type ThreatsListResult, type UserMeResult, type UserOrg, type UserOrgBrandMetadata, type UserOrgGetInput, type UserOrgGetResult, type UserOrgIntegrations, type UserOrgLegalDocument, type UserOrgLegalDocuments, type UserOrgPortalCustomization, type UserOrgTrademarkRegistration, type UserOrgsInput, type UserOrgsObligatoryAdminApprovalFilter, type UserOrgsPendingServiceApprovalFilter, type UserOrgsResult, type UserOrgsServiceFilters, type UserOrgsSubscriptionStatus, type ValidateApiKeyResult, WATCHLIST_FILTER_VALUES, type WatchlistFilterValue, parseIsoDate, parseIsoDateEndOfDay, parseIsoDateString, staticApiKey, staticBearerToken };
1541
+ export { ACTOR_KINDS, type ActorKind, type ApiClient, type ApiCredential, type AssetCheckInput, type AssetCheckResult, type AssetCheckSourceEntry, type AssetCheckStatus, type AssetGroupItem, type AssetListInput, type AssetListItem, type AssetListResult, type AssetSearchInput, type AssetSearchResult, type AssetSearchResultItem, type BrandItem, type BrandLegalDocument, type BrandLegalDocuments, type BrandTrademarkRegistrationItem, type BrandType, ChainPatrolApiClient, type ChainPatrolApiClientOptions, type ConfigEntry, type CredentialProvider, type CustomerReviewDecision, DETECTION_CONFIDENCE_LEVELS, DETECTION_REPORTED_FILTERS, type DetectionBrand, type DetectionConfidence, type DetectionConfigRunInput, type DetectionConfigRunResult, type DetectionConfigUpdateInput, type DetectionConfigUpdateResult, type DetectionConfigValidateInput, type DetectionConfigValidateResult, type DetectionDriftInput, type DetectionDriftResult, type DetectionListInput, type DetectionListItem, type DetectionListResult, type DetectionReportStatus, type DetectionReportedFilter, type DetectionSource, type HealthcheckCategory, type HealthcheckFinding, type HealthcheckRegistryEntry, type HealthcheckResult, type HealthcheckSeverity, type HealthchecksListResult, LIVENESS_FILTER_VALUES, LIVENESS_STATUSES, type LivenessFilterValue, type LivenessStatus, type MetricsBreakdownInput, type MetricsBreakdownResult, type MetricsFalsePositiveRateInput, type MetricsFalsePositiveRateResult, type MetricsFoundInput, type MetricsFoundResult, type MetricsSummaryInput, type MetricsSummaryResult, type MetricsTakedownSuccessRateInput, type MetricsTakedownSuccessRateResult, type MetricsTakedownTimeByProviderInput, type MetricsTakedownTimeByProviderResult, type MetricsTakedownTimeInput, type MetricsTakedownTimeResult, type MetricsTakedownTimeTrendInput, type MetricsTakedownTimeTrendPoint, type MetricsTakedownTimeTrendResult, type MetricsTimeToDetectionInput, type MetricsTimeToDetectionResult, ORGANIZATION_METRICS_INCLUDE_FIELDS, type OperationsQueuesSnapshotInput, type OperationsQueuesSnapshotResult, type OrganizationAssetGroupsListResult, type OrganizationAssetItem, type OrganizationAssetsListInput, type OrganizationAssetsListResult, type OrganizationBrandsListResult, type OrganizationMetricsIncludeField, type OrganizationMetricsInput, type OrganizationMetricsResult, type OrganizationMetricsResultMetrics, type OrganizationMetricsServicesFilter, type OrganizationMetricsVisibility, type OrganizationPortalVisibility, type OrganizationProposalsReviewInput, type OrganizationProposalsReviewResult, type OrganizationReportAssetScan, type OrganizationReportAssetScanEnrichment, type OrganizationReportAttachment, type OrganizationReportVisibility, type OrganizationReportsListInput, type OrganizationReportsListResult, PROPOSAL_REJECT_REASONS, PROPOSAL_WATCHLIST_REASONS, type PendingApprovalService, type PendingServiceApproval, type ProposalRejectReason, type ProposalWatchlistReason, REPORT_REVIEW_DECISIONS, REPORT_STATUSES, type ReportAssetInput, type ReportCreateInput, type ReportCreateResult, type ReportReviewDecision, type ReportStatus, type ReportsSearchInput, type ReportsSearchResult, type ReportsSearchResultItem, TAKEDOWN_SORT_KEYS, TAKEDOWN_STATUSES, type TakedownItem, type TakedownProof, type TakedownProofEmail, type TakedownProofType, type TakedownProviderRef, type TakedownProviderRole, type TakedownSortKey, type TakedownStatus, type TakedownsListInput, type TakedownsListResult, type ThreatItem, type ThreatsListInput, type ThreatsListResult, type UserMeResult, type UserOrg, type UserOrgBrandMetadata, type UserOrgGetInput, type UserOrgGetResult, type UserOrgIntegrations, type UserOrgLegalDocument, type UserOrgLegalDocuments, type UserOrgPortalCustomization, type UserOrgTrademarkRegistration, type UserOrgsInput, type UserOrgsObligatoryAdminApprovalFilter, type UserOrgsPendingServiceApprovalFilter, type UserOrgsResult, type UserOrgsServiceFilters, type UserOrgsSubscriptionStatus, type ValidateApiKeyResult, WATCHLIST_FILTER_VALUES, type WatchlistFilterValue, parseIsoDate, parseIsoDateEndOfDay, parseIsoDateString, staticApiKey, staticBearerToken };
package/dist/api/index.js CHANGED
@@ -357,6 +357,24 @@ var ChainPatrolApiClient = class {
357
357
  })
358
358
  );
359
359
  }
360
+ getMetricsFalsePositiveRate(input) {
361
+ return this.request("/metrics/false-positive-rate", __spreadProps(__spreadValues({}, input), {
362
+ startDate: parseIsoDate(input.startDate),
363
+ // Dates serialize as full timestamps, so a date-only `endDate` has to be
364
+ // widened here — the API can no longer tell it apart from an explicit
365
+ // midnight cut-off once it arrives.
366
+ endDate: parseIsoDateEndOfDay(input.endDate)
367
+ }));
368
+ }
369
+ getMetricsTimeToDetection(input) {
370
+ return this.request("/metrics/time-to-detection", __spreadProps(__spreadValues({}, input), {
371
+ startDate: parseIsoDate(input.startDate),
372
+ // Dates serialize as full timestamps, so a date-only `endDate` has to be
373
+ // widened here — the API can no longer tell it apart from an explicit
374
+ // midnight cut-off once it arrives.
375
+ endDate: parseIsoDateEndOfDay(input.endDate)
376
+ }));
377
+ }
360
378
  getMetricsTakedownTimeTrend(input) {
361
379
  return this.request(
362
380
  "/metrics/takedown-time/trend",