@smartspace/api-client 0.1.0-pr.976.50e1dfd → 0.1.0-pr.976.ba8c32f

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 (83) hide show
  1. package/dist/generated/chat/models/accessAccess.d.ts +11 -0
  2. package/dist/generated/chat/models/aiIModelProperty.d.ts +6 -0
  3. package/dist/generated/chat/models/aiModel.d.ts +7 -0
  4. package/dist/generated/chat/models/aiModelSummary.d.ts +5 -0
  5. package/dist/generated/chat/models/commentComment.d.ts +9 -0
  6. package/dist/generated/chat/models/commentCreateComment.d.ts +7 -0
  7. package/dist/generated/chat/models/connectorsConnectorSummary.d.ts +6 -0
  8. package/dist/generated/chat/models/filesFile.d.ts +12 -0
  9. package/dist/generated/chat/models/filesFileUriResponse.d.ts +7 -0
  10. package/dist/generated/chat/models/mentionsMention.d.ts +7 -0
  11. package/dist/generated/chat/models/notificationsNotification.d.ts +9 -0
  12. package/dist/generated/chat/models/notificationsPagedNotifications.d.ts +4 -0
  13. package/dist/generated/chat/models/usersAppUser.d.ts +5 -0
  14. package/dist/generated/chat/models/workSpaceInfo.d.ts +6 -0
  15. package/dist/generated/chat/models/workSpacesWorkSpace.d.ts +9 -0
  16. package/dist/generated/chat/zod.js +26 -26
  17. package/dist/generated/config/models/accessAccess.d.ts +11 -0
  18. package/dist/generated/config/models/accessAccessWorkSpace.d.ts +6 -0
  19. package/dist/generated/config/models/accessCreateAccess.d.ts +4 -0
  20. package/dist/generated/config/models/activitiesActivityWorkSpace.d.ts +8 -0
  21. package/dist/generated/config/models/aiIModelProperty.d.ts +6 -0
  22. package/dist/generated/config/models/aiModel.d.ts +7 -0
  23. package/dist/generated/config/models/aiModelSummary.d.ts +5 -0
  24. package/dist/generated/config/models/blocksBlockInfo.d.ts +6 -0
  25. package/dist/generated/config/models/blocksBlockInterface.d.ts +9 -0
  26. package/dist/generated/config/models/blocksBlockSet.d.ts +7 -0
  27. package/dist/generated/config/models/blocksInputPinInterface.d.ts +6 -0
  28. package/dist/generated/config/models/blocksOutputPinInterface.d.ts +6 -0
  29. package/dist/generated/config/models/blocksPortInterface.d.ts +5 -0
  30. package/dist/generated/config/models/blocksStateInterface.d.ts +4 -0
  31. package/dist/generated/config/models/blocksUsedInWorkspaceRef.d.ts +5 -0
  32. package/dist/generated/config/models/connectorsConnector.d.ts +7 -0
  33. package/dist/generated/config/models/connectorsConnectorSummary.d.ts +6 -0
  34. package/dist/generated/config/models/connectorsCreateConnector.d.ts +5 -0
  35. package/dist/generated/config/models/connectorsResolvedConnector.d.ts +9 -0
  36. package/dist/generated/config/models/connectorsUpdateConnector.d.ts +9 -0
  37. package/dist/generated/config/models/dataSetsCreateDataSet.d.ts +6 -0
  38. package/dist/generated/config/models/dataSetsCreateDataSetContainer.d.ts +6 -0
  39. package/dist/generated/config/models/dataSetsDataSet.d.ts +14 -0
  40. package/dist/generated/config/models/dataSetsDataSetProperty.d.ts +5 -0
  41. package/dist/generated/config/models/dataSetsSetDataSetScoping.d.ts +6 -0
  42. package/dist/generated/config/models/dataSetsUpdateDataSet.d.ts +6 -0
  43. package/dist/generated/config/models/dataSetsUpdateDataSetBasicInfo.d.ts +4 -0
  44. package/dist/generated/config/models/dataSetsUpsertDataSetProperty.d.ts +14 -1
  45. package/dist/generated/config/models/dataSourcesCreateDataSource.d.ts +6 -0
  46. package/dist/generated/config/models/dataSourcesDataSource.d.ts +6 -0
  47. package/dist/generated/config/models/dataSourcesDataSourceAdminUser.d.ts +6 -0
  48. package/dist/generated/config/models/dataSourcesDataSourceCredentialsDefinition.d.ts +5 -0
  49. package/dist/generated/config/models/dataSourcesTestDataSourceConnection.d.ts +7 -0
  50. package/dist/generated/config/models/dataSourcesUpdateDataSourceCredentials.d.ts +6 -0
  51. package/dist/generated/config/models/dataSpacesCreateDataSpace.d.ts +5 -0
  52. package/dist/generated/config/models/dataSpacesDataSpace.d.ts +9 -0
  53. package/dist/generated/config/models/dataSpacesDataSpaceAdmin.d.ts +12 -0
  54. package/dist/generated/config/models/dataSpacesDataSpaceWorkSpaceRef.d.ts +5 -0
  55. package/dist/generated/config/models/dataSpacesUpdateDataSpace.d.ts +6 -0
  56. package/dist/generated/config/models/draftsDraft.d.ts +6 -0
  57. package/dist/generated/config/models/draftsPublishDraftRequest.d.ts +5 -0
  58. package/dist/generated/config/models/draftsSaveDraftRequest.d.ts +5 -0
  59. package/dist/generated/config/models/draftsSaveDraftResponse.d.ts +5 -0
  60. package/dist/generated/config/models/filesCreateFileFromBlobUri.d.ts +6 -0
  61. package/dist/generated/config/models/filesFile.d.ts +12 -0
  62. package/dist/generated/config/models/filesFileUriResponse.d.ts +7 -0
  63. package/dist/generated/config/models/filesIngestedBlob.d.ts +7 -0
  64. package/dist/generated/config/models/managedSecretsCreateManagedSecret.d.ts +7 -0
  65. package/dist/generated/config/models/managedSecretsManagedSecret.d.ts +8 -0
  66. package/dist/generated/config/models/managedSecretsUpdateManagedSecretValue.d.ts +4 -0
  67. package/dist/generated/config/models/notificationsNotification.d.ts +9 -0
  68. package/dist/generated/config/models/notificationsPagedNotifications.d.ts +4 -0
  69. package/dist/generated/config/models/syncsSyncQueueState.d.ts +6 -0
  70. package/dist/generated/config/models/syncsSyncRunInfo.d.ts +5 -0
  71. package/dist/generated/config/models/usersAppAccessUser.d.ts +5 -0
  72. package/dist/generated/config/models/usersAppRole.d.ts +3 -0
  73. package/dist/generated/config/models/usersAppUserDetail.d.ts +5 -0
  74. package/dist/generated/config/models/usersAppUserSearchResult.d.ts +5 -0
  75. package/dist/generated/config/models/usersAppUserSummary.d.ts +6 -0
  76. package/dist/generated/config/models/usersServicePrincipalSearchResult.d.ts +4 -0
  77. package/dist/generated/config/models/workSpaceInfo.d.ts +6 -0
  78. package/dist/generated/config/models/workSpacesCreateWorkSpace.d.ts +5 -0
  79. package/dist/generated/config/models/workSpacesUpdateWorkSpaceBasicInfo.d.ts +5 -0
  80. package/dist/generated/config/models/workSpacesWorkSpace.d.ts +9 -0
  81. package/dist/generated/config/models/workSpacesWorkSpaceUser.d.ts +6 -0
  82. package/dist/generated/config/zod.js +125 -125
  83. package/package.json +1 -1
@@ -6,6 +6,17 @@
6
6
  */
7
7
  import type { EnumsAccessType } from './enumsAccessType';
8
8
  import type { EnumsAppPrincipalType } from './enumsAppPrincipalType';
9
+ /**
10
+ * Full read shape for an access grant. The model collides on the simple
11
+ name with `SmartSpace.App.Data.Entities.EntityAccess` at the
12
+ namespace alias boundary — but the entity uses a different short name
13
+ (`EntityAccess`), so no alias is required when both are imported.
14
+
15
+ Display names (`DisplayName`, `UserEmailAddress`) are not
16
+ columns on the entity — they are resolved at read time from Azure AD via
17
+ `IUserService` / `IAzureADClient` and filled in by the service
18
+ after loading.
19
+ */
9
20
  export interface AccessAccess {
10
21
  accessType: EnumsAccessType;
11
22
  /** @nullable */
@@ -5,6 +5,12 @@
5
5
  * OpenAPI spec version: v1
6
6
  */
7
7
  import type { EnumsModelPropertyType } from './enumsModelPropertyType';
8
+ /**
9
+ * Polymorphic AI-model parameter (Number / Boolean / String) — discriminator
10
+ lives on `Type`. The shape is kept because the public JSON contract
11
+ returns the variant-specific fields under one collection; flattening to a
12
+ single record would be a breaking wire-shape change for the admin UI.
13
+ */
8
14
  export interface AiIModelProperty {
9
15
  readonly name: string;
10
16
  type: EnumsModelPropertyType;
@@ -8,6 +8,13 @@ import type { AiModelDeployment } from './aiModelDeployment';
8
8
  import type { EnumsModelDeploymentProviderType } from './enumsModelDeploymentProviderType';
9
9
  import type { EnumsModelPublisher } from './enumsModelPublisher';
10
10
  import type { AiIModelProperty } from './aiIModelProperty';
11
+ /**
12
+ * Full read model for an AI Model. Collides on the simple name with
13
+ `SmartSpace.App.Data.Entities.Model`; alias
14
+ `DataEntities = SmartSpace.App.Data.Entities` in files that import
15
+ both. The folder is named `AiModels` to avoid the second namespace
16
+ collision with `SmartSpace.App.Business.Models` itself.
17
+ */
11
18
  export interface AiModel {
12
19
  /** @nullable */
13
20
  createdAt?: string | null;
@@ -8,6 +8,11 @@ import type { EnumsModelDeploymentStatus } from './enumsModelDeploymentStatus';
8
8
  import type { EnumsModelDeploymentProviderType } from './enumsModelDeploymentProviderType';
9
9
  import type { EnumsModelPublisher } from './enumsModelPublisher';
10
10
  import type { AiIModelProperty } from './aiIModelProperty';
11
+ /**
12
+ * Lighter list-endpoint shape — drops the nested `Deployment.Steps`
13
+ collection and keeps a flat `DeploymentStatus` + provider type for
14
+ the AI Models grid.
15
+ */
11
16
  export interface AiModelSummary {
12
17
  /** @nullable */
13
18
  createdAt?: string | null;
@@ -5,6 +5,15 @@
5
5
  * OpenAPI spec version: v1
6
6
  */
7
7
  import type { MentionsMention } from './mentionsMention';
8
+ /**
9
+ * Model for a Comment. Collides on the simple name with
10
+ `SmartSpace.App.Data.Entities.Comment`; alias
11
+ `DataEntities = SmartSpace.App.Data.Entities` in files that import
12
+ both. `CreatedBy` (display name) sits outside the positional ctor
13
+ because it can't be expression-tree-translated — the service hydrates it
14
+ post-projection via `IUserService`. The nested
15
+ `MentionedUsers[].Name` field follows the same pattern.
16
+ */
8
17
  export interface CommentComment {
9
18
  content: string;
10
19
  createdAt: string;
@@ -4,6 +4,13 @@
4
4
  * SmartSpace Chat API
5
5
  * OpenAPI spec version: v1
6
6
  */
7
+ /**
8
+ * Request shape for creating a new comment. Posted against either
9
+ `/messages/{id}/comments` or `/messageThreads/{id}/comments` —
10
+ the parent id comes from the route, the body carries content and
11
+ mention list only. Junction-style "no UpdateComment" — edits land as a
12
+ follow-up if/when the feature exists.
13
+ */
7
14
  export interface CommentCreateComment {
8
15
  content: string;
9
16
  mentionedUsers: string[];
@@ -4,6 +4,12 @@
4
4
  * SmartSpace Chat API
5
5
  * OpenAPI spec version: v1
6
6
  */
7
+ /**
8
+ * The shape non-admins are allowed to see: enough to pick a connector from a
9
+ dropdown, and nothing more. No URL (that is infrastructure detail) and no
10
+ auth settings. Used by the workspace MCP tab's picker and embedded in the
11
+ workspace detail response so the flow editor can list what is attached.
12
+ */
7
13
  export interface ConnectorsConnectorSummary {
8
14
  /** @pattern ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ */
9
15
  id: string;
@@ -4,6 +4,18 @@
4
4
  * SmartSpace Chat API
5
5
  * OpenAPI spec version: v1
6
6
  */
7
+ /**
8
+ * Model for a stored file blob. The simple name collides with
9
+ `System.IO.File` and `SmartSpace.App.Data.Entities.FileEntity`
10
+ (which is itself named to side-step the BCL collision); the
11
+ `SmartSpace.App.Business.Models.Files` namespace disambiguates. When
12
+ importing both this model and the entity, alias the entity side:
13
+ ```using DataEntities = SmartSpace.App.Data.Entities;```
14
+ `ThreadId` reflects the entity column `MessageThreadId`
15
+ (renamed at the model boundary because the API contract has always called
16
+ it `threadId`). `WorkspaceId` keeps the lower-s spelling that
17
+ matches the entity column and is already on the wire.
18
+ */
7
19
  export interface FilesFile {
8
20
  createdAt: string;
9
21
  createdByUserId: string;
@@ -4,6 +4,13 @@
4
4
  * SmartSpace Chat API
5
5
  * OpenAPI spec version: v1
6
6
  */
7
+ /**
8
+ * Response shape for `GET /files/{id}/uri` on both the chat-api and
9
+ config-api. Frontends call this with whatever URL the server hands them
10
+ (e.g. as the `sourceUri` on a file MessageValue) and expect a JSON
11
+ object — not a bare string — so the wire format stays extensible (we can
12
+ add e.g. an expiry without breaking clients).
13
+ */
7
14
  export interface FilesFileUriResponse {
8
15
  uri: string;
9
16
  }
@@ -4,6 +4,13 @@
4
4
  * SmartSpace Chat API
5
5
  * OpenAPI spec version: v1
6
6
  */
7
+ /**
8
+ * Model for a single user mention inside a comment. `UserId` matches
9
+ the principal id; `Name` sits outside the positional ctor because
10
+ it can't be expression-tree-translated — the service hydrates it
11
+ post-projection via `IUserService`.
12
+ Comment-level association lives on the parent `Comment` record.
13
+ */
7
14
  export interface MentionsMention {
8
15
  /** @nullable */
9
16
  name?: string | null;
@@ -5,6 +5,15 @@
5
5
  * OpenAPI spec version: v1
6
6
  */
7
7
  import type { EnumsNotificationType } from './enumsNotificationType';
8
+ /**
9
+ * Model for a Notification. Collides on the simple name with
10
+ `SmartSpace.App.Data.Entities.Notification`; alias
11
+ `DataEntities = SmartSpace.App.Data.Entities` in files that import
12
+ both. `CreatedBy` (display name) sits outside the positional ctor
13
+ because it can't be expression-tree-translated — the service hydrates it
14
+ post-projection via `IUserService.GetPrincipalDisplayNameByIdAsync`
15
+ and emits a `with { CreatedBy = ... }`.
16
+ */
8
17
  export interface NotificationsNotification {
9
18
  createdAt: string;
10
19
  /** @nullable */
@@ -5,6 +5,10 @@
5
5
  * OpenAPI spec version: v1
6
6
  */
7
7
  import type { NotificationsNotification } from './notificationsNotification';
8
+ /**
9
+ * Notification list response shape. Two counts so callers can render an
10
+ "X unread of Y total" badge without a second round-trip.
11
+ */
8
12
  export interface NotificationsPagedNotifications {
9
13
  data: NotificationsNotification[];
10
14
  total: number;
@@ -4,6 +4,11 @@
4
4
  * SmartSpace Chat API
5
5
  * OpenAPI spec version: v1
6
6
  */
7
+ /**
8
+ * Azure AD user principal model. Externally-sourced (Microsoft Graph) —
9
+ there is no EF entity for this; the database only persists per-user
10
+ junction state via SmartSpace.App.Business.Models.Users.UserPermission and similar.
11
+ */
7
12
  export interface UsersAppUser {
8
13
  displayName: string;
9
14
  /** @nullable */
@@ -4,6 +4,12 @@
4
4
  * SmartSpace Chat API
5
5
  * OpenAPI spec version: v1
6
6
  */
7
+ /**
8
+ * Cross-domain lightweight workspace pointer (id + name) embedded in
9
+ shapes owned by other domains (e.g. SmartSpace.App.Business.Models.DataSpace). Stays
10
+ in the legacy `SmartSpace.App.Business.Models` namespace until
11
+ those domains migrate.
12
+ */
7
13
  export interface WorkSpaceInfo {
8
14
  /** @pattern ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ */
9
15
  id: string;
@@ -9,6 +9,15 @@ import type { DataSpace } from './dataSpace';
9
9
  import type { WorkSpacesWorkSpaceInputs } from './workSpacesWorkSpaceInputs';
10
10
  import type { ModelConfiguration } from './modelConfiguration';
11
11
  import type { WorkSpacesWorkSpaceVariables } from './workSpacesWorkSpaceVariables';
12
+ /**
13
+ * Full read model for a WorkSpace. Collides on the simple name with
14
+ `SmartSpace.App.Data.Entities.WorkSpace`; alias
15
+ `DataEntities = SmartSpace.App.Data.Entities` in files that import
16
+ both. References pre-existing cross-domain models
17
+ (SmartSpace.App.Business.Models.DataSpace, SmartSpace.App.Business.Models.ModelConfiguration,
18
+ SmartSpace.App.Business.Models.Flows.FlowInput, SmartSpace.App.Business.Models.Flows.FlowVariable) — those are not
19
+ re-modelled by this PR.
20
+ */
12
21
  export interface WorkSpacesWorkSpace {
13
22
  connectors: ConnectorsConnectorSummary[];
14
23
  createdAt: string;
@@ -43,7 +43,7 @@ exports.filesUploadFilesResponseItem = zod_1.default.object({
43
43
  "size": zod_1.default.number(),
44
44
  "threadId": zod_1.default.string().regex(exports.filesUploadFilesResponseThreadIdRegExp).nullish(),
45
45
  "workspaceId": zod_1.default.string().regex(exports.filesUploadFilesResponseWorkspaceIdRegExp).nullish()
46
- });
46
+ }).describe('Model for a stored file blob. The simple name collides with\r\n`System.IO.File` and `SmartSpace.App.Data.Entities.FileEntity`\r\n(which is itself named to side-step the BCL collision); the\r\n`SmartSpace.App.Business.Models.Files` namespace disambiguates. When\r\nimporting both this model and the entity, alias the entity side:\r\n```using DataEntities = SmartSpace.App.Data.Entities;```\n`ThreadId` reflects the entity column `MessageThreadId`\r\n(renamed at the model boundary because the API contract has always called\r\nit `threadId`). `WorkspaceId` keeps the lower-s spelling that\r\nmatches the entity column and is already on the wire.');
47
47
  exports.filesUploadFilesResponse = zod_1.default.array(exports.filesUploadFilesResponseItem);
48
48
  /**
49
49
  * @summary Get details for a file previously uploaded.
@@ -71,7 +71,7 @@ exports.filesGetFileInfoResponse = zod_1.default.object({
71
71
  "size": zod_1.default.number(),
72
72
  "threadId": zod_1.default.string().regex(exports.filesGetFileInfoResponseThreadIdRegExp).nullish(),
73
73
  "workspaceId": zod_1.default.string().regex(exports.filesGetFileInfoResponseWorkspaceIdRegExp).nullish()
74
- });
74
+ }).describe('Model for a stored file blob. The simple name collides with\r\n`System.IO.File` and `SmartSpace.App.Data.Entities.FileEntity`\r\n(which is itself named to side-step the BCL collision); the\r\n`SmartSpace.App.Business.Models.Files` namespace disambiguates. When\r\nimporting both this model and the entity, alias the entity side:\r\n```using DataEntities = SmartSpace.App.Data.Entities;```\n`ThreadId` reflects the entity column `MessageThreadId`\r\n(renamed at the model boundary because the API contract has always called\r\nit `threadId`). `WorkspaceId` keeps the lower-s spelling that\r\nmatches the entity column and is already on the wire.');
75
75
  /**
76
76
  * @summary Download a previously uploaded file.
77
77
  */
@@ -100,7 +100,7 @@ exports.filesGetUriQueryParams = zod_1.default.strictObject({
100
100
  });
101
101
  exports.filesGetUriResponse = zod_1.default.object({
102
102
  "uri": zod_1.default.string()
103
- });
103
+ }).describe('Response shape for `GET /files/{id}/uri` on both the chat-api and\r\nconfig-api. Frontends call this with whatever URL the server hands them\r\n(e.g. as the `sourceUri` on a file MessageValue) and expect a JSON\r\nobject — not a bare string — so the wire format stays extensible (we can\r\nadd e.g. an expiry without breaking clients).');
104
104
  /**
105
105
  * @summary Requests cancellation of a queued or running flow run (the chat
106
106
  thread id is the flow run id). Cancellation is cooperative: the
@@ -173,7 +173,7 @@ exports.messageThreadsGetCommentsResponse = zod_1.default.object({
173
173
  "mentionedUsers": zod_1.default.array(zod_1.default.object({
174
174
  "name": zod_1.default.string().nullish(),
175
175
  "userId": zod_1.default.string()
176
- })),
176
+ }).describe('Model for a single user mention inside a comment. `UserId` matches\r\nthe principal id; `Name` sits outside the positional ctor because\r\nit can\'t be expression-tree-translated — the service hydrates it\r\npost-projection via `IUserService`.\r\nComment-level association lives on the parent `Comment` record.')),
177
177
  "messageThreadId": zod_1.default.string().regex(exports.messageThreadsGetCommentsResponseDataItemMessageThreadIdRegExp)
178
178
  })),
179
179
  "total": zod_1.default.number()
@@ -188,7 +188,7 @@ exports.messageThreadsPostCommentParams = zod_1.default.strictObject({
188
188
  exports.messageThreadsPostCommentBody = zod_1.default.strictObject({
189
189
  "content": zod_1.default.string(),
190
190
  "mentionedUsers": zod_1.default.array(zod_1.default.string())
191
- });
191
+ }).describe('Request shape for creating a new comment. Posted against either\r\n`/messages/{id}/comments` or `/messageThreads/{id}/comments` —\r\nthe parent id comes from the route, the body carries content and\r\nmention list only. Junction-style \"no UpdateComment\" — edits land as a\r\nfollow-up if/when the feature exists.');
192
192
  exports.messageThreadsPostCommentResponseIdRegExp = new RegExp('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$');
193
193
  exports.messageThreadsPostCommentResponseMessageIdRegExp = new RegExp('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$');
194
194
  exports.messageThreadsPostCommentResponseMessageThreadIdRegExp = new RegExp('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$');
@@ -201,10 +201,10 @@ exports.messageThreadsPostCommentResponse = zod_1.default.object({
201
201
  "mentionedUsers": zod_1.default.array(zod_1.default.object({
202
202
  "name": zod_1.default.string().nullish(),
203
203
  "userId": zod_1.default.string()
204
- })),
204
+ }).describe('Model for a single user mention inside a comment. `UserId` matches\r\nthe principal id; `Name` sits outside the positional ctor because\r\nit can\'t be expression-tree-translated — the service hydrates it\r\npost-projection via `IUserService`.\r\nComment-level association lives on the parent `Comment` record.')),
205
205
  "messageId": zod_1.default.string().regex(exports.messageThreadsPostCommentResponseMessageIdRegExp).nullish(),
206
206
  "messageThreadId": zod_1.default.string().regex(exports.messageThreadsPostCommentResponseMessageThreadIdRegExp)
207
- });
207
+ }).describe('Model for a Comment. Collides on the simple name with\r\n`SmartSpace.App.Data.Entities.Comment`; alias\r\n`DataEntities = SmartSpace.App.Data.Entities` in files that import\r\nboth. `CreatedBy` (display name) sits outside the positional ctor\r\nbecause it can\'t be expression-tree-translated — the service hydrates it\r\npost-projection via `IUserService`. The nested\r\n`MentionedUsers[].Name` field follows the same pattern.');
208
208
  /**
209
209
  * @summary Mark a message thread as favorited or not in SmartSpace, using the thread's ID and a boolean value in the request.
210
210
  */
@@ -300,7 +300,7 @@ exports.messageThreadsGetThreadUsersResponseItem = zod_1.default.object({
300
300
  "emailAddress": zod_1.default.string().nullish(),
301
301
  "id": zod_1.default.string(),
302
302
  "userId": zod_1.default.string()
303
- });
303
+ }).describe('Azure AD user principal model. Externally-sourced (Microsoft Graph) —\r\nthere is no EF entity for this; the database only persists per-user\r\njunction state via SmartSpace.App.Business.Models.Users.UserPermission and similar.');
304
304
  exports.messageThreadsGetThreadUsersResponse = zod_1.default.array(exports.messageThreadsGetThreadUsersResponseItem);
305
305
  /**
306
306
  * @summary Add a user to a message thread.
@@ -438,7 +438,7 @@ exports.messagesGetCommentsResponse = zod_1.default.object({
438
438
  "mentionedUsers": zod_1.default.array(zod_1.default.object({
439
439
  "name": zod_1.default.string().nullish(),
440
440
  "userId": zod_1.default.string()
441
- })),
441
+ }).describe('Model for a single user mention inside a comment. `UserId` matches\r\nthe principal id; `Name` sits outside the positional ctor because\r\nit can\'t be expression-tree-translated — the service hydrates it\r\npost-projection via `IUserService`.\r\nComment-level association lives on the parent `Comment` record.')),
442
442
  "messageThreadId": zod_1.default.string().regex(exports.messagesGetCommentsResponseDataItemMessageThreadIdRegExp)
443
443
  })),
444
444
  "total": zod_1.default.number()
@@ -453,7 +453,7 @@ exports.messagesPostCommentParams = zod_1.default.strictObject({
453
453
  exports.messagesPostCommentBody = zod_1.default.strictObject({
454
454
  "content": zod_1.default.string(),
455
455
  "mentionedUsers": zod_1.default.array(zod_1.default.string())
456
- });
456
+ }).describe('Request shape for creating a new comment. Posted against either\r\n`/messages/{id}/comments` or `/messageThreads/{id}/comments` —\r\nthe parent id comes from the route, the body carries content and\r\nmention list only. Junction-style \"no UpdateComment\" — edits land as a\r\nfollow-up if/when the feature exists.');
457
457
  exports.messagesPostCommentResponseIdRegExp = new RegExp('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$');
458
458
  exports.messagesPostCommentResponseMessageIdRegExp = new RegExp('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$');
459
459
  exports.messagesPostCommentResponseMessageThreadIdRegExp = new RegExp('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$');
@@ -466,10 +466,10 @@ exports.messagesPostCommentResponse = zod_1.default.object({
466
466
  "mentionedUsers": zod_1.default.array(zod_1.default.object({
467
467
  "name": zod_1.default.string().nullish(),
468
468
  "userId": zod_1.default.string()
469
- })),
469
+ }).describe('Model for a single user mention inside a comment. `UserId` matches\r\nthe principal id; `Name` sits outside the positional ctor because\r\nit can\'t be expression-tree-translated — the service hydrates it\r\npost-projection via `IUserService`.\r\nComment-level association lives on the parent `Comment` record.')),
470
470
  "messageId": zod_1.default.string().regex(exports.messagesPostCommentResponseMessageIdRegExp).nullish(),
471
471
  "messageThreadId": zod_1.default.string().regex(exports.messagesPostCommentResponseMessageThreadIdRegExp)
472
- });
472
+ }).describe('Model for a Comment. Collides on the simple name with\r\n`SmartSpace.App.Data.Entities.Comment`; alias\r\n`DataEntities = SmartSpace.App.Data.Entities` in files that import\r\nboth. `CreatedBy` (display name) sits outside the positional ctor\r\nbecause it can\'t be expression-tree-translated — the service hydrates it\r\npost-projection via `IUserService`. The nested\r\n`MentionedUsers[].Name` field follows the same pattern.');
473
473
  /**
474
474
  * @summary Append a new input value to an in-flight message and stream successive
475
475
  snapshots back to the client. Each frame is a full M:SmartSpace.App.ChatApi.Controllers.MessagesController.Message(System.Guid)
@@ -511,9 +511,9 @@ exports.modelsGetModelsResponse = zod_1.default.object({
511
511
  "properties": zod_1.default.array(zod_1.default.object({
512
512
  "name": zod_1.default.string(),
513
513
  "type": zod_1.default.enum(['Boolean', 'Number', 'String'])
514
- })),
514
+ }).describe('Polymorphic AI-model parameter (Number / Boolean / String) — discriminator\r\nlives on `Type`. The shape is kept because the public JSON contract\r\nreturns the variant-specific fields under one collection; flattening to a\r\nsingle record would be a breaking wire-shape change for the admin UI.')),
515
515
  "virtualMachineUrl": zod_1.default.string().nullish()
516
- })),
516
+ }).describe('Lighter list-endpoint shape — drops the nested `Deployment.Steps`\r\ncollection and keeps a flat `DeploymentStatus` + provider type for\r\nthe AI Models grid.')),
517
517
  "total": zod_1.default.number()
518
518
  });
519
519
  /**
@@ -565,8 +565,8 @@ exports.modelsGetModelResponse = zod_1.default.object({
565
565
  "properties": zod_1.default.array(zod_1.default.object({
566
566
  "name": zod_1.default.string(),
567
567
  "type": zod_1.default.enum(['Boolean', 'Number', 'String'])
568
- }))
569
- });
568
+ }).describe('Polymorphic AI-model parameter (Number / Boolean / String) — discriminator\r\nlives on `Type`. The shape is kept because the public JSON contract\r\nreturns the variant-specific fields under one collection; flattening to a\r\nsingle record would be a breaking wire-shape change for the admin UI.'))
569
+ }).describe('Full read model for an AI Model. Collides on the simple name with\r\n`SmartSpace.App.Data.Entities.Model`; alias\r\n`DataEntities = SmartSpace.App.Data.Entities` in files that import\r\nboth. The folder is named `AiModels` to avoid the second namespace\r\ncollision with `SmartSpace.App.Business.Models` itself.');
570
570
  /**
571
571
  * @summary Retrieve notifications for user login.
572
572
  */
@@ -591,10 +591,10 @@ exports.notificationGetResponse = zod_1.default.object({
591
591
  "notificationType": zod_1.default.enum(['WorkSpaceUpdated', 'MessageThreadUpdated', 'CommentUpdated', 'AddedToThread']),
592
592
  "threadId": zod_1.default.string().regex(exports.notificationGetResponseDataItemThreadIdRegExp).nullish(),
593
593
  "workSpaceId": zod_1.default.string().regex(exports.notificationGetResponseDataItemWorkSpaceIdRegExp).nullish()
594
- })),
594
+ }).describe('Model for a Notification. Collides on the simple name with\r\n`SmartSpace.App.Data.Entities.Notification`; alias\r\n`DataEntities = SmartSpace.App.Data.Entities` in files that import\r\nboth. `CreatedBy` (display name) sits outside the positional ctor\r\nbecause it can\'t be expression-tree-translated — the service hydrates it\r\npost-projection via `IUserService.GetPrincipalDisplayNameByIdAsync`\r\nand emits a `with { CreatedBy = ... }`.')),
595
595
  "total": zod_1.default.number(),
596
596
  "totalUnread": zod_1.default.number()
597
- });
597
+ }).describe('Notification list response shape. Two counts so callers can render an\r\n\"X unread of Y total\" badge without a second round-trip.');
598
598
  /**
599
599
  * @summary Update: mark read notifications.
600
600
  */
@@ -646,7 +646,7 @@ exports.workSpacesGetGetResponse = zod_1.default.object({
646
646
  "id": zod_1.default.string().regex(exports.workSpacesGetGetResponseDataItemConnectorsItemIdRegExp),
647
647
  "kind": zod_1.default.string(),
648
648
  "name": zod_1.default.string()
649
- })),
649
+ }).describe('The shape non-admins are allowed to see: enough to pick a connector from a\r\ndropdown, and nothing more. No URL (that is infrastructure detail) and no\r\nauth settings. Used by the workspace MCP tab\'s picker and embedded in the\r\nworkspace detail response so the flow editor can list what is attached.')),
650
650
  "createdAt": zod_1.default.iso.datetime({}),
651
651
  "createdByUserId": zod_1.default.string(),
652
652
  "dataSpaces": zod_1.default.array(zod_1.default.object({
@@ -748,7 +748,7 @@ exports.workSpacesGetGetResponse = zod_1.default.object({
748
748
  "workspacesInfo": zod_1.default.array(zod_1.default.object({
749
749
  "id": zod_1.default.string().regex(exports.workSpacesGetGetResponseDataItemDataSpacesItemWorkspacesInfoItemIdRegExp),
750
750
  "name": zod_1.default.string()
751
- })).nullish()
751
+ }).describe('Cross-domain lightweight workspace pointer (id + name) embedded in\r\nshapes owned by other domains (e.g. SmartSpace.App.Business.Models.DataSpace). Stays\r\nin the legacy `SmartSpace.App.Business.Models` namespace until\r\nthose domains migrate.')).nullish()
752
752
  })),
753
753
  "favorited": zod_1.default.boolean(),
754
754
  "firstPrompt": zod_1.default.string().nullish(),
@@ -817,7 +817,7 @@ exports.workSpacesGetGetResponse = zod_1.default.object({
817
817
  "access": zod_1.default.enum(['None', 'Read', 'Write']),
818
818
  "schema": zod_1.default.record(zod_1.default.string(), zod_1.default.any())
819
819
  }))
820
- })),
820
+ }).describe('Full read model for a WorkSpace. Collides on the simple name with\r\n`SmartSpace.App.Data.Entities.WorkSpace`; alias\r\n`DataEntities = SmartSpace.App.Data.Entities` in files that import\r\nboth. References pre-existing cross-domain models\r\n(SmartSpace.App.Business.Models.DataSpace, SmartSpace.App.Business.Models.ModelConfiguration,\r\nSmartSpace.App.Business.Models.Flows.FlowInput, SmartSpace.App.Business.Models.Flows.FlowVariable) — those are not\r\nre-modelled by this PR.')),
821
821
  "total": zod_1.default.number()
822
822
  });
823
823
  /**
@@ -851,7 +851,7 @@ exports.workSpacesGetIdResponse = zod_1.default.object({
851
851
  "id": zod_1.default.string().regex(exports.workSpacesGetIdResponseConnectorsItemIdRegExp),
852
852
  "kind": zod_1.default.string(),
853
853
  "name": zod_1.default.string()
854
- })),
854
+ }).describe('The shape non-admins are allowed to see: enough to pick a connector from a\r\ndropdown, and nothing more. No URL (that is infrastructure detail) and no\r\nauth settings. Used by the workspace MCP tab\'s picker and embedded in the\r\nworkspace detail response so the flow editor can list what is attached.')),
855
855
  "createdAt": zod_1.default.iso.datetime({}),
856
856
  "createdByUserId": zod_1.default.string(),
857
857
  "dataSpaces": zod_1.default.array(zod_1.default.object({
@@ -953,7 +953,7 @@ exports.workSpacesGetIdResponse = zod_1.default.object({
953
953
  "workspacesInfo": zod_1.default.array(zod_1.default.object({
954
954
  "id": zod_1.default.string().regex(exports.workSpacesGetIdResponseDataSpacesItemWorkspacesInfoItemIdRegExp),
955
955
  "name": zod_1.default.string()
956
- })).nullish()
956
+ }).describe('Cross-domain lightweight workspace pointer (id + name) embedded in\r\nshapes owned by other domains (e.g. SmartSpace.App.Business.Models.DataSpace). Stays\r\nin the legacy `SmartSpace.App.Business.Models` namespace until\r\nthose domains migrate.')).nullish()
957
957
  })),
958
958
  "favorited": zod_1.default.boolean(),
959
959
  "firstPrompt": zod_1.default.string().nullish(),
@@ -1022,7 +1022,7 @@ exports.workSpacesGetIdResponse = zod_1.default.object({
1022
1022
  "access": zod_1.default.enum(['None', 'Read', 'Write']),
1023
1023
  "schema": zod_1.default.record(zod_1.default.string(), zod_1.default.any())
1024
1024
  }))
1025
- });
1025
+ }).describe('Full read model for a WorkSpace. Collides on the simple name with\r\n`SmartSpace.App.Data.Entities.WorkSpace`; alias\r\n`DataEntities = SmartSpace.App.Data.Entities` in files that import\r\nboth. References pre-existing cross-domain models\r\n(SmartSpace.App.Business.Models.DataSpace, SmartSpace.App.Business.Models.ModelConfiguration,\r\nSmartSpace.App.Business.Models.Flows.FlowInput, SmartSpace.App.Business.Models.Flows.FlowVariable) — those are not\r\nre-modelled by this PR.');
1026
1026
  /**
1027
1027
  * @summary Retrieves the access control details of a workspace.
1028
1028
  */
@@ -1052,7 +1052,7 @@ exports.workSpacesGetAccessResponse = zod_1.default.object({
1052
1052
  "principalType": zod_1.default.enum(['Unknown', 'User', 'ServicePrincipal', 'Internal']).optional(),
1053
1053
  "userEmailAddress": zod_1.default.string().nullish(),
1054
1054
  "workSpaceId": zod_1.default.string().regex(exports.workSpacesGetAccessResponseDataItemWorkSpaceIdRegExp).nullish()
1055
- })),
1055
+ }).describe('Full read shape for an access grant. The model collides on the simple\r\nname with `SmartSpace.App.Data.Entities.EntityAccess` at the\r\nnamespace alias boundary — but the entity uses a different short name\r\n(`EntityAccess`), so no alias is required when both are imported.\r\n \r\nDisplay names (`DisplayName`, `UserEmailAddress`) are not\r\ncolumns on the entity — they are resolved at read time from Azure AD via\r\n`IUserService` / `IAzureADClient` and filled in by the service\r\nafter loading.')),
1056
1056
  "total": zod_1.default.number()
1057
1057
  });
1058
1058
  /**
@@ -1104,7 +1104,7 @@ exports.workSpacesGetUsersResponseItem = zod_1.default.object({
1104
1104
  "emailAddress": zod_1.default.string().nullish(),
1105
1105
  "id": zod_1.default.string(),
1106
1106
  "userId": zod_1.default.string()
1107
- });
1107
+ }).describe('Azure AD user principal model. Externally-sourced (Microsoft Graph) —\r\nthere is no EF entity for this; the database only persists per-user\r\njunction state via SmartSpace.App.Business.Models.Users.UserPermission and similar.');
1108
1108
  exports.workSpacesGetUsersResponse = zod_1.default.array(exports.workSpacesGetUsersResponseItem);
1109
1109
  /**
1110
1110
  * @summary Retrieve a Shared Access Signature (SAS) for a specific document in a data space, using the dataSpaceId and optional file parameter.
@@ -6,6 +6,17 @@
6
6
  */
7
7
  import type { EnumsAccessType } from './enumsAccessType';
8
8
  import type { EnumsAppPrincipalType } from './enumsAppPrincipalType';
9
+ /**
10
+ * Full read shape for an access grant. The model collides on the simple
11
+ name with `SmartSpace.App.Data.Entities.EntityAccess` at the
12
+ namespace alias boundary — but the entity uses a different short name
13
+ (`EntityAccess`), so no alias is required when both are imported.
14
+
15
+ Display names (`DisplayName`, `UserEmailAddress`) are not
16
+ columns on the entity — they are resolved at read time from Azure AD via
17
+ `IUserService` / `IAzureADClient` and filled in by the service
18
+ after loading.
19
+ */
9
20
  export interface AccessAccess {
10
21
  accessType: EnumsAccessType;
11
22
  /** @nullable */
@@ -6,6 +6,12 @@
6
6
  */
7
7
  import type { EnumsAccessType } from './enumsAccessType';
8
8
  import type { EnumsAppPrincipalType } from './enumsAppPrincipalType';
9
+ /**
10
+ * Per-workspace access summary surfaced by the "what workspaces does this
11
+ user belong to" lookups. Carries the workspace's name alongside the
12
+ access grant so callers can render the assignment list without an
13
+ additional workspace lookup.
14
+ */
9
15
  export interface AccessAccessWorkSpace {
10
16
  accessType: EnumsAccessType;
11
17
  /** @nullable */
@@ -5,6 +5,10 @@
5
5
  * OpenAPI spec version: v1
6
6
  */
7
7
  import type { EnumsAccessType } from './enumsAccessType';
8
+ /**
9
+ * Request body for creating an access grant. Access records are junction
10
+ rows — there is no `UpdateAccess`; the convention is delete + create.
11
+ */
8
12
  export interface AccessCreateAccess {
9
13
  accessType: EnumsAccessType;
10
14
  objectId: string;
@@ -6,6 +6,14 @@
6
6
  */
7
7
  import type { EnumsActivityType } from './enumsActivityType';
8
8
  import type { ActivitiesLlmUsageMetrics } from './activitiesLlmUsageMetrics';
9
+ /**
10
+ * Workspace-scoped activity row returned by the activity log endpoint. The
11
+ `EventDescription`, `Prompt`, `Response`, and
12
+ `QueryNumber` are deserialised from the activity's
13
+ `DisplayName` (a JSON-serialised `WorkSpaceConfiguration`);
14
+ `LlmUsages` and `DurationMs` from `MetricsJson`. Build
15
+ happens in service code — see `ActivityService.GetLogWorkSpaceAsync`.
16
+ */
9
17
  export interface ActivitiesActivityWorkSpace {
10
18
  activityType?: EnumsActivityType;
11
19
  /** @nullable */
@@ -5,6 +5,12 @@
5
5
  * OpenAPI spec version: v1
6
6
  */
7
7
  import type { EnumsModelPropertyType } from './enumsModelPropertyType';
8
+ /**
9
+ * Polymorphic AI-model parameter (Number / Boolean / String) — discriminator
10
+ lives on `Type`. The shape is kept because the public JSON contract
11
+ returns the variant-specific fields under one collection; flattening to a
12
+ single record would be a breaking wire-shape change for the admin UI.
13
+ */
8
14
  export interface AiIModelProperty {
9
15
  readonly name: string;
10
16
  type: EnumsModelPropertyType;
@@ -8,6 +8,13 @@ import type { AiModelDeployment } from './aiModelDeployment';
8
8
  import type { EnumsModelDeploymentProviderType } from './enumsModelDeploymentProviderType';
9
9
  import type { EnumsModelPublisher } from './enumsModelPublisher';
10
10
  import type { AiIModelProperty } from './aiIModelProperty';
11
+ /**
12
+ * Full read model for an AI Model. Collides on the simple name with
13
+ `SmartSpace.App.Data.Entities.Model`; alias
14
+ `DataEntities = SmartSpace.App.Data.Entities` in files that import
15
+ both. The folder is named `AiModels` to avoid the second namespace
16
+ collision with `SmartSpace.App.Business.Models` itself.
17
+ */
11
18
  export interface AiModel {
12
19
  /** @nullable */
13
20
  createdAt?: string | null;
@@ -8,6 +8,11 @@ import type { EnumsModelDeploymentStatus } from './enumsModelDeploymentStatus';
8
8
  import type { EnumsModelDeploymentProviderType } from './enumsModelDeploymentProviderType';
9
9
  import type { EnumsModelPublisher } from './enumsModelPublisher';
10
10
  import type { AiIModelProperty } from './aiIModelProperty';
11
+ /**
12
+ * Lighter list-endpoint shape — drops the nested `Deployment.Steps`
13
+ collection and keeps a flat `DeploymentStatus` + provider type for
14
+ the AI Models grid.
15
+ */
11
16
  export interface AiModelSummary {
12
17
  /** @nullable */
13
18
  createdAt?: string | null;
@@ -6,6 +6,12 @@
6
6
  */
7
7
  import type { BlocksBlockInterface } from './blocksBlockInterface';
8
8
  import type { EnumsBlockType } from './enumsBlockType';
9
+ /**
10
+ * Flattened block descriptor — one `BlockInfo` per (name, version) pair
11
+ across every visible `BlockSet`. This is the shape the
12
+ `BlocksController` returns; the dictionary-of-dictionaries layout is
13
+ reconstructed by the service from the underlying interfaces.
14
+ */
9
15
  export interface BlocksBlockInfo {
10
16
  /** @pattern ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ */
11
17
  blockSetId: string;
@@ -8,6 +8,15 @@ import type { BlocksBlockInterfaceMetadata } from './blocksBlockInterfaceMetadat
8
8
  import type { BlocksBlockInterfacePorts } from './blocksBlockInterfacePorts';
9
9
  import type { EnumsBlockScope } from './enumsBlockScope';
10
10
  import type { BlocksBlockInterfaceState } from './blocksBlockInterfaceState';
11
+ /**
12
+ * Model for a block interface — the schema that describes a single
13
+ (name, version) pair of a block (ports, state, scope). Collides on the
14
+ simple name with `SmartSpace.App.Data.Entities.BlockInterface`; alias
15
+ `DataEntities = SmartSpace.App.Data.Entities` in files that import
16
+ both. `Name` and `Version` live on the entity but are surfaced
17
+ here too so the wire shape is self-describing (the same model travels via
18
+ SignalR debug payloads where the keys are stripped).
19
+ */
11
20
  export interface BlocksBlockInterface {
12
21
  metadata: BlocksBlockInterfaceMetadata;
13
22
  ports: BlocksBlockInterfacePorts;
@@ -7,6 +7,13 @@
7
7
  import type { BlocksBlockSetBlockInterfaces } from './blocksBlockSetBlockInterfaces';
8
8
  import type { EnumsBlockType } from './enumsBlockType';
9
9
  import type { BlocksUsedInWorkspaceRef } from './blocksUsedInWorkspaceRef';
10
+ /**
11
+ * Model for a `BlockSet` — a versioned collection of block interfaces.
12
+ Collides on the simple name with `SmartSpace.App.Data.Entities.BlockSet`;
13
+ alias `DataEntities = SmartSpace.App.Data.Entities` in files that
14
+ import both. `BlockInterfaces` is keyed by block name then version to
15
+ match the API shape consumers expect.
16
+ */
10
17
  export interface BlocksBlockSet {
11
18
  blockInterfaces: BlocksBlockSetBlockInterfaces;
12
19
  /** @nullable */
@@ -9,6 +9,12 @@ import type { BlocksInputPinInterfaceGenerics } from './blocksInputPinInterfaceG
9
9
  import type { BlocksInputPinInterfaceMetadata } from './blocksInputPinInterfaceMetadata';
10
10
  import type { BlocksInputPinInterfaceSchema } from './blocksInputPinInterfaceSchema';
11
11
  import type { EnumsPinType } from './enumsPinType';
12
+ /**
13
+ * Model for an input pin on a block port. Mirrors the live
14
+ `SmartSpace.App.Data.Entities.InputPinInterface` shape but exposes the
15
+ parsed JSON payloads (`Metadata`, `Schema`, `Generics`,
16
+ `Default`) rather than the raw `*Json` columns.
17
+ */
12
18
  export interface BlocksInputPinInterface {
13
19
  channel: boolean;
14
20
  /** @nullable */
@@ -8,6 +8,12 @@ import type { BlocksOutputPinInterfaceGenerics } from './blocksOutputPinInterfac
8
8
  import type { BlocksOutputPinInterfaceMetadata } from './blocksOutputPinInterfaceMetadata';
9
9
  import type { BlocksOutputPinInterfaceSchema } from './blocksOutputPinInterfaceSchema';
10
10
  import type { EnumsPinType } from './enumsPinType';
11
+ /**
12
+ * Model for an output pin on a block port. Mirrors the live
13
+ `SmartSpace.App.Data.Entities.OutputPinInterface` shape but exposes the
14
+ parsed JSON payloads (`Metadata`, `Schema`, `Generics`)
15
+ rather than the raw `*Json` columns.
16
+ */
11
17
  export interface BlocksOutputPinInterface {
12
18
  channel: boolean;
13
19
  /** @nullable */
@@ -8,6 +8,11 @@ import type { BlocksPortInterfaceInputs } from './blocksPortInterfaceInputs';
8
8
  import type { BlocksPortInterfaceMetadata } from './blocksPortInterfaceMetadata';
9
9
  import type { BlocksPortInterfaceOutputs } from './blocksPortInterfaceOutputs';
10
10
  import type { EnumsPortType } from './enumsPortType';
11
+ /**
12
+ * Model for a block `PortInterface`. Inputs and Outputs are keyed by pin
13
+ name (entities store them as `List<...>` with a `Key`
14
+ column; the model exposes them as dictionaries to match the API shape).
15
+ */
11
16
  export interface BlocksPortInterface {
12
17
  inputs: BlocksPortInterfaceInputs;
13
18
  isFunction: boolean;