@thinkai/tai-api-contract 2.149.0 → 2.151.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3700,6 +3700,114 @@ export interface paths {
3700
3700
  patch?: never;
3701
3701
  trace?: never;
3702
3702
  };
3703
+ "/notifications/email/unsubscribe": {
3704
+ parameters: {
3705
+ query?: never;
3706
+ header?: never;
3707
+ path?: never;
3708
+ cookie?: never;
3709
+ };
3710
+ /**
3711
+ * Confirm a Message Center email unsubscribe (public)
3712
+ * @description **Unauthenticated.** Mail scanners prefetch GET, so this page does not change preferences. Status email cannot be turned off; the page says so. Other categories show a button that POSTs the same token. An unknown or expired token is `400` HTML.
3713
+ */
3714
+ get: operations["getNotificationEmailUnsubscribe"];
3715
+ put?: never;
3716
+ /**
3717
+ * Apply a Message Center email unsubscribe (public)
3718
+ * @description **Unauthenticated.** Sets that category's email cell to `off` when the category allows off. A status token leaves status email unchanged. Redirects `303` to `{spa}/settings?tab=preferences`. An unknown or expired token is `400` HTML and does not change preferences.
3719
+ */
3720
+ post: operations["postNotificationEmailUnsubscribe"];
3721
+ delete?: never;
3722
+ options?: never;
3723
+ head?: never;
3724
+ patch?: never;
3725
+ trace?: never;
3726
+ };
3727
+ "/workspaces/{workspaceId}/integrations/slack/install-url": {
3728
+ parameters: {
3729
+ query?: never;
3730
+ header?: never;
3731
+ path?: never;
3732
+ cookie?: never;
3733
+ };
3734
+ /**
3735
+ * Slack install URL for Message Center
3736
+ * @description Workspace admin only. Returns the Slack OAuth authorize URL. State is stored server-side and names this workspace and the signed-in admin. Editor or viewer is `403` with `code` `workspace_admin_required`. Missing Slack app settings are `503` with `code` `slack_not_configured`.
3737
+ */
3738
+ get: operations["getSlackInstallUrl"];
3739
+ put?: never;
3740
+ post?: never;
3741
+ delete?: never;
3742
+ options?: never;
3743
+ head?: never;
3744
+ patch?: never;
3745
+ trace?: never;
3746
+ };
3747
+ "/integrations/slack/callback": {
3748
+ parameters: {
3749
+ query?: never;
3750
+ header?: never;
3751
+ path?: never;
3752
+ cookie?: never;
3753
+ };
3754
+ /**
3755
+ * Slack OAuth callback
3756
+ * @description Browser return from Slack. The provider redirect does not include the API bearer token. `state` was issued by `getSlackInstallUrl` to a signed-in admin and is single-use. The bot token is stored encrypted only when that user is still a workspace admin. Success redirects to `{spa}/settings?tab=preferences&chat=slack`. Failures redirect to the same page with `slack=error`. The token is never in the redirect.
3757
+ */
3758
+ get: operations["getSlackOauthCallback"];
3759
+ put?: never;
3760
+ post?: never;
3761
+ delete?: never;
3762
+ options?: never;
3763
+ head?: never;
3764
+ patch?: never;
3765
+ trace?: never;
3766
+ };
3767
+ "/workspaces/{workspaceId}/integrations/slack": {
3768
+ parameters: {
3769
+ query?: never;
3770
+ header?: never;
3771
+ path?: never;
3772
+ cookie?: never;
3773
+ };
3774
+ /**
3775
+ * Slack connection status
3776
+ * @description Any workspace member. `{ connected, channelName }`. `channelName` is null until an admin saves a channel. The bot token is never returned.
3777
+ */
3778
+ get: operations["getSlackIntegration"];
3779
+ put?: never;
3780
+ post?: never;
3781
+ /**
3782
+ * Disconnect Slack
3783
+ * @description Workspace admin only. Removes the bot token and saved channel. Later Message Center delivery does not post to Slack.
3784
+ */
3785
+ delete: operations["deleteSlackIntegration"];
3786
+ options?: never;
3787
+ head?: never;
3788
+ patch?: never;
3789
+ trace?: never;
3790
+ };
3791
+ "/workspaces/{workspaceId}/integrations/slack/channel": {
3792
+ parameters: {
3793
+ query?: never;
3794
+ header?: never;
3795
+ path?: never;
3796
+ cookie?: never;
3797
+ };
3798
+ get?: never;
3799
+ /**
3800
+ * Save the Slack channel for Message Center
3801
+ * @description Workspace admin only. Body `{ channelId }`. Slack must already be connected. The response is the same status object as `getSlackIntegration`, with the channel name Slack returned. Unknown or malformed `channelId` is `400` `invalid_slack_channel`. Not connected is `409` `slack_not_connected`.
3802
+ */
3803
+ put: operations["putSlackChannel"];
3804
+ post?: never;
3805
+ delete?: never;
3806
+ options?: never;
3807
+ head?: never;
3808
+ patch?: never;
3809
+ trace?: never;
3810
+ };
3703
3811
  "/workspaces/{workspaceId}/notifications": {
3704
3812
  parameters: {
3705
3813
  query?: never;
@@ -4098,6 +4206,90 @@ export interface paths {
4098
4206
  patch?: never;
4099
4207
  trace?: never;
4100
4208
  };
4209
+ "/workspaces/{workspaceId}/integrations/teams/install-url": {
4210
+ parameters: {
4211
+ query?: never;
4212
+ header?: never;
4213
+ path?: never;
4214
+ cookie?: never;
4215
+ };
4216
+ /**
4217
+ * Microsoft sign-in URL for Teams notification delivery
4218
+ * @description Workspace **admin** only. Returns the Microsoft authorize URL. State carries the workspace and the signed-in admin. Editor or viewer is `403` `workspace_admin_required`.
4219
+ */
4220
+ get: operations["getWorkspaceTeamsInstallUrl"];
4221
+ put?: never;
4222
+ post?: never;
4223
+ delete?: never;
4224
+ options?: never;
4225
+ head?: never;
4226
+ patch?: never;
4227
+ trace?: never;
4228
+ };
4229
+ "/integrations/teams/callback": {
4230
+ parameters: {
4231
+ query?: never;
4232
+ header?: never;
4233
+ path?: never;
4234
+ cookie?: never;
4235
+ };
4236
+ /**
4237
+ * Finish Teams Microsoft sign-in
4238
+ * @description Public redirect target. The one-time state was minted by a signed-in admin and still requires that user to be a workspace admin. Stores the bot token encrypted and redirects to `{spa}/settings?tab=preferences&chat=teams`.
4239
+ */
4240
+ get: operations["getTeamsIntegrationCallback"];
4241
+ put?: never;
4242
+ post?: never;
4243
+ delete?: never;
4244
+ options?: never;
4245
+ head?: never;
4246
+ patch?: never;
4247
+ trace?: never;
4248
+ };
4249
+ "/workspaces/{workspaceId}/integrations/teams": {
4250
+ parameters: {
4251
+ query?: never;
4252
+ header?: never;
4253
+ path?: never;
4254
+ cookie?: never;
4255
+ };
4256
+ /**
4257
+ * Teams connection status
4258
+ * @description Any workspace member. `{ connected, channelName }`. Never returns the bot token. `channelName` is null until an admin saves a channel.
4259
+ */
4260
+ get: operations["getWorkspaceTeamsConnection"];
4261
+ put?: never;
4262
+ post?: never;
4263
+ /**
4264
+ * Disconnect Teams
4265
+ * @description Workspace **admin** only. Later Message Center posts do not go to Teams. Member chat cells stay unchanged.
4266
+ */
4267
+ delete: operations["deleteWorkspaceTeamsConnection"];
4268
+ options?: never;
4269
+ head?: never;
4270
+ patch?: never;
4271
+ trace?: never;
4272
+ };
4273
+ "/workspaces/{workspaceId}/integrations/teams/channel": {
4274
+ parameters: {
4275
+ query?: never;
4276
+ header?: never;
4277
+ path?: never;
4278
+ cookie?: never;
4279
+ };
4280
+ get?: never;
4281
+ /**
4282
+ * Save the Teams channel for notification posts
4283
+ * @description Workspace **admin** only. Body `{ channelId }`. The channel must be visible to the connected Microsoft account. Until a channel is saved, channel-mode delivery is skipped with `chat_channel_unset`.
4284
+ */
4285
+ put: operations["putWorkspaceTeamsChannel"];
4286
+ post?: never;
4287
+ delete?: never;
4288
+ options?: never;
4289
+ head?: never;
4290
+ patch?: never;
4291
+ trace?: never;
4292
+ };
4101
4293
  "/workspaces/{workspaceId}/integrations/zelt/authorize-url": {
4102
4294
  parameters: {
4103
4295
  query?: never;
@@ -4362,6 +4554,19 @@ export interface paths {
4362
4554
  export type webhooks = Record<string, never>;
4363
4555
  export interface components {
4364
4556
  schemas: {
4557
+ TeamsInstallUrlDto: {
4558
+ /** Format: uri */
4559
+ url: string;
4560
+ };
4561
+ TeamsConnectionDto: {
4562
+ /** @description True after an admin completes Microsoft sign-in. */
4563
+ connected: boolean;
4564
+ /** @description Selected channel display name. Null until an admin saves a channel. */
4565
+ channelName: string | null;
4566
+ };
4567
+ TeamsChannelBodyDto: {
4568
+ channelId: string;
4569
+ };
4365
4570
  ErrorMessageDto: {
4366
4571
  error: string;
4367
4572
  /** @description Machine-readable error code when present (for example `last_admin`). */
@@ -8017,6 +8222,18 @@ export interface components {
8017
8222
  slack: components["schemas"]["NotificationChatChannelsDto"];
8018
8223
  teams: components["schemas"]["NotificationChatChannelsDto"];
8019
8224
  };
8225
+ SlackInstallUrlDto: {
8226
+ /** @description Slack OAuth authorize URL. The bot token is not included. */
8227
+ url: string;
8228
+ };
8229
+ SlackIntegrationStatusDto: {
8230
+ connected: boolean;
8231
+ /** @description Saved channel name. Null until an admin saves a channel, and when disconnected. */
8232
+ channelName: string | null;
8233
+ };
8234
+ SlackChannelBodyDto: {
8235
+ channelId: string;
8236
+ };
8020
8237
  /** @description Partial email cells. Omitted keys are filled with defaults on save (`status` = `digest`, other keys = `off`). */
8021
8238
  PutNotificationEmailChannelsDto: {
8022
8239
  status?: components["schemas"]["NotificationEmailStatusMode"];
@@ -10483,6 +10700,9 @@ export interface components {
10483
10700
  headers: never;
10484
10701
  pathItems: never;
10485
10702
  }
10703
+ export type TeamsInstallUrlDto = components['schemas']['TeamsInstallUrlDto'];
10704
+ export type TeamsConnectionDto = components['schemas']['TeamsConnectionDto'];
10705
+ export type TeamsChannelBodyDto = components['schemas']['TeamsChannelBodyDto'];
10486
10706
  export type ErrorMessageDto = components['schemas']['ErrorMessageDto'];
10487
10707
  export type TeamMemberDto = components['schemas']['TeamMemberDto'];
10488
10708
  export type TeamMemberListDto = components['schemas']['TeamMemberListDto'];
@@ -10806,6 +11026,9 @@ export type NotificationChatDeliveryMode = components['schemas']['NotificationCh
10806
11026
  export type NotificationEmailChannelsDto = components['schemas']['NotificationEmailChannelsDto'];
10807
11027
  export type NotificationChatChannelsDto = components['schemas']['NotificationChatChannelsDto'];
10808
11028
  export type NotificationChannelsDto = components['schemas']['NotificationChannelsDto'];
11029
+ export type SlackInstallUrlDto = components['schemas']['SlackInstallUrlDto'];
11030
+ export type SlackIntegrationStatusDto = components['schemas']['SlackIntegrationStatusDto'];
11031
+ export type SlackChannelBodyDto = components['schemas']['SlackChannelBodyDto'];
10809
11032
  export type PutNotificationEmailChannelsDto = components['schemas']['PutNotificationEmailChannelsDto'];
10810
11033
  export type PutNotificationChatChannelsDto = components['schemas']['PutNotificationChatChannelsDto'];
10811
11034
  export type PutNotificationChannelsDto = components['schemas']['PutNotificationChannelsDto'];
@@ -20678,139 +20901,80 @@ export interface operations {
20678
20901
  };
20679
20902
  };
20680
20903
  };
20681
- listNotifications: {
20904
+ getNotificationEmailUnsubscribe: {
20682
20905
  parameters: {
20683
- query?: {
20684
- limit?: number;
20685
- offset?: number;
20686
- /** @description `all` returns every severity. `needs_action` returns only `warning` and `destructive`. Omitted is `all`. */
20687
- view?: "all" | "needs_action";
20688
- /** @description Omit to include read and unread rows. `true` is unread only. `false` is read only. */
20689
- unread?: boolean;
20906
+ query: {
20907
+ /** @description Opaque unsubscribe token from the email. Only its SHA-256 hash is stored. */
20908
+ token: string;
20690
20909
  };
20691
20910
  header?: never;
20692
- path: {
20693
- workspaceId: components["parameters"]["WorkspaceId"];
20694
- };
20911
+ path?: never;
20695
20912
  cookie?: never;
20696
20913
  };
20697
20914
  requestBody?: never;
20698
20915
  responses: {
20699
- /** @description Page of notifications */
20916
+ /** @description Confirm page. Preferences are unchanged. */
20700
20917
  200: {
20701
20918
  headers: {
20702
20919
  [name: string]: unknown;
20703
20920
  };
20704
20921
  content: {
20705
- "application/json": components["schemas"]["NotificationListDto"];
20922
+ "text/html": string;
20706
20923
  };
20707
20924
  };
20708
- /** @description Invalid `view` or `unread` */
20925
+ /** @description Unknown or expired token */
20709
20926
  400: {
20710
20927
  headers: {
20711
20928
  [name: string]: unknown;
20712
20929
  };
20713
20930
  content: {
20714
- "application/json": components["schemas"]["ErrorMessageDto"];
20931
+ "text/html": string;
20715
20932
  };
20716
20933
  };
20717
- 401: components["responses"]["Unauthorized"];
20718
20934
  };
20719
20935
  };
20720
- getNotificationUnreadCount: {
20936
+ postNotificationEmailUnsubscribe: {
20721
20937
  parameters: {
20722
- query?: never;
20723
- header?: never;
20724
- path: {
20725
- workspaceId: components["parameters"]["WorkspaceId"];
20938
+ query: {
20939
+ /** @description Opaque unsubscribe token from the email. Only its SHA-256 hash is stored. */
20940
+ token: string;
20726
20941
  };
20942
+ header?: never;
20943
+ path?: never;
20727
20944
  cookie?: never;
20728
20945
  };
20729
20946
  requestBody?: never;
20730
20947
  responses: {
20731
- /** @description Unread count for the current user in this workspace (respecting notification preferences) */
20948
+ /** @description Preference updated when no SPA origin is configured. */
20732
20949
  200: {
20733
20950
  headers: {
20734
20951
  [name: string]: unknown;
20735
20952
  };
20736
20953
  content: {
20737
- "application/json": components["schemas"]["NotificationUnreadCountDto"];
20738
- };
20739
- };
20740
- 401: components["responses"]["Unauthorized"];
20741
- };
20742
- };
20743
- postNotificationRead: {
20744
- parameters: {
20745
- query?: never;
20746
- header?: never;
20747
- path: {
20748
- workspaceId: components["parameters"]["WorkspaceId"];
20749
- id: components["parameters"]["NotificationId"];
20750
- };
20751
- cookie?: never;
20752
- };
20753
- requestBody?: never;
20754
- responses: {
20755
- /** @description Updated */
20756
- 204: {
20757
- headers: {
20758
- [name: string]: unknown;
20954
+ "text/html": string;
20759
20955
  };
20760
- content?: never;
20761
20956
  };
20762
- 401: components["responses"]["Unauthorized"];
20763
- };
20764
- };
20765
- postNotificationsReadAll: {
20766
- parameters: {
20767
- query?: never;
20768
- header?: never;
20769
- path: {
20770
- workspaceId: components["parameters"]["WorkspaceId"];
20771
- };
20772
- cookie?: never;
20773
- };
20774
- requestBody?: never;
20775
- responses: {
20776
- /** @description Updated */
20777
- 204: {
20957
+ /** @description Preference updated, or left unchanged for status email. */
20958
+ 303: {
20778
20959
  headers: {
20960
+ /** @description `{spa}/settings?tab=preferences` */
20961
+ Location?: string;
20779
20962
  [name: string]: unknown;
20780
20963
  };
20781
20964
  content?: never;
20782
20965
  };
20783
- 401: components["responses"]["Unauthorized"];
20784
- };
20785
- };
20786
- postAiStrategyRecommend: {
20787
- parameters: {
20788
- query?: never;
20789
- header?: never;
20790
- path: {
20791
- workspaceId: components["parameters"]["WorkspaceId"];
20792
- };
20793
- cookie?: never;
20794
- };
20795
- requestBody: {
20796
- content: {
20797
- "application/json": components["schemas"]["AiStrategyRecommendBodyDto"];
20798
- };
20799
- };
20800
- responses: {
20801
- /** @description Plan */
20802
- 200: {
20966
+ /** @description Unknown or expired token */
20967
+ 400: {
20803
20968
  headers: {
20804
20969
  [name: string]: unknown;
20805
20970
  };
20806
20971
  content: {
20807
- "application/json": components["schemas"]["AiStrategyPlanDto"];
20972
+ "text/html": string;
20808
20973
  };
20809
20974
  };
20810
- 401: components["responses"]["Unauthorized"];
20811
20975
  };
20812
20976
  };
20813
- getJourneyProgress: {
20977
+ getSlackInstallUrl: {
20814
20978
  parameters: {
20815
20979
  query?: never;
20816
20980
  header?: never;
@@ -20821,63 +20985,33 @@ export interface operations {
20821
20985
  };
20822
20986
  requestBody?: never;
20823
20987
  responses: {
20824
- /** @description Progress (empty completedStepIds when no row exists yet; updatedAt is synthetic in that case) */
20988
+ /** @description Slack authorize URL */
20825
20989
  200: {
20826
20990
  headers: {
20827
20991
  [name: string]: unknown;
20828
20992
  };
20829
20993
  content: {
20830
- "application/json": components["schemas"]["JourneyProgressDto"];
20994
+ "application/json": components["schemas"]["SlackInstallUrlDto"];
20831
20995
  };
20832
20996
  };
20833
- /** @description Malformed workspaceId */
20834
- 400: {
20835
- headers: {
20836
- [name: string]: unknown;
20837
- };
20838
- content: {
20839
- "application/json": components["schemas"]["ErrorMessageDto"];
20840
- };
20841
- };
20842
- 401: components["responses"]["Unauthorized"];
20843
- 403: components["responses"]["Forbidden"];
20844
- /** @description Workspace does not exist */
20845
- 404: {
20997
+ 401: components["responses"]["Unauthorized"];
20998
+ /** @description Caller is not a workspace admin */
20999
+ 403: {
20846
21000
  headers: {
20847
21001
  [name: string]: unknown;
20848
21002
  };
20849
21003
  content: {
21004
+ /**
21005
+ * @example {
21006
+ * "error": "Forbidden",
21007
+ * "code": "workspace_admin_required"
21008
+ * }
21009
+ */
20850
21010
  "application/json": components["schemas"]["ErrorMessageDto"];
20851
21011
  };
20852
21012
  };
20853
- };
20854
- };
20855
- putJourneyProgress: {
20856
- parameters: {
20857
- query?: never;
20858
- header?: never;
20859
- path: {
20860
- workspaceId: components["parameters"]["WorkspaceId"];
20861
- };
20862
- cookie?: never;
20863
- };
20864
- requestBody: {
20865
- content: {
20866
- "application/json": components["schemas"]["JourneyProgressUpdateDto"];
20867
- };
20868
- };
20869
- responses: {
20870
- /** @description Saved progress */
20871
- 200: {
20872
- headers: {
20873
- [name: string]: unknown;
20874
- };
20875
- content: {
20876
- "application/json": components["schemas"]["JourneyProgressDto"];
20877
- };
20878
- };
20879
- /** @description Body fails validation (non-array, invalid entries, too many steps) */
20880
- 400: {
21013
+ /** @description Workspace does not exist or malformed workspaceId */
21014
+ 404: {
20881
21015
  headers: {
20882
21016
  [name: string]: unknown;
20883
21017
  };
@@ -20885,94 +21019,78 @@ export interface operations {
20885
21019
  "application/json": components["schemas"]["ErrorMessageDto"];
20886
21020
  };
20887
21021
  };
20888
- 401: components["responses"]["Unauthorized"];
20889
- 403: components["responses"]["Forbidden"];
20890
- /** @description Workspace does not exist */
20891
- 404: {
21022
+ /** @description Slack app client id, secret, API origin, or SPA origin is unset */
21023
+ 503: {
20892
21024
  headers: {
20893
21025
  [name: string]: unknown;
20894
21026
  };
20895
21027
  content: {
21028
+ /**
21029
+ * @example {
21030
+ * "error": "Slack is not configured",
21031
+ * "code": "slack_not_configured"
21032
+ * }
21033
+ */
20896
21034
  "application/json": components["schemas"]["ErrorMessageDto"];
20897
21035
  };
20898
21036
  };
20899
21037
  };
20900
21038
  };
20901
- getMyPreferences: {
21039
+ getSlackOauthCallback: {
20902
21040
  parameters: {
20903
- query?: never;
20904
- header?: never;
20905
- path?: never;
20906
- cookie?: never;
20907
- };
20908
- requestBody?: never;
20909
- responses: {
20910
- /** @description Preferences */
20911
- 200: {
20912
- headers: {
20913
- [name: string]: unknown;
20914
- };
20915
- content: {
20916
- "application/json": components["schemas"]["PreferencesDto"];
20917
- };
21041
+ query: {
21042
+ code?: string;
21043
+ state: string;
21044
+ error?: string;
20918
21045
  };
20919
- 401: components["responses"]["Unauthorized"];
20920
- };
20921
- };
20922
- putMyPreferences: {
20923
- parameters: {
20924
- query?: never;
20925
21046
  header?: never;
20926
21047
  path?: never;
20927
21048
  cookie?: never;
20928
21049
  };
20929
- requestBody: {
20930
- content: {
20931
- "application/json": components["schemas"]["PutPreferencesBodyDto"];
20932
- };
20933
- };
21050
+ requestBody?: never;
20934
21051
  responses: {
20935
- /** @description Saved preferences */
20936
- 200: {
21052
+ /** @description Redirect to Settings → Preferences */
21053
+ 302: {
20937
21054
  headers: {
21055
+ Location?: string;
20938
21056
  [name: string]: unknown;
20939
21057
  };
20940
- content: {
20941
- "application/json": components["schemas"]["PreferencesDto"];
20942
- };
21058
+ content?: never;
20943
21059
  };
20944
- /** @description Validation failed, or Status email was set to off (`code` `notification_channel_required`). */
20945
- 400: {
21060
+ /** @description Slack app settings are unset and no SPA origin is available */
21061
+ 503: {
20946
21062
  headers: {
20947
21063
  [name: string]: unknown;
20948
21064
  };
20949
21065
  content: {
20950
- "application/json": components["schemas"]["PreferencesValidationErrorDto"] | components["schemas"]["NotificationChannelRequiredErrorDto"];
21066
+ "application/json": components["schemas"]["ErrorMessageDto"];
20951
21067
  };
20952
21068
  };
20953
- 401: components["responses"]["Unauthorized"];
20954
21069
  };
20955
21070
  };
20956
- getMyConsent: {
21071
+ getSlackIntegration: {
20957
21072
  parameters: {
20958
21073
  query?: never;
20959
21074
  header?: never;
20960
- path?: never;
21075
+ path: {
21076
+ workspaceId: components["parameters"]["WorkspaceId"];
21077
+ };
20961
21078
  cookie?: never;
20962
21079
  };
20963
21080
  requestBody?: never;
20964
21081
  responses: {
20965
- /** @description Consent record */
21082
+ /** @description Slack connection status */
20966
21083
  200: {
20967
21084
  headers: {
20968
21085
  [name: string]: unknown;
20969
21086
  };
20970
21087
  content: {
20971
- "application/json": components["schemas"]["ConsentRecordDto"];
21088
+ "application/json": components["schemas"]["SlackIntegrationStatusDto"];
20972
21089
  };
20973
21090
  };
20974
21091
  401: components["responses"]["Unauthorized"];
20975
- /** @description No consent record stored yet */
21092
+ 403: components["responses"]["Forbidden"];
21093
+ /** @description Workspace does not exist or malformed workspaceId */
20976
21094
  404: {
20977
21095
  headers: {
20978
21096
  [name: string]: unknown;
@@ -20983,65 +21101,52 @@ export interface operations {
20983
21101
  };
20984
21102
  };
20985
21103
  };
20986
- putMyConsent: {
21104
+ deleteSlackIntegration: {
20987
21105
  parameters: {
20988
21106
  query?: never;
20989
21107
  header?: never;
20990
- path?: never;
20991
- cookie?: never;
20992
- };
20993
- requestBody: {
20994
- content: {
20995
- "application/json": components["schemas"]["PutConsentBodyDto"];
21108
+ path: {
21109
+ workspaceId: components["parameters"]["WorkspaceId"];
20996
21110
  };
21111
+ cookie?: never;
20997
21112
  };
21113
+ requestBody?: never;
20998
21114
  responses: {
20999
- /** @description Saved consent record */
21000
- 200: {
21115
+ /** @description Slack disconnected */
21116
+ 204: {
21001
21117
  headers: {
21002
21118
  [name: string]: unknown;
21003
21119
  };
21004
- content: {
21005
- "application/json": components["schemas"]["ConsentRecordDto"];
21006
- };
21120
+ content?: never;
21007
21121
  };
21008
- /** @description Validation failed */
21009
- 400: {
21122
+ 401: components["responses"]["Unauthorized"];
21123
+ /** @description Caller is not a workspace admin */
21124
+ 403: {
21010
21125
  headers: {
21011
21126
  [name: string]: unknown;
21012
21127
  };
21013
21128
  content: {
21014
- "application/json": components["schemas"]["ConsentValidationErrorDto"];
21129
+ /**
21130
+ * @example {
21131
+ * "error": "Forbidden",
21132
+ * "code": "workspace_admin_required"
21133
+ * }
21134
+ */
21135
+ "application/json": components["schemas"]["ErrorMessageDto"];
21015
21136
  };
21016
21137
  };
21017
- 401: components["responses"]["Unauthorized"];
21018
- };
21019
- };
21020
- getAppShell: {
21021
- parameters: {
21022
- query?: {
21023
- /** @description Optional workspace scope for banner, notifications, journey, and connectors. Omitted or unresolvable values yield the base shell without workspace extras. */
21024
- workspaceId?: string;
21025
- };
21026
- header?: never;
21027
- path?: never;
21028
- cookie?: never;
21029
- };
21030
- requestBody?: never;
21031
- responses: {
21032
- /** @description App shell bootstrap payload. Workspace-scoped fields (`banner`, `unreadCount`, `journeyProgress`, `connectorsSnapshot`) appear only when `workspaceId` resolves to a workspace the caller belongs to. */
21033
- 200: {
21138
+ /** @description Workspace does not exist or malformed workspaceId */
21139
+ 404: {
21034
21140
  headers: {
21035
21141
  [name: string]: unknown;
21036
21142
  };
21037
21143
  content: {
21038
- "application/json": components["schemas"]["AppShellDto"];
21144
+ "application/json": components["schemas"]["ErrorMessageDto"];
21039
21145
  };
21040
21146
  };
21041
- 401: components["responses"]["Unauthorized"];
21042
21147
  };
21043
21148
  };
21044
- postOrgChartImport: {
21149
+ putSlackChannel: {
21045
21150
  parameters: {
21046
21151
  query?: never;
21047
21152
  header?: never;
@@ -21052,31 +21157,51 @@ export interface operations {
21052
21157
  };
21053
21158
  requestBody: {
21054
21159
  content: {
21055
- "application/json": components["schemas"]["OrgChartImportBodyDto"];
21160
+ "application/json": components["schemas"]["SlackChannelBodyDto"];
21056
21161
  };
21057
21162
  };
21058
21163
  responses: {
21059
- /** @description Parsed persons from uploaded CSV (not persisted server-side) */
21164
+ /** @description Channel saved */
21060
21165
  200: {
21061
21166
  headers: {
21062
21167
  [name: string]: unknown;
21063
21168
  };
21064
21169
  content: {
21065
- "application/json": components["schemas"]["OrgChartImportResultDto"];
21170
+ "application/json": components["schemas"]["SlackIntegrationStatusDto"];
21066
21171
  };
21067
21172
  };
21068
- /** @description Invalid body or storage path */
21173
+ /** @description channelId is missing, malformed, or unknown to Slack */
21069
21174
  400: {
21070
21175
  headers: {
21071
21176
  [name: string]: unknown;
21072
21177
  };
21073
21178
  content: {
21179
+ /**
21180
+ * @example {
21181
+ * "error": "Slack channel was not found",
21182
+ * "code": "invalid_slack_channel"
21183
+ * }
21184
+ */
21074
21185
  "application/json": components["schemas"]["ErrorMessageDto"];
21075
21186
  };
21076
21187
  };
21077
21188
  401: components["responses"]["Unauthorized"];
21078
- 403: components["responses"]["Forbidden"];
21079
- /** @description Storage object not found */
21189
+ /** @description Caller is not a workspace admin */
21190
+ 403: {
21191
+ headers: {
21192
+ [name: string]: unknown;
21193
+ };
21194
+ content: {
21195
+ /**
21196
+ * @example {
21197
+ * "error": "Forbidden",
21198
+ * "code": "workspace_admin_required"
21199
+ * }
21200
+ */
21201
+ "application/json": components["schemas"]["ErrorMessageDto"];
21202
+ };
21203
+ };
21204
+ /** @description Workspace does not exist or malformed workspaceId */
21080
21205
  404: {
21081
21206
  headers: {
21082
21207
  [name: string]: unknown;
@@ -21085,29 +21210,48 @@ export interface operations {
21085
21210
  "application/json": components["schemas"]["ErrorMessageDto"];
21086
21211
  };
21087
21212
  };
21088
- /** @description Failed to download file from storage */
21089
- 502: {
21213
+ /** @description Slack is not connected */
21214
+ 409: {
21090
21215
  headers: {
21091
21216
  [name: string]: unknown;
21092
21217
  };
21093
21218
  content: {
21219
+ /**
21220
+ * @example {
21221
+ * "error": "Slack is not connected",
21222
+ * "code": "slack_not_connected"
21223
+ * }
21224
+ */
21094
21225
  "application/json": components["schemas"]["ErrorMessageDto"];
21095
21226
  };
21096
21227
  };
21097
- /** @description Storage import not configured or service unavailable */
21098
- 503: {
21228
+ /** @description Slack rejected the lookup */
21229
+ 502: {
21099
21230
  headers: {
21100
21231
  [name: string]: unknown;
21101
21232
  };
21102
21233
  content: {
21234
+ /**
21235
+ * @example {
21236
+ * "error": "Slack did not accept the channel",
21237
+ * "code": "slack_request_failed"
21238
+ * }
21239
+ */
21103
21240
  "application/json": components["schemas"]["ErrorMessageDto"];
21104
21241
  };
21105
21242
  };
21106
21243
  };
21107
21244
  };
21108
- getYourAiJourneyHero: {
21245
+ listNotifications: {
21109
21246
  parameters: {
21110
- query?: never;
21247
+ query?: {
21248
+ limit?: number;
21249
+ offset?: number;
21250
+ /** @description `all` returns every severity. `needs_action` returns only `warning` and `destructive`. Omitted is `all`. */
21251
+ view?: "all" | "needs_action";
21252
+ /** @description Omit to include read and unread rows. `true` is unread only. `false` is read only. */
21253
+ unread?: boolean;
21254
+ };
21111
21255
  header?: never;
21112
21256
  path: {
21113
21257
  workspaceId: components["parameters"]["WorkspaceId"];
@@ -21116,19 +21260,17 @@ export interface operations {
21116
21260
  };
21117
21261
  requestBody?: never;
21118
21262
  responses: {
21119
- /** @description Hero bootstrap payload */
21263
+ /** @description Page of notifications */
21120
21264
  200: {
21121
21265
  headers: {
21122
21266
  [name: string]: unknown;
21123
21267
  };
21124
21268
  content: {
21125
- "application/json": components["schemas"]["YourAiJourneyHeroDto"];
21269
+ "application/json": components["schemas"]["NotificationListDto"];
21126
21270
  };
21127
21271
  };
21128
- 401: components["responses"]["Unauthorized"];
21129
- 403: components["responses"]["Forbidden"];
21130
- /** @description Workspace does not exist */
21131
- 404: {
21272
+ /** @description Invalid `view` or `unread` */
21273
+ 400: {
21132
21274
  headers: {
21133
21275
  [name: string]: unknown;
21134
21276
  };
@@ -21136,9 +21278,10 @@ export interface operations {
21136
21278
  "application/json": components["schemas"]["ErrorMessageDto"];
21137
21279
  };
21138
21280
  };
21281
+ 401: components["responses"]["Unauthorized"];
21139
21282
  };
21140
21283
  };
21141
- getYourAiJourneyDashboardSecondary: {
21284
+ getNotificationUnreadCount: {
21142
21285
  parameters: {
21143
21286
  query?: never;
21144
21287
  header?: never;
@@ -21149,67 +21292,91 @@ export interface operations {
21149
21292
  };
21150
21293
  requestBody?: never;
21151
21294
  responses: {
21152
- /** @description Secondary dashboard bootstrap payload */
21295
+ /** @description Unread count for the current user in this workspace (respecting notification preferences) */
21153
21296
  200: {
21154
21297
  headers: {
21155
21298
  [name: string]: unknown;
21156
21299
  };
21157
21300
  content: {
21158
- "application/json": components["schemas"]["DashboardSecondaryDto"];
21301
+ "application/json": components["schemas"]["NotificationUnreadCountDto"];
21159
21302
  };
21160
21303
  };
21161
21304
  401: components["responses"]["Unauthorized"];
21162
- 403: components["responses"]["Forbidden"];
21163
- /** @description Workspace does not exist */
21164
- 404: {
21165
- headers: {
21166
- [name: string]: unknown;
21167
- };
21168
- content: {
21169
- "application/json": components["schemas"]["ErrorMessageDto"];
21170
- };
21171
- };
21172
21305
  };
21173
21306
  };
21174
- getYourAiJourneyAnalytics: {
21307
+ postNotificationRead: {
21175
21308
  parameters: {
21176
21309
  query?: never;
21177
21310
  header?: never;
21178
21311
  path: {
21179
21312
  workspaceId: components["parameters"]["WorkspaceId"];
21313
+ id: components["parameters"]["NotificationId"];
21180
21314
  };
21181
21315
  cookie?: never;
21182
21316
  };
21183
21317
  requestBody?: never;
21184
21318
  responses: {
21185
- /** @description Analytics summary */
21186
- 200: {
21319
+ /** @description Updated */
21320
+ 204: {
21187
21321
  headers: {
21188
21322
  [name: string]: unknown;
21189
21323
  };
21190
- content: {
21191
- "application/json": components["schemas"]["YourAiJourneyAnalyticsDto"];
21192
- };
21324
+ content?: never;
21193
21325
  };
21194
21326
  401: components["responses"]["Unauthorized"];
21195
- 403: components["responses"]["Forbidden"];
21196
- /** @description Workspace does not exist */
21197
- 404: {
21198
- headers: {
21199
- [name: string]: unknown;
21200
- };
21201
- content: {
21202
- "application/json": components["schemas"]["ErrorMessageDto"];
21327
+ };
21328
+ };
21329
+ postNotificationsReadAll: {
21330
+ parameters: {
21331
+ query?: never;
21332
+ header?: never;
21333
+ path: {
21334
+ workspaceId: components["parameters"]["WorkspaceId"];
21335
+ };
21336
+ cookie?: never;
21337
+ };
21338
+ requestBody?: never;
21339
+ responses: {
21340
+ /** @description Updated */
21341
+ 204: {
21342
+ headers: {
21343
+ [name: string]: unknown;
21203
21344
  };
21345
+ content?: never;
21204
21346
  };
21347
+ 401: components["responses"]["Unauthorized"];
21205
21348
  };
21206
21349
  };
21207
- getYourAiJourneyPrSignals: {
21350
+ postAiStrategyRecommend: {
21208
21351
  parameters: {
21209
- query?: {
21210
- /** @description Number of weekly buckets to return (1–52; default 8). */
21211
- limit?: number;
21352
+ query?: never;
21353
+ header?: never;
21354
+ path: {
21355
+ workspaceId: components["parameters"]["WorkspaceId"];
21356
+ };
21357
+ cookie?: never;
21358
+ };
21359
+ requestBody: {
21360
+ content: {
21361
+ "application/json": components["schemas"]["AiStrategyRecommendBodyDto"];
21362
+ };
21363
+ };
21364
+ responses: {
21365
+ /** @description Plan */
21366
+ 200: {
21367
+ headers: {
21368
+ [name: string]: unknown;
21369
+ };
21370
+ content: {
21371
+ "application/json": components["schemas"]["AiStrategyPlanDto"];
21372
+ };
21212
21373
  };
21374
+ 401: components["responses"]["Unauthorized"];
21375
+ };
21376
+ };
21377
+ getJourneyProgress: {
21378
+ parameters: {
21379
+ query?: never;
21213
21380
  header?: never;
21214
21381
  path: {
21215
21382
  workspaceId: components["parameters"]["WorkspaceId"];
@@ -21218,16 +21385,16 @@ export interface operations {
21218
21385
  };
21219
21386
  requestBody?: never;
21220
21387
  responses: {
21221
- /** @description Weekly PR signals */
21388
+ /** @description Progress (empty completedStepIds when no row exists yet; updatedAt is synthetic in that case) */
21222
21389
  200: {
21223
21390
  headers: {
21224
21391
  [name: string]: unknown;
21225
21392
  };
21226
21393
  content: {
21227
- "application/json": components["schemas"]["YourAiJourneyPrSignalsDto"];
21394
+ "application/json": components["schemas"]["JourneyProgressDto"];
21228
21395
  };
21229
21396
  };
21230
- /** @description Invalid query parameter (limit out of range) */
21397
+ /** @description Malformed workspaceId */
21231
21398
  400: {
21232
21399
  headers: {
21233
21400
  [name: string]: unknown;
@@ -21249,7 +21416,7 @@ export interface operations {
21249
21416
  };
21250
21417
  };
21251
21418
  };
21252
- getYourAiJourneyReadinessAggregate: {
21419
+ putJourneyProgress: {
21253
21420
  parameters: {
21254
21421
  query?: never;
21255
21422
  header?: never;
@@ -21258,15 +21425,28 @@ export interface operations {
21258
21425
  };
21259
21426
  cookie?: never;
21260
21427
  };
21261
- requestBody?: never;
21428
+ requestBody: {
21429
+ content: {
21430
+ "application/json": components["schemas"]["JourneyProgressUpdateDto"];
21431
+ };
21432
+ };
21262
21433
  responses: {
21263
- /** @description Readiness aggregate */
21434
+ /** @description Saved progress */
21264
21435
  200: {
21265
21436
  headers: {
21266
21437
  [name: string]: unknown;
21267
21438
  };
21268
21439
  content: {
21269
- "application/json": components["schemas"]["YourAiJourneyReadinessAggregateDto"];
21440
+ "application/json": components["schemas"]["JourneyProgressDto"];
21441
+ };
21442
+ };
21443
+ /** @description Body fails validation (non-array, invalid entries, too many steps) */
21444
+ 400: {
21445
+ headers: {
21446
+ [name: string]: unknown;
21447
+ };
21448
+ content: {
21449
+ "application/json": components["schemas"]["ErrorMessageDto"];
21270
21450
  };
21271
21451
  };
21272
21452
  401: components["responses"]["Unauthorized"];
@@ -21282,29 +21462,81 @@ export interface operations {
21282
21462
  };
21283
21463
  };
21284
21464
  };
21285
- getYourAiJourneyProgress: {
21465
+ getMyPreferences: {
21286
21466
  parameters: {
21287
21467
  query?: never;
21288
21468
  header?: never;
21289
- path: {
21290
- workspaceId: components["parameters"]["WorkspaceId"];
21469
+ path?: never;
21470
+ cookie?: never;
21471
+ };
21472
+ requestBody?: never;
21473
+ responses: {
21474
+ /** @description Preferences */
21475
+ 200: {
21476
+ headers: {
21477
+ [name: string]: unknown;
21478
+ };
21479
+ content: {
21480
+ "application/json": components["schemas"]["PreferencesDto"];
21481
+ };
21482
+ };
21483
+ 401: components["responses"]["Unauthorized"];
21484
+ };
21485
+ };
21486
+ putMyPreferences: {
21487
+ parameters: {
21488
+ query?: never;
21489
+ header?: never;
21490
+ path?: never;
21491
+ cookie?: never;
21492
+ };
21493
+ requestBody: {
21494
+ content: {
21495
+ "application/json": components["schemas"]["PutPreferencesBodyDto"];
21496
+ };
21497
+ };
21498
+ responses: {
21499
+ /** @description Saved preferences */
21500
+ 200: {
21501
+ headers: {
21502
+ [name: string]: unknown;
21503
+ };
21504
+ content: {
21505
+ "application/json": components["schemas"]["PreferencesDto"];
21506
+ };
21507
+ };
21508
+ /** @description Validation failed, or Status email was set to off (`code` `notification_channel_required`). */
21509
+ 400: {
21510
+ headers: {
21511
+ [name: string]: unknown;
21512
+ };
21513
+ content: {
21514
+ "application/json": components["schemas"]["PreferencesValidationErrorDto"] | components["schemas"]["NotificationChannelRequiredErrorDto"];
21515
+ };
21291
21516
  };
21517
+ 401: components["responses"]["Unauthorized"];
21518
+ };
21519
+ };
21520
+ getMyConsent: {
21521
+ parameters: {
21522
+ query?: never;
21523
+ header?: never;
21524
+ path?: never;
21292
21525
  cookie?: never;
21293
21526
  };
21294
21527
  requestBody?: never;
21295
21528
  responses: {
21296
- /** @description Journey progress */
21529
+ /** @description Consent record */
21297
21530
  200: {
21298
21531
  headers: {
21299
21532
  [name: string]: unknown;
21300
21533
  };
21301
21534
  content: {
21302
- "application/json": components["schemas"]["JourneyProgressDto"];
21535
+ "application/json": components["schemas"]["ConsentRecordDto"];
21303
21536
  };
21304
21537
  };
21305
21538
  401: components["responses"]["Unauthorized"];
21306
- 403: components["responses"]["Forbidden"];
21307
- /** @description Workspace does not exist */
21539
+ /** @description No consent record stored yet */
21308
21540
  404: {
21309
21541
  headers: {
21310
21542
  [name: string]: unknown;
@@ -21315,53 +21547,65 @@ export interface operations {
21315
21547
  };
21316
21548
  };
21317
21549
  };
21318
- putYourAiJourneyProgress: {
21550
+ putMyConsent: {
21319
21551
  parameters: {
21320
21552
  query?: never;
21321
21553
  header?: never;
21322
- path: {
21323
- workspaceId: components["parameters"]["WorkspaceId"];
21324
- };
21554
+ path?: never;
21325
21555
  cookie?: never;
21326
21556
  };
21327
21557
  requestBody: {
21328
21558
  content: {
21329
- "application/json": components["schemas"]["JourneyProgressUpdateDto"];
21559
+ "application/json": components["schemas"]["PutConsentBodyDto"];
21330
21560
  };
21331
21561
  };
21332
21562
  responses: {
21333
- /** @description Saved progress */
21563
+ /** @description Saved consent record */
21334
21564
  200: {
21335
21565
  headers: {
21336
21566
  [name: string]: unknown;
21337
21567
  };
21338
21568
  content: {
21339
- "application/json": components["schemas"]["JourneyProgressDto"];
21569
+ "application/json": components["schemas"]["ConsentRecordDto"];
21340
21570
  };
21341
21571
  };
21342
- /** @description Body fails validation (non-array, invalid entries, too many steps) */
21572
+ /** @description Validation failed */
21343
21573
  400: {
21344
21574
  headers: {
21345
21575
  [name: string]: unknown;
21346
21576
  };
21347
21577
  content: {
21348
- "application/json": components["schemas"]["ErrorMessageDto"];
21578
+ "application/json": components["schemas"]["ConsentValidationErrorDto"];
21349
21579
  };
21350
21580
  };
21351
21581
  401: components["responses"]["Unauthorized"];
21352
- 403: components["responses"]["Forbidden"];
21353
- /** @description Workspace does not exist */
21354
- 404: {
21582
+ };
21583
+ };
21584
+ getAppShell: {
21585
+ parameters: {
21586
+ query?: {
21587
+ /** @description Optional workspace scope for banner, notifications, journey, and connectors. Omitted or unresolvable values yield the base shell without workspace extras. */
21588
+ workspaceId?: string;
21589
+ };
21590
+ header?: never;
21591
+ path?: never;
21592
+ cookie?: never;
21593
+ };
21594
+ requestBody?: never;
21595
+ responses: {
21596
+ /** @description App shell bootstrap payload. Workspace-scoped fields (`banner`, `unreadCount`, `journeyProgress`, `connectorsSnapshot`) appear only when `workspaceId` resolves to a workspace the caller belongs to. */
21597
+ 200: {
21355
21598
  headers: {
21356
21599
  [name: string]: unknown;
21357
21600
  };
21358
21601
  content: {
21359
- "application/json": components["schemas"]["ErrorMessageDto"];
21602
+ "application/json": components["schemas"]["AppShellDto"];
21360
21603
  };
21361
21604
  };
21605
+ 401: components["responses"]["Unauthorized"];
21362
21606
  };
21363
21607
  };
21364
- getYourAiJourneyAgenticFoundation: {
21608
+ postOrgChartImport: {
21365
21609
  parameters: {
21366
21610
  query?: never;
21367
21611
  header?: never;
@@ -21370,20 +21614,33 @@ export interface operations {
21370
21614
  };
21371
21615
  cookie?: never;
21372
21616
  };
21373
- requestBody?: never;
21617
+ requestBody: {
21618
+ content: {
21619
+ "application/json": components["schemas"]["OrgChartImportBodyDto"];
21620
+ };
21621
+ };
21374
21622
  responses: {
21375
- /** @description Agentic foundation dashboard */
21623
+ /** @description Parsed persons from uploaded CSV (not persisted server-side) */
21376
21624
  200: {
21377
21625
  headers: {
21378
21626
  [name: string]: unknown;
21379
21627
  };
21380
21628
  content: {
21381
- "application/json": components["schemas"]["AgenticFoundationDashboardDto"];
21629
+ "application/json": components["schemas"]["OrgChartImportResultDto"];
21630
+ };
21631
+ };
21632
+ /** @description Invalid body or storage path */
21633
+ 400: {
21634
+ headers: {
21635
+ [name: string]: unknown;
21636
+ };
21637
+ content: {
21638
+ "application/json": components["schemas"]["ErrorMessageDto"];
21382
21639
  };
21383
21640
  };
21384
21641
  401: components["responses"]["Unauthorized"];
21385
21642
  403: components["responses"]["Forbidden"];
21386
- /** @description Workspace does not exist */
21643
+ /** @description Storage object not found */
21387
21644
  404: {
21388
21645
  headers: {
21389
21646
  [name: string]: unknown;
@@ -21392,14 +21649,29 @@ export interface operations {
21392
21649
  "application/json": components["schemas"]["ErrorMessageDto"];
21393
21650
  };
21394
21651
  };
21652
+ /** @description Failed to download file from storage */
21653
+ 502: {
21654
+ headers: {
21655
+ [name: string]: unknown;
21656
+ };
21657
+ content: {
21658
+ "application/json": components["schemas"]["ErrorMessageDto"];
21659
+ };
21660
+ };
21661
+ /** @description Storage import not configured or service unavailable */
21662
+ 503: {
21663
+ headers: {
21664
+ [name: string]: unknown;
21665
+ };
21666
+ content: {
21667
+ "application/json": components["schemas"]["ErrorMessageDto"];
21668
+ };
21669
+ };
21395
21670
  };
21396
21671
  };
21397
- getYourAiJourneyProductivity: {
21672
+ getYourAiJourneyHero: {
21398
21673
  parameters: {
21399
- query?: {
21400
- /** @description Upper bound of the requested window (ISO 8601; defaults to now). */
21401
- windowEnd?: string;
21402
- };
21674
+ query?: never;
21403
21675
  header?: never;
21404
21676
  path: {
21405
21677
  workspaceId: components["parameters"]["WorkspaceId"];
@@ -21408,13 +21680,13 @@ export interface operations {
21408
21680
  };
21409
21681
  requestBody?: never;
21410
21682
  responses: {
21411
- /** @description Productivity metrics snapshot */
21683
+ /** @description Hero bootstrap payload */
21412
21684
  200: {
21413
21685
  headers: {
21414
21686
  [name: string]: unknown;
21415
21687
  };
21416
21688
  content: {
21417
- "application/json": components["schemas"]["DashboardProductivityDto"];
21689
+ "application/json": components["schemas"]["YourAiJourneyHeroDto"];
21418
21690
  };
21419
21691
  };
21420
21692
  401: components["responses"]["Unauthorized"];
@@ -21430,12 +21702,9 @@ export interface operations {
21430
21702
  };
21431
21703
  };
21432
21704
  };
21433
- getYourAiJourneyAiSpend: {
21705
+ getYourAiJourneyDashboardSecondary: {
21434
21706
  parameters: {
21435
- query?: {
21436
- /** @description Time range — `4w` (4 weeks), `8w` (8 weeks), or `q` (quarter, 12 weeks). */
21437
- rangeId?: "4w" | "8w" | "q";
21438
- };
21707
+ query?: never;
21439
21708
  header?: never;
21440
21709
  path: {
21441
21710
  workspaceId: components["parameters"]["WorkspaceId"];
@@ -21444,13 +21713,13 @@ export interface operations {
21444
21713
  };
21445
21714
  requestBody?: never;
21446
21715
  responses: {
21447
- /** @description AI spend aggregation */
21716
+ /** @description Secondary dashboard bootstrap payload */
21448
21717
  200: {
21449
21718
  headers: {
21450
21719
  [name: string]: unknown;
21451
21720
  };
21452
21721
  content: {
21453
- "application/json": components["schemas"]["YourAiJourneyAiSpendDto"];
21722
+ "application/json": components["schemas"]["DashboardSecondaryDto"];
21454
21723
  };
21455
21724
  };
21456
21725
  401: components["responses"]["Unauthorized"];
@@ -21466,14 +21735,309 @@ export interface operations {
21466
21735
  };
21467
21736
  };
21468
21737
  };
21469
- listWorkspaceAbsences: {
21738
+ getYourAiJourneyAnalytics: {
21470
21739
  parameters: {
21471
- query?: {
21472
- /** @description Start of date window (ISO YYYY-MM-DD). Defaults to today. */
21473
- from?: string;
21474
- /** @description End of date window (ISO YYYY-MM-DD). Defaults to 90 days from today. */
21475
- to?: string;
21476
- };
21740
+ query?: never;
21741
+ header?: never;
21742
+ path: {
21743
+ workspaceId: components["parameters"]["WorkspaceId"];
21744
+ };
21745
+ cookie?: never;
21746
+ };
21747
+ requestBody?: never;
21748
+ responses: {
21749
+ /** @description Analytics summary */
21750
+ 200: {
21751
+ headers: {
21752
+ [name: string]: unknown;
21753
+ };
21754
+ content: {
21755
+ "application/json": components["schemas"]["YourAiJourneyAnalyticsDto"];
21756
+ };
21757
+ };
21758
+ 401: components["responses"]["Unauthorized"];
21759
+ 403: components["responses"]["Forbidden"];
21760
+ /** @description Workspace does not exist */
21761
+ 404: {
21762
+ headers: {
21763
+ [name: string]: unknown;
21764
+ };
21765
+ content: {
21766
+ "application/json": components["schemas"]["ErrorMessageDto"];
21767
+ };
21768
+ };
21769
+ };
21770
+ };
21771
+ getYourAiJourneyPrSignals: {
21772
+ parameters: {
21773
+ query?: {
21774
+ /** @description Number of weekly buckets to return (1–52; default 8). */
21775
+ limit?: number;
21776
+ };
21777
+ header?: never;
21778
+ path: {
21779
+ workspaceId: components["parameters"]["WorkspaceId"];
21780
+ };
21781
+ cookie?: never;
21782
+ };
21783
+ requestBody?: never;
21784
+ responses: {
21785
+ /** @description Weekly PR signals */
21786
+ 200: {
21787
+ headers: {
21788
+ [name: string]: unknown;
21789
+ };
21790
+ content: {
21791
+ "application/json": components["schemas"]["YourAiJourneyPrSignalsDto"];
21792
+ };
21793
+ };
21794
+ /** @description Invalid query parameter (limit out of range) */
21795
+ 400: {
21796
+ headers: {
21797
+ [name: string]: unknown;
21798
+ };
21799
+ content: {
21800
+ "application/json": components["schemas"]["ErrorMessageDto"];
21801
+ };
21802
+ };
21803
+ 401: components["responses"]["Unauthorized"];
21804
+ 403: components["responses"]["Forbidden"];
21805
+ /** @description Workspace does not exist */
21806
+ 404: {
21807
+ headers: {
21808
+ [name: string]: unknown;
21809
+ };
21810
+ content: {
21811
+ "application/json": components["schemas"]["ErrorMessageDto"];
21812
+ };
21813
+ };
21814
+ };
21815
+ };
21816
+ getYourAiJourneyReadinessAggregate: {
21817
+ parameters: {
21818
+ query?: never;
21819
+ header?: never;
21820
+ path: {
21821
+ workspaceId: components["parameters"]["WorkspaceId"];
21822
+ };
21823
+ cookie?: never;
21824
+ };
21825
+ requestBody?: never;
21826
+ responses: {
21827
+ /** @description Readiness aggregate */
21828
+ 200: {
21829
+ headers: {
21830
+ [name: string]: unknown;
21831
+ };
21832
+ content: {
21833
+ "application/json": components["schemas"]["YourAiJourneyReadinessAggregateDto"];
21834
+ };
21835
+ };
21836
+ 401: components["responses"]["Unauthorized"];
21837
+ 403: components["responses"]["Forbidden"];
21838
+ /** @description Workspace does not exist */
21839
+ 404: {
21840
+ headers: {
21841
+ [name: string]: unknown;
21842
+ };
21843
+ content: {
21844
+ "application/json": components["schemas"]["ErrorMessageDto"];
21845
+ };
21846
+ };
21847
+ };
21848
+ };
21849
+ getYourAiJourneyProgress: {
21850
+ parameters: {
21851
+ query?: never;
21852
+ header?: never;
21853
+ path: {
21854
+ workspaceId: components["parameters"]["WorkspaceId"];
21855
+ };
21856
+ cookie?: never;
21857
+ };
21858
+ requestBody?: never;
21859
+ responses: {
21860
+ /** @description Journey progress */
21861
+ 200: {
21862
+ headers: {
21863
+ [name: string]: unknown;
21864
+ };
21865
+ content: {
21866
+ "application/json": components["schemas"]["JourneyProgressDto"];
21867
+ };
21868
+ };
21869
+ 401: components["responses"]["Unauthorized"];
21870
+ 403: components["responses"]["Forbidden"];
21871
+ /** @description Workspace does not exist */
21872
+ 404: {
21873
+ headers: {
21874
+ [name: string]: unknown;
21875
+ };
21876
+ content: {
21877
+ "application/json": components["schemas"]["ErrorMessageDto"];
21878
+ };
21879
+ };
21880
+ };
21881
+ };
21882
+ putYourAiJourneyProgress: {
21883
+ parameters: {
21884
+ query?: never;
21885
+ header?: never;
21886
+ path: {
21887
+ workspaceId: components["parameters"]["WorkspaceId"];
21888
+ };
21889
+ cookie?: never;
21890
+ };
21891
+ requestBody: {
21892
+ content: {
21893
+ "application/json": components["schemas"]["JourneyProgressUpdateDto"];
21894
+ };
21895
+ };
21896
+ responses: {
21897
+ /** @description Saved progress */
21898
+ 200: {
21899
+ headers: {
21900
+ [name: string]: unknown;
21901
+ };
21902
+ content: {
21903
+ "application/json": components["schemas"]["JourneyProgressDto"];
21904
+ };
21905
+ };
21906
+ /** @description Body fails validation (non-array, invalid entries, too many steps) */
21907
+ 400: {
21908
+ headers: {
21909
+ [name: string]: unknown;
21910
+ };
21911
+ content: {
21912
+ "application/json": components["schemas"]["ErrorMessageDto"];
21913
+ };
21914
+ };
21915
+ 401: components["responses"]["Unauthorized"];
21916
+ 403: components["responses"]["Forbidden"];
21917
+ /** @description Workspace does not exist */
21918
+ 404: {
21919
+ headers: {
21920
+ [name: string]: unknown;
21921
+ };
21922
+ content: {
21923
+ "application/json": components["schemas"]["ErrorMessageDto"];
21924
+ };
21925
+ };
21926
+ };
21927
+ };
21928
+ getYourAiJourneyAgenticFoundation: {
21929
+ parameters: {
21930
+ query?: never;
21931
+ header?: never;
21932
+ path: {
21933
+ workspaceId: components["parameters"]["WorkspaceId"];
21934
+ };
21935
+ cookie?: never;
21936
+ };
21937
+ requestBody?: never;
21938
+ responses: {
21939
+ /** @description Agentic foundation dashboard */
21940
+ 200: {
21941
+ headers: {
21942
+ [name: string]: unknown;
21943
+ };
21944
+ content: {
21945
+ "application/json": components["schemas"]["AgenticFoundationDashboardDto"];
21946
+ };
21947
+ };
21948
+ 401: components["responses"]["Unauthorized"];
21949
+ 403: components["responses"]["Forbidden"];
21950
+ /** @description Workspace does not exist */
21951
+ 404: {
21952
+ headers: {
21953
+ [name: string]: unknown;
21954
+ };
21955
+ content: {
21956
+ "application/json": components["schemas"]["ErrorMessageDto"];
21957
+ };
21958
+ };
21959
+ };
21960
+ };
21961
+ getYourAiJourneyProductivity: {
21962
+ parameters: {
21963
+ query?: {
21964
+ /** @description Upper bound of the requested window (ISO 8601; defaults to now). */
21965
+ windowEnd?: string;
21966
+ };
21967
+ header?: never;
21968
+ path: {
21969
+ workspaceId: components["parameters"]["WorkspaceId"];
21970
+ };
21971
+ cookie?: never;
21972
+ };
21973
+ requestBody?: never;
21974
+ responses: {
21975
+ /** @description Productivity metrics snapshot */
21976
+ 200: {
21977
+ headers: {
21978
+ [name: string]: unknown;
21979
+ };
21980
+ content: {
21981
+ "application/json": components["schemas"]["DashboardProductivityDto"];
21982
+ };
21983
+ };
21984
+ 401: components["responses"]["Unauthorized"];
21985
+ 403: components["responses"]["Forbidden"];
21986
+ /** @description Workspace does not exist */
21987
+ 404: {
21988
+ headers: {
21989
+ [name: string]: unknown;
21990
+ };
21991
+ content: {
21992
+ "application/json": components["schemas"]["ErrorMessageDto"];
21993
+ };
21994
+ };
21995
+ };
21996
+ };
21997
+ getYourAiJourneyAiSpend: {
21998
+ parameters: {
21999
+ query?: {
22000
+ /** @description Time range — `4w` (4 weeks), `8w` (8 weeks), or `q` (quarter, 12 weeks). */
22001
+ rangeId?: "4w" | "8w" | "q";
22002
+ };
22003
+ header?: never;
22004
+ path: {
22005
+ workspaceId: components["parameters"]["WorkspaceId"];
22006
+ };
22007
+ cookie?: never;
22008
+ };
22009
+ requestBody?: never;
22010
+ responses: {
22011
+ /** @description AI spend aggregation */
22012
+ 200: {
22013
+ headers: {
22014
+ [name: string]: unknown;
22015
+ };
22016
+ content: {
22017
+ "application/json": components["schemas"]["YourAiJourneyAiSpendDto"];
22018
+ };
22019
+ };
22020
+ 401: components["responses"]["Unauthorized"];
22021
+ 403: components["responses"]["Forbidden"];
22022
+ /** @description Workspace does not exist */
22023
+ 404: {
22024
+ headers: {
22025
+ [name: string]: unknown;
22026
+ };
22027
+ content: {
22028
+ "application/json": components["schemas"]["ErrorMessageDto"];
22029
+ };
22030
+ };
22031
+ };
22032
+ };
22033
+ listWorkspaceAbsences: {
22034
+ parameters: {
22035
+ query?: {
22036
+ /** @description Start of date window (ISO YYYY-MM-DD). Defaults to today. */
22037
+ from?: string;
22038
+ /** @description End of date window (ISO YYYY-MM-DD). Defaults to 90 days from today. */
22039
+ to?: string;
22040
+ };
21477
22041
  header?: never;
21478
22042
  path: {
21479
22043
  workspaceId: components["parameters"]["WorkspaceId"];
@@ -21490,26 +22054,330 @@ export interface operations {
21490
22054
  content: {
21491
22055
  /**
21492
22056
  * @example {
21493
- * "absences": [
21494
- * {
21495
- * "source": "personio",
21496
- * "employeeEmail": "alice@example.com",
21497
- * "absenceType": "Vacation",
21498
- * "startDate": "2025-07-01",
21499
- * "endDate": "2025-07-05",
21500
- * "halfDayStart": false,
21501
- * "halfDayEnd": false,
21502
- * "status": "approved"
21503
- * }
21504
- * ],
21505
- * "syncedAt": "2025-06-30T08:00:00.000Z"
22057
+ * "absences": [
22058
+ * {
22059
+ * "source": "personio",
22060
+ * "employeeEmail": "alice@example.com",
22061
+ * "absenceType": "Vacation",
22062
+ * "startDate": "2025-07-01",
22063
+ * "endDate": "2025-07-05",
22064
+ * "halfDayStart": false,
22065
+ * "halfDayEnd": false,
22066
+ * "status": "approved"
22067
+ * }
22068
+ * ],
22069
+ * "syncedAt": "2025-06-30T08:00:00.000Z"
22070
+ * }
22071
+ */
22072
+ "application/json": components["schemas"]["WorkspaceAbsenceListDto"];
22073
+ };
22074
+ };
22075
+ 401: components["responses"]["Unauthorized"];
22076
+ 403: components["responses"]["Forbidden"];
22077
+ };
22078
+ };
22079
+ getWorkspaceTeamsInstallUrl: {
22080
+ parameters: {
22081
+ query?: never;
22082
+ header?: never;
22083
+ path: {
22084
+ workspaceId: components["parameters"]["WorkspaceId"];
22085
+ };
22086
+ cookie?: never;
22087
+ };
22088
+ requestBody?: never;
22089
+ responses: {
22090
+ /** @description Authorize URL */
22091
+ 200: {
22092
+ headers: {
22093
+ [name: string]: unknown;
22094
+ };
22095
+ content: {
22096
+ /**
22097
+ * @example {
22098
+ * "url": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=example&state=example-state"
21506
22099
  * }
21507
22100
  */
21508
- "application/json": components["schemas"]["WorkspaceAbsenceListDto"];
22101
+ "application/json": components["schemas"]["TeamsInstallUrlDto"];
22102
+ };
22103
+ };
22104
+ 401: components["responses"]["Unauthorized"];
22105
+ /** @description Editor or viewer */
22106
+ 403: {
22107
+ headers: {
22108
+ [name: string]: unknown;
22109
+ };
22110
+ content: {
22111
+ /**
22112
+ * @example {
22113
+ * "error": "Forbidden",
22114
+ * "code": "workspace_admin_required"
22115
+ * }
22116
+ */
22117
+ "application/json": components["schemas"]["ErrorMessageDto"];
22118
+ };
22119
+ };
22120
+ /** @description Workspace not found */
22121
+ 404: {
22122
+ headers: {
22123
+ [name: string]: unknown;
22124
+ };
22125
+ content: {
22126
+ /**
22127
+ * @example {
22128
+ * "error": "Not found"
22129
+ * }
22130
+ */
22131
+ "application/json": components["schemas"]["ErrorMessageDto"];
22132
+ };
22133
+ };
22134
+ /** @description Teams app credentials are not configured */
22135
+ 503: {
22136
+ headers: {
22137
+ [name: string]: unknown;
22138
+ };
22139
+ content: {
22140
+ /**
22141
+ * @example {
22142
+ * "error": "Teams sign-in is not configured",
22143
+ * "code": "teams_not_configured"
22144
+ * }
22145
+ */
22146
+ "application/json": components["schemas"]["ErrorMessageDto"];
22147
+ };
22148
+ };
22149
+ };
22150
+ };
22151
+ getTeamsIntegrationCallback: {
22152
+ parameters: {
22153
+ query: {
22154
+ code?: string;
22155
+ state: string;
22156
+ error?: string;
22157
+ };
22158
+ header?: never;
22159
+ path?: never;
22160
+ cookie?: never;
22161
+ };
22162
+ requestBody?: never;
22163
+ responses: {
22164
+ /** @description Redirect to Settings → Preferences */
22165
+ 302: {
22166
+ headers: {
22167
+ Location?: string;
22168
+ [name: string]: unknown;
22169
+ };
22170
+ content?: never;
22171
+ };
22172
+ /** @description SPA origin is not configured */
22173
+ 503: {
22174
+ headers: {
22175
+ [name: string]: unknown;
22176
+ };
22177
+ content: {
22178
+ "application/json": components["schemas"]["ErrorMessageDto"];
22179
+ };
22180
+ };
22181
+ };
22182
+ };
22183
+ getWorkspaceTeamsConnection: {
22184
+ parameters: {
22185
+ query?: never;
22186
+ header?: never;
22187
+ path: {
22188
+ workspaceId: components["parameters"]["WorkspaceId"];
22189
+ };
22190
+ cookie?: never;
22191
+ };
22192
+ requestBody?: never;
22193
+ responses: {
22194
+ /** @description Connection status */
22195
+ 200: {
22196
+ headers: {
22197
+ [name: string]: unknown;
22198
+ };
22199
+ content: {
22200
+ /**
22201
+ * @example {
22202
+ * "connected": true,
22203
+ * "channelName": "General"
22204
+ * }
22205
+ */
22206
+ "application/json": components["schemas"]["TeamsConnectionDto"];
21509
22207
  };
21510
22208
  };
21511
22209
  401: components["responses"]["Unauthorized"];
21512
22210
  403: components["responses"]["Forbidden"];
22211
+ /** @description Workspace not found */
22212
+ 404: {
22213
+ headers: {
22214
+ [name: string]: unknown;
22215
+ };
22216
+ content: {
22217
+ /**
22218
+ * @example {
22219
+ * "error": "Not found"
22220
+ * }
22221
+ */
22222
+ "application/json": components["schemas"]["ErrorMessageDto"];
22223
+ };
22224
+ };
22225
+ };
22226
+ };
22227
+ deleteWorkspaceTeamsConnection: {
22228
+ parameters: {
22229
+ query?: never;
22230
+ header?: never;
22231
+ path: {
22232
+ workspaceId: components["parameters"]["WorkspaceId"];
22233
+ };
22234
+ cookie?: never;
22235
+ };
22236
+ requestBody?: never;
22237
+ responses: {
22238
+ /** @description Disconnected */
22239
+ 204: {
22240
+ headers: {
22241
+ [name: string]: unknown;
22242
+ };
22243
+ content?: never;
22244
+ };
22245
+ 401: components["responses"]["Unauthorized"];
22246
+ /** @description Editor or viewer */
22247
+ 403: {
22248
+ headers: {
22249
+ [name: string]: unknown;
22250
+ };
22251
+ content: {
22252
+ /**
22253
+ * @example {
22254
+ * "error": "Forbidden",
22255
+ * "code": "workspace_admin_required"
22256
+ * }
22257
+ */
22258
+ "application/json": components["schemas"]["ErrorMessageDto"];
22259
+ };
22260
+ };
22261
+ /** @description Workspace not found */
22262
+ 404: {
22263
+ headers: {
22264
+ [name: string]: unknown;
22265
+ };
22266
+ content: {
22267
+ /**
22268
+ * @example {
22269
+ * "error": "Not found"
22270
+ * }
22271
+ */
22272
+ "application/json": components["schemas"]["ErrorMessageDto"];
22273
+ };
22274
+ };
22275
+ };
22276
+ };
22277
+ putWorkspaceTeamsChannel: {
22278
+ parameters: {
22279
+ query?: never;
22280
+ header?: never;
22281
+ path: {
22282
+ workspaceId: components["parameters"]["WorkspaceId"];
22283
+ };
22284
+ cookie?: never;
22285
+ };
22286
+ requestBody: {
22287
+ content: {
22288
+ /**
22289
+ * @example {
22290
+ * "channelId": "19:example@thread.tacv2"
22291
+ * }
22292
+ */
22293
+ "application/json": components["schemas"]["TeamsChannelBodyDto"];
22294
+ };
22295
+ };
22296
+ responses: {
22297
+ /** @description Channel saved */
22298
+ 200: {
22299
+ headers: {
22300
+ [name: string]: unknown;
22301
+ };
22302
+ content: {
22303
+ /**
22304
+ * @example {
22305
+ * "connected": true,
22306
+ * "channelName": "General"
22307
+ * }
22308
+ */
22309
+ "application/json": components["schemas"]["TeamsConnectionDto"];
22310
+ };
22311
+ };
22312
+ /** @description Missing channelId, or the channel was not found */
22313
+ 400: {
22314
+ headers: {
22315
+ [name: string]: unknown;
22316
+ };
22317
+ content: {
22318
+ "application/json": components["schemas"]["ErrorMessageDto"];
22319
+ };
22320
+ };
22321
+ 401: components["responses"]["Unauthorized"];
22322
+ /** @description Editor or viewer */
22323
+ 403: {
22324
+ headers: {
22325
+ [name: string]: unknown;
22326
+ };
22327
+ content: {
22328
+ /**
22329
+ * @example {
22330
+ * "error": "Forbidden",
22331
+ * "code": "workspace_admin_required"
22332
+ * }
22333
+ */
22334
+ "application/json": components["schemas"]["ErrorMessageDto"];
22335
+ };
22336
+ };
22337
+ /** @description Workspace not found */
22338
+ 404: {
22339
+ headers: {
22340
+ [name: string]: unknown;
22341
+ };
22342
+ content: {
22343
+ /**
22344
+ * @example {
22345
+ * "error": "Not found"
22346
+ * }
22347
+ */
22348
+ "application/json": components["schemas"]["ErrorMessageDto"];
22349
+ };
22350
+ };
22351
+ /** @description Teams is not connected */
22352
+ 409: {
22353
+ headers: {
22354
+ [name: string]: unknown;
22355
+ };
22356
+ content: {
22357
+ /**
22358
+ * @example {
22359
+ * "error": "Teams is not connected",
22360
+ * "code": "teams_not_connected"
22361
+ * }
22362
+ */
22363
+ "application/json": components["schemas"]["ErrorMessageDto"];
22364
+ };
22365
+ };
22366
+ /** @description Microsoft Graph rejected the channel lookup */
22367
+ 502: {
22368
+ headers: {
22369
+ [name: string]: unknown;
22370
+ };
22371
+ content: {
22372
+ /**
22373
+ * @example {
22374
+ * "error": "Teams channel lookup failed",
22375
+ * "code": "teams_graph_failed"
22376
+ * }
22377
+ */
22378
+ "application/json": components["schemas"]["ErrorMessageDto"];
22379
+ };
22380
+ };
21513
22381
  };
21514
22382
  };
21515
22383
  postWorkspaceZeltAuthorizeUrl: {