From 9fbaf80ded7bf24010a4491ff7fbbb1ea825c5e6 Mon Sep 17 00:00:00 2001 From: Kariamos Date: Tue, 18 Nov 2025 13:04:27 +0100 Subject: [PATCH 1/2] feat(FormProvider): add notify_everyone field to dossier post request --- src/pages/campaigns/components/campaignForm/FormProvider.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/campaigns/components/campaignForm/FormProvider.tsx b/src/pages/campaigns/components/campaignForm/FormProvider.tsx index 0e2df8cb..1ea705a7 100644 --- a/src/pages/campaigns/components/campaignForm/FormProvider.tsx +++ b/src/pages/campaigns/components/campaignForm/FormProvider.tsx @@ -403,6 +403,7 @@ const FormProvider = ({ body: { ...body, duplicate: duplicate, + notify_everyone: 1, }, }).unwrap(); if (!resp.id) { From ab3158abaef67746f9c23423fce5cf5ba08855bf Mon Sep 17 00:00:00 2001 From: Kariamos Date: Tue, 18 Nov 2025 13:22:57 +0100 Subject: [PATCH 2/2] feat(api): add new endpoints for campaign visibility and preview management --- src/services/tryberApi/index.ts | 147 +++++++++- src/utils/schema.ts | 493 +++++++++++++++++++++++++++++++- 2 files changed, 631 insertions(+), 9 deletions(-) diff --git a/src/services/tryberApi/index.ts b/src/services/tryberApi/index.ts index 554e5555..8ce4e53c 100644 --- a/src/services/tryberApi/index.ts +++ b/src/services/tryberApi/index.ts @@ -149,6 +149,16 @@ const injectedRtkApi = api.injectEndpoints({ >({ query: () => ({ url: `/campaigns/owners` }), }), + patchCampaignsByCampaignIdVisibility: build.mutation< + PatchCampaignsByCampaignIdVisibilityApiResponse, + PatchCampaignsByCampaignIdVisibilityApiArg + >({ + query: (queryArg) => ({ + url: `/campaigns/${queryArg.campaignId}/visibility`, + method: "PATCH", + body: queryArg.body, + }), + }), getCampaignsByCampaign: build.query< GetCampaignsByCampaignApiResponse, GetCampaignsByCampaignApiArg @@ -269,6 +279,16 @@ const injectedRtkApi = api.injectEndpoints({ body: queryArg.body, }), }), + postCampaignsByCampaignPreview: build.mutation< + PostCampaignsByCampaignPreviewApiResponse, + PostCampaignsByCampaignPreviewApiArg + >({ + query: (queryArg) => ({ + url: `/campaigns/${queryArg.campaign}/preview`, + method: "POST", + body: queryArg.body, + }), + }), getCampaignsByCampaignProspect: build.query< GetCampaignsByCampaignProspectApiResponse, GetCampaignsByCampaignProspectApiArg @@ -330,7 +350,7 @@ const injectedRtkApi = api.injectEndpoints({ query: (queryArg) => ({ url: `/campaigns/${queryArg.campaign}/tasks`, method: "POST", - body: queryArg.taskOptional, + body: queryArg.body, }), }), getCampaignsByCampaignTasksAndTask: build.query< @@ -845,6 +865,34 @@ const injectedRtkApi = api.injectEndpoints({ body: queryArg.body, }), }), + postUsersMeCampaignsByCampaignIdTasksAndTaskIdMedia: build.mutation< + PostUsersMeCampaignsByCampaignIdTasksAndTaskIdMediaApiResponse, + PostUsersMeCampaignsByCampaignIdTasksAndTaskIdMediaApiArg + >({ + query: (queryArg) => ({ + url: `/users/me/campaigns/${queryArg.campaignId}/tasks/${queryArg.taskId}/media`, + method: "POST", + body: queryArg.body, + }), + }), + getUsersMeCampaignsByCampaignIdTasksAndTaskIdMedia: build.query< + GetUsersMeCampaignsByCampaignIdTasksAndTaskIdMediaApiResponse, + GetUsersMeCampaignsByCampaignIdTasksAndTaskIdMediaApiArg + >({ + query: (queryArg) => ({ + url: `/users/me/campaigns/${queryArg.campaignId}/tasks/${queryArg.taskId}/media`, + }), + }), + deleteUsersMeCampaignsByCampaignIdTasksAndTaskIdMediaMediaId: + build.mutation< + DeleteUsersMeCampaignsByCampaignIdTasksAndTaskIdMediaMediaIdApiResponse, + DeleteUsersMeCampaignsByCampaignIdTasksAndTaskIdMediaMediaIdApiArg + >({ + query: (queryArg) => ({ + url: `/users/me/campaigns/${queryArg.campaignId}/tasks/${queryArg.taskId}/media/${queryArg.mediaId}`, + method: "DELETE", + }), + }), getUsersMeCampaignsByCampaignCompatibleDevices: build.query< GetUsersMeCampaignsByCampaignCompatibleDevicesApiResponse, GetUsersMeCampaignsByCampaignCompatibleDevicesApiArg @@ -1034,6 +1082,7 @@ const injectedRtkApi = api.injectEndpoints({ limit: queryArg.limit, orderBy: queryArg.orderBy, order: queryArg.order, + filterBy: queryArg.filterBy, }, }), }), @@ -1331,6 +1380,14 @@ export type GetCampaignsOwnersApiResponse = /** status 200 OK */ { surname: string; }[]; export type GetCampaignsOwnersApiArg = void; +export type PatchCampaignsByCampaignIdVisibilityApiResponse = + /** status 200 OK */ string; +export type PatchCampaignsByCampaignIdVisibilityApiArg = { + campaignId: string; + body: { + type: "internal" | "target"; + }; +}; export type GetCampaignsByCampaignApiResponse = /** status 200 OK */ { id: number; plan?: { @@ -1646,6 +1703,13 @@ export type PutCampaignsByCampaignPayoutsApiArg = { top_tester_bonus?: number; }; }; +export type PostCampaignsByCampaignPreviewApiResponse = /** status 200 OK */ {}; +export type PostCampaignsByCampaignPreviewApiArg = { + campaign: string; + body: { + content: string; + }; +}; export type GetCampaignsByCampaignProspectApiResponse = /** status 200 OK */ { items: { bugs: { @@ -1769,12 +1833,26 @@ export type GetCampaignsByCampaignTasksApiArg = { campaign: string; }; export type PostCampaignsByCampaignTasksApiResponse = - /** status 201 Created */ undefined; + /** status 201 Created */ { + content: string; + id: number; + title: string; + }; export type PostCampaignsByCampaignTasksApiArg = { /** A campaign id */ campaign: string; /** The data of the new UseCase to link to the Campaign */ - taskOptional: TaskOptional; + body: { + content: string; + is_required: number; + position?: number; + prefix?: string; + title: string; + upload?: { + language: string; + policy: "optimize" | "allow"; + }; + }; }; export type GetCampaignsByCampaignTasksAndTaskApiResponse = /** status 200 A UseCase linked with the Campaign */ Task; @@ -1960,8 +2038,13 @@ export type PostDossiersApiArg = { }; } & { autoApply?: number; + bugLanguage?: BugLang; + hasBugForm?: number; + hasBugParade?: number; pageVersion?: "v1" | "v2"; skipPagesAndTasks?: number; + } & { + notify_everyone: 0 | 1; }; }; export type GetDossiersByCampaignApiResponse = /** status 200 OK */ { @@ -2056,6 +2139,8 @@ export type PutDossiersByCampaignApiArg = { campaign: string; body: DossierCreationData & { autoApply?: number; + bugLanguage?: BugLang | boolean; + hasBugParade?: number; }; }; export type GetDossiersByCampaignAvailableTestersApiResponse = @@ -2534,6 +2619,7 @@ export type GetUsersMeCampaignsByCampaignIdApiResponse = /** status 200 OK */ { end_date: string; goal: string; hasBugForm: boolean; + hasBugParade: number; id: number; language?: { code: string; @@ -2709,7 +2795,12 @@ export type GetUsersMeCampaignsByCampaignIdPreviewApiResponse = }; content: string; endDate: string; - selectionStatus?: "starting" | "excluded" | "ready" | "complete"; + selectionStatus?: + | "starting" + | "excluded" + | "ready" + | "complete" + | "not-started"; startDate: string; status: "available" | "applied" | "excluded" | "selected"; title: string; @@ -2727,6 +2818,7 @@ export type GetUsersMeCampaignsByCampaignIdPreviewApiArg = { }; export type GetUsersMeCampaignsByCampaignIdTasksApiResponse = /** status 200 OK */ { + can_upload_media: boolean; content: string; id: number; is_required: number; @@ -2746,6 +2838,45 @@ export type PostUsersMeCampaignsByCampaignIdTasksAndTaskIdApiArg = { status: "completed"; }; }; +export type PostUsersMeCampaignsByCampaignIdTasksAndTaskIdMediaApiResponse = + /** status 200 OK */ { + failed?: { + errorCode: "FILE_TOO_BIG" | "INVALID_FILE_EXTENSION" | "GENERIC_ERROR"; + name: string; + }[]; + files?: { + name: string; + path: string; + }[]; + }; +export type PostUsersMeCampaignsByCampaignIdTasksAndTaskIdMediaApiArg = { + campaignId: string; + taskId: string; + body: { + media?: {} | string[]; + }; +}; +export type GetUsersMeCampaignsByCampaignIdTasksAndTaskIdMediaApiResponse = + /** status 200 OK */ { + items: { + id: number; + location: string; + name: string; + mimetype?: string; + }[]; + }; +export type GetUsersMeCampaignsByCampaignIdTasksAndTaskIdMediaApiArg = { + campaignId: string; + taskId: string; +}; +export type DeleteUsersMeCampaignsByCampaignIdTasksAndTaskIdMediaMediaIdApiResponse = + /** status 200 OK */ {}; +export type DeleteUsersMeCampaignsByCampaignIdTasksAndTaskIdMediaMediaIdApiArg = + { + campaignId: string; + taskId: string; + mediaId: string; + }; export type GetUsersMeCampaignsByCampaignCompatibleDevicesApiResponse = /** status 200 OK */ UserDevice[]; export type GetUsersMeCampaignsByCampaignCompatibleDevicesApiArg = { @@ -3065,6 +3196,8 @@ export type GetUsersMePendingBootyApiArg = { | "activity"; /** How to order values (ASC, DESC) */ order?: "ASC" | "DESC"; + /** Key-value Array for item filtering */ + filterBy?: object; }; export type GetUsersMePermissionsApiResponse = /** status 200 OK */ { appq_bug?: Olp; @@ -3340,6 +3473,7 @@ export type DossierCreationData = { provinces?: string[]; }; }; +export type BugLang = "IT" | "GB" | "ES" | "FR" | "DE"; export type LevelDefinition = { hold?: number; id: number; @@ -3451,6 +3585,7 @@ export const { useGetCampaignsFormsByFormIdQuery, usePutCampaignsFormsByFormIdMutation, useGetCampaignsOwnersQuery, + usePatchCampaignsByCampaignIdVisibilityMutation, useGetCampaignsByCampaignQuery, usePutCampaignsByCampaignMutation, useGetCampaignsByCampaignBugsQuery, @@ -3464,6 +3599,7 @@ export const { useGetCampaignsByCampaignObservationsQuery, useGetCampaignsByCampaignPayoutsQuery, usePutCampaignsByCampaignPayoutsMutation, + usePostCampaignsByCampaignPreviewMutation, useGetCampaignsByCampaignProspectQuery, usePatchCampaignsByCampaignProspectMutation, usePutCampaignsByCampaignProspectMutation, @@ -3534,6 +3670,9 @@ export const { useGetUsersMeCampaignsByCampaignIdPreviewQuery, useGetUsersMeCampaignsByCampaignIdTasksQuery, usePostUsersMeCampaignsByCampaignIdTasksAndTaskIdMutation, + usePostUsersMeCampaignsByCampaignIdTasksAndTaskIdMediaMutation, + useGetUsersMeCampaignsByCampaignIdTasksAndTaskIdMediaQuery, + useDeleteUsersMeCampaignsByCampaignIdTasksAndTaskIdMediaMediaIdMutation, useGetUsersMeCampaignsByCampaignCompatibleDevicesQuery, usePostUsersMeCertificationsMutation, useDeleteUsersMeCertificationsByCertificationIdMutation, diff --git a/src/utils/schema.ts b/src/utils/schema.ts index c3334e69..619dabed 100644 --- a/src/utils/schema.ts +++ b/src/utils/schema.ts @@ -73,6 +73,14 @@ export interface paths { get: operations["get-campaigns-owners"]; parameters: {}; }; + "/campaigns/{campaignId}/visibility": { + patch: operations["patch-campaigns-campaignId-visibility"]; + parameters: { + path: { + campaignId: string; + }; + }; + }; "/campaigns/{campaign}": { /** Get the data of a Campaign if you have access to it */ get: operations["get-campaigns-campaign"]; @@ -168,6 +176,7 @@ export interface paths { }; "/campaigns/{campaign}/payouts": { get: operations["get-campaigns-campaign-payouts"]; + put: operations["put-campaigns-campaign-payouts"]; parameters: { path: { /** A campaign id */ @@ -175,6 +184,14 @@ export interface paths { }; }; }; + "/campaigns/{campaign}/preview": { + post: operations["post-campaigns-campaign-preview"]; + parameters: { + path: { + campaign: string; + }; + }; + }; "/campaigns/{campaign}/prospect": { get: operations["get-campaigns-campaign-prospect"]; /** Make campaign perspective status done, and change exp points and tester payouts. */ @@ -314,6 +331,15 @@ export interface paths { }; }; }; + "/dossiers/{campaign}/availableTesters": { + /** */ + get: operations["get-dossiers-campaign-availableTesters"]; + parameters: { + path: { + campaign: string; + }; + }; + }; "/dossiers/{campaign}/manual": { post: operations["post-dossiers-campaign-manual"]; parameters: { @@ -552,6 +578,62 @@ export interface paths { }; }; }; + "/users/me/campaigns/{campaignId}/payout_data": { + get: operations["get-users-me-campaigns-cid-payout-data"]; + parameters: { + path: { + campaignId: string; + }; + }; + }; + "/users/me/campaigns/{campaignId}/preview": { + get: operations["get-users-me-campaigns-cid-preview"]; + parameters: { + path: { + campaignId: string; + }; + }; + }; + "/users/me/campaigns/{campaignId}/tasks": { + get: operations["get-users-me-campaign-campaignId-tasks"]; + parameters: { + path: { + campaignId: string; + }; + }; + }; + "/users/me/campaigns/{campaignId}/tasks/{taskId}": { + post: operations["post-users-me-campaigns-campaign-tasks-task"]; + parameters: { + path: { + /** the campaign id */ + campaignId: string; + taskId: string; + }; + }; + }; + "/users/me/campaigns/{campaignId}/tasks/{taskId}/media": { + /** Return a list of tester media uploaded on a specific Usecase of a specific Campaign */ + get: operations["get-users-me-campaigns-campaignId-tasks-taskId-media"]; + post: operations["post-users-me-campaigns-campaignId-tasks-taskId-media"]; + parameters: { + path: { + campaignId: string; + taskId: string; + }; + }; + }; + "/users/me/campaigns/{campaignId}/tasks/{taskId}/media/{mediaId}": { + /** Delete a specific media of a specific campaign task if authorized */ + delete: operations["delete-users-me-campaigns-campaignId-tasks-taskId-media-mediaId"]; + parameters: { + path: { + campaignId: string; + taskId: string; + mediaId: string; + }; + }; + }; "/users/me/campaigns/{campaign}/compatible_devices": { get: operations["get-users-me-campaigns-campaignId-compatible-devices"]; parameters: { @@ -688,6 +770,10 @@ export interface components { tokens: number; unitPrice: number; }; + /** AvailableDevice */ + AvailableDevice: { + name: string; + }; /** Bug */ Bug: { campaign?: components["schemas"]["CampaignOptional"] & { @@ -697,6 +783,11 @@ export interface components { status?: components["schemas"]["BugStatus"]; title?: string; }; + /** + * BugLang + * @enum {string} + */ + BugLang: "IT" | "GB" | "ES" | "FR" | "DE"; /** BugSeverity */ BugSeverity: { id?: number; @@ -1626,6 +1717,29 @@ export interface operations { 404: components["responses"]["NotFound"]; }; }; + "patch-campaigns-campaignId-visibility": { + parameters: { + path: { + campaignId: string; + }; + }; + responses: { + /** OK */ + 200: unknown; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + /** Internal Server Error */ + 500: unknown; + }; + requestBody: { + content: { + "application/json": { + /** @enum {undefined} */ + type: "internal" | "target"; + }; + }; + }; + }; /** Get the data of a Campaign if you have access to it */ "get-campaigns-campaign": { parameters: { @@ -1756,6 +1870,8 @@ export interface operations { id: number; media: { id: number; + type: string; + url: string; }[]; note: string; reason: string; @@ -1801,10 +1917,10 @@ export interface operations { 200: { content: { "application/json": { - ai_status: string; + ai_notes?: string; ai_reason: string; + ai_status: string; score_percentage: number; - ai_notes?: string; }; }; }; @@ -2072,6 +2188,89 @@ export interface operations { 404: components["responses"]["NotFound"]; }; }; + "put-campaigns-campaign-payouts": { + parameters: { + path: { + /** A campaign id */ + campaign: components["parameters"]["campaign"]; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + campaign_complete_bonus_eur?: number; + campaign_pts?: number; + critical_bug_payout?: number; + high_bug_payout?: number; + low_bug_payout?: number; + medium_bug_payout?: number; + minimum_bugs?: number; + payout_limit?: number; + percent_usecases?: number; + point_multiplier_critical?: number; + point_multiplier_high?: number; + point_multiplier_low?: number; + point_multiplier_medium?: number; + point_multiplier_perfect?: number; + point_multiplier_refused?: number; + top_tester_bonus?: number; + }; + }; + }; + 400: components["responses"]["MissingParameters"]; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + requestBody: { + content: { + "application/json": { + campaign_complete_bonus_eur?: number; + campaign_pts?: number; + critical_bug_payout?: number; + high_bug_payout?: number; + low_bug_payout?: number; + medium_bug_payout?: number; + minimum_bugs?: number; + payout_limit?: number; + percent_usecases?: number; + point_multiplier_critical?: number; + point_multiplier_high?: number; + point_multiplier_low?: number; + point_multiplier_medium?: number; + /** Format: float */ + point_multiplier_perfect?: number; + point_multiplier_refused?: number; + top_tester_bonus?: number; + }; + }; + }; + }; + "post-campaigns-campaign-preview": { + parameters: { + path: { + campaign: string; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + requestBody: { + content: { + "application/json": { + content: string; + }; + }; + }; + }; "get-campaigns-campaign-prospect": { parameters: { path: { @@ -2293,14 +2492,33 @@ export interface operations { }; responses: { /** Created */ - 201: unknown; + 201: { + content: { + "application/json": { + content: string; + id: number; + title: string; + }; + }; + }; 403: components["responses"]["NotAuthorized"]; 404: components["responses"]["NotFound"]; }; /** The data of the new UseCase to link to the Campaign */ requestBody: { content: { - "application/json": components["schemas"]["TaskOptional"]; + "application/json": { + content: string; + is_required: number; + position?: number; + prefix?: string; + title: string; + upload?: { + language: string; + /** @enum {string} */ + policy: "optimize" | "allow"; + }; + }; }; }; }; @@ -2693,8 +2911,20 @@ export interface operations { useCases?: number; }; } & { + autoApply?: number; + bugLanguage?: components["schemas"]["BugLang"]; + hasBugForm?: number; + hasBugParade?: number; + /** @enum {string} */ + pageVersion?: "v1" | "v2"; /** @default 0 */ skipPagesAndTasks?: number; + } & { + /** + * @default 0 + * @enum {undefined} + */ + notify_everyone: 0 | 1; }; }; }; @@ -2711,6 +2941,7 @@ export interface operations { 200: { content: { "application/json": { + autoApply: number; browsers?: { id: number; name: string; @@ -2815,7 +3046,34 @@ export interface operations { }; requestBody: { content: { - "application/json": components["schemas"]["DossierCreationData"]; + "application/json": components["schemas"]["DossierCreationData"] & { + autoApply?: number; + bugLanguage?: components["schemas"]["BugLang"] | boolean; + hasBugParade?: number; + }; + }; + }; + }; + /** */ + "get-dossiers-campaign-availableTesters": { + parameters: { + path: { + campaign: string; + }; + query: { + refresh?: "1" | "0"; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + count: number; + /** Format: date-time */ + lastUpdate: string; + }; + }; }; }; }; @@ -3796,10 +4054,18 @@ export interface operations { invalid: string[]; valid: string[]; }; + campaign_type: { + icon: string; + id: number; + name: string; + }; devices?: ({ id: number; } & components["schemas"]["UserDevice"])[]; + end_date: string; + goal: string; hasBugForm: boolean; + hasBugParade: number; id: number; language?: { code: string; @@ -4014,6 +4280,221 @@ export interface operations { }; }; }; + "get-users-me-campaigns-cid-payout-data": { + parameters: { + path: { + campaignId: string; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + campaign_complete_bonus_eur: number; + campaign_pts: number; + critical_bug_payout: number; + high_bug_payout: number; + low_bug_payout: number; + medium_bug_payout: number; + minimum_bugs: number; + payout_limit: number; + percent_usecases: number; + point_multiplier_critical: number; + point_multiplier_high: number; + point_multiplier_low: number; + point_multiplier_medium: number; + point_multiplier_perfect: number; + point_multiplier_refused: number; + top_tester_bonus: number; + }; + }; + }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + }; + "get-users-me-campaigns-cid-preview": { + parameters: { + path: { + campaignId: string; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + acceptedDevices: { + console?: components["schemas"]["AvailableDevice"][] | "all"; + pc?: components["schemas"]["AvailableDevice"][] | "all"; + smartTv?: components["schemas"]["AvailableDevice"][] | "all"; + smartphone?: components["schemas"]["AvailableDevice"][] | "all"; + smartwatch?: components["schemas"]["AvailableDevice"][] | "all"; + tablet?: components["schemas"]["AvailableDevice"][] | "all"; + }; + cap?: { + free: number; + value: number; + }; + content: string; + endDate: string; + /** @enum {string} */ + selectionStatus?: + | "starting" + | "excluded" + | "ready" + | "complete" + | "not-started"; + startDate: string; + /** @enum {string} */ + status: "available" | "applied" | "excluded" | "selected"; + title: string; + tl?: { + email: string; + name: string; + }; + type: { + icon: string; + name: string; + }; + }; + }; + }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + }; + "get-users-me-campaign-campaignId-tasks": { + parameters: { + path: { + campaignId: string; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + can_upload_media: boolean; + content: string; + id: number; + is_required: number; + name: string; + /** @enum {string} */ + status: "completed" | "pending"; + }[]; + }; + }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + }; + "post-users-me-campaigns-campaign-tasks-task": { + parameters: { + path: { + /** the campaign id */ + campaignId: string; + taskId: string; + }; + }; + responses: { + /** OK */ + 200: unknown; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + requestBody: { + content: { + "application/json": { + /** @enum {undefined} */ + status: "completed"; + }; + }; + }; + }; + /** Return a list of tester media uploaded on a specific Usecase of a specific Campaign */ + "get-users-me-campaigns-campaignId-tasks-taskId-media": { + parameters: { + path: { + campaignId: string; + taskId: string; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + items: { + id: number; + location: string; + name: string; + mimetype?: string; + }[]; + }; + }; + }; + 403: components["responses"]["NotAuthorized"]; + }; + }; + "post-users-me-campaigns-campaignId-tasks-taskId-media": { + parameters: { + path: { + campaignId: string; + taskId: string; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + failed?: { + /** @enum {string} */ + errorCode: + | "FILE_TOO_BIG" + | "INVALID_FILE_EXTENSION" + | "GENERIC_ERROR"; + name: string; + }[]; + files?: { + name: string; + path: string; + }[]; + }; + }; + }; + }; + requestBody: { + content: { + "multipart/form-data": { + media?: string | string[]; + }; + }; + }; + }; + /** Delete a specific media of a specific campaign task if authorized */ + "delete-users-me-campaigns-campaignId-tasks-taskId-media-mediaId": { + parameters: { + path: { + campaignId: string; + taskId: string; + mediaId: string; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + /** Forbidden */ + 403: unknown; + 404: components["responses"]["NotFound"]; + }; + }; "get-users-me-campaigns-campaignId-compatible-devices": { parameters: { path: { @@ -4594,6 +5075,8 @@ export interface operations { | "activity"; /** How to order values (ASC, DESC) */ order?: components["parameters"]["order"]; + /** Key-value Array for item filtering */ + filterBy?: components["parameters"]["filterBy"]; }; }; responses: {