@thinkai/tai-api-contract 2.148.0 → 2.150.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.
- package/dist/generated/openapi.d.ts +562 -6
- package/dist/generated/openapi.d.ts.map +1 -1
- package/openapi/openapi.yaml +501 -5
- package/package.json +1 -1
- package/src/generated/openapi.ts +562 -6
package/src/generated/openapi.ts
CHANGED
|
@@ -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;
|
|
@@ -3820,9 +3928,15 @@ export interface paths {
|
|
|
3820
3928
|
path?: never;
|
|
3821
3929
|
cookie?: never;
|
|
3822
3930
|
};
|
|
3823
|
-
/**
|
|
3931
|
+
/**
|
|
3932
|
+
* Get preferences for current user
|
|
3933
|
+
* @description Returns saved preferences, including `notificationChannels`. An empty or missing profile returns defaults (`email.status` is `digest`; every other channel cell is `off`).
|
|
3934
|
+
*/
|
|
3824
3935
|
get: operations["getMyPreferences"];
|
|
3825
|
-
/**
|
|
3936
|
+
/**
|
|
3937
|
+
* Upsert preferences
|
|
3938
|
+
* @description Replaces the saved preferences object. Omitting `notificationChannels` keeps the stored cells, or the defaults when none are stored. A body that includes `notificationChannels` replaces those cells; any missing key inside it uses the default (`email.status` = `digest`, every other cell = `off`). Setting `email.status` to `off` returns 400 `notification_channel_required`. In-app `notifications` booleans are independent of these cells.
|
|
3939
|
+
*/
|
|
3826
3940
|
put: operations["putMyPreferences"];
|
|
3827
3941
|
post?: never;
|
|
3828
3942
|
delete?: never;
|
|
@@ -3858,7 +3972,7 @@ export interface paths {
|
|
|
3858
3972
|
};
|
|
3859
3973
|
/**
|
|
3860
3974
|
* App chrome bootstrap payload
|
|
3861
|
-
* @description Returns the authenticated user's profile, workspace list, and preferences in one response. When `workspaceId` is provided and resolves to a workspace the caller belongs to, also returns platform banner, unread notification count (`count` and `hasUnreadCritical`), journey progress, and connectors snapshot. Invalid, unknown, or non-member `workspaceId` values do not produce 403/404 — the response is still 200 with only `me`, `workspaces`, and `preferences` (workspace-scoped fields omitted).
|
|
3975
|
+
* @description Returns the authenticated user's profile, workspace list, and preferences (including `notificationChannels`) in one response. When `workspaceId` is provided and resolves to a workspace the caller belongs to, also returns platform banner, unread notification count (`count` and `hasUnreadCritical`), journey progress, and connectors snapshot. Invalid, unknown, or non-member `workspaceId` values do not produce 403/404 — the response is still 200 with only `me`, `workspaces`, and `preferences` (workspace-scoped fields omitted).
|
|
3862
3976
|
*/
|
|
3863
3977
|
get: operations["getAppShell"];
|
|
3864
3978
|
put?: never;
|
|
@@ -7979,6 +8093,71 @@ export interface components {
|
|
|
7979
8093
|
/** @description System / platform announcements. */
|
|
7980
8094
|
system: boolean;
|
|
7981
8095
|
};
|
|
8096
|
+
/**
|
|
8097
|
+
* @description Status email delivery. `digest` (default) is the weekly mail. `immediate` sends as events arrive. `off` is not allowed.
|
|
8098
|
+
* @enum {string}
|
|
8099
|
+
*/
|
|
8100
|
+
NotificationEmailStatusMode: "immediate" | "digest";
|
|
8101
|
+
/**
|
|
8102
|
+
* @description Email delivery for comment, activity, or system. Default `off`. `immediate` sends as events arrive. `digest` is the weekly mail.
|
|
8103
|
+
* @enum {string}
|
|
8104
|
+
*/
|
|
8105
|
+
NotificationEmailDeliveryMode: "off" | "immediate" | "digest";
|
|
8106
|
+
/**
|
|
8107
|
+
* @description Slack or Teams delivery for one category. Default `off` until that member changes the cell. `dm` is a direct message. `channel` posts to the workspace channel an admin saved. Connecting chat does not turn cells on.
|
|
8108
|
+
* @enum {string}
|
|
8109
|
+
*/
|
|
8110
|
+
NotificationChatDeliveryMode: "off" | "dm" | "channel";
|
|
8111
|
+
NotificationEmailChannelsDto: {
|
|
8112
|
+
status: components["schemas"]["NotificationEmailStatusMode"];
|
|
8113
|
+
comment: components["schemas"]["NotificationEmailDeliveryMode"];
|
|
8114
|
+
activity: components["schemas"]["NotificationEmailDeliveryMode"];
|
|
8115
|
+
system: components["schemas"]["NotificationEmailDeliveryMode"];
|
|
8116
|
+
};
|
|
8117
|
+
NotificationChatChannelsDto: {
|
|
8118
|
+
status: components["schemas"]["NotificationChatDeliveryMode"];
|
|
8119
|
+
comment: components["schemas"]["NotificationChatDeliveryMode"];
|
|
8120
|
+
activity: components["schemas"]["NotificationChatDeliveryMode"];
|
|
8121
|
+
system: components["schemas"]["NotificationChatDeliveryMode"];
|
|
8122
|
+
};
|
|
8123
|
+
/** @description Delivery cells beside the in-app Message Center switches. Defaults: `email.status` is `digest`; every other cell is `off`. Inbox rows whose type is `integration` use the `status` cell. */
|
|
8124
|
+
NotificationChannelsDto: {
|
|
8125
|
+
email: components["schemas"]["NotificationEmailChannelsDto"];
|
|
8126
|
+
slack: components["schemas"]["NotificationChatChannelsDto"];
|
|
8127
|
+
teams: components["schemas"]["NotificationChatChannelsDto"];
|
|
8128
|
+
};
|
|
8129
|
+
SlackInstallUrlDto: {
|
|
8130
|
+
/** @description Slack OAuth authorize URL. The bot token is not included. */
|
|
8131
|
+
url: string;
|
|
8132
|
+
};
|
|
8133
|
+
SlackIntegrationStatusDto: {
|
|
8134
|
+
connected: boolean;
|
|
8135
|
+
/** @description Saved channel name. Null until an admin saves a channel, and when disconnected. */
|
|
8136
|
+
channelName: string | null;
|
|
8137
|
+
};
|
|
8138
|
+
SlackChannelBodyDto: {
|
|
8139
|
+
channelId: string;
|
|
8140
|
+
};
|
|
8141
|
+
/** @description Partial email cells. Omitted keys are filled with defaults on save (`status` = `digest`, other keys = `off`). */
|
|
8142
|
+
PutNotificationEmailChannelsDto: {
|
|
8143
|
+
status?: components["schemas"]["NotificationEmailStatusMode"];
|
|
8144
|
+
comment?: components["schemas"]["NotificationEmailDeliveryMode"];
|
|
8145
|
+
activity?: components["schemas"]["NotificationEmailDeliveryMode"];
|
|
8146
|
+
system?: components["schemas"]["NotificationEmailDeliveryMode"];
|
|
8147
|
+
};
|
|
8148
|
+
/** @description Partial chat cells. Omitted keys default to `off` on save. */
|
|
8149
|
+
PutNotificationChatChannelsDto: {
|
|
8150
|
+
status?: components["schemas"]["NotificationChatDeliveryMode"];
|
|
8151
|
+
comment?: components["schemas"]["NotificationChatDeliveryMode"];
|
|
8152
|
+
activity?: components["schemas"]["NotificationChatDeliveryMode"];
|
|
8153
|
+
system?: components["schemas"]["NotificationChatDeliveryMode"];
|
|
8154
|
+
};
|
|
8155
|
+
/** @description Replaces stored channel cells when present on `PUT /me/preferences`. Omitted `email`, `slack`, or `teams` objects are filled with defaults. */
|
|
8156
|
+
PutNotificationChannelsDto: {
|
|
8157
|
+
email?: components["schemas"]["PutNotificationEmailChannelsDto"];
|
|
8158
|
+
slack?: components["schemas"]["PutNotificationChatChannelsDto"];
|
|
8159
|
+
teams?: components["schemas"]["PutNotificationChatChannelsDto"];
|
|
8160
|
+
};
|
|
7982
8161
|
PreferencesDto: {
|
|
7983
8162
|
theme: components["schemas"]["ThemePreference"];
|
|
7984
8163
|
sidebarCollapsed: boolean;
|
|
@@ -7991,6 +8170,28 @@ export interface components {
|
|
|
7991
8170
|
* @default false
|
|
7992
8171
|
*/
|
|
7993
8172
|
buddyEnabled: boolean;
|
|
8173
|
+
notificationChannels: components["schemas"]["NotificationChannelsDto"];
|
|
8174
|
+
};
|
|
8175
|
+
/** @description Body for `PUT /me/preferences`. `notificationChannels` may be omitted to keep stored cells. */
|
|
8176
|
+
PutPreferencesBodyDto: {
|
|
8177
|
+
theme: components["schemas"]["ThemePreference"];
|
|
8178
|
+
sidebarCollapsed: boolean;
|
|
8179
|
+
/** @description IANA timezone name */
|
|
8180
|
+
timezone: string;
|
|
8181
|
+
dataRefreshInterval: components["schemas"]["DataRefreshInterval"];
|
|
8182
|
+
notifications: components["schemas"]["NotificationPreferencesDto"];
|
|
8183
|
+
/**
|
|
8184
|
+
* @description When true, show the ThinkAI Buddy mascot. Default and missing stored values are false (opt-in only).
|
|
8185
|
+
* @default false
|
|
8186
|
+
*/
|
|
8187
|
+
buddyEnabled: boolean;
|
|
8188
|
+
notificationChannels?: components["schemas"]["PutNotificationChannelsDto"];
|
|
8189
|
+
};
|
|
8190
|
+
NotificationChannelRequiredErrorDto: {
|
|
8191
|
+
/** @description Status email cannot be turned off. */
|
|
8192
|
+
error: string;
|
|
8193
|
+
/** @enum {string} */
|
|
8194
|
+
code: "notification_channel_required";
|
|
7994
8195
|
};
|
|
7995
8196
|
ValidationIssueDto: {
|
|
7996
8197
|
path: (string | number)[];
|
|
@@ -10720,7 +10921,21 @@ export type JourneyProgressUpdateDto = components['schemas']['JourneyProgressUpd
|
|
|
10720
10921
|
export type ThemePreference = components['schemas']['ThemePreference'];
|
|
10721
10922
|
export type DataRefreshInterval = components['schemas']['DataRefreshInterval'];
|
|
10722
10923
|
export type NotificationPreferencesDto = components['schemas']['NotificationPreferencesDto'];
|
|
10924
|
+
export type NotificationEmailStatusMode = components['schemas']['NotificationEmailStatusMode'];
|
|
10925
|
+
export type NotificationEmailDeliveryMode = components['schemas']['NotificationEmailDeliveryMode'];
|
|
10926
|
+
export type NotificationChatDeliveryMode = components['schemas']['NotificationChatDeliveryMode'];
|
|
10927
|
+
export type NotificationEmailChannelsDto = components['schemas']['NotificationEmailChannelsDto'];
|
|
10928
|
+
export type NotificationChatChannelsDto = components['schemas']['NotificationChatChannelsDto'];
|
|
10929
|
+
export type NotificationChannelsDto = components['schemas']['NotificationChannelsDto'];
|
|
10930
|
+
export type SlackInstallUrlDto = components['schemas']['SlackInstallUrlDto'];
|
|
10931
|
+
export type SlackIntegrationStatusDto = components['schemas']['SlackIntegrationStatusDto'];
|
|
10932
|
+
export type SlackChannelBodyDto = components['schemas']['SlackChannelBodyDto'];
|
|
10933
|
+
export type PutNotificationEmailChannelsDto = components['schemas']['PutNotificationEmailChannelsDto'];
|
|
10934
|
+
export type PutNotificationChatChannelsDto = components['schemas']['PutNotificationChatChannelsDto'];
|
|
10935
|
+
export type PutNotificationChannelsDto = components['schemas']['PutNotificationChannelsDto'];
|
|
10723
10936
|
export type PreferencesDto = components['schemas']['PreferencesDto'];
|
|
10937
|
+
export type PutPreferencesBodyDto = components['schemas']['PutPreferencesBodyDto'];
|
|
10938
|
+
export type NotificationChannelRequiredErrorDto = components['schemas']['NotificationChannelRequiredErrorDto'];
|
|
10724
10939
|
export type ValidationIssueDto = components['schemas']['ValidationIssueDto'];
|
|
10725
10940
|
export type PreferencesValidationErrorDto = components['schemas']['PreferencesValidationErrorDto'];
|
|
10726
10941
|
export type ConsentCategoriesDto = components['schemas']['ConsentCategoriesDto'];
|
|
@@ -20587,6 +20802,347 @@ export interface operations {
|
|
|
20587
20802
|
};
|
|
20588
20803
|
};
|
|
20589
20804
|
};
|
|
20805
|
+
getNotificationEmailUnsubscribe: {
|
|
20806
|
+
parameters: {
|
|
20807
|
+
query: {
|
|
20808
|
+
/** @description Opaque unsubscribe token from the email. Only its SHA-256 hash is stored. */
|
|
20809
|
+
token: string;
|
|
20810
|
+
};
|
|
20811
|
+
header?: never;
|
|
20812
|
+
path?: never;
|
|
20813
|
+
cookie?: never;
|
|
20814
|
+
};
|
|
20815
|
+
requestBody?: never;
|
|
20816
|
+
responses: {
|
|
20817
|
+
/** @description Confirm page. Preferences are unchanged. */
|
|
20818
|
+
200: {
|
|
20819
|
+
headers: {
|
|
20820
|
+
[name: string]: unknown;
|
|
20821
|
+
};
|
|
20822
|
+
content: {
|
|
20823
|
+
"text/html": string;
|
|
20824
|
+
};
|
|
20825
|
+
};
|
|
20826
|
+
/** @description Unknown or expired token */
|
|
20827
|
+
400: {
|
|
20828
|
+
headers: {
|
|
20829
|
+
[name: string]: unknown;
|
|
20830
|
+
};
|
|
20831
|
+
content: {
|
|
20832
|
+
"text/html": string;
|
|
20833
|
+
};
|
|
20834
|
+
};
|
|
20835
|
+
};
|
|
20836
|
+
};
|
|
20837
|
+
postNotificationEmailUnsubscribe: {
|
|
20838
|
+
parameters: {
|
|
20839
|
+
query: {
|
|
20840
|
+
/** @description Opaque unsubscribe token from the email. Only its SHA-256 hash is stored. */
|
|
20841
|
+
token: string;
|
|
20842
|
+
};
|
|
20843
|
+
header?: never;
|
|
20844
|
+
path?: never;
|
|
20845
|
+
cookie?: never;
|
|
20846
|
+
};
|
|
20847
|
+
requestBody?: never;
|
|
20848
|
+
responses: {
|
|
20849
|
+
/** @description Preference updated when no SPA origin is configured. */
|
|
20850
|
+
200: {
|
|
20851
|
+
headers: {
|
|
20852
|
+
[name: string]: unknown;
|
|
20853
|
+
};
|
|
20854
|
+
content: {
|
|
20855
|
+
"text/html": string;
|
|
20856
|
+
};
|
|
20857
|
+
};
|
|
20858
|
+
/** @description Preference updated, or left unchanged for status email. */
|
|
20859
|
+
303: {
|
|
20860
|
+
headers: {
|
|
20861
|
+
/** @description `{spa}/settings?tab=preferences` */
|
|
20862
|
+
Location?: string;
|
|
20863
|
+
[name: string]: unknown;
|
|
20864
|
+
};
|
|
20865
|
+
content?: never;
|
|
20866
|
+
};
|
|
20867
|
+
/** @description Unknown or expired token */
|
|
20868
|
+
400: {
|
|
20869
|
+
headers: {
|
|
20870
|
+
[name: string]: unknown;
|
|
20871
|
+
};
|
|
20872
|
+
content: {
|
|
20873
|
+
"text/html": string;
|
|
20874
|
+
};
|
|
20875
|
+
};
|
|
20876
|
+
};
|
|
20877
|
+
};
|
|
20878
|
+
getSlackInstallUrl: {
|
|
20879
|
+
parameters: {
|
|
20880
|
+
query?: never;
|
|
20881
|
+
header?: never;
|
|
20882
|
+
path: {
|
|
20883
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
20884
|
+
};
|
|
20885
|
+
cookie?: never;
|
|
20886
|
+
};
|
|
20887
|
+
requestBody?: never;
|
|
20888
|
+
responses: {
|
|
20889
|
+
/** @description Slack authorize URL */
|
|
20890
|
+
200: {
|
|
20891
|
+
headers: {
|
|
20892
|
+
[name: string]: unknown;
|
|
20893
|
+
};
|
|
20894
|
+
content: {
|
|
20895
|
+
"application/json": components["schemas"]["SlackInstallUrlDto"];
|
|
20896
|
+
};
|
|
20897
|
+
};
|
|
20898
|
+
401: components["responses"]["Unauthorized"];
|
|
20899
|
+
/** @description Caller is not a workspace admin */
|
|
20900
|
+
403: {
|
|
20901
|
+
headers: {
|
|
20902
|
+
[name: string]: unknown;
|
|
20903
|
+
};
|
|
20904
|
+
content: {
|
|
20905
|
+
/**
|
|
20906
|
+
* @example {
|
|
20907
|
+
* "error": "Forbidden",
|
|
20908
|
+
* "code": "workspace_admin_required"
|
|
20909
|
+
* }
|
|
20910
|
+
*/
|
|
20911
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
20912
|
+
};
|
|
20913
|
+
};
|
|
20914
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
20915
|
+
404: {
|
|
20916
|
+
headers: {
|
|
20917
|
+
[name: string]: unknown;
|
|
20918
|
+
};
|
|
20919
|
+
content: {
|
|
20920
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
20921
|
+
};
|
|
20922
|
+
};
|
|
20923
|
+
/** @description Slack app client id, secret, API origin, or SPA origin is unset */
|
|
20924
|
+
503: {
|
|
20925
|
+
headers: {
|
|
20926
|
+
[name: string]: unknown;
|
|
20927
|
+
};
|
|
20928
|
+
content: {
|
|
20929
|
+
/**
|
|
20930
|
+
* @example {
|
|
20931
|
+
* "error": "Slack is not configured",
|
|
20932
|
+
* "code": "slack_not_configured"
|
|
20933
|
+
* }
|
|
20934
|
+
*/
|
|
20935
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
20936
|
+
};
|
|
20937
|
+
};
|
|
20938
|
+
};
|
|
20939
|
+
};
|
|
20940
|
+
getSlackOauthCallback: {
|
|
20941
|
+
parameters: {
|
|
20942
|
+
query: {
|
|
20943
|
+
code?: string;
|
|
20944
|
+
state: string;
|
|
20945
|
+
error?: string;
|
|
20946
|
+
};
|
|
20947
|
+
header?: never;
|
|
20948
|
+
path?: never;
|
|
20949
|
+
cookie?: never;
|
|
20950
|
+
};
|
|
20951
|
+
requestBody?: never;
|
|
20952
|
+
responses: {
|
|
20953
|
+
/** @description Redirect to Settings → Preferences */
|
|
20954
|
+
302: {
|
|
20955
|
+
headers: {
|
|
20956
|
+
Location?: string;
|
|
20957
|
+
[name: string]: unknown;
|
|
20958
|
+
};
|
|
20959
|
+
content?: never;
|
|
20960
|
+
};
|
|
20961
|
+
/** @description Slack app settings are unset and no SPA origin is available */
|
|
20962
|
+
503: {
|
|
20963
|
+
headers: {
|
|
20964
|
+
[name: string]: unknown;
|
|
20965
|
+
};
|
|
20966
|
+
content: {
|
|
20967
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
20968
|
+
};
|
|
20969
|
+
};
|
|
20970
|
+
};
|
|
20971
|
+
};
|
|
20972
|
+
getSlackIntegration: {
|
|
20973
|
+
parameters: {
|
|
20974
|
+
query?: never;
|
|
20975
|
+
header?: never;
|
|
20976
|
+
path: {
|
|
20977
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
20978
|
+
};
|
|
20979
|
+
cookie?: never;
|
|
20980
|
+
};
|
|
20981
|
+
requestBody?: never;
|
|
20982
|
+
responses: {
|
|
20983
|
+
/** @description Slack connection status */
|
|
20984
|
+
200: {
|
|
20985
|
+
headers: {
|
|
20986
|
+
[name: string]: unknown;
|
|
20987
|
+
};
|
|
20988
|
+
content: {
|
|
20989
|
+
"application/json": components["schemas"]["SlackIntegrationStatusDto"];
|
|
20990
|
+
};
|
|
20991
|
+
};
|
|
20992
|
+
401: components["responses"]["Unauthorized"];
|
|
20993
|
+
403: components["responses"]["Forbidden"];
|
|
20994
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
20995
|
+
404: {
|
|
20996
|
+
headers: {
|
|
20997
|
+
[name: string]: unknown;
|
|
20998
|
+
};
|
|
20999
|
+
content: {
|
|
21000
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
21001
|
+
};
|
|
21002
|
+
};
|
|
21003
|
+
};
|
|
21004
|
+
};
|
|
21005
|
+
deleteSlackIntegration: {
|
|
21006
|
+
parameters: {
|
|
21007
|
+
query?: never;
|
|
21008
|
+
header?: never;
|
|
21009
|
+
path: {
|
|
21010
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
21011
|
+
};
|
|
21012
|
+
cookie?: never;
|
|
21013
|
+
};
|
|
21014
|
+
requestBody?: never;
|
|
21015
|
+
responses: {
|
|
21016
|
+
/** @description Slack disconnected */
|
|
21017
|
+
204: {
|
|
21018
|
+
headers: {
|
|
21019
|
+
[name: string]: unknown;
|
|
21020
|
+
};
|
|
21021
|
+
content?: never;
|
|
21022
|
+
};
|
|
21023
|
+
401: components["responses"]["Unauthorized"];
|
|
21024
|
+
/** @description Caller is not a workspace admin */
|
|
21025
|
+
403: {
|
|
21026
|
+
headers: {
|
|
21027
|
+
[name: string]: unknown;
|
|
21028
|
+
};
|
|
21029
|
+
content: {
|
|
21030
|
+
/**
|
|
21031
|
+
* @example {
|
|
21032
|
+
* "error": "Forbidden",
|
|
21033
|
+
* "code": "workspace_admin_required"
|
|
21034
|
+
* }
|
|
21035
|
+
*/
|
|
21036
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
21037
|
+
};
|
|
21038
|
+
};
|
|
21039
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
21040
|
+
404: {
|
|
21041
|
+
headers: {
|
|
21042
|
+
[name: string]: unknown;
|
|
21043
|
+
};
|
|
21044
|
+
content: {
|
|
21045
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
21046
|
+
};
|
|
21047
|
+
};
|
|
21048
|
+
};
|
|
21049
|
+
};
|
|
21050
|
+
putSlackChannel: {
|
|
21051
|
+
parameters: {
|
|
21052
|
+
query?: never;
|
|
21053
|
+
header?: never;
|
|
21054
|
+
path: {
|
|
21055
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
21056
|
+
};
|
|
21057
|
+
cookie?: never;
|
|
21058
|
+
};
|
|
21059
|
+
requestBody: {
|
|
21060
|
+
content: {
|
|
21061
|
+
"application/json": components["schemas"]["SlackChannelBodyDto"];
|
|
21062
|
+
};
|
|
21063
|
+
};
|
|
21064
|
+
responses: {
|
|
21065
|
+
/** @description Channel saved */
|
|
21066
|
+
200: {
|
|
21067
|
+
headers: {
|
|
21068
|
+
[name: string]: unknown;
|
|
21069
|
+
};
|
|
21070
|
+
content: {
|
|
21071
|
+
"application/json": components["schemas"]["SlackIntegrationStatusDto"];
|
|
21072
|
+
};
|
|
21073
|
+
};
|
|
21074
|
+
/** @description channelId is missing, malformed, or unknown to Slack */
|
|
21075
|
+
400: {
|
|
21076
|
+
headers: {
|
|
21077
|
+
[name: string]: unknown;
|
|
21078
|
+
};
|
|
21079
|
+
content: {
|
|
21080
|
+
/**
|
|
21081
|
+
* @example {
|
|
21082
|
+
* "error": "Slack channel was not found",
|
|
21083
|
+
* "code": "invalid_slack_channel"
|
|
21084
|
+
* }
|
|
21085
|
+
*/
|
|
21086
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
21087
|
+
};
|
|
21088
|
+
};
|
|
21089
|
+
401: components["responses"]["Unauthorized"];
|
|
21090
|
+
/** @description Caller is not a workspace admin */
|
|
21091
|
+
403: {
|
|
21092
|
+
headers: {
|
|
21093
|
+
[name: string]: unknown;
|
|
21094
|
+
};
|
|
21095
|
+
content: {
|
|
21096
|
+
/**
|
|
21097
|
+
* @example {
|
|
21098
|
+
* "error": "Forbidden",
|
|
21099
|
+
* "code": "workspace_admin_required"
|
|
21100
|
+
* }
|
|
21101
|
+
*/
|
|
21102
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
21103
|
+
};
|
|
21104
|
+
};
|
|
21105
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
21106
|
+
404: {
|
|
21107
|
+
headers: {
|
|
21108
|
+
[name: string]: unknown;
|
|
21109
|
+
};
|
|
21110
|
+
content: {
|
|
21111
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
21112
|
+
};
|
|
21113
|
+
};
|
|
21114
|
+
/** @description Slack is not connected */
|
|
21115
|
+
409: {
|
|
21116
|
+
headers: {
|
|
21117
|
+
[name: string]: unknown;
|
|
21118
|
+
};
|
|
21119
|
+
content: {
|
|
21120
|
+
/**
|
|
21121
|
+
* @example {
|
|
21122
|
+
* "error": "Slack is not connected",
|
|
21123
|
+
* "code": "slack_not_connected"
|
|
21124
|
+
* }
|
|
21125
|
+
*/
|
|
21126
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
21127
|
+
};
|
|
21128
|
+
};
|
|
21129
|
+
/** @description Slack rejected the lookup */
|
|
21130
|
+
502: {
|
|
21131
|
+
headers: {
|
|
21132
|
+
[name: string]: unknown;
|
|
21133
|
+
};
|
|
21134
|
+
content: {
|
|
21135
|
+
/**
|
|
21136
|
+
* @example {
|
|
21137
|
+
* "error": "Slack did not accept the channel",
|
|
21138
|
+
* "code": "slack_request_failed"
|
|
21139
|
+
* }
|
|
21140
|
+
*/
|
|
21141
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
21142
|
+
};
|
|
21143
|
+
};
|
|
21144
|
+
};
|
|
21145
|
+
};
|
|
20590
21146
|
listNotifications: {
|
|
20591
21147
|
parameters: {
|
|
20592
21148
|
query?: {
|
|
@@ -20837,7 +21393,7 @@ export interface operations {
|
|
|
20837
21393
|
};
|
|
20838
21394
|
requestBody: {
|
|
20839
21395
|
content: {
|
|
20840
|
-
"application/json": components["schemas"]["
|
|
21396
|
+
"application/json": components["schemas"]["PutPreferencesBodyDto"];
|
|
20841
21397
|
};
|
|
20842
21398
|
};
|
|
20843
21399
|
responses: {
|
|
@@ -20850,13 +21406,13 @@ export interface operations {
|
|
|
20850
21406
|
"application/json": components["schemas"]["PreferencesDto"];
|
|
20851
21407
|
};
|
|
20852
21408
|
};
|
|
20853
|
-
/** @description Validation failed */
|
|
21409
|
+
/** @description Validation failed, or Status email was set to off (`code` `notification_channel_required`). */
|
|
20854
21410
|
400: {
|
|
20855
21411
|
headers: {
|
|
20856
21412
|
[name: string]: unknown;
|
|
20857
21413
|
};
|
|
20858
21414
|
content: {
|
|
20859
|
-
"application/json": components["schemas"]["PreferencesValidationErrorDto"];
|
|
21415
|
+
"application/json": components["schemas"]["PreferencesValidationErrorDto"] | components["schemas"]["NotificationChannelRequiredErrorDto"];
|
|
20860
21416
|
};
|
|
20861
21417
|
};
|
|
20862
21418
|
401: components["responses"]["Unauthorized"];
|