@coval/sdk 0.7.0 → 0.7.2

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.
Files changed (101) hide show
  1. package/dist/CovalClient.d.ts +3 -2
  2. package/dist/CovalClient.d.ts.map +1 -1
  3. package/dist/CovalClient.js +4 -1
  4. package/dist/CovalClient.js.map +1 -1
  5. package/dist/generated/apis/OrganizationUsersApi.d.ts +68 -0
  6. package/dist/generated/apis/OrganizationUsersApi.d.ts.map +1 -0
  7. package/dist/generated/apis/OrganizationUsersApi.js +61 -0
  8. package/dist/generated/apis/OrganizationUsersApi.js.map +1 -0
  9. package/dist/generated/apis/ReviewAnnotationsApi.d.ts +16 -16
  10. package/dist/generated/apis/ReviewAnnotationsApi.js +6 -6
  11. package/dist/generated/apis/ReviewProjectsApi.d.ts +4 -4
  12. package/dist/generated/apis/ReviewProjectsApi.js +2 -2
  13. package/dist/generated/apis/SimulatedConversationsApi.d.ts +84 -0
  14. package/dist/generated/apis/SimulatedConversationsApi.d.ts.map +1 -1
  15. package/dist/generated/apis/SimulatedConversationsApi.js +85 -0
  16. package/dist/generated/apis/SimulatedConversationsApi.js.map +1 -1
  17. package/dist/generated/apis/index.d.ts +1 -0
  18. package/dist/generated/apis/index.d.ts.map +1 -1
  19. package/dist/generated/apis/index.js +1 -0
  20. package/dist/generated/apis/index.js.map +1 -1
  21. package/dist/generated/models/CovalAgentsAPIAgentResourceModelType.d.ts +1 -0
  22. package/dist/generated/models/CovalAgentsAPIAgentResourceModelType.d.ts.map +1 -1
  23. package/dist/generated/models/CovalAgentsAPIAgentResourceModelType.js +1 -0
  24. package/dist/generated/models/CovalAgentsAPIAgentResourceModelType.js.map +1 -1
  25. package/dist/generated/models/CovalAgentsAPISimulatorType.d.ts +2 -0
  26. package/dist/generated/models/CovalAgentsAPISimulatorType.d.ts.map +1 -1
  27. package/dist/generated/models/CovalAgentsAPISimulatorType.js +2 -0
  28. package/dist/generated/models/CovalAgentsAPISimulatorType.js.map +1 -1
  29. package/dist/generated/models/CovalMetricsAPIMetricVersionResource.d.ts +1 -1
  30. package/dist/generated/models/CovalMetricsAPIRecentlyDeletedMetricResource.d.ts +1 -1
  31. package/dist/generated/models/CovalOrganizationAPIListOrganizationUsersResponse.d.ts +40 -0
  32. package/dist/generated/models/CovalOrganizationAPIListOrganizationUsersResponse.d.ts.map +1 -0
  33. package/dist/generated/models/CovalOrganizationAPIListOrganizationUsersResponse.js +45 -0
  34. package/dist/generated/models/CovalOrganizationAPIListOrganizationUsersResponse.js.map +1 -0
  35. package/dist/generated/models/CovalOrganizationAPIOrganizationUser.d.ts +75 -0
  36. package/dist/generated/models/CovalOrganizationAPIOrganizationUser.d.ts.map +1 -0
  37. package/dist/generated/models/CovalOrganizationAPIOrganizationUser.js +60 -0
  38. package/dist/generated/models/CovalOrganizationAPIOrganizationUser.js.map +1 -0
  39. package/dist/generated/models/CovalReviewsAPICreateReviewAnnotationRequest.d.ts +2 -2
  40. package/dist/generated/models/CovalReviewsAPIProjectType.d.ts +1 -1
  41. package/dist/generated/models/CovalReviewsAPIProjectType.js +1 -1
  42. package/dist/generated/models/CovalReviewsAPIReviewAnnotationResource.d.ts +2 -2
  43. package/dist/generated/models/CovalReviewsAPIReviewAnnotationWithMetricVersionResource.d.ts +1 -1
  44. package/dist/generated/models/CovalReviewsAPIReviewProjectResource.d.ts +6 -0
  45. package/dist/generated/models/CovalReviewsAPIReviewProjectResource.d.ts.map +1 -1
  46. package/dist/generated/models/CovalReviewsAPIReviewProjectResource.js +2 -0
  47. package/dist/generated/models/CovalReviewsAPIReviewProjectResource.js.map +1 -1
  48. package/dist/generated/models/CovalReviewsAPIUpdateReviewAnnotationRequest.d.ts +7 -3
  49. package/dist/generated/models/CovalReviewsAPIUpdateReviewAnnotationRequest.d.ts.map +1 -1
  50. package/dist/generated/models/CovalReviewsAPIUpdateReviewAnnotationRequest.js.map +1 -1
  51. package/dist/generated/models/CovalReviewsAPIUpdateReviewProjectRequest.d.ts +6 -0
  52. package/dist/generated/models/CovalReviewsAPIUpdateReviewProjectRequest.d.ts.map +1 -1
  53. package/dist/generated/models/CovalReviewsAPIUpdateReviewProjectRequest.js +2 -0
  54. package/dist/generated/models/CovalReviewsAPIUpdateReviewProjectRequest.js.map +1 -1
  55. package/dist/generated/models/CovalRunTemplatesAPIErrorResponseError.d.ts +1 -0
  56. package/dist/generated/models/CovalRunTemplatesAPIErrorResponseError.d.ts.map +1 -1
  57. package/dist/generated/models/CovalRunTemplatesAPIErrorResponseError.js +1 -0
  58. package/dist/generated/models/CovalRunTemplatesAPIErrorResponseError.js.map +1 -1
  59. package/dist/generated/models/CovalRunsAPIError.d.ts +1 -0
  60. package/dist/generated/models/CovalRunsAPIError.d.ts.map +1 -1
  61. package/dist/generated/models/CovalRunsAPIError.js +1 -0
  62. package/dist/generated/models/CovalRunsAPIError.js.map +1 -1
  63. package/dist/generated/models/CovalSimulatedConversationsAPIRerunSimulatedConversationMetricsRequest.d.ts +1 -1
  64. package/dist/generated/models/GetSimulationAttribute200Response.d.ts +27 -0
  65. package/dist/generated/models/GetSimulationAttribute200Response.d.ts.map +1 -0
  66. package/dist/generated/models/GetSimulationAttribute200Response.js +32 -0
  67. package/dist/generated/models/GetSimulationAttribute200Response.js.map +1 -0
  68. package/dist/generated/models/GetSimulationConnect200Response.d.ts +76 -0
  69. package/dist/generated/models/GetSimulationConnect200Response.d.ts.map +1 -0
  70. package/dist/generated/models/GetSimulationConnect200Response.js +68 -0
  71. package/dist/generated/models/GetSimulationConnect200Response.js.map +1 -0
  72. package/dist/generated/models/index.d.ts +4 -0
  73. package/dist/generated/models/index.d.ts.map +1 -1
  74. package/dist/generated/models/index.js +4 -0
  75. package/dist/generated/models/index.js.map +1 -1
  76. package/package.json +1 -1
  77. package/src/CovalClient.ts +4 -0
  78. package/src/generated/apis/OrganizationUsersApi.ts +123 -0
  79. package/src/generated/apis/ReviewAnnotationsApi.ts +16 -16
  80. package/src/generated/apis/ReviewProjectsApi.ts +4 -4
  81. package/src/generated/apis/SimulatedConversationsApi.ts +186 -0
  82. package/src/generated/apis/index.ts +1 -0
  83. package/src/generated/models/CovalAgentsAPIAgentResourceModelType.ts +1 -0
  84. package/src/generated/models/CovalAgentsAPISimulatorType.ts +2 -0
  85. package/src/generated/models/CovalMetricsAPIMetricVersionResource.ts +1 -1
  86. package/src/generated/models/CovalMetricsAPIRecentlyDeletedMetricResource.ts +1 -1
  87. package/src/generated/models/CovalOrganizationAPIListOrganizationUsersResponse.ts +81 -0
  88. package/src/generated/models/CovalOrganizationAPIOrganizationUser.ts +123 -0
  89. package/src/generated/models/CovalReviewsAPICreateReviewAnnotationRequest.ts +2 -2
  90. package/src/generated/models/CovalReviewsAPIProjectType.ts +1 -1
  91. package/src/generated/models/CovalReviewsAPIReviewAnnotationResource.ts +2 -2
  92. package/src/generated/models/CovalReviewsAPIReviewAnnotationWithMetricVersionResource.ts +1 -1
  93. package/src/generated/models/CovalReviewsAPIReviewProjectResource.ts +8 -0
  94. package/src/generated/models/CovalReviewsAPIUpdateReviewAnnotationRequest.ts +7 -3
  95. package/src/generated/models/CovalReviewsAPIUpdateReviewProjectRequest.ts +8 -0
  96. package/src/generated/models/CovalRunTemplatesAPIErrorResponseError.ts +1 -0
  97. package/src/generated/models/CovalRunsAPIError.ts +1 -0
  98. package/src/generated/models/CovalSimulatedConversationsAPIRerunSimulatedConversationMetricsRequest.ts +1 -1
  99. package/src/generated/models/GetSimulationAttribute200Response.ts +46 -0
  100. package/src/generated/models/GetSimulationConnect200Response.ts +123 -0
  101. package/src/generated/models/index.ts +4 -0
@@ -184,7 +184,7 @@ export interface ReviewProjectsApiInterface {
184
184
  createReviewProjectRequestOpts(requestParameters: CreateReviewProjectRequest): Promise<runtime.RequestOpts>;
185
185
 
186
186
  /**
187
- * Create a new review project. Automatically generates annotations for every (simulation, metric, assignee) combination.
187
+ * Create a new review project defining assignments for the configured (simulation, metric, assignee) combinations. Assignments track review work separately from saved annotations. Submit review data with POST `/review-annotations` and use the returned annotation ID for later edits.
188
188
  * @summary Create review project
189
189
  * @param {CovalReviewsAPICreateReviewProjectRequest} covalReviewsAPICreateReviewProjectRequest
190
190
  * @param {string} [xCovalWorkspaceId] Workspace that scopes this operation. When omitted, the organization\&#39;s active default workspace is used when one can be resolved.
@@ -195,7 +195,7 @@ export interface ReviewProjectsApiInterface {
195
195
  createReviewProjectRaw(requestParameters: CreateReviewProjectRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CovalReviewsAPICreateReviewProjectResponse>>;
196
196
 
197
197
  /**
198
- * Create a new review project. Automatically generates annotations for every (simulation, metric, assignee) combination.
198
+ * Create a new review project defining assignments for the configured (simulation, metric, assignee) combinations. Assignments track review work separately from saved annotations. Submit review data with POST `/review-annotations` and use the returned annotation ID for later edits.
199
199
  * Create review project
200
200
  */
201
201
  createReviewProject(requestParameters: CreateReviewProjectRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CovalReviewsAPICreateReviewProjectResponse>;
@@ -526,7 +526,7 @@ export class ReviewProjectsApi extends runtime.BaseAPI implements ReviewProjects
526
526
  }
527
527
 
528
528
  /**
529
- * Create a new review project. Automatically generates annotations for every (simulation, metric, assignee) combination.
529
+ * Create a new review project defining assignments for the configured (simulation, metric, assignee) combinations. Assignments track review work separately from saved annotations. Submit review data with POST `/review-annotations` and use the returned annotation ID for later edits.
530
530
  * Create review project
531
531
  */
532
532
  async createReviewProjectRaw(requestParameters: CreateReviewProjectRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<CovalReviewsAPICreateReviewProjectResponse>> {
@@ -537,7 +537,7 @@ export class ReviewProjectsApi extends runtime.BaseAPI implements ReviewProjects
537
537
  }
538
538
 
539
539
  /**
540
- * Create a new review project. Automatically generates annotations for every (simulation, metric, assignee) combination.
540
+ * Create a new review project defining assignments for the configured (simulation, metric, assignee) combinations. Assignments track review work separately from saved annotations. Submit review data with POST `/review-annotations` and use the returned annotation ID for later edits.
541
541
  * Create review project
542
542
  */
543
543
  async createReviewProject(requestParameters: CreateReviewProjectRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CovalReviewsAPICreateReviewProjectResponse> {
@@ -58,6 +58,16 @@ import {
58
58
  CovalSimulatedConversationsAPIUpdateSimulatedConversationResponseFromJSON,
59
59
  CovalSimulatedConversationsAPIUpdateSimulatedConversationResponseToJSON,
60
60
  } from '../models/CovalSimulatedConversationsAPIUpdateSimulatedConversationResponse.js';
61
+ import {
62
+ type GetSimulationAttribute200Response,
63
+ GetSimulationAttribute200ResponseFromJSON,
64
+ GetSimulationAttribute200ResponseToJSON,
65
+ } from '../models/GetSimulationAttribute200Response.js';
66
+ import {
67
+ type GetSimulationConnect200Response,
68
+ GetSimulationConnect200ResponseFromJSON,
69
+ GetSimulationConnect200ResponseToJSON,
70
+ } from '../models/GetSimulationConnect200Response.js';
61
71
 
62
72
  export interface DeleteSimulatedConversationRequest {
63
73
  simulationId: string;
@@ -71,6 +81,16 @@ export interface GetSimulatedConversationAudioRequest {
71
81
  simulationId: string;
72
82
  }
73
83
 
84
+ export interface GetSimulationAttributeRequest {
85
+ simulationId: string;
86
+ attributeName: string;
87
+ xCovalWorkspaceId?: string;
88
+ }
89
+
90
+ export interface GetSimulationConnectRequest {
91
+ simulationId: string;
92
+ }
93
+
74
94
  export interface ListSimulatedConversationsRequest {
75
95
  filter?: string;
76
96
  pageSize?: number;
@@ -172,6 +192,58 @@ export interface SimulatedConversationsApiInterface {
172
192
  */
173
193
  getSimulatedConversationAudio(requestParameters: GetSimulatedConversationAudioRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CovalSimulatedConversationsAPIGetSimulatedConversationAudioResponse>;
174
194
 
195
+ /**
196
+ * Creates request options for getSimulationAttribute without sending the request
197
+ * @param {string} simulationId Simulation output ID for the conversation. Pass {{simulation_output_id}} to your backend through a supported connection field and use the received value here.
198
+ * @param {string} attributeName Exact, case-sensitive top-level key in the test case\&#39;s expected_output_json. Dots are literal characters. URL-encode special characters.
199
+ * @param {string} [xCovalWorkspaceId] Workspace containing the simulation. Omit to use the organization\&#39;s default workspace. A resolved, accessible workspace is required.
200
+ * @throws {RequiredError}
201
+ * @memberof SimulatedConversationsApiInterface
202
+ */
203
+ getSimulationAttributeRequestOpts(requestParameters: GetSimulationAttributeRequest): Promise<runtime.RequestOpts>;
204
+
205
+ /**
206
+ * Returns an exact, case-sensitive top-level attribute from the simulation\'s current active test case. Names are literal keys, including dots, rather than paths. URL-encode names when necessary. Requires simulations:read permission. The simulation, run, test case and test set must be accessible in the authenticated organization and workspace. A resolved workspace is required. Select one with X-Coval-Workspace-Id when the organization has no default workspace. Legacy unassigned rows are accessible only through the default workspace. Monitoring conversations and deleted runs are excluded. This endpoint can be used while a simulation is running or after it finishes. JSON values return directly without an envelope. Null is a successful JSON value, while an absent attribute returns 404. Changes to the test case are visible on subsequent requests. This endpoint does not capture a snapshot or persist tool-call events. An object with type: image_ref is reserved for image references and must contain attachment: <name>, matching exactly one media attachment on the test case. Image responses contain raw PNG/JPEG bytes, with a maximum size of 4 MiB. Ordinary objects without that marker return unchanged. This deliberately returns content instead of an AIP-131 resource envelope: customer tool handlers consume the fixture directly, including image bytes. Both JSON and image response content are limited to 4 MiB. See [Retrieve test-case attributes during a simulation](https://docs.coval.ai/concepts/attributes/overview#retrieve-test-case-attributes-during-a-simulation) for attribute setup, passing the simulation ID to your backend, and request examples.
207
+ * @summary Retrieve a named simulation attribute
208
+ * @param {string} simulationId Simulation output ID for the conversation. Pass {{simulation_output_id}} to your backend through a supported connection field and use the received value here.
209
+ * @param {string} attributeName Exact, case-sensitive top-level key in the test case\&#39;s expected_output_json. Dots are literal characters. URL-encode special characters.
210
+ * @param {string} [xCovalWorkspaceId] Workspace containing the simulation. Omit to use the organization\&#39;s default workspace. A resolved, accessible workspace is required.
211
+ * @param {*} [options] Override http request option.
212
+ * @throws {RequiredError}
213
+ * @memberof SimulatedConversationsApiInterface
214
+ */
215
+ getSimulationAttributeRaw(requestParameters: GetSimulationAttributeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetSimulationAttribute200Response>>;
216
+
217
+ /**
218
+ * Returns an exact, case-sensitive top-level attribute from the simulation\'s current active test case. Names are literal keys, including dots, rather than paths. URL-encode names when necessary. Requires simulations:read permission. The simulation, run, test case and test set must be accessible in the authenticated organization and workspace. A resolved workspace is required. Select one with X-Coval-Workspace-Id when the organization has no default workspace. Legacy unassigned rows are accessible only through the default workspace. Monitoring conversations and deleted runs are excluded. This endpoint can be used while a simulation is running or after it finishes. JSON values return directly without an envelope. Null is a successful JSON value, while an absent attribute returns 404. Changes to the test case are visible on subsequent requests. This endpoint does not capture a snapshot or persist tool-call events. An object with type: image_ref is reserved for image references and must contain attachment: <name>, matching exactly one media attachment on the test case. Image responses contain raw PNG/JPEG bytes, with a maximum size of 4 MiB. Ordinary objects without that marker return unchanged. This deliberately returns content instead of an AIP-131 resource envelope: customer tool handlers consume the fixture directly, including image bytes. Both JSON and image response content are limited to 4 MiB. See [Retrieve test-case attributes during a simulation](https://docs.coval.ai/concepts/attributes/overview#retrieve-test-case-attributes-during-a-simulation) for attribute setup, passing the simulation ID to your backend, and request examples.
219
+ * Retrieve a named simulation attribute
220
+ */
221
+ getSimulationAttribute(requestParameters: GetSimulationAttributeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetSimulationAttribute200Response>;
222
+
223
+ /**
224
+ * Creates request options for getSimulationConnect without sending the request
225
+ * @param {string} simulationId The simulation execution ID.
226
+ * @throws {RequiredError}
227
+ * @memberof SimulatedConversationsApiInterface
228
+ */
229
+ getSimulationConnectRequestOpts(requestParameters: GetSimulationConnectRequest): Promise<runtime.RequestOpts>;
230
+
231
+ /**
232
+ * Returns the current SDK WebSocket connection state for a simulation. A READY response includes a short-lived, one-use token and a WSS URL. Poll until READY or a terminal status. The token is never returned after a successful connection, and responses must not be cached.
233
+ * @summary Discover SDK WebSocket connection
234
+ * @param {string} simulationId The simulation execution ID.
235
+ * @param {*} [options] Override http request option.
236
+ * @throws {RequiredError}
237
+ * @memberof SimulatedConversationsApiInterface
238
+ */
239
+ getSimulationConnectRaw(requestParameters: GetSimulationConnectRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetSimulationConnect200Response>>;
240
+
241
+ /**
242
+ * Returns the current SDK WebSocket connection state for a simulation. A READY response includes a short-lived, one-use token and a WSS URL. Poll until READY or a terminal status. The token is never returned after a successful connection, and responses must not be cached.
243
+ * Discover SDK WebSocket connection
244
+ */
245
+ getSimulationConnect(requestParameters: GetSimulationConnectRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetSimulationConnect200Response>;
246
+
175
247
  /**
176
248
  * Creates request options for listSimulatedConversations without sending the request
177
249
  * @param {string} [filter] Filter expression syntax. Supported fields: &#x60;status&#x60;, &#x60;agent_id&#x60;, &#x60;persona_id&#x60;, &#x60;test_set_id&#x60;, &#x60;test_case_id&#x60;, &#x60;run_id&#x60;, &#x60;external_conversation_id&#x60;, &#x60;mutation_id&#x60;, &#x60;mutation_name&#x60;, &#x60;create_time&#x60;, &#x60;metric.{metric_id}&#x60; Operators: &#x60;&#x3D;&#x60;, &#x60;!&#x3D;&#x60;, &#x60;&gt;&#x60;, &#x60;&lt;&#x60;, &#x60;&gt;&#x3D;&#x60;, &#x60;&lt;&#x3D;&#x60;, &#x60;AND&#x60;, &#x60;OR&#x60; A &#x60;metric.{metric_id}&#x60; predicate (score filtering; number and string metrics, type inferred from the literal) returns only simulations whose metric matches, with each simulation\&#39;s value per metric embedded inline (&#x60;metric_values&#x60;). On this path the request is keyset-paginated, ordered newest-first by creation time, and supports only &#x60;AND&#x60; alongside &#x60;create_time&#x60;, &#x60;agent_id&#x60;, &#x60;status&#x60;, &#x60;test_set_id&#x60;, and &#x60;persona_id&#x60;; other fields and any non-default &#x60;order_by&#x60; are rejected with 400, and &#x60;page_size&#x60; is capped at 100. Values may be unquoted or double-quoted. Values containing spaces must be quoted (e.g., &#x60;status&#x3D;\&quot;IN PROGRESS\&quot;&#x60;). The &#x60;external_conversation_id&#x60; field is your system\&#39;s conversation ID for cross-system lookup. **Mutation Filtering:** Use &#x60;mutation_id&#x60; or &#x60;mutation_name&#x60; to filter simulations by agent mutation variant. Base agent simulations have both &#x60;mutation_id&#x60; and &#x60;mutation_name&#x60; &#x3D; null. To get only base agent results, filter for simulations where &#x60;mutation_id&#x60; is not set.
@@ -440,6 +512,120 @@ export class SimulatedConversationsApi extends runtime.BaseAPI implements Simula
440
512
  return await response.value();
441
513
  }
442
514
 
515
+ /**
516
+ * Creates request options for getSimulationAttribute without sending the request
517
+ */
518
+ async getSimulationAttributeRequestOpts(requestParameters: GetSimulationAttributeRequest): Promise<runtime.RequestOpts> {
519
+ if (requestParameters['simulationId'] == null) {
520
+ throw new runtime.RequiredError(
521
+ 'simulationId',
522
+ 'Required parameter "simulationId" was null or undefined when calling getSimulationAttribute().'
523
+ );
524
+ }
525
+
526
+ if (requestParameters['attributeName'] == null) {
527
+ throw new runtime.RequiredError(
528
+ 'attributeName',
529
+ 'Required parameter "attributeName" was null or undefined when calling getSimulationAttribute().'
530
+ );
531
+ }
532
+
533
+ const queryParameters: any = {};
534
+
535
+ const headerParameters: runtime.HTTPHeaders = {};
536
+
537
+ if (requestParameters['xCovalWorkspaceId'] != null) {
538
+ headerParameters['X-Coval-Workspace-Id'] = String(requestParameters['xCovalWorkspaceId']);
539
+ }
540
+
541
+ if (this.configuration && this.configuration.apiKey) {
542
+ headerParameters["X-API-Key"] = await this.configuration.apiKey("X-API-Key"); // Coval_Simulated_Conversations_API_ApiKeyAuth authentication
543
+ }
544
+
545
+
546
+ let urlPath = `/simulations/{simulation_id}/attributes/{attribute_name}`;
547
+ urlPath = urlPath.replace('{simulation_id}', encodeURIComponent(String(requestParameters['simulationId'])));
548
+ urlPath = urlPath.replace('{attribute_name}', encodeURIComponent(String(requestParameters['attributeName'])));
549
+
550
+ return {
551
+ path: urlPath,
552
+ method: 'GET',
553
+ headers: headerParameters,
554
+ query: queryParameters,
555
+ };
556
+ }
557
+
558
+ /**
559
+ * Returns an exact, case-sensitive top-level attribute from the simulation\'s current active test case. Names are literal keys, including dots, rather than paths. URL-encode names when necessary. Requires simulations:read permission. The simulation, run, test case and test set must be accessible in the authenticated organization and workspace. A resolved workspace is required. Select one with X-Coval-Workspace-Id when the organization has no default workspace. Legacy unassigned rows are accessible only through the default workspace. Monitoring conversations and deleted runs are excluded. This endpoint can be used while a simulation is running or after it finishes. JSON values return directly without an envelope. Null is a successful JSON value, while an absent attribute returns 404. Changes to the test case are visible on subsequent requests. This endpoint does not capture a snapshot or persist tool-call events. An object with type: image_ref is reserved for image references and must contain attachment: <name>, matching exactly one media attachment on the test case. Image responses contain raw PNG/JPEG bytes, with a maximum size of 4 MiB. Ordinary objects without that marker return unchanged. This deliberately returns content instead of an AIP-131 resource envelope: customer tool handlers consume the fixture directly, including image bytes. Both JSON and image response content are limited to 4 MiB. See [Retrieve test-case attributes during a simulation](https://docs.coval.ai/concepts/attributes/overview#retrieve-test-case-attributes-during-a-simulation) for attribute setup, passing the simulation ID to your backend, and request examples.
560
+ * Retrieve a named simulation attribute
561
+ */
562
+ async getSimulationAttributeRaw(requestParameters: GetSimulationAttributeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetSimulationAttribute200Response>> {
563
+ const requestOptions = await this.getSimulationAttributeRequestOpts(requestParameters);
564
+ const response = await this.request(requestOptions, initOverrides);
565
+
566
+ return new runtime.JSONApiResponse(response, (jsonValue) => GetSimulationAttribute200ResponseFromJSON(jsonValue));
567
+ }
568
+
569
+ /**
570
+ * Returns an exact, case-sensitive top-level attribute from the simulation\'s current active test case. Names are literal keys, including dots, rather than paths. URL-encode names when necessary. Requires simulations:read permission. The simulation, run, test case and test set must be accessible in the authenticated organization and workspace. A resolved workspace is required. Select one with X-Coval-Workspace-Id when the organization has no default workspace. Legacy unassigned rows are accessible only through the default workspace. Monitoring conversations and deleted runs are excluded. This endpoint can be used while a simulation is running or after it finishes. JSON values return directly without an envelope. Null is a successful JSON value, while an absent attribute returns 404. Changes to the test case are visible on subsequent requests. This endpoint does not capture a snapshot or persist tool-call events. An object with type: image_ref is reserved for image references and must contain attachment: <name>, matching exactly one media attachment on the test case. Image responses contain raw PNG/JPEG bytes, with a maximum size of 4 MiB. Ordinary objects without that marker return unchanged. This deliberately returns content instead of an AIP-131 resource envelope: customer tool handlers consume the fixture directly, including image bytes. Both JSON and image response content are limited to 4 MiB. See [Retrieve test-case attributes during a simulation](https://docs.coval.ai/concepts/attributes/overview#retrieve-test-case-attributes-during-a-simulation) for attribute setup, passing the simulation ID to your backend, and request examples.
571
+ * Retrieve a named simulation attribute
572
+ */
573
+ async getSimulationAttribute(requestParameters: GetSimulationAttributeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetSimulationAttribute200Response> {
574
+ const response = await this.getSimulationAttributeRaw(requestParameters, initOverrides);
575
+ return await response.value();
576
+ }
577
+
578
+ /**
579
+ * Creates request options for getSimulationConnect without sending the request
580
+ */
581
+ async getSimulationConnectRequestOpts(requestParameters: GetSimulationConnectRequest): Promise<runtime.RequestOpts> {
582
+ if (requestParameters['simulationId'] == null) {
583
+ throw new runtime.RequiredError(
584
+ 'simulationId',
585
+ 'Required parameter "simulationId" was null or undefined when calling getSimulationConnect().'
586
+ );
587
+ }
588
+
589
+ const queryParameters: any = {};
590
+
591
+ const headerParameters: runtime.HTTPHeaders = {};
592
+
593
+ if (this.configuration && this.configuration.apiKey) {
594
+ headerParameters["X-API-Key"] = await this.configuration.apiKey("X-API-Key"); // Coval_Simulated_Conversations_API_ApiKeyAuth authentication
595
+ }
596
+
597
+
598
+ let urlPath = `/simulations/{simulation_id}/connect`;
599
+ urlPath = urlPath.replace('{simulation_id}', encodeURIComponent(String(requestParameters['simulationId'])));
600
+
601
+ return {
602
+ path: urlPath,
603
+ method: 'GET',
604
+ headers: headerParameters,
605
+ query: queryParameters,
606
+ };
607
+ }
608
+
609
+ /**
610
+ * Returns the current SDK WebSocket connection state for a simulation. A READY response includes a short-lived, one-use token and a WSS URL. Poll until READY or a terminal status. The token is never returned after a successful connection, and responses must not be cached.
611
+ * Discover SDK WebSocket connection
612
+ */
613
+ async getSimulationConnectRaw(requestParameters: GetSimulationConnectRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetSimulationConnect200Response>> {
614
+ const requestOptions = await this.getSimulationConnectRequestOpts(requestParameters);
615
+ const response = await this.request(requestOptions, initOverrides);
616
+
617
+ return new runtime.JSONApiResponse(response, (jsonValue) => GetSimulationConnect200ResponseFromJSON(jsonValue));
618
+ }
619
+
620
+ /**
621
+ * Returns the current SDK WebSocket connection state for a simulation. A READY response includes a short-lived, one-use token and a WSS URL. Poll until READY or a terminal status. The token is never returned after a successful connection, and responses must not be cached.
622
+ * Discover SDK WebSocket connection
623
+ */
624
+ async getSimulationConnect(requestParameters: GetSimulationConnectRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetSimulationConnect200Response> {
625
+ const response = await this.getSimulationConnectRaw(requestParameters, initOverrides);
626
+ return await response.value();
627
+ }
628
+
443
629
  /**
444
630
  * Creates request options for listSimulatedConversations without sending the request
445
631
  */
@@ -14,6 +14,7 @@ export * from './MonitorEventsApi.js';
14
14
  export * from './MonitorsApi.js';
15
15
  export * from './MutationsApi.js';
16
16
  export * from './OrganizationConversationsConfigApi.js';
17
+ export * from './OrganizationUsersApi.js';
17
18
  export * from './PersonasApi.js';
18
19
  export * from './ReportsApi.js';
19
20
  export * from './ReviewAnnotationsApi.js';
@@ -29,6 +29,7 @@ export const CovalAgentsAPIAgentResourceModelType = {
29
29
  ModelTypeEmail: 'MODEL_TYPE_EMAIL',
30
30
  ModelTypeSms: 'MODEL_TYPE_SMS',
31
31
  ModelTypeWebsocket: 'MODEL_TYPE_WEBSOCKET',
32
+ ModelTypeSdkWebsocket: 'MODEL_TYPE_SDK_WEBSOCKET',
32
33
  ModelTypeOpenaiRealtime: 'MODEL_TYPE_OPENAI_REALTIME',
33
34
  ModelTypeGeminiRealtime: 'MODEL_TYPE_GEMINI_REALTIME',
34
35
  ModelTypeGrokRealtime: 'MODEL_TYPE_GROK_REALTIME',
@@ -24,6 +24,7 @@
24
24
  * - **MODEL_TYPE_EMAIL**: Email-based text agents
25
25
  * - **MODEL_TYPE_SMS**: SMS messaging agents (requires phone_number in E.164 format)
26
26
  * - **MODEL_TYPE_WEBSOCKET**: WebSocket voice agents (requires metadata.endpoint wss:// URL in direct mode; metadata.initialization_json is optional)
27
+ * - **MODEL_TYPE_SDK_WEBSOCKET**: Voice agents that connect outbound to the Cloudflare Durable Object relay using Coval Agent SDK.
27
28
  * - **MODEL_TYPE_LIVEKIT**: LiveKit agents (requires metadata.generate_token_endpoint and metadata.livekit_url)
28
29
  * - **MODEL_TYPE_DAILY**: Pipecat Cloud agents (requires metadata.pipecat_api_key and metadata.agent_name)
29
30
  * - **MODEL_TYPE_OPENAI_REALTIME**: OpenAI Realtime voice-to-voice agents
@@ -42,6 +43,7 @@ export const CovalAgentsAPISimulatorType = {
42
43
  ModelTypeEmail: 'MODEL_TYPE_EMAIL',
43
44
  ModelTypeSms: 'MODEL_TYPE_SMS',
44
45
  ModelTypeWebsocket: 'MODEL_TYPE_WEBSOCKET',
46
+ ModelTypeSdkWebsocket: 'MODEL_TYPE_SDK_WEBSOCKET',
45
47
  ModelTypeLivekit: 'MODEL_TYPE_LIVEKIT',
46
48
  ModelTypeDaily: 'MODEL_TYPE_DAILY',
47
49
  ModelTypeOpenaiRealtime: 'MODEL_TYPE_OPENAI_REALTIME',
@@ -90,7 +90,7 @@ export interface CovalMetricsAPIMetricVersionResource {
90
90
  */
91
91
  label?: string | null;
92
92
  /**
93
- * Who created this version (email address)
93
+ * Version author: canonical user ID for system-materialized versions; other entries may contain an email address or an empty string when unknown
94
94
  * @type {string}
95
95
  * @memberof CovalMetricsAPIMetricVersionResource
96
96
  */
@@ -44,7 +44,7 @@ export interface CovalMetricsAPIRecentlyDeletedMetricResource {
44
44
  */
45
45
  delete_time?: Date | null;
46
46
  /**
47
- * Who deleted the metric (email address)
47
+ * Canonical user ID of the last editor at deletion, or null when unknown
48
48
  * @type {string}
49
49
  * @memberof CovalMetricsAPIRecentlyDeletedMetricResource
50
50
  */
@@ -0,0 +1,81 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Coval Agents API
5
+ * Manage configurations for simulations and evaluations.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ * Contact: support@coval.dev
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime.js';
16
+ import type { CovalOrganizationAPIOrganizationUser } from './CovalOrganizationAPIOrganizationUser.js';
17
+ import {
18
+ CovalOrganizationAPIOrganizationUserFromJSON,
19
+ CovalOrganizationAPIOrganizationUserFromJSONTyped,
20
+ CovalOrganizationAPIOrganizationUserToJSON,
21
+ CovalOrganizationAPIOrganizationUserToJSONTyped,
22
+ } from './CovalOrganizationAPIOrganizationUser.js';
23
+
24
+ /**
25
+ *
26
+ * @export
27
+ * @interface CovalOrganizationAPIListOrganizationUsersResponse
28
+ */
29
+ export interface CovalOrganizationAPIListOrganizationUsersResponse {
30
+ /**
31
+ * Current organization members in this page.
32
+ * @type {Array<CovalOrganizationAPIOrganizationUser>}
33
+ * @memberof CovalOrganizationAPIListOrganizationUsersResponse
34
+ */
35
+ users?: Array<CovalOrganizationAPIOrganizationUser>;
36
+ /**
37
+ * Continue with this token; null when no pages remain.
38
+ * @type {string}
39
+ * @memberof CovalOrganizationAPIListOrganizationUsersResponse
40
+ */
41
+ next_page_token?: string | null;
42
+ }
43
+
44
+ /**
45
+ * Check if a given object implements the CovalOrganizationAPIListOrganizationUsersResponse interface.
46
+ */
47
+ export function instanceOfCovalOrganizationAPIListOrganizationUsersResponse(value: object): value is CovalOrganizationAPIListOrganizationUsersResponse {
48
+ return true;
49
+ }
50
+
51
+ export function CovalOrganizationAPIListOrganizationUsersResponseFromJSON(json: any): CovalOrganizationAPIListOrganizationUsersResponse {
52
+ return CovalOrganizationAPIListOrganizationUsersResponseFromJSONTyped(json, false);
53
+ }
54
+
55
+ export function CovalOrganizationAPIListOrganizationUsersResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): CovalOrganizationAPIListOrganizationUsersResponse {
56
+ if (json == null) {
57
+ return json;
58
+ }
59
+ return {
60
+
61
+ 'users': json['users'] == null ? undefined : ((json['users'] as Array<any>).map(CovalOrganizationAPIOrganizationUserFromJSON)),
62
+ 'next_page_token': json['next_page_token'] == null ? undefined : json['next_page_token'],
63
+ };
64
+ }
65
+
66
+ export function CovalOrganizationAPIListOrganizationUsersResponseToJSON(json: any): CovalOrganizationAPIListOrganizationUsersResponse {
67
+ return CovalOrganizationAPIListOrganizationUsersResponseToJSONTyped(json, false);
68
+ }
69
+
70
+ export function CovalOrganizationAPIListOrganizationUsersResponseToJSONTyped(value?: CovalOrganizationAPIListOrganizationUsersResponse | null, ignoreDiscriminator: boolean = false): any {
71
+ if (value == null) {
72
+ return value;
73
+ }
74
+
75
+ return {
76
+
77
+ 'users': value['users'] == null ? undefined : ((value['users'] as Array<any>).map(CovalOrganizationAPIOrganizationUserToJSON)),
78
+ 'next_page_token': value['next_page_token'],
79
+ };
80
+ }
81
+
@@ -0,0 +1,123 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * Coval Agents API
5
+ * Manage configurations for simulations and evaluations.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ * Contact: support@coval.dev
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import { mapValues } from '../runtime.js';
16
+ /**
17
+ *
18
+ * @export
19
+ * @interface CovalOrganizationAPIOrganizationUser
20
+ */
21
+ export interface CovalOrganizationAPIOrganizationUser {
22
+ /**
23
+ * Coval user ULID. Null when the member has not synced to Coval.
24
+ * @type {string}
25
+ * @memberof CovalOrganizationAPIOrganizationUser
26
+ */
27
+ id?: string | null;
28
+ /**
29
+ * Member's primary identifier from Clerk; empty when unavailable.
30
+ * @type {string}
31
+ * @memberof CovalOrganizationAPIOrganizationUser
32
+ */
33
+ email: string;
34
+ /**
35
+ * Coval display name, falling back to the Clerk name or email.
36
+ * @type {string}
37
+ * @memberof CovalOrganizationAPIOrganizationUser
38
+ */
39
+ display_name: string;
40
+ /**
41
+ * First name from Clerk, or null when unset.
42
+ * @type {string}
43
+ * @memberof CovalOrganizationAPIOrganizationUser
44
+ */
45
+ first_name?: string | null;
46
+ /**
47
+ * Last name from Clerk, or null when unset.
48
+ * @type {string}
49
+ * @memberof CovalOrganizationAPIOrganizationUser
50
+ */
51
+ last_name?: string | null;
52
+ /**
53
+ * Profile image URL from Clerk, or null when unset.
54
+ * @type {string}
55
+ * @memberof CovalOrganizationAPIOrganizationUser
56
+ */
57
+ image_url?: string | null;
58
+ /**
59
+ * Coval user creation time, or null before synchronization.
60
+ * @type {Date}
61
+ * @memberof CovalOrganizationAPIOrganizationUser
62
+ */
63
+ created_at?: Date | null;
64
+ /**
65
+ * Coval user update time, or null before synchronization.
66
+ * @type {Date}
67
+ * @memberof CovalOrganizationAPIOrganizationUser
68
+ */
69
+ last_updated_at?: Date | null;
70
+ }
71
+
72
+ /**
73
+ * Check if a given object implements the CovalOrganizationAPIOrganizationUser interface.
74
+ */
75
+ export function instanceOfCovalOrganizationAPIOrganizationUser(value: object): value is CovalOrganizationAPIOrganizationUser {
76
+ if (!('email' in value) || value['email'] === undefined) return false;
77
+ if (!('display_name' in value) || value['display_name'] === undefined) return false;
78
+ return true;
79
+ }
80
+
81
+ export function CovalOrganizationAPIOrganizationUserFromJSON(json: any): CovalOrganizationAPIOrganizationUser {
82
+ return CovalOrganizationAPIOrganizationUserFromJSONTyped(json, false);
83
+ }
84
+
85
+ export function CovalOrganizationAPIOrganizationUserFromJSONTyped(json: any, ignoreDiscriminator: boolean): CovalOrganizationAPIOrganizationUser {
86
+ if (json == null) {
87
+ return json;
88
+ }
89
+ return {
90
+
91
+ 'id': json['id'] == null ? undefined : json['id'],
92
+ 'email': json['email'],
93
+ 'display_name': json['display_name'],
94
+ 'first_name': json['first_name'] == null ? undefined : json['first_name'],
95
+ 'last_name': json['last_name'] == null ? undefined : json['last_name'],
96
+ 'image_url': json['image_url'] == null ? undefined : json['image_url'],
97
+ 'created_at': json['created_at'] == null ? undefined : (new Date(json['created_at'])),
98
+ 'last_updated_at': json['last_updated_at'] == null ? undefined : (new Date(json['last_updated_at'])),
99
+ };
100
+ }
101
+
102
+ export function CovalOrganizationAPIOrganizationUserToJSON(json: any): CovalOrganizationAPIOrganizationUser {
103
+ return CovalOrganizationAPIOrganizationUserToJSONTyped(json, false);
104
+ }
105
+
106
+ export function CovalOrganizationAPIOrganizationUserToJSONTyped(value?: CovalOrganizationAPIOrganizationUser | null, ignoreDiscriminator: boolean = false): any {
107
+ if (value == null) {
108
+ return value;
109
+ }
110
+
111
+ return {
112
+
113
+ 'id': value['id'],
114
+ 'email': value['email'],
115
+ 'display_name': value['display_name'],
116
+ 'first_name': value['first_name'],
117
+ 'last_name': value['last_name'],
118
+ 'image_url': value['image_url'],
119
+ 'created_at': value['created_at'] == null ? value['created_at'] : value['created_at'].toISOString(),
120
+ 'last_updated_at': value['last_updated_at'] == null ? value['last_updated_at'] : value['last_updated_at'].toISOString(),
121
+ };
122
+ }
123
+
@@ -44,13 +44,13 @@ export interface CovalReviewsAPICreateReviewAnnotationRequest {
44
44
  */
45
45
  assignee?: string | null;
46
46
  /**
47
- * Optional ground truth numeric value (auto-completes annotation)
47
+ * Optional ground truth numeric value; completion also depends on applicable project rules
48
48
  * @type {number}
49
49
  * @memberof CovalReviewsAPICreateReviewAnnotationRequest
50
50
  */
51
51
  ground_truth_float_value?: number | null;
52
52
  /**
53
- * Optional ground truth string value (auto-completes annotation)
53
+ * Optional ground truth string value; completion also depends on applicable project rules
54
54
  * @type {string}
55
55
  * @memberof CovalReviewsAPICreateReviewAnnotationRequest
56
56
  */
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
  /**
17
- * Project type: COLLABORATIVE (shared annotations) or INDIVIDUAL (per-assignee annotations)
17
+ * Project review workflow type: PROJECT_COLLABORATIVE or PROJECT_INDIVIDUAL
18
18
  * @export
19
19
  */
20
20
  export const CovalReviewsAPIProjectType = {
@@ -36,7 +36,7 @@ import {
36
36
  } from './CovalReviewsAPIAnnotationStatus.js';
37
37
 
38
38
  /**
39
- * A single review annotation resource.
39
+ * Saved review data for a simulation output, metric, and reviewer.
40
40
  * @export
41
41
  * @interface CovalReviewsAPIReviewAnnotationResource
42
42
  */
@@ -48,7 +48,7 @@ export interface CovalReviewsAPIReviewAnnotationResource {
48
48
  */
49
49
  name: string;
50
50
  /**
51
- * Unique annotation ID
51
+ * Saved annotation ID used for GET, PATCH, and DELETE; not a project assignment ID
52
52
  * @type {string}
53
53
  * @memberof CovalReviewsAPIReviewAnnotationResource
54
54
  */
@@ -48,7 +48,7 @@ export interface CovalReviewsAPIReviewAnnotationWithMetricVersionResource {
48
48
  */
49
49
  name: string;
50
50
  /**
51
- * Unique annotation ID
51
+ * Saved annotation ID used for GET, PATCH, and DELETE; not a project assignment ID
52
52
  * @type {string}
53
53
  * @memberof CovalReviewsAPIReviewAnnotationWithMetricVersionResource
54
54
  */
@@ -142,6 +142,12 @@ export interface CovalReviewsAPIReviewProjectResource {
142
142
  * @memberof CovalReviewsAPIReviewProjectResource
143
143
  */
144
144
  allow_metric_skipping?: boolean;
145
+ /**
146
+ * Metric IDs eligible for skipping. Null means all linked metrics; an empty list means none.
147
+ * @type {Array<string>}
148
+ * @memberof CovalReviewsAPIReviewProjectResource
149
+ */
150
+ skippable_metric_ids?: Array<string> | null;
145
151
  /**
146
152
  * Creation timestamp (ISO 8601)
147
153
  * @type {Date}
@@ -268,6 +274,7 @@ export function CovalReviewsAPIReviewProjectResourceFromJSONTyped(json: any, ign
268
274
  'project_rules': json['project_rules'] == null ? undefined : ((json['project_rules'] as Array<any>).map(CovalReviewsAPIProjectRuleFromJSON)),
269
275
  'enforced_collaboration': json['enforced_collaboration'] == null ? undefined : json['enforced_collaboration'],
270
276
  'allow_metric_skipping': json['allow_metric_skipping'] == null ? undefined : json['allow_metric_skipping'],
277
+ 'skippable_metric_ids': json['skippable_metric_ids'] == null ? undefined : json['skippable_metric_ids'],
271
278
  'create_time': (new Date(json['create_time'])),
272
279
  'update_time': (new Date(json['update_time'])),
273
280
  'blind_labeling_shown_metric_ids': json['blind_labeling_shown_metric_ids'] == null ? undefined : json['blind_labeling_shown_metric_ids'],
@@ -305,6 +312,7 @@ export function CovalReviewsAPIReviewProjectResourceToJSONTyped(value?: Omit<Cov
305
312
  'project_rules': value['project_rules'] == null ? undefined : ((value['project_rules'] as Array<any>).map(CovalReviewsAPIProjectRuleToJSON)),
306
313
  'enforced_collaboration': value['enforced_collaboration'],
307
314
  'allow_metric_skipping': value['allow_metric_skipping'],
315
+ 'skippable_metric_ids': value['skippable_metric_ids'],
308
316
  'create_time': value['create_time'].toISOString(),
309
317
  'update_time': value['update_time'].toISOString(),
310
318
  'blind_labeling_shown_metric_ids': value['blind_labeling_shown_metric_ids'],
@@ -28,13 +28,13 @@ import {
28
28
  */
29
29
  export interface CovalReviewsAPIUpdateReviewAnnotationRequest {
30
30
  /**
31
- * Ground truth numeric value (auto-completes annotation)
31
+ * Ground truth numeric value; completion also depends on applicable project rules
32
32
  * @type {number}
33
33
  * @memberof CovalReviewsAPIUpdateReviewAnnotationRequest
34
34
  */
35
35
  ground_truth_float_value?: number | null;
36
36
  /**
37
- * Ground truth string value (auto-completes annotation)
37
+ * Ground truth string value; completion also depends on applicable project rules
38
38
  * @type {string}
39
39
  * @memberof CovalReviewsAPIUpdateReviewAnnotationRequest
40
40
  */
@@ -58,7 +58,11 @@ export interface CovalReviewsAPIUpdateReviewAnnotationRequest {
58
58
  */
59
59
  priority?: CovalReviewsAPIAnnotationPriority;
60
60
  /**
61
- * Reassign to a different reviewer
61
+ * Existing reviewer email, retained for compatibility. Omission, null,
62
+ * or the current value leaves the reviewer unchanged. A different
63
+ * non-null value is rejected with HTTP 400 (`INVALID_ARGUMENT`);
64
+ * create an annotation for that reviewer instead.
65
+ *
62
66
  * @type {string}
63
67
  * @memberof CovalReviewsAPIUpdateReviewAnnotationRequest
64
68
  */