openapi: 3.2.0 info: title: Fenergo Nebula Digital Agents Query Metric API description: '**DigitalAgents Query API**: DigitalAgents Query API provides methods to access data related to agents and statistics associated with their work. **DigitalAgents Query API provides**: The ability to query metrics related to digital agents work.' version: '1.0' servers: - url: /digitalagentsquery security: - Bearer: [] tags: - name: Metric paths: /api/metric/task-autocomplete: post: tags: - Metric summary: Get Task AutoComplete metrics by tenant description: 'Required permissions: Following permissions are required: DigitalAgentsAccess' operationId: GetTaskAutocompletionMetrics parameters: - name: X-TENANT-ID in: header description: The UiD of the tenant representing organization required: true schema: type: string example: b11f8be3-f29b-4959-8964-956d4af7c468 requestBody: content: application/json: schema: $ref: '#/components/schemas/QueryParametersServiceRequest' responses: '200': description: The Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetMetrics.GetTaskAutocompletionMetricsResponseDto class containing the list of metrics content: application/json: schema: $ref: '#/components/schemas/GetTaskAutocompletionMetricsResponseDtoServiceResponse' '400': description: One or more validation errors occurred content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' example: type: https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.1 title: One or more validation errors occurred detail: Name is required status: 400 errorCode: VALIDATION_ERROR validationErrors: - propertyName: Name errorMessage: Name is required attemptedValue: '' validatorType: NotEmptyValidator '500': description: An exception occurred while processing the request '401': description: User is not authorized to perform this request content: application/json: example: message: Unauthorized '403': description: Access to resource is forbidden. content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' example: type: https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.3 title: Access to resource is forbidden. detail: 'Access denied. Following permissions are required: Permission1, Permission2' status: 403 '410': description: Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers. content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' example: type: https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.9 title: Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers. detail: This endpoint is obsolete and was terminated on yyyy-MM-dd status: 410 errorCode: OBSOLETE_ENDPOINT /api/metric/agent-metrics: post: tags: - Metric summary: Get metrics by tenant, agent type and measure names description: 'Required permissions: Following permissions are required: DigitalAgentsAccess' operationId: GetAgentMetrics parameters: - name: X-TENANT-ID in: header description: The UiD of the tenant representing organization required: true schema: type: string example: b11f8be3-f29b-4959-8964-956d4af7c468 requestBody: content: application/json: schema: $ref: '#/components/schemas/AgentMetricsQueryParametersServiceRequest' responses: '200': description: The Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetMetrics.GetAgentMetricsResponseDto class containing the list of metrics content: application/json: schema: $ref: '#/components/schemas/GetAgentMetricsResponseDtoServiceResponse' '400': description: One or more validation errors occurred content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' example: type: https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.1 title: One or more validation errors occurred detail: Name is required status: 400 errorCode: VALIDATION_ERROR validationErrors: - propertyName: Name errorMessage: Name is required attemptedValue: '' validatorType: NotEmptyValidator '500': description: An exception occurred while processing the request '401': description: User is not authorized to perform this request content: application/json: example: message: Unauthorized '403': description: Access to resource is forbidden. content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' example: type: https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.3 title: Access to resource is forbidden. detail: 'Access denied. Following permissions are required: Permission1, Permission2' status: 403 '410': description: Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers. content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' example: type: https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.9 title: Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers. detail: This endpoint is obsolete and was terminated on yyyy-MM-dd status: 410 errorCode: OBSOLETE_ENDPOINT /api/metric/agent-value-summary: post: tags: - Metric summary: Get per-agent action counts and monthly time series for the current tenant over… description: 'Required permissions: Following permissions are required: DigitalAgentsAccess' operationId: GetAgentValueSummary parameters: - name: X-TENANT-ID in: header description: The UiD of the tenant representing organization required: true schema: type: string example: b11f8be3-f29b-4959-8964-956d4af7c468 requestBody: content: application/json: schema: $ref: '#/components/schemas/AgentValueSummaryRequestDtoServiceRequest' responses: '200': description: The Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueSummaryResponseDto containing per-agent counts and monthly series content: application/json: schema: $ref: '#/components/schemas/AgentValueSummaryResponseDtoServiceResponse' '400': description: One or more validation errors occurred content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' example: type: https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.1 title: One or more validation errors occurred detail: Name is required status: 400 errorCode: VALIDATION_ERROR validationErrors: - propertyName: Name errorMessage: Name is required attemptedValue: '' validatorType: NotEmptyValidator '500': description: An exception occurred while processing the request '401': description: User is not authorized to perform this request content: application/json: example: message: Unauthorized '403': description: Access to resource is forbidden. content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' example: type: https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.3 title: Access to resource is forbidden. detail: 'Access denied. Following permissions are required: Permission1, Permission2' status: 403 '410': description: Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers. content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' example: type: https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.9 title: Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers. detail: This endpoint is obsolete and was terminated on yyyy-MM-dd status: 410 errorCode: OBSOLETE_ENDPOINT components: schemas: GetAgentMetricsResponseDto: type: object properties: metrics: type: - array - 'null' items: $ref: '#/components/schemas/AgentMetricsTimestreamResult' additionalProperties: false AgentMetricsQueryParameters: required: - agentType - measureNames - queryFromInDays type: object properties: agentType: type: - string - 'null' queryFromInDays: type: integer format: int32 groupMetricsByMonth: type: boolean measureNames: type: - array - 'null' items: type: string additionalProperties: false TaskAutocompleteTimestreamResult: type: object properties: taskType: type: - string - 'null' policyRequirementType: type: - string - 'null' taskName: type: - string - 'null' journeyType: type: - string - 'null' measureValue: type: number format: double count: type: integer format: int32 timeBin: type: - string - 'null' format: date-time additionalProperties: false AgentValueSummaryRequestDto: required: - from - to type: object properties: from: type: string format: date-time to: type: string format: date-time additionalProperties: false description: Request body DTO for the agent value summary endpoint. AgentMetricsTimestreamResult: type: object properties: taskType: type: - string - 'null' journeyType: type: - string - 'null' measureName: type: - string - 'null' measureValue: type: number format: double count: type: integer format: int32 timeBin: type: - string - 'null' format: date-time additionalDimensions: type: - object - 'null' additionalProperties: type: - string - 'null' additionalProperties: false MonthlyAgentBucketDto: required: - month type: object properties: docsClassified: type: integer format: int32 hitsAutoResolved: type: integer format: int32 suggestionsAccepted: type: integer format: int32 reportsGenerated: type: integer format: int32 sourcesRetrieved: type: integer format: int32 policyChecksRun: type: integer format: int32 signalChecksRun: type: integer format: int32 screeningDetectionsTotal: type: integer format: int32 screeningMatchCount: type: integer format: int32 screeningNoMatchCount: type: integer format: int32 screeningUnresolvedCount: type: integer format: int32 screeningSanctionsCount: type: integer description: 'Number of screening hits classified as Sanctions. Populated from the per-category measure names emitted by Fenergo.Nebula.Screening (AB#543745).' format: int32 screeningPepsCount: type: integer description: 'Number of screening hits classified as PEPs. Populated from the per-category measure names emitted by Fenergo.Nebula.Screening (AB#543745).' format: int32 screeningAdverseMediaCount: type: integer description: 'Number of screening hits classified as Adverse Media. Populated from the per-category measure names emitted by Fenergo.Nebula.Screening (AB#543745).' format: int32 idpFieldExtractedCount: type: integer description: "`IDP_field_extracted_count` Timestream measure count for the Document agent (AB#547917;\n promoted onto this shared base — and therefore onto Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.MonthlyAgentBucketDto — by\n AB#550406). Same query/aggregation shape as Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueCountsDto.DocsClassified. Feeds BusinessMetrics'\n Capacity gauge \"Data field extractions\" pricing metric via `CapacityAgentActionCountsDto.Extraction`\n on the total, and its per-period capacity-consumption ledger (AB#550218) on the monthly breakdown.\n Not broken out by document type — aggregate-only." format: int32 month: type: - string - 'null' description: The calendar month represented as "yyyy-MM". additionalProperties: false description: Per-month aggregate counts for the agent value summary. AgentValueSummaryResponseDtoServiceResponse: type: object properties: data: $ref: '#/components/schemas/AgentValueSummaryResponseDto' messages: type: - array - 'null' items: $ref: '#/components/schemas/ServiceResponseMessage' additionalProperties: false GetTaskAutocompletionMetricsResponseDto: type: object properties: taskAutocompleteMetrics: type: - array - 'null' items: $ref: '#/components/schemas/TaskAutocompleteTimestreamResult' additionalProperties: false QueryParameters: required: - agentType - queryFromInDays type: object properties: agentType: type: - string - 'null' queryFromInDays: type: integer format: int32 groupMetricsByMonth: type: boolean additionalProperties: false OperationsMonthlyBucketDto: required: - month type: object properties: month: type: - string - 'null' description: '"yyyy-MM" bucket.' interventionCount: type: integer description: Count of Trust.Decision.Overridden rows for the month, summed across all categories. format: int32 agreementRate: type: - number - 'null' description: Percentage of reviewed decisions confirmed this month, summed across categories with a review denominator. Null when none exists. format: double additionalProperties: false description: Monthly intervention volume and agreement-rate trend, summed across all decision categories. QaFindingCandidateDto: required: - agent - date - id - issue - severity type: object properties: id: type: - string - 'null' description: 'The finding''s natural key — the source event''s EntryId when present (rows written since AB#547300''s rollout), else a composite `AgentExecutionId+Timestamp` fallback for pre-rollout rows.' agent: type: - string - 'null' description: The agent whose decision was overridden/reviewed. issue: type: - string - 'null' description: 'A short description of what was flagged. The source event''s OverrideReason when populated (Screening today), else falls back to the domain''s DecisionType — most domains don''t capture a real reviewer-supplied reason yet, so this is a best-effort label, not a true diagnosis.' severity: type: - string - 'null' description: 'Coarse severity placeholder (AB#547300) — NOT a real severity model. No confidence/score/ magnitude signal exists anywhere in the underlying Trust.Decision.* telemetry today (see `GetAgentValueSummaryQueryHandler.DeriveSeverity` for the exact rule and why).' date: type: string format: date-time additionalProperties: false description: 'A single QA finding candidate (AB#547300) — one qualifying Trust.Decision.Overridden event, individually (not aggregated), for BusinessMetrics to consume and persist as a mutable `QaFinding` (AB#547301). Read-only/point-in-time: DigitalAgents does not track status (open/in review/resolved) — that''s owned by BusinessMetrics once a finding is persisted.' OperationsOverrideReasonDto: required: - count - pct - reason type: object properties: reason: type: - string - 'null' description: Verbatim Trust.Decision.Overridden OverrideReason value, or "Unspecified" when empty/missing. count: type: integer description: Count of overrides with this reason. format: int32 pct: type: number description: Percentage of all overrides (including Unspecified) with this reason, rounded to 1dp. format: double additionalProperties: false description: 'Override-reason breakdown for Trust.Decision.Overridden, across all 4 domains (AB#546238). Rows with an empty/missing OverrideReason (SmartDocs'' Overridden/AcceptedWithChanges paths, domains that don''t populate the field) bucket under "Unspecified" rather than being dropped.' QueryParametersServiceRequest: type: object properties: data: $ref: '#/components/schemas/QueryParameters' additionalProperties: false GetAgentMetricsResponseDtoServiceResponse: type: object properties: data: $ref: '#/components/schemas/GetAgentMetricsResponseDto' messages: type: - array - 'null' items: $ref: '#/components/schemas/ServiceResponseMessage' additionalProperties: false ProblemDetails: type: object properties: type: type: - string - 'null' title: type: - string - 'null' status: type: - integer - 'null' format: int32 detail: type: - string - 'null' instance: type: - string - 'null' additionalProperties: {} GetTaskAutocompletionMetricsResponseDtoServiceResponse: type: object properties: data: $ref: '#/components/schemas/GetTaskAutocompletionMetricsResponseDto' messages: type: - array - 'null' items: $ref: '#/components/schemas/ServiceResponseMessage' additionalProperties: false DocClassificationBreakdownItemDto: required: - type type: object properties: type: type: - string - 'null' count: type: integer format: int32 additionalProperties: false description: A single per-document-type bucket in the document classification breakdown. AgentValueSummaryRequestDtoServiceRequest: type: object properties: data: $ref: '#/components/schemas/AgentValueSummaryRequestDto' additionalProperties: false AgentValueSummaryResponseDto: type: object properties: docsClassified: type: integer format: int32 hitsAutoResolved: type: integer format: int32 suggestionsAccepted: type: integer format: int32 reportsGenerated: type: integer format: int32 sourcesRetrieved: type: integer format: int32 policyChecksRun: type: integer format: int32 signalChecksRun: type: integer format: int32 screeningDetectionsTotal: type: integer format: int32 screeningMatchCount: type: integer format: int32 screeningNoMatchCount: type: integer format: int32 screeningUnresolvedCount: type: integer format: int32 screeningSanctionsCount: type: integer description: 'Number of screening hits classified as Sanctions. Populated from the per-category measure names emitted by Fenergo.Nebula.Screening (AB#543745).' format: int32 screeningPepsCount: type: integer description: 'Number of screening hits classified as PEPs. Populated from the per-category measure names emitted by Fenergo.Nebula.Screening (AB#543745).' format: int32 screeningAdverseMediaCount: type: integer description: 'Number of screening hits classified as Adverse Media. Populated from the per-category measure names emitted by Fenergo.Nebula.Screening (AB#543745).' format: int32 idpFieldExtractedCount: type: integer description: "`IDP_field_extracted_count` Timestream measure count for the Document agent (AB#547917;\n promoted onto this shared base — and therefore onto Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.MonthlyAgentBucketDto — by\n AB#550406). Same query/aggregation shape as Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueCountsDto.DocsClassified. Feeds BusinessMetrics'\n Capacity gauge \"Data field extractions\" pricing metric via `CapacityAgentActionCountsDto.Extraction`\n on the total, and its per-period capacity-consumption ledger (AB#550218) on the monthly breakdown.\n Not broken out by document type — aggregate-only." format: int32 monthlySeries: type: - array - 'null' items: $ref: '#/components/schemas/MonthlyAgentBucketDto' docsClassifiedByType: type: - array - 'null' items: $ref: '#/components/schemas/DocClassificationBreakdownItemDto' description: 'Per-document-type counts for documents classified within the requested date range. Aggregate-only — not broken out per month. Sums to Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueCountsDto.DocsClassified.' operationsCategoryAgreement: type: - array - 'null' items: $ref: '#/components/schemas/OperationsCategoryDto' description: 'Per-decision-category intervention counts + agreement rate (AB#546092). Deliberately has no default value (stays `null` when unset) — same convention as Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueSummaryResponseDto.DocsClassifiedByType: a response predating this rollout omits the field and deserializes to `null`, distinct from an explicit empty list (genuinely zero interventions this period).' operationsMonthlyTrend: type: - array - 'null' items: $ref: '#/components/schemas/OperationsMonthlyBucketDto' description: Monthly intervention volume + agreement-rate trend (AB#546092). Same null-vs-empty convention as Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueSummaryResponseDto.OperationsCategoryAgreement. operationsHaiAgreement: type: - number - 'null' description: 'Overall human-AI agreement rate across all reviewed decisions (AB#546238) — percentage of Trust.Decision.Reviewed rows with ReviewOutcome=Confirmed. Screening-only today, same source as Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueSummaryResponseDto.OperationsCategoryAgreement''s per-category rate (AB#546092 Open Question 1). Null only when this DigitalAgents deploy predates the rollout — once Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueSummaryResponseDto.OperationsCategoryAgreement is non-null this is always populated (0 when genuinely zero reviews).' format: double operationsTotalReviews: type: - integer - 'null' description: Total Trust.Decision.Reviewed count across all categories (AB#546238). Same null convention as Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueSummaryResponseDto.OperationsHaiAgreement. format: int32 operationsOverrideRate: type: - number - 'null' description: Overall override (disagreement) rate — percentage of reviewed decisions with ReviewOutcome=Overridden (AB#546238). Same null convention as Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueSummaryResponseDto.OperationsHaiAgreement. format: double operationsAvgReviewTimeSeconds: type: - number - 'null' description: 'Average Trust.Decision.ReviewDuration in seconds (AB#546238), Screening-only today. Distinct null semantics from the other Operations headline fields: this can legitimately be null even when Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueSummaryResponseDto.OperationsCategoryAgreement is populated — a tenant/range with reviewed decisions but zero review-duration records yet (recent rollout) has real category data but no duration data. Consumers must check this independently, not gate it on the category/monthly presence.' format: double operationsOverrideReasons: type: - array - 'null' items: $ref: '#/components/schemas/OperationsOverrideReasonDto' description: Override-reason breakdown across all 4 domains (AB#546238). Same null convention as Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueSummaryResponseDto.OperationsHaiAgreement. qaFindingCandidates: type: - array - 'null' items: $ref: '#/components/schemas/QaFindingCandidateDto' description: 'Recent QA finding candidates (AB#547300), most-recent-first, capped at a fixed page size — individual Trust.Decision.Overridden events, not aggregated. Same null-until-rollout convention as Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueSummaryResponseDto.OperationsHaiAgreement. BusinessMetrics (AB#547301) persists these as mutable findings; DigitalAgents does not track status/severity beyond the placeholder on Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.QaFindingCandidateDto.Severity.' docsSplitAcceptanceRate: type: - number - 'null' description: 'KYRA:Docs splitting-accuracy % — accepted / proposed across Trust.Split.Proposed/Accepted/Adjusted (AB#547426, shipped by SmartDocs under AB#543284). Null when no split activity occurred this period — not a manufactured 0%.' format: double docsSplitAvgTouchTimeSeconds: type: - number - 'null' description: Average KYRA:Docs split-phase touch time in seconds (AB#547426). Same null convention as Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueSummaryResponseDto.DocsSplitAcceptanceRate. format: double sourceAutoResolutionRate: type: - number - 'null' description: 'KYRA:Source auto-resolution rate — applied / (applied + overridden) for TaskType="AssociationMapping" (AB#547427, shipped by Association under AB#543288). Labelled "Source" per product decision — see `GetAgentValueSummaryQuery.BuildSourceAutoResolutionRate` for the AgentName caveat. Null when no AssociationMapping activity occurred this period.' format: double signalVerdictDistribution: type: - array - 'null' items: $ref: '#/components/schemas/SignalVerdictBucketDto' description: 'KYRA:Signal verdict distribution (AB#547428, shipped by Significance under AB#543289). Empty list when no Significance activity occurred this period — not the null-until-rollout convention used elsewhere in this DTO, since AB#543289 already ships in every environment this endpoint runs in.' signalUndeterminedRate: type: - number - 'null' description: KYRA:Signal undetermined-verdict rate (AB#547428). Null when Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueSummaryResponseDto.SignalVerdictDistribution is empty. format: double priorPeriod: $ref: '#/components/schemas/AgentValueSummaryPriorPeriodDto' additionalProperties: false description: Response DTO for the agent value summary endpoint. AgentValueSummaryPriorPeriodDto: type: object properties: docsClassified: type: integer format: int32 hitsAutoResolved: type: integer format: int32 suggestionsAccepted: type: integer format: int32 reportsGenerated: type: integer format: int32 sourcesRetrieved: type: integer format: int32 policyChecksRun: type: integer format: int32 signalChecksRun: type: integer format: int32 docsSplitAcceptanceRate: type: - number - 'null' description: KYRA:Docs splitting-accuracy % for the prior period. Same null-when-no-activity convention as Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueSummaryResponseDto.DocsSplitAcceptanceRate. format: double sourceAutoResolutionRate: type: - number - 'null' description: KYRA:Source auto-resolution rate for the prior period. Same null-when-no-activity convention as Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueSummaryResponseDto.SourceAutoResolutionRate. format: double signalUndeterminedRate: type: - number - 'null' description: KYRA:Signal undetermined-verdict rate for the prior period. Same null-when-no-activity convention as Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueSummaryResponseDto.SignalUndeterminedRate. format: double additionalProperties: false description: 'Aggregate action counts + accuracy rates for the period immediately preceding the requested [From, To] range, of the same length (AB#547471) — lets BusinessMetrics compute a per-agent trend direction and a real prior-period action count without a second round-trip. Deliberately a flat sibling block, not a duplicate of Fenergo.Nebula.DigitalAgents.Query.Application.Features.GetAgentValueSummary.AgentValueSummaryResponseDto — only the counts and rates a trend/prior-count calculation needs, not the full monthly-series/QA-findings payload for a comparison period nobody asked for at that granularity.' ServiceResponseMessage: type: object properties: message: type: - string - 'null' type: type: - string - 'null' errorCode: type: - string - 'null' additionalProperties: false SignalVerdictBucketDto: required: - count - pct - verdict type: object properties: verdict: type: - string - 'null' description: '"Significant" | "Insignificant" | "Undetermined" (verbatim Verdict dimension value), or "Unknown" when missing.' count: type: integer description: Count of runs with this verdict. format: int32 pct: type: number description: Percentage of all Significance runs with this verdict, rounded to 1dp. format: double additionalProperties: false description: 'A single verdict bucket in KYRA:Signal''s verdict distribution (AB#547428), sourced from Trust.Run{Verdict} (Significant/Insignificant/Undetermined), filtered to AgentName=SignificanceEngine_Evaluation.' OperationsCategoryDto: required: - category - interventionCount type: object properties: category: type: - string - 'null' description: Verbatim Trust.Decision.* DecisionType value (e.g. "HitResolution", "FieldExtraction"). interventionCount: type: integer description: Count of Trust.Decision.Overridden rows for this category. Uniformly available across all 4 domains. format: int32 agreementRate: type: - number - 'null' description: Percentage of reviewed decisions confirmed (not overridden). Null when no review denominator exists for this category. format: double reviewCount: type: - integer - 'null' description: Count of Trust.Decision.Reviewed rows for this category. Null when no review denominator exists for this category. format: int32 additionalProperties: false description: 'Per-decision-category intervention count and agreement rate, sourced from Trust.Decision.Overridden (all four domains) and Trust.Decision.Reviewed (Screening only today — see AB#546092 Open Question 1).' AgentMetricsQueryParametersServiceRequest: type: object properties: data: $ref: '#/components/schemas/AgentMetricsQueryParameters' additionalProperties: false securitySchemes: Bearer: type: apiKey description: Please insert JWT with Bearer into field name: Authorization in: header