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