diff --git a/src/pages/Manual/index.tsx b/src/pages/Manual/index.tsx index 2df6b48e..2e94edd9 100644 --- a/src/pages/Manual/index.tsx +++ b/src/pages/Manual/index.tsx @@ -1,17 +1,21 @@ import { BSCol, BSGrid, + Button, Tab, Tabs, Text, } from "@appquality/appquality-design-system"; +import { prepareAutoBatched } from "@reduxjs/toolkit"; import { useTranslation } from "react-i18next"; import { useParams } from "react-router-dom"; +import { start } from "repl"; import { PageTemplate } from "src/features/PageTemplate"; import { useGetUsersMeCampaignsByCampaignIdPreviewQuery, useGetUsersMeCampaignsByCampaignIdQuery, useGetUsersMeCampaignsByCampaignIdTasksQuery, + useGetUsersMeQuery, } from "src/services/tryberApi"; import { BugCard } from "./BugCard"; import { CampaignCard } from "./CampaignCard"; @@ -22,6 +26,9 @@ import { UseCases } from "./UseCases"; const Manual = () => { const { t } = useTranslation(); const { id } = useParams<{ id: string }>(); + const { data: user } = useGetUsersMeQuery({ + fields: "wp_user_id,role", + }); const { data: campaign } = useGetUsersMeCampaignsByCampaignIdQuery( { campaignId: id }, { skip: !id } @@ -35,9 +42,33 @@ const Manual = () => { { campaignId: id }, { skip: !id } ); - if (!data || !campaign) { + if (!data || !campaign || !user) { return
Loading...
; } + + const startActivity = async () => { + return fetch( + `${process.env.REACT_APP_CROWD_WP_URL}/wp-content/plugins/ultimate-aq-plugin/ajax_controllers/ajax-manual-actions.php`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + action: "ajax_start_tester_activities", + user_id: user.wp_user_id, + }), + } + ) + .then((data) => data.json()) + .then((res) => { + if (res.success) { + window.location.reload(); + } + throw new Error("Error while starting the activity."); + }); + }; + return ( { )} + + {(data.selectionStatus === "starting" || + user.role === "administrator") && ( + + )} diff --git a/src/services/tryberApi/index.ts b/src/services/tryberApi/index.ts index 7d589b61..f4ac0f0e 100644 --- a/src/services/tryberApi/index.ts +++ b/src/services/tryberApi/index.ts @@ -2709,6 +2709,7 @@ export type GetUsersMeCampaignsByCampaignIdPreviewApiResponse = }; content: string; endDate: string; + selectionStatus?: "starting" | "excluded" | "ready" | "complete"; startDate: string; status: "available" | "applied" | "excluded" | "selected"; tl?: { diff --git a/src/utils/schema.ts b/src/utils/schema.ts index 507b30bc..0c2cf99b 100644 --- a/src/utils/schema.ts +++ b/src/utils/schema.ts @@ -33,12 +33,46 @@ export interface paths { /** A request to login with your username and password */ post: operations["post-authenticate"]; }; + "/browsers": { + get: operations["get-browsers"]; + }; + "/bugs/{bugId}/status": { + patch: operations["patch-bugs-bugId-status"]; + parameters: { + path: { + bugId: string; + }; + }; + }; + "/campaignTypes": { + get: operations["get-campaign-types"]; + parameters: {}; + }; "/campaigns": { /** Get all the Campaigns you have access to */ get: operations["get-campaigns"]; /** Create a new Campaign if you have access to the creation */ post: operations["post-campaigns"]; }; + "/campaigns/forms": { + get: operations["get-campaigns-forms"]; + post: operations["post-campaigns-forms"]; + parameters: {}; + }; + "/campaigns/forms/{formId}": { + get: operations["get-campaigns-forms-formId"]; + put: operations["put-campaigns-forms-formId"]; + parameters: { + path: { + formId: string; + }; + }; + }; + "/campaigns/owners": { + /** Get all the owners of campaigns you have access to */ + get: operations["get-campaigns-owners"]; + parameters: {}; + }; "/campaigns/{campaign}": { /** Get the data of a Campaign if you have access to it */ get: operations["get-campaigns-campaign"]; @@ -61,6 +95,28 @@ export interface paths { }; }; }; + "/campaigns/{campaign}/bugs/{bugId}": { + /** Get single bug of a Campaign if you have access to it */ + get: operations["get-campaigns-single-bug"]; + parameters: { + path: { + /** A campaign id */ + campaign: string; + bugId: string; + }; + }; + }; + "/campaigns/{campaign}/bugs/{bugId}/aiReview": { + /** Get ai review for a single bug of a Campaign if you have access to it */ + get: operations["get-campaigns-single-bug-ai-review"]; + parameters: { + path: { + /** A campaign id */ + campaign: string; + bugId: string; + }; + }; + }; "/campaigns/{campaign}/candidates": { get: operations["get-campaigns-campaign-candidates"]; /** The Tryber will be inserted as a candidate Tryber on a specific Campaign */ @@ -112,6 +168,7 @@ export interface paths { }; "/campaigns/{campaign}/payouts": { get: operations["get-campaigns-campaign-payouts"]; + put: operations["put-campaigns-campaign-payouts"]; parameters: { path: { /** A campaign id */ @@ -185,29 +242,6 @@ export interface paths { }; }; }; - "/campaigns/forms": { - get: operations["get-campaigns-forms"]; - post: operations["post-campaigns-forms"]; - parameters: {}; - }; - "/campaigns/forms/{formId}": { - get: operations["get-campaigns-forms-formId"]; - put: operations["put-campaigns-forms-formId"]; - parameters: { - path: { - formId: string; - }; - }; - }; - "/campaigns/owners": { - /** Get all the owners of campaigns you have access to */ - get: operations["get-campaigns-owners"]; - parameters: {}; - }; - "/campaignTypes": { - get: operations["get-campaign-types"]; - parameters: {}; - }; "/certifications": { /** Get all certificatio */ get: operations["get-certifications"]; @@ -221,15 +255,24 @@ export interface paths { }; }; }; + "/custom_user_fields": { + get: operations["get-customUserFields"]; + parameters: {}; + }; "/customers": { /** Get all the customers you have access to */ get: operations["get-customers"]; post: operations["post-customers"]; parameters: {}; }; - "/custom_user_fields": { - get: operations["get-customUserFields"]; - parameters: {}; + "/customers/{customer}/projects": { + get: operations["get-customers-customer-projects"]; + post: operations["post-customers-customer-projects"]; + parameters: { + path: { + customer: string; + }; + }; }; "/devices/{device_type}/models": { /** Get all model of devices with theirs manufacturers */ @@ -258,16 +301,77 @@ export interface paths { }; }; }; - "/education": { - /** Get all education levels */ - get: operations["get-education"]; + "/dossiers": { + post: operations["post-dossiers"]; + parameters: {}; }; - "/employments": { - /** Get all employments */ - get: operations["get-employments"]; + "/dossiers/{campaign}": { + get: operations["get-dossiers-campaign"]; + put: operations["put-dossiers-campaign"]; + parameters: { + path: { + /** A campaign id */ + campaign: string; + }; + }; }; - "/jotforms/{campaign}": { - post: operations["post-jotforms-campaignId"]; + "/dossiers/{campaign}/availableTesters": { + /** */ + get: operations["get-dossiers-campaign-availableTesters"]; + parameters: { + path: { + campaign: string; + }; + }; + }; + "/dossiers/{campaign}/manual": { + post: operations["post-dossiers-campaign-manual"]; + parameters: { + path: { + /** A campaign id */ + campaign: components["parameters"]["campaign"]; + }; + }; + }; + "/dossiers/{campaign}/phases": { + put: operations["put-dossiers-campaign-phases"]; + parameters: { + path: { + /** A campaign id */ + campaign: string; + }; + }; + }; + "/dossiers/{campaign}/preview": { + post: operations["post-dossiers-campaign-preview"]; + parameters: { + path: { + /** A campaign id */ + campaign: components["parameters"]["campaign"]; + }; + }; + }; + "/dossiers/{campaign}/quotations": { + post: operations["post-dossiers-campaign-quotations"]; + parameters: { + path: { + /** A campaign id */ + campaign: string; + }; + }; + }; + "/dossiers/{campaign}/quotations/{quote}": { + patch: operations["patch-dossiers-campaign-quotations-quote"]; + parameters: { + path: { + /** A campaign id */ + campaign: string; + quote: string; + }; + }; + }; + "/dossiers/{campaign}/quotesHistory": { + get: operations["get-dossiers-campaign-quotes-history"]; parameters: { path: { /** A campaign id */ @@ -275,6 +379,14 @@ export interface paths { }; }; }; + "/education": { + /** Get all education levels */ + get: operations["get-education"]; + }; + "/employments": { + /** Get all employments */ + get: operations["get-employments"]; + }; "/jotforms/forms": { get: operations["get-jotforms"]; parameters: {}; @@ -287,6 +399,15 @@ export interface paths { }; }; }; + "/jotforms/{campaign}": { + post: operations["post-jotforms-campaignId"]; + parameters: { + path: { + /** A campaign id */ + campaign: string; + }; + }; + }; "/languages": { /** Get all languages */ get: operations["get-languages"]; @@ -316,6 +437,9 @@ export interface paths { }; }; }; + "/phases": { + get: operations["get-phases"]; + }; "/popups": { /** Retrieve all available popups for admin operations */ get: operations["get-popups"]; @@ -334,6 +458,10 @@ export interface paths { }; }; }; + "/productTypes": { + get: operations["get-productTypes"]; + parameters: {}; + }; "/users": { /** Get all users you have access to */ get: operations["get-users"]; @@ -348,6 +476,14 @@ export interface paths { }; }; }; + "/users/by-role/{role}": { + get: operations["get-users-by-role-role"]; + parameters: { + path: { + role: "tester_lead" | "quality_leader" | "ux_researcher" | "assistants"; + }; + }; + }; "/users/me": { /** Get your user data */ get: operations["get-users-me"]; @@ -391,15 +527,6 @@ export interface paths { }; }; }; - "/users/me/campaigns/{campaign}/compatible_devices": { - get: operations["get-users-me-campaigns-campaignId-compatible-devices"]; - parameters: { - path: { - /** A campaign id */ - campaign: string; - }; - }; - }; "/users/me/campaigns/{campaignId}/bugs": { /** Send a user bug on a specific campaign */ post: operations["post-users-me-campaigns-campaign-bugs"]; @@ -435,6 +562,49 @@ 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/{campaign}/compatible_devices": { + get: operations["get-users-me-campaigns-campaignId-compatible-devices"]; + parameters: { + path: { + /** A campaign id */ + campaign: string; + }; + }; + }; "/users/me/certifications": { /** Add one certification to your profile */ post: operations["post-users-me-certifications"]; @@ -541,84 +711,38 @@ export interface paths { "/users/me/rank/list": { get: operations["get-users-me-rank-list"]; }; - "/dossiers": { - post: operations["post-dossiers"]; - parameters: {}; - }; - "/dossiers/{campaign}": { - get: operations["get-dossiers-campaign"]; - put: operations["put-dossiers-campaign"]; - parameters: { - path: { - /** A campaign id */ - campaign: string; - }; - }; - }; - "/customers/{customer}/projects": { - get: operations["get-customers-customer-projects"]; - post: operations["post-customers-customer-projects"]; - parameters: { - path: { - customer: string; - }; - }; - }; - "/users/by-role/{role}": { - get: operations["get-users-by-role-role"]; - parameters: { - path: { - role: "tester_lead" | "quality_leader" | "ux_researcher" | "assistants"; - }; - }; - }; - "/browsers": { - get: operations["get-browsers"]; - }; - "/productTypes": { - get: operations["get-productTypes"]; - parameters: {}; - }; - "/phases": { - get: operations["get-phases"]; - }; - "/dossiers/{campaign}/phases": { - put: operations["put-dossiers-campaign-phases"]; - parameters: { - path: { - /** A campaign id */ - campaign: string; - }; - }; - }; -} - -export interface components { - schemas: { - AdditionalField: { - field_id: number; - name: string; - value: string; - text?: string; - is_candidate?: boolean; +} + +export interface components { + schemas: { + AdditionalField: { + field_id: number; + is_candidate?: boolean; + name: string; + text?: string; + value: string; }; Agreement: { - title: string; - tokens: number; - unitPrice: number; - startDate: string; expirationDate: string; - note?: string; /** @default false */ isTokenBased?: boolean; + note?: string; + startDate: string; + title: string; + tokens: number; + unitPrice: number; + }; + /** AvailableDevice */ + AvailableDevice: { + name: string; }; /** Bug */ Bug: { - severity?: components["schemas"]["BugSeverity"]; - status?: components["schemas"]["BugStatus"]; campaign?: components["schemas"]["CampaignOptional"] & { id?: number; }; + severity?: components["schemas"]["BugSeverity"]; + status?: components["schemas"]["BugStatus"]; title?: string; }; /** BugSeverity */ @@ -628,9 +752,9 @@ export interface components { }; /** BugStatus */ BugStatus: { + description?: string; id?: number; name?: string; - description?: string; }; /** BugTag */ BugTag: { @@ -645,19 +769,19 @@ export interface components { components["schemas"]["CampaignRequired"]; /** CampaignAdditionalField */ CampaignAdditionalField: { + error: string; name: string; slug: string; - error: string; } & ( | { + options: string[]; /** @enum {string} */ type: "select"; - options: string[]; } | { + regex: string; /** @enum {string} */ type: "text"; - regex: string; } ); /** CampaignField */ @@ -665,43 +789,43 @@ export interface components { id?: number; }; CampaignOptional: { - name?: string; + additionalFields?: components["schemas"]["CampaignField"][]; + allowed?: { + bug_types?: components["schemas"]["BugType"][]; + replicabilities?: components["schemas"]["Replicability"][]; + severities?: components["schemas"]["BugSeverity"][]; + }; + /** @description True if you applied on this Campaign */ + applied?: boolean; + /** @description If bugform is deactivated is a boolean else contains URLs to bugforms for each languages */ + bugform_link?: boolean | components["schemas"]["TranslatablePage"]; + /** @default 0 */ + csm_effort?: number; + customerCanViewReviewing?: boolean; customer_title?: string; - internal_id?: string; dates?: { - start?: string; - end?: string; close?: string; + end?: string; + start?: string; }; - status?: boolean; - language?: string; - public?: boolean; - hasBugParade?: boolean; devices?: { id?: string; }[]; + hasBugParade?: boolean; + internal_id?: string; + language?: string; + manual_link?: components["schemas"]["TranslatablePage"]; minNumberOfMedia?: number; - titleRule?: boolean; - allowed?: { - severities?: components["schemas"]["BugSeverity"][]; - bug_types?: components["schemas"]["BugType"][]; - replicabilities?: components["schemas"]["Replicability"][]; - }; + name?: string; + preview_link?: components["schemas"]["TranslatablePage"]; projectManager?: components["schemas"]["User"]; - customerCanViewReviewing?: boolean; - additionalFields?: components["schemas"]["CampaignField"][]; + public?: boolean; + status?: boolean; + titleRule?: boolean; /** @default 0 */ tokens?: number; /** @default 0 */ - csm_effort?: number; - /** @default 0 */ ux_effort?: number; - preview_link?: components["schemas"]["TranslatablePage"]; - manual_link?: components["schemas"]["TranslatablePage"]; - /** @description If bugform is deactivated is a boolean else contains URLs to bugforms for each languages */ - bugform_link?: boolean | components["schemas"]["TranslatablePage"]; - /** @description True if you applied on this Campaign */ - applied?: boolean; visibility?: { freeSpots?: number; totalSpots?: number; @@ -710,32 +834,39 @@ export interface components { }; }; CampaignRequired: { - name: string; + campaign_type: components["schemas"]["CampaignType"]; dates: { - start: string; - end: string; close: string; + end: string; + start: string; }; - campaign_type: components["schemas"]["CampaignType"]; + name: string; }; CampaignType: string | number; Certification: { - id?: number; - name: string; - area: string; - institute: string; /** Format: date */ achievement_date: string; + area: string; + id?: number; + institute: string; + name: string; + }; + /** CountryCode */ + CountryCode: string; + /** Currency */ + Currency: { + currency: string; + value: number; }; /** CustomUserFieldsData */ CustomUserFieldsData: { - id: number; - type: components["schemas"]["CustomUserFieldsType"]; - placeholder?: components["schemas"]["TranslatablePage"]; allow_other?: boolean; - name: components["schemas"]["TranslatablePage"]; format?: string; + id: number; + name: components["schemas"]["TranslatablePage"]; options?: components["schemas"]["CustomUserFieldsDataOption"][]; + placeholder?: components["schemas"]["TranslatablePage"]; + type: components["schemas"]["CustomUserFieldsType"]; }; /** CustomUserFieldsDataOption */ CustomUserFieldsDataOption: { @@ -747,10 +878,57 @@ export interface components { * @enum {string} */ CustomUserFieldsType: "text" | "select" | "multiselect"; - /** Currency */ - Currency: { - value: number; - currency: string; + DossierCreationData: { + additionals?: ({ + showInStats?: boolean; + } & components["schemas"]["CampaignAdditionalField"])[]; + browsers?: number[]; + bugTypes?: number[]; + /** Format: date-time */ + closeDate?: string; + countries?: components["schemas"]["CountryCode"][]; + csm?: number; + description?: string; + deviceList: number[]; + deviceRequirements?: string; + /** Format: date-time */ + endDate?: string; + goal?: string; + languages?: string[]; + notes?: string; + outOfScope?: string; + productLink?: string; + productType?: number; + project: number; + roles?: { + role: number; + user: number; + }[]; + /** Format: date-time */ + startDate: string; + target?: { + cap?: number; + genderQuote?: string; + notes?: string; + size?: number; + }; + testType: number; + title: { + customer: string; + tester?: string; + }; + visibilityCriteria?: { + ageRanges?: { + max: number; + min: number; + }[]; + cuf?: { + cufId: number; + cufValueIds: number[]; + }[]; + gender?: number[]; + provinces?: string[]; + }; }; /** FiscalBirthCity */ FiscalBirthCity: @@ -772,19 +950,34 @@ export interface components { | "non-italian" | "vat" | "company"; + /** + * Gender + * @enum {string} + */ + Gender: "male" | "female" | "not-specified" | "other"; /** LevelDefinition */ LevelDefinition: { + hold?: number; id: number; name: string; reach?: number; - hold?: number; }; /** MonthlyLevel */ MonthlyLevel: { id: number; name: string; }; + Olp: number[] | boolean; + /** PaginationData */ + PaginationData: { + limit?: number; + size: number; + start: number; + total?: number; + }; Popup: { + content?: string; + once?: boolean; profiles?: | number[] | ( @@ -794,11 +987,8 @@ export interface components { | "logged-in-year" | "not-logged-in-year" ); - once?: boolean; - content?: string; title?: string; }; - Olp: number[] | boolean; /** PreselectionFormQuestion */ PreselectionFormQuestion: { question: string; @@ -808,30 +998,47 @@ export interface components { type: components["schemas"]["PreselectionQuestionSimple"]; } | { - type: components["schemas"]["PreselectionQuestionMultiple"]; options?: { - value: string; isInvalid?: boolean; + value: string; }[]; + type: components["schemas"]["PreselectionQuestionMultiple"]; } | { - type: components["schemas"]["PreselectionQuestionCuf"]; options?: { - value: number; isInvalid?: boolean; + value: number; }[]; + type: components["schemas"]["PreselectionQuestionCuf"]; } ); + /** PreselectionQuestionCuf */ + PreselectionQuestionCuf: string; + /** + * PreselectionQuestionMultiple + * @enum {string} + */ + PreselectionQuestionMultiple: "multiselect" | "select" | "radio"; + /** + * PreselectionQuestionSimple + * @enum {string} + */ + PreselectionQuestionSimple: "gender" | "text" | "phone_number" | "address"; /** Project */ Project: { name?: string; }; + /** + * ProspectStatus + * @enum {string} + */ + ProspectStatus: "draft" | "confirmed" | "done"; RankingItem: { - position: number; - image: string; id: number; - name: string; + image: string; monthly_exp: number; + name: string; + position: number; }; /** Replicability */ Replicability: { @@ -841,153 +1048,86 @@ export interface components { Task: components["schemas"]["TaskOptional"] & components["schemas"]["TaskRequired"]; TaskOptional: { - name?: string; - content?: string; + allow_media?: boolean; campaign_id?: number; + content?: string; group?: number; - allow_media?: boolean; + name?: string; }; TaskRequired: { - name: string; - content: string; campaign_id: number; + content: string; + name: string; }; /** TranslatablePage */ TranslatablePage: { en?: string; - it?: string; es?: string; + it?: string; }; /** User */ User: { - username?: string; - name?: string; - surname?: string; /** Format: email */ email?: string; + id?: number; /** Format: uri */ image?: string; - id?: number; - wp_user_id?: number; - role?: string; is_verified?: boolean; + name?: string; + role?: string; + surname?: string; + username?: string; + wp_user_id?: number; }; /** UserDevice */ UserDevice: { - type: string; - id: number; device: | { + id?: number; manufacturer: string; model: string; - id?: number; } | { pc_type: string; }; + id: number; operating_system: { id: number; platform: string; version: string; }; + type: string; }; - /** - * Gender - * @enum {string} - */ - Gender: "male" | "female" | "not-specified" | "other"; - /** PaginationData */ - PaginationData: { - start: number; - limit?: number; - size: number; - total?: number; - }; - /** - * ProspectStatus - * @enum {string} - */ - ProspectStatus: "draft" | "confirmed" | "done"; - /** CountryCode */ - CountryCode: string; - DossierCreationData: { - project: number; - testType: number; - title: { - customer: string; - tester?: string; - }; - /** Format: date-time */ - startDate: string; - /** Format: date-time */ - endDate?: string; - /** Format: date-time */ - closeDate?: string; - deviceList: number[]; - csm?: number; - roles?: { - role: number; - user: number; - }[]; - description?: string; - productLink?: string; - goal?: string; - outOfScope?: string; - deviceRequirements?: string; - target?: { - notes?: string; - size?: number; - cap?: number; - }; - countries?: components["schemas"]["CountryCode"][]; - languages?: string[]; - browsers?: number[]; - productType?: number; - notes?: string; - }; - /** - * PreselectionQuestionSimple - * @enum {string} - */ - PreselectionQuestionSimple: "gender" | "text" | "phone_number" | "address"; - /** - * PreselectionQuestionMultiple - * @enum {string} - */ - PreselectionQuestionMultiple: "multiselect" | "select" | "radio"; - /** PreselectionQuestionCuf */ - PreselectionQuestionCuf: string; }; responses: { - /** A user */ - UserData: { - content: { - "application/json": components["schemas"]["User"]; - }; - }; /** Authentication data. The token can be used to authenticate the protected requests */ Authentication: { content: { "application/json": { - id?: number; + exp?: number; firstName?: string; + iat?: number; + id?: number; lastName?: string; token?: string; username?: string; - iat?: number; - exp?: number; }; }; }; - /** A single Campaigns with the Campaign id and Project data */ - SingleCampaign: { + /** An error due to missing required parameters */ + MissingParameters: { content: { - "application/json": components["schemas"]["Campaign"] & { - id: number; - } & { - project?: components["schemas"]["Project"] & { - id?: number; - }; + "application/json": { + message: string; + }; + }; + }; + /** An error due to insufficient authorization to access the resource */ + NotAuthorized: { + content: { + "application/json": { + code?: string; + message?: string; }; }; }; @@ -995,54 +1135,55 @@ export interface components { NotFound: { content: { "application/json": { + code?: string; element: string; id: number; message: string; - code?: string; }; }; }; - /** An error due to missing required parameters */ - MissingParameters: { + /** A single Campaigns with the Campaign id and Project data */ + SingleCampaign: { content: { - "application/json": { - message: string; + "application/json": components["schemas"]["Campaign"] & { + id: number; + } & { + project?: components["schemas"]["Project"] & { + id?: number; + }; }; }; }; - /** An error due to insufficient authorization to access the resource */ - NotAuthorized: { + /** A user */ + UserData: { content: { - "application/json": { - message?: string; - code?: string; - }; + "application/json": components["schemas"]["User"]; }; }; }; parameters: { /** @description A campaign id */ campaign: string; - /** @description A task id */ - task: string; /** @description A customer id */ customer: string; - /** @description A project id */ - project: string; - /** @description Max items to retrieve */ - limit: number; - /** @description Items to skip for pagination */ - start: number; /** @description Key-value Array for item filtering */ filterBy: { [key: string]: unknown }; - /** @description How to order values (ASC, DESC) */ - order: "ASC" | "DESC"; + /** @description Max items to retrieve */ + limit: number; /** @description How to localize values */ locale: "en" | "it"; - /** @description A comma separated list of fields which will be searched */ - searchBy: string; + /** @description How to order values (ASC, DESC) */ + order: "ASC" | "DESC"; + /** @description A project id */ + project: string; /** @description The value to search for */ search: string; + /** @description A comma separated list of fields which will be searched */ + searchBy: string; + /** @description Items to skip for pagination */ + start: number; + /** @description A task id */ + task: string; testerId: string; }; requestBodies: {}; @@ -1082,8 +1223,8 @@ export interface operations { id: number; } & components["schemas"]["Agreement"] & { customer: { - id: number; company: string; + id: number; }; })[]; } & components["schemas"]["PaginationData"]; @@ -1131,8 +1272,8 @@ export interface operations { id: number; } & components["schemas"]["Agreement"] & { customer: { - id: number; company: string; + id: number; }; }; }; @@ -1157,8 +1298,8 @@ export interface operations { id: number; } & components["schemas"]["Agreement"] & { customer: { - id: number; company: string; + id: number; }; }; }; @@ -1212,8 +1353,68 @@ export interface operations { requestBody: { content: { "application/json": { - username: string; password: string; + username: string; + }; + }; + }; + }; + "get-browsers": { + responses: { + /** OK */ + 200: { + content: { + "application/json": { + results: { + id: number; + name: string; + }[]; + }; + }; + }; + }; + }; + "patch-bugs-bugId-status": { + parameters: { + path: { + bugId: string; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + /** Forbidden */ + 403: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + }; + requestBody: { + content: { + "application/json": { + status_id: number; + }; + }; + }; + }; + "get-campaign-types": { + parameters: {}; + responses: { + 200: { + content: { + "application/json": { + customRoles: { + roleId: number; + userIds: number[]; + }[]; + id: number; + name: string; + }[]; }; }; }; @@ -1244,22 +1445,6 @@ export interface operations { content: { "application/json": { items?: { - id?: number; - name?: string; - customerTitle?: string; - startDate?: string; - endDate?: string; - /** @enum {string} */ - status?: "running" | "closed" | "incoming"; - /** @enum {string} */ - visibility?: - | "admin" - | "smallgroup" - | "logged" - | "public" - | "target"; - /** @enum {string} */ - resultType?: "bug" | "bugparade" | "no"; csm?: { id: number; name: string; @@ -1269,19 +1454,25 @@ export interface operations { id?: number; name: string; }; - type?: { + customerTitle?: string; + endDate?: string; + id?: number; + name?: string; + phase?: { + id: number; name: string; - /** @enum {string} */ - area: "quality" | "experience"; }; project?: { id?: number; name: string; }; - phase?: { + quote?: { id: number; - name: string; + price: string; + status: string; }; + /** @enum {string} */ + resultType?: "bug" | "bugparade" | "no"; roles?: { role: { id: number; @@ -1293,6 +1484,21 @@ export interface operations { surname: string; }; }[]; + startDate?: string; + /** @enum {string} */ + status?: "running" | "closed" | "incoming"; + type?: { + /** @enum {string} */ + area: "quality" | "experience"; + name: string; + }; + /** @enum {string} */ + visibility?: + | "admin" + | "smallgroup" + | "logged" + | "public" + | "target"; }[]; } & components["schemas"]["PaginationData"]; }; @@ -1317,6 +1523,157 @@ export interface operations { }; }; }; + "get-campaigns-forms": { + parameters: { + query: { + /** A comma separated list of fields which will be searched */ + searchBy?: components["parameters"]["searchBy"]; + /** The value to search for */ + search?: components["parameters"]["search"]; + /** Max items to retrieve */ + limit?: components["parameters"]["limit"]; + /** Items to skip for pagination */ + start?: components["parameters"]["start"]; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + limit?: number; + results: { + campaign?: number; + id: number; + name: string; + }[]; + size: number; + start: number; + total?: number; + }; + }; + }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + }; + "post-campaigns-forms": { + parameters: {}; + responses: { + /** Created */ + 201: { + content: { + "application/json": { + campaign?: { + id: number; + name: string; + }; + fields?: ({ + id: number; + } & components["schemas"]["PreselectionFormQuestion"])[]; + id: number; + name: string; + }; + }; + }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + requestBody: { + content: { + "application/json": { + campaign?: number; + creationDate?: string; + fields: components["schemas"]["PreselectionFormQuestion"][]; + name: string; + }; + }; + }; + }; + "get-campaigns-forms-formId": { + parameters: { + path: { + formId: string; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + campaign?: { + id: number; + name: string; + }; + fields: ({ + id: number; + } & components["schemas"]["PreselectionFormQuestion"])[]; + id: number; + /** @example My form */ + name: string; + }; + }; + }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + }; + "put-campaigns-forms-formId": { + parameters: { + path: { + formId: string; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + campaign?: { + id: number; + name: string; + }; + fields: ({ + id: number; + } & components["schemas"]["PreselectionFormQuestion"])[]; + id: number; + name: string; + }; + }; + }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + requestBody: { + content: { + "application/json": { + campaign?: number; + fields: ({ + id?: number; + } & components["schemas"]["PreselectionFormQuestion"])[]; + name: string; + }; + }; + }; + }; + /** Get all the owners of campaigns you have access to */ + "get-campaigns-owners": { + parameters: {}; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + id: number; + name: string; + surname: string; + }[]; + }; + }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + }; /** Get the data of a Campaign if you have access to it */ "get-campaigns-campaign": { parameters: { @@ -1331,10 +1688,14 @@ export interface operations { content: { "application/json": { id: number; + plan?: { + id: number; + name: string; + }; + preselectionFormId?: number; title: string; type: string; typeDescription: string; - preselectionFormId?: number; }; }; }; @@ -1391,29 +1752,29 @@ export interface operations { content: { "application/json": { items: { + created: string; + /** @enum {string} */ + duplication: "father" | "unique" | "duplicated"; id: number; - title: string; internalId: string; - status: { + isFavourite: boolean; + severity: { id: number; name: string; }; - type: { + status: { id: number; name: string; }; - severity: { + tags?: components["schemas"]["BugTag"][]; + tester: { id: number; - name: string; }; - tester: { + title: string; + type: { id: number; + name: string; }; - tags?: components["schemas"]["BugTag"][]; - /** @enum {string} */ - duplication: "father" | "unique" | "duplicated"; - isFavourite: boolean; - created: string; updated: string; }[]; } & components["schemas"]["PaginationData"]; @@ -1423,6 +1784,84 @@ export interface operations { 404: components["responses"]["NotFound"]; }; }; + /** Get single bug of a Campaign if you have access to it */ + "get-campaigns-single-bug": { + parameters: { + path: { + /** A campaign id */ + campaign: string; + bugId: string; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + actual_result: string; + description: string; + expected_result: string; + id: number; + media: { + id: number; + type: string; + url: string; + }[]; + note: string; + reason: string; + replicability: { + id: number; + name: string; + }; + severity: components["schemas"]["BugSeverity"]; + status: components["schemas"]["BugStatus"]; + status_history: { + date: string; + reason: string; + status: string; + }[]; + title: string; + type: { + id: number; + name: string; + }; + usecase: { + description: string; + id: number; + title: string; + }; + }; + }; + }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + }; + /** Get ai review for a single bug of a Campaign if you have access to it */ + "get-campaigns-single-bug-ai-review": { + parameters: { + path: { + /** A campaign id */ + campaign: string; + bugId: string; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + ai_notes?: string; + ai_reason: string; + ai_status: string; + score_percentage: number; + }; + }; + }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + }; "get-campaigns-campaign-candidates": { parameters: { path: { @@ -1456,25 +1895,24 @@ export interface operations { content: { "application/json": { results?: { - id: number; - name: string; - surname: string; - gender: components["schemas"]["Gender"]; age: number; - experience: number; businessCps: number; businessCpsLastMonth: number; - levels: { - bugHunting: string; - metal: string; - }; devices: { + id: number; manufacturer?: string; model?: string; os: string; osVersion: string; - id: number; }[]; + experience: number; + gender: components["schemas"]["Gender"]; + id: number; + levels: { + bugHunting: string; + metal: string; + }; + name: string; questions?: { id?: number; title?: string; @@ -1482,6 +1920,7 @@ export interface operations { }[]; /** @enum {string} */ status?: "candidate" | "excluded" | "selected"; + surname: string; }[]; } & components["schemas"]["PaginationData"]; }; @@ -1504,10 +1943,10 @@ export interface operations { content: { "application/json": { results: { - tester_id: number; - device?: "any" | number; campaignId?: number; - }[]; + device?: "any" | number; + tester_id: number; + }[]; }; }; }; @@ -1515,12 +1954,12 @@ export interface operations { 207: { content: { "application/json": { + invalidTesters?: number[]; results: { - tester_id: number; - device?: "any" | number; campaignId?: number; + device?: "any" | number; + tester_id: number; }[]; - invalidTesters?: number[]; }; }; }; @@ -1531,12 +1970,12 @@ export interface operations { content: { "application/json": | { - tester_id: number; device?: number | "random"; + tester_id: number; }[] | { - tester_id: number; device?: number | "random"; + tester_id: number; }; }; }; @@ -1625,22 +2064,22 @@ export interface operations { content: { "application/json": { items: { - id: number; - name: string; - time: number; - tester: { - id: number; - name: string; - }; cluster: { id: number; name: string; }; + id: number; media: { id: number; - url: string; streamUrl: string; + url: string; + }; + name: string; + tester: { + id: number; + name: string; }; + time: number; }[]; }; }; @@ -1661,20 +2100,20 @@ export interface operations { 200: { content: { "application/json": { - maxBonusBug: number; completionRule: { bugs?: number; usecases?: number; }; - testSuccess: { + maxBonusBug: number; + testFailure: { + message: string; payout: number; points: number; - message: string; }; - testFailure: { + testSuccess: { + message: string; payout: number; points: number; - message: string; }; }; }; @@ -1683,6 +2122,64 @@ 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; + point_multiplier_perfect?: number; + point_multiplier_refused?: number; + top_tester_bonus?: number; + }; + }; + }; + }; "get-campaigns-campaign-prospect": { parameters: { path: { @@ -1701,38 +2198,38 @@ export interface operations { content: { "application/json": { items: { - tester: { - id: number; - name: string; - surname: string; - group: number; - }; - usecases: { - completed: number; - required: number; - }; bugs: { critical: number; high: number; - medium: number; low: number; + medium: number; }; - payout: { + experience: { completion: number; - bug: number; - refund: number; extra: number; }; - experience: { + isCompleted: boolean; + isTopTester: boolean; + note: string; + payout: { + bug: number; completion: number; extra: number; + refund: number; }; - note: string; /** @enum {string} */ status: "pending" | "done"; + tester: { + group: number; + id: number; + name: string; + surname: string; + }; + usecases: { + completed: number; + required: number; + }; weightedBugs: number; - isCompleted: boolean; - isTopTester: boolean; }[]; status: components["schemas"]["ProspectStatus"]; }; @@ -1762,24 +2259,24 @@ export interface operations { requestBody: { content: { "application/json": { - status: components["schemas"]["ProspectStatus"]; items: { - tester: { - id: number; - }; + completed: boolean; experience: { completion: number; extra: number; }; + note?: string; payout: { - completion: number; bug: number; + completion: number; extra: number; refund: number; }; - note?: string; - completed: boolean; + tester: { + id: number; + }; }[]; + status: components["schemas"]["ProspectStatus"]; }; }; }; @@ -1821,18 +2318,18 @@ export interface operations { 200: { content: { "application/json": { - payout: { + completed: boolean; + experience: { completion: number; - bugs: number; - refund: number; extra: number; }; - experience: { + note: string; + payout: { + bugs: number; completion: number; extra: number; + refund: number; }; - note: string; - completed: boolean; }; }; }; @@ -1840,18 +2337,18 @@ export interface operations { requestBody: { content: { "application/json": { - payout: { + completed: boolean; + experience: { completion: number; - bugs: number; - refund: number; extra: number; }; - experience: { + note: string; + payout: { + bugs: number; completion: number; extra: number; + refund: number; }; - note: string; - completed: boolean; }; }; }; @@ -1977,26 +2474,26 @@ export interface operations { content: { "application/json": { goal: string; - usersNumber: number; - sentiments: { - id: number; - value: number; - comment: string; - cluster: { - id: number; - name: string; - }; - }[]; methodology: { + description: string; name: string; /** @enum {string} */ type: "qualitative" | "quantitative" | "quali-quantitative"; - description: string; }; questions: { id: number; name: string; }[]; + sentiments: { + cluster: { + id: number; + name: string; + }; + comment: string; + id: number; + value: number; + }[]; + usersNumber: number; visible: number; }; }; @@ -2026,37 +2523,32 @@ export interface operations { content: { "application/json": { goal?: string; - usersNumber?: number; - visible?: number; methodology?: { description: string; type: string; }; + questions?: { + id?: number; + name: string; + }[]; sentiments?: { clusterId: number; - value: number; comment: string; id?: number; + value: number; }[]; - questions?: { - name: string; - id?: number; - }[]; + usersNumber?: number; + visible?: number; }; }; }; }; - "get-campaigns-forms": { + /** Get all certificatio */ + "get-certifications": { parameters: { query: { - /** A comma separated list of fields which will be searched */ - searchBy?: components["parameters"]["searchBy"]; - /** The value to search for */ - search?: components["parameters"]["search"]; - /** Max items to retrieve */ - limit?: components["parameters"]["limit"]; - /** Items to skip for pagination */ - start?: components["parameters"]["start"]; + /** Key-value Array for item filtering */ + filterBy?: components["parameters"]["filterBy"]; }; }; responses: { @@ -2064,59 +2556,24 @@ export interface operations { 200: { content: { "application/json": { - results: { - id: number; - name: string; - campaign?: number; - }[]; - limit?: number; - start: number; - size: number; - total?: number; - }; - }; - }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; - }; - }; - "post-campaigns-forms": { - parameters: {}; - responses: { - /** Created */ - 201: { - content: { - "application/json": { + area: string; id: number; + institute: string; name: string; - campaign?: { - id: number; - name: string; - }; - fields?: ({ - id: number; - } & components["schemas"]["PreselectionFormQuestion"])[]; - }; + }[]; }; }; 403: components["responses"]["NotAuthorized"]; 404: components["responses"]["NotFound"]; }; - requestBody: { - content: { - "application/json": { - name: string; - fields: components["schemas"]["PreselectionFormQuestion"][]; - campaign?: number; - creationDate?: string; - }; - }; - }; }; - "get-campaigns-forms-formId": { + "get-regions": { parameters: { path: { - formId: string; + code: string; + }; + query: { + languageCode?: string; }; }; responses: { @@ -2124,127 +2581,72 @@ export interface operations { 200: { content: { "application/json": { - id: number; - /** @example My form */ name: string; - campaign?: { - id: number; - name: string; - }; - fields: ({ - id: number; - } & components["schemas"]["PreselectionFormQuestion"])[]; - }; + value: string; + }[]; }; }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; }; }; - "put-campaigns-forms-formId": { - parameters: { - path: { - formId: string; - }; - }; + "get-customUserFields": { + parameters: {}; responses: { /** OK */ 200: { content: { "application/json": { - id: number; - name: string; - fields: ({ - id: number; - } & components["schemas"]["PreselectionFormQuestion"])[]; - campaign?: { + fields?: components["schemas"]["CustomUserFieldsData"][]; + group: { + description?: components["schemas"]["TranslatablePage"]; id: number; - name: string; + name: components["schemas"]["TranslatablePage"]; }; - }; - }; - }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; - }; - requestBody: { - content: { - "application/json": { - name: string; - campaign?: number; - fields: ({ - id?: number; - } & components["schemas"]["PreselectionFormQuestion"])[]; + }[]; }; }; }; }; - /** Get all the owners of campaigns you have access to */ - "get-campaigns-owners": { + /** Get all the customers you have access to */ + "get-customers": { parameters: {}; responses: { - /** OK */ + /** An array of Customer objects */ 200: { content: { "application/json": { - id: number; - name: string; - surname: string; + id?: number; + name?: string; }[]; }; }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; + 403: components["responses"]["NotFound"]; }; }; - "get-campaign-types": { + "post-customers": { parameters: {}; responses: { + /** OK */ 200: { content: { "application/json": { id: number; name: string; - customRoles: { - roleId: number; - userIds: number[]; - }[]; - }[]; + }; }; }; }; - }; - /** Get all certificatio */ - "get-certifications": { - parameters: { - query: { - /** Key-value Array for item filtering */ - filterBy?: components["parameters"]["filterBy"]; - }; - }; - responses: { - /** OK */ - 200: { - content: { - "application/json": { - id: number; - name: string; - area: string; - institute: string; - }[]; + requestBody: { + content: { + "application/json": { + name: string; }; }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; }; }; - "get-regions": { + "get-customers-customer-projects": { parameters: { path: { - code: string; - }; - query: { - languageCode?: string; + customer: string; }; }; responses: { @@ -2252,31 +2654,21 @@ export interface operations { 200: { content: { "application/json": { - name: string; - value: string; - }[]; + results: { + id: number; + name: string; + }[]; + }; }; }; }; }; - /** Get all the customers you have access to */ - "get-customers": { - parameters: {}; - responses: { - /** An array of Customer objects */ - 200: { - content: { - "application/json": { - id?: number; - name?: string; - }[]; - }; + "post-customers-customer-projects": { + parameters: { + path: { + customer: string; }; - 403: components["responses"]["NotFound"]; }; - }; - "post-customers": { - parameters: {}; responses: { /** OK */ 200: { @@ -2296,24 +2688,6 @@ export interface operations { }; }; }; - "get-customUserFields": { - parameters: {}; - responses: { - /** OK */ - 200: { - content: { - "application/json": { - group: { - id: number; - name: components["schemas"]["TranslatablePage"]; - description?: components["schemas"]["TranslatablePage"]; - }; - fields?: components["schemas"]["CustomUserFieldsData"][]; - }[]; - }; - }; - }; - }; /** Get all model of devices with theirs manufacturers */ "get-devices-devices-type-model": { parameters: { @@ -2393,85 +2767,54 @@ export interface operations { 404: components["responses"]["NotFound"]; }; }; - /** Get all education levels */ - "get-education": { + "post-dossiers": { + parameters: {}; responses: { - /** OK */ - 200: { + /** Created */ + 201: { content: { "application/json": { id: number; - name: string; - }[]; + /** @enum {string} */ + message?: "HOOK_FAILED"; + }; }; }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; - }; - }; - /** Get all employments */ - "get-employments": { - responses: { - /** OK */ - 200: { + /** Partial Content */ + 206: { content: { "application/json": { - id: number; - name: string; - }[]; - }; - }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; - }; - }; - "post-jotforms-campaignId": { - parameters: { - path: { - /** A campaign id */ - campaign: string; - }; - }; - responses: { - /** OK */ - 200: { - content: { - "application/json": { [key: string]: unknown }; + id?: number; + }; }; }; - /** Forbidden */ - 403: unknown; }; requestBody: { content: { - "application/json": { - formId: string; - testerIdColumn: string; - }; - }; - }; - }; - "get-jotforms": { - parameters: {}; - responses: { - /** OK */ - 200: { - content: { - "application/json": { - id: string; - name: string; - createdAt: string; - }[]; + "application/json": components["schemas"]["DossierCreationData"] & { + duplicate?: { + campaign?: number; + fields?: number; + mailMerges?: number; + pages?: number; + testers?: number; + useCases?: number; + }; + } & { + autoApply?: number; + /** @enum {string} */ + pageVersion?: "v1" | "v2"; + /** @default 0 */ + skipPagesAndTasks?: number; }; }; - /** Forbidden */ - 403: unknown; }; }; - "get-jotforms-forms-formId-questions": { + "get-dossiers-campaign": { parameters: { path: { - formId: string; + /** A campaign id */ + campaign: string; }; }; responses: { @@ -2479,108 +2822,125 @@ export interface operations { 200: { content: { "application/json": { - id: string; - name: string; - title: string; + autoApply: number; + browsers?: { + id: number; + name: string; + }[]; + /** Format: date-time */ + closeDate: string; + countries?: components["schemas"]["CountryCode"][]; + csm: { + id: number; + name: string; + }; + customer: { + id: number; + name: string; + }; description?: string; - type: string; - }[]; - }; - }; - /** Forbidden */ - 403: unknown; - }; - }; - /** Get all languages */ - "get-languages": { - parameters: {}; - responses: { - /** OK */ - 200: { - content: { - "application/json": { - id: number; - name: string; - }[]; - }; - }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; - }; - }; - /** Get all levels */ - "get-levels": { - parameters: {}; - responses: { - /** OK */ - 200: { - content: { - "application/json": components["schemas"]["LevelDefinition"][]; - }; - }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; - }; - }; - /** Send a media for my bug to AppQuality Bucket. */ - "post-media": { - parameters: {}; - responses: { - /** OK */ - 200: { - content: { - "application/json": { - files: { + deviceList: { + id: number; name: string; - path: string; }[]; - failed?: { + deviceRequirements?: string; + /** Format: date-time */ + endDate: string; + goal?: string; + id: number; + languages?: { name: string; - errorCode: string; }[]; + notes?: string; + outOfScope?: string; + phase: { + id: number; + name: string; + }; + productLink?: string; + productType?: { + id: number; + name: string; + }; + project: { + id: number; + name: string; + }; + roles?: { + role?: { + id: number; + name: string; + }; + user?: { + id: number; + name: string; + surname: string; + }; + }[]; + /** Format: date-time */ + startDate: string; + target?: { + cap?: number; + genderQuote?: string; + notes?: string; + size?: number; + }; + testType: { + id: number; + name: string; + }; + title: { + customer: string; + tester: string; + }; + visibilityCriteria?: { + ageRanges?: { + max: number; + min: number; + }[]; + cuf?: { + cufId: number; + cufValueIds: number[]; + }[]; + gender?: number[]; + province?: string[]; + }; }; }; }; }; - requestBody: { - content: { - "multipart/form-data": { - media?: string | string[]; - }; + }; + "put-dossiers-campaign": { + parameters: { + path: { + /** A campaign id */ + campaign: string; }; }; - }; - "delete-media": { - parameters: {}; responses: { /** OK */ - 200: unknown; - 404: components["responses"]["NotFound"]; + 200: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; }; requestBody: { content: { - "application/json": { - /** Format: uri */ - url: string; + "application/json": components["schemas"]["DossierCreationData"] & { + autoApply?: number; }; }; }; }; - "get-payments": { + /** */ + "get-dossiers-campaign-availableTesters": { parameters: { + path: { + campaign: string; + }; query: { - /** The status of the payment */ - status?: "pending" | "failed"; - /** How to order values (ASC, DESC) */ - order?: components["parameters"]["order"]; - /** The value to order by */ - orderBy?: "created" | "updated" | "id"; - /** Items to skip for pagination */ - start?: components["parameters"]["start"]; - /** Max items to retrieve */ - limit?: components["parameters"]["limit"]; - /** Key-value Array for item filtering */ - filterBy?: components["parameters"]["filterBy"]; + refresh?: "1" | "0"; }; }; responses: { @@ -2588,166 +2948,145 @@ export interface operations { 200: { content: { "application/json": { - limit?: number; - size: number; - start: number; - total?: number; - items: { - /** @description The timestamp (GMT) of the request creation */ - created: string; - /** @description The timestamp (GMT) of the request last update */ - updated: string; - id: number; - amount: { - value: number; - currency: string; - }; - /** @enum {string} */ - type: "paypal" | "transferwise"; - tryber: { - id: number; - name: string; - surname: string; - }; - error?: string; - }[]; + count: number; + /** Format: date-time */ + lastUpdate: string; }; }; }; - 403: components["responses"]["NotAuthorized"]; }; }; - "post-payments-paymentId": { + "post-dossiers-campaign-manual": { parameters: { path: { - paymentId: string; + /** A campaign id */ + campaign: components["parameters"]["campaign"]; }; }; responses: { /** OK */ - 200: unknown; - /** Bad Request */ - 400: { + 200: { content: { - "application/json": { - /** @enum {string} */ - element: "payments"; - id: number; - message: Partial<{ - /** @enum {string} */ - code: "GENERIC_ERROR"; - data: string; - }> & - Partial; - }; + "application/json": { [key: string]: unknown }; }; }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; - /** Unprocessable Entity (WebDAV) */ - 422: { - content: { - "application/json": { - /** @enum {string} */ - element: "payments"; - id: number; - message: { - /** @enum {string} */ - code: - | "GENERIC_ERROR" - | "NO_FUNDS" - | "DUPLICATE_PAYMENT" - | "IBAN_NOT_VALID" - | "INSUFFICIENT_FUNDS" - | "RECEIVER_UNREGISTERED"; - data: string; - }; - }; + }; + requestBody: { + content: { + "application/json": { + importFrom: number; }; }; }; }; - /** delete a specific payment request */ - "delete-payments-paymentId": { + "put-dossiers-campaign-phases": { parameters: { path: { - paymentId: string; + /** A campaign id */ + campaign: string; }; }; responses: { /** OK */ - 200: unknown; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; + 200: { + content: { + "application/json": { + id: number; + name: string; + }; + }; + }; + }; + requestBody: { + content: { + "application/json": { + phase: number; + }; + }; }; }; - /** Retrieve all available popups for admin operations */ - "get-popups": { + "post-dossiers-campaign-preview": { parameters: { - query: { - /** Max items to retrieve */ - limit?: components["parameters"]["limit"]; - /** Items to skip for pagination */ - start?: components["parameters"]["start"]; + path: { + /** A campaign id */ + campaign: components["parameters"]["campaign"]; }; }; responses: { /** OK */ 200: { content: { - "application/json": ({ - id?: number; - } & components["schemas"]["Popup"])[]; + "application/json": { [key: string]: unknown }; + }; + }; + }; + requestBody: { + content: { + "application/json": { + importFrom: number; }; }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; }; }; - /** The new popup will be inserted as an available popup on admin areas */ - "post-popups": { - parameters: {}; + "post-dossiers-campaign-quotations": { + parameters: { + path: { + /** A campaign id */ + campaign: string; + }; + }; responses: { /** Created */ 201: { content: { "application/json": { id?: number; - } & components["schemas"]["Popup"]; + }; }; }; - 403: components["responses"]["NotAuthorized"]; + /** Not Found */ + 404: unknown; }; requestBody: { content: { - "application/json": components["schemas"]["Popup"]; + "application/json": { + notes?: string; + quote?: string; + }; }; }; }; - /** Retrieve a signle popup for admin operations */ - "get-popups-popup": { + "patch-dossiers-campaign-quotations-quote": { parameters: { path: { - popup: number; + /** A campaign id */ + campaign: string; + quote: string; }; }; responses: { /** OK */ 200: { content: { - "application/json": { - id?: number; - } & components["schemas"]["Popup"]; + "application/json": { [key: string]: unknown }; }; }; 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + requestBody: { + content: { + "application/json": { + amount?: string; + }; + }; }; }; - /** Edit your popup with a new content or new rules */ - "patch-popups-popup": { + "get-dossiers-campaign-quotes-history": { parameters: { path: { - popup: number; + /** A campaign id */ + campaign: string; }; }; responses: { @@ -2755,235 +3094,672 @@ export interface operations { 200: { content: { "application/json": { - id?: number; - } & components["schemas"]["Popup"]; + items: { + campaign: { + id: number; + phase_id: number; + phase_name: string; + title: string; + }; + quote: { + amount: string; + id: number; + /** @enum {string} */ + status: "pending" | "proposed" | "approved" | "rejected"; + }; + }[]; + }; }; }; - 403: components["responses"]["NotAuthorized"]; - }; - requestBody: { - content: { - "application/json": components["schemas"]["Popup"]; - }; }; }; - /** Get all users you have access to */ - "get-users": { + /** Get all education levels */ + "get-education": { responses: { /** OK */ 200: { content: { - "application/json": components["schemas"]["User"][]; + "application/json": { + id: number; + name: string; + }[]; }; }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; }; }; - /** Create a new user */ - "post-users": { + /** Get all employments */ + "get-employments": { responses: { - /** Created */ - 201: { + /** OK */ + 200: { content: { "application/json": { id: number; - }; + name: string; + }[]; }; }; - /** Precondition Failed */ - 412: { + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + }; + "get-jotforms": { + parameters: {}; + responses: { + /** OK */ + 200: { content: { "application/json": { - message?: string; - }; + createdAt: string; + id: string; + name: string; + }[]; }; }; + /** Forbidden */ + 403: unknown; }; - requestBody: { - content: { - "application/json": { - name: string; - surname: string; - /** Format: email */ - email: string; - password: string; - country: string; - /** Format: date */ - birthDate: string; - /** - * @description A referral code (formatted as TESTER_ID-CAMPAIGN_ID) - * @example 555-1234 - */ - referral?: string; + }; + "get-jotforms-forms-formId-questions": { + parameters: { + path: { + formId: string; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + description?: string; + id: string; + name: string; + title: string; + type: string; + }[]; }; }; + /** Forbidden */ + 403: unknown; }; }; - "head-users-by-email-email": { + "post-jotforms-campaignId": { parameters: { path: { - email: string; + /** A campaign id */ + campaign: string; }; }; responses: { /** OK */ - 200: unknown; - /** Bad Request */ - 400: unknown; - /** Not Found */ - 404: unknown; + 200: { + content: { + "application/json": { [key: string]: unknown }; + }; + }; + /** Forbidden */ + 403: unknown; }; - }; - /** Get your user data */ - "get-users-me": { - parameters: { - query: { - /** Comma separated string of specific fields requested */ - fields?: string; + requestBody: { + content: { + "application/json": { + formId: string; + testerIdColumn: string; + }; }; }; + }; + /** Get all languages */ + "get-languages": { + parameters: {}; responses: { /** OK */ 200: { content: { "application/json": { - username?: string; - name?: string; - surname?: string; - /** Format: email */ - email?: string; - image?: string; id: number; - wp_user_id?: number; - role?: string; - is_verified?: boolean; - rank?: string; - total_exp_pts?: number; - booty?: { - net?: components["schemas"]["Currency"]; - gross: components["schemas"]["Currency"]; - }; - pending_booty?: { - net?: components["schemas"]["Currency"]; - gross: components["schemas"]["Currency"]; - }; - languages?: { - name?: string; - }[]; - onboarding_completed?: boolean; - additional?: components["schemas"]["AdditionalField"][]; - gender?: components["schemas"]["Gender"]; - /** Format: date */ - birthDate?: string; - phone?: string; - education?: { - id: number; - name: string; - }; - profession?: { - id: number; - name: string; - }; - certifications?: components["schemas"]["Certification"][] | boolean; - completionPercent?: number; - country?: string; - city?: string; - attended_cp?: number; - approved_bugs?: number; - booty_threshold?: { - value: number; - isOver: boolean; - }; - }; + name: string; + }[]; }; }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; }; }; - /** Edit your user data */ - "put-users-me": { + /** Get all levels */ + "get-levels": { + parameters: {}; responses: { /** OK */ 200: { content: { - "application/json": components["schemas"]["User"]; + "application/json": components["schemas"]["LevelDefinition"][]; + }; + }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + }; + /** Send a media for my bug to AppQuality Bucket. */ + "post-media": { + parameters: {}; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + failed?: { + errorCode: string; + name: string; + }[]; + files: { + name: string; + path: string; + }[]; + }; }; }; }; requestBody: { content: { - "application/json": { - name?: string; - surname?: string; - password?: string; - email?: string; + "multipart/form-data": { + media?: string | string[]; }; }; }; }; - "delete-users-me": { + "delete-media": { + parameters: {}; responses: { /** OK */ 200: unknown; - 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; }; requestBody: { content: { "application/json": { - reason: string; + /** Format: uri */ + url: string; }; }; }; }; - /** Edit basic user fields */ - "patch-users-me": { - responses: { - /** OK */ - 200: { - content: { - "application/json": { - username?: string; - name?: string; - surname?: string; - email?: string; - image?: string; + "get-payments": { + parameters: { + query: { + /** The status of the payment */ + status?: "pending" | "failed"; + /** How to order values (ASC, DESC) */ + order?: components["parameters"]["order"]; + /** The value to order by */ + orderBy?: "created" | "updated" | "id"; + /** Items to skip for pagination */ + start?: components["parameters"]["start"]; + /** Max items to retrieve */ + limit?: components["parameters"]["limit"]; + /** Key-value Array for item filtering */ + filterBy?: components["parameters"]["filterBy"]; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + items: { + amount: { + currency: string; + value: number; + }; + /** @description The timestamp (GMT) of the request creation */ + created: string; + error?: string; + id: number; + tryber: { + id: number; + name: string; + surname: string; + }; + /** @enum {string} */ + type: "paypal" | "transferwise"; + /** @description The timestamp (GMT) of the request last update */ + updated: string; + }[]; + limit?: number; + size: number; + start: number; + total?: number; + }; + }; + }; + 403: components["responses"]["NotAuthorized"]; + }; + }; + "post-payments-paymentId": { + parameters: { + path: { + paymentId: string; + }; + }; + responses: { + /** OK */ + 200: unknown; + /** Bad Request */ + 400: { + content: { + "application/json": { + /** @enum {string} */ + element: "payments"; id: number; - wp_user_id?: number; - role?: string; - is_verified?: boolean; - rank?: string; - total_exp_pts?: number; + message: Partial<{ + /** @enum {string} */ + code: "GENERIC_ERROR"; + data: string; + }> & + Partial; + }; + }; + }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + /** Unprocessable Entity (WebDAV) */ + 422: { + content: { + "application/json": { + /** @enum {string} */ + element: "payments"; + id: number; + message: { + /** @enum {string} */ + code: + | "GENERIC_ERROR" + | "NO_FUNDS" + | "DUPLICATE_PAYMENT" + | "IBAN_NOT_VALID" + | "INSUFFICIENT_FUNDS" + | "RECEIVER_UNREGISTERED"; + data: string; + }; + }; + }; + }; + }; + }; + /** delete a specific payment request */ + "delete-payments-paymentId": { + parameters: { + path: { + paymentId: string; + }; + }; + responses: { + /** OK */ + 200: unknown; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + }; + "get-phases": { + responses: { + /** OK */ + 200: { + content: { + "application/json": { + results: { + id: number; + name: string; + type: { + id: number; + name: string; + }; + }[]; + }; + }; + }; + }; + }; + /** Retrieve all available popups for admin operations */ + "get-popups": { + parameters: { + query: { + /** Max items to retrieve */ + limit?: components["parameters"]["limit"]; + /** Items to skip for pagination */ + start?: components["parameters"]["start"]; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": ({ + id?: number; + } & components["schemas"]["Popup"])[]; + }; + }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; + }; + }; + /** The new popup will be inserted as an available popup on admin areas */ + "post-popups": { + parameters: {}; + responses: { + /** Created */ + 201: { + content: { + "application/json": { + id?: number; + } & components["schemas"]["Popup"]; + }; + }; + 403: components["responses"]["NotAuthorized"]; + }; + requestBody: { + content: { + "application/json": components["schemas"]["Popup"]; + }; + }; + }; + /** Retrieve a signle popup for admin operations */ + "get-popups-popup": { + parameters: { + path: { + popup: number; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + id?: number; + } & components["schemas"]["Popup"]; + }; + }; + 403: components["responses"]["NotAuthorized"]; + }; + }; + /** Edit your popup with a new content or new rules */ + "patch-popups-popup": { + parameters: { + path: { + popup: number; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + id?: number; + } & components["schemas"]["Popup"]; + }; + }; + 403: components["responses"]["NotAuthorized"]; + }; + requestBody: { + content: { + "application/json": components["schemas"]["Popup"]; + }; + }; + }; + "get-productTypes": { + parameters: {}; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + results: { + id: number; + name: string; + }[]; + }; + }; + }; + }; + }; + /** Get all users you have access to */ + "get-users": { + responses: { + /** OK */ + 200: { + content: { + "application/json": components["schemas"]["User"][]; + }; + }; + }; + }; + /** Create a new user */ + "post-users": { + responses: { + /** Created */ + 201: { + content: { + "application/json": { + id: number; + }; + }; + }; + /** Precondition Failed */ + 412: { + content: { + "application/json": { + message?: string; + }; + }; + }; + }; + requestBody: { + content: { + "application/json": { + /** Format: date */ + birthDate: string; + country: string; + /** Format: email */ + email: string; + name: string; + password: string; + /** + * @description A referral code (formatted as TESTER_ID-CAMPAIGN_ID) + * @example 555-1234 + */ + referral?: string; + surname: string; + }; + }; + }; + }; + "head-users-by-email-email": { + parameters: { + path: { + email: string; + }; + }; + responses: { + /** OK */ + 200: unknown; + /** Bad Request */ + 400: unknown; + /** Not Found */ + 404: unknown; + }; + }; + "get-users-by-role-role": { + parameters: { + path: { + role: "tester_lead" | "quality_leader" | "ux_researcher" | "assistants"; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + results: { + id: number; + name: string; + surname: string; + }[]; + }; + }; + }; + }; + }; + /** Get your user data */ + "get-users-me": { + parameters: { + query: { + /** Comma separated string of specific fields requested */ + fields?: string; + }; + }; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + additional?: components["schemas"]["AdditionalField"][]; + approved_bugs?: number; + attended_cp?: number; + /** Format: date */ + birthDate?: string; booty?: { gross: components["schemas"]["Currency"]; net?: components["schemas"]["Currency"]; }; - pending_booty?: { - gross: components["schemas"]["Currency"]; - net?: components["schemas"]["Currency"]; + booty_threshold?: { + isOver: boolean; + value: number; + }; + certifications?: components["schemas"]["Certification"][] | boolean; + city?: string; + completionPercent?: number; + country?: string; + education?: { + id: number; + name: string; }; + /** Format: email */ + email?: string; + gender?: components["schemas"]["Gender"]; + id: number; + image?: string; + is_verified?: boolean; languages?: { - id?: number; name?: string; }[]; + name?: string; onboarding_completed?: boolean; + pending_booty?: { + gross: components["schemas"]["Currency"]; + net?: components["schemas"]["Currency"]; + }; + phone?: string; + profession?: { + id: number; + name: string; + }; + rank?: string; + role?: string; + surname?: string; + total_exp_pts?: number; + username?: string; + wp_user_id?: number; + }; + }; + }; + }; + }; + /** Edit your user data */ + "put-users-me": { + responses: { + /** OK */ + 200: { + content: { + "application/json": components["schemas"]["User"]; + }; + }; + }; + requestBody: { + content: { + "application/json": { + email?: string; + name?: string; + password?: string; + surname?: string; + }; + }; + }; + }; + "delete-users-me": { + responses: { + /** OK */ + 200: unknown; + 403: components["responses"]["NotAuthorized"]; + }; + requestBody: { + content: { + "application/json": { + reason: string; + }; + }; + }; + }; + /** Edit basic user fields */ + "patch-users-me": { + responses: { + /** OK */ + 200: { + content: { + "application/json": { additional?: components["schemas"]["AdditionalField"][]; - /** @enum {string} */ - gender?: "male" | "female" | "not-specified" | "other"; + approved_bugs?: number; + attended_cp?: number; /** Format: date */ birthDate?: string; - phone?: string; + booty?: { + gross: components["schemas"]["Currency"]; + net?: components["schemas"]["Currency"]; + }; + certifications?: components["schemas"]["Certification"][] | boolean; + city?: string; + completionPercent?: number; + country?: string; education?: { id: number; name: string; }; + email?: string; + /** @enum {string} */ + gender?: "male" | "female" | "not-specified" | "other"; + id: number; + image?: string; + is_verified?: boolean; + languages?: { + id?: number; + name?: string; + }[]; + name?: string; + onboarding_completed?: boolean; + pending_booty?: { + gross: components["schemas"]["Currency"]; + net?: components["schemas"]["Currency"]; + }; + phone?: string; profession?: { id: number; name: string; }; - certifications?: components["schemas"]["Certification"][] | boolean; - completionPercent?: number; - country?: string; - city?: string; - attended_cp?: number; - approved_bugs?: number; + rank?: string; + role?: string; + surname?: string; + total_exp_pts?: number; + username?: string; + wp_user_id?: number; }; }; }; @@ -2994,21 +3770,21 @@ export interface operations { requestBody: { content: { "application/json": { - name?: string; + birthDate?: string; + city?: string; + country?: string; + education?: number; /** Format: email */ email?: string; - onboarding_completed?: boolean; - surname?: string; /** @enum {string} */ gender?: "male" | "female" | "not-specified" | "other"; - birthDate?: string; + name?: string; + oldPassword?: string; + onboarding_completed?: boolean; + password?: string; phone?: string; - education?: number; profession?: number; - country?: string; - city?: string; - password?: string; - oldPassword?: string; + surname?: string; }; }; }; @@ -3037,12 +3813,12 @@ export interface operations { content: { "application/json": | { - value: string; is_candidate?: boolean; + value: string; }[] | { - value: string; is_candidate?: boolean; + value: string; }; }; }; @@ -3068,10 +3844,10 @@ export interface operations { 200: { content: { "application/json": { + limit?: number; results: ({ id: number; } & components["schemas"]["Bug"])[]; - limit?: number; size?: number; start?: number; total?: number; @@ -3117,10 +3893,10 @@ export interface operations { 200: { content: { "application/json": { + limit?: number; results?: ({ id: number; } & components["schemas"]["Campaign"])[]; - limit?: number; size?: number; start?: number; total?: number; @@ -3144,57 +3920,54 @@ export interface operations { 200: { content: { "application/json": { - id: number; - title: string; - language?: { - code: string; - message: string; + 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"; }; - titleRule?: boolean; - minimumMedia: number; - useCases: { - id: number; - name: string; - }[]; additionalFields?: components["schemas"]["CampaignAdditionalField"][]; - bugTypes: { - valid: string[]; + bugReplicability: { invalid: string[]; + valid: string[]; }; bugSeverity: { - valid: string[]; invalid: string[]; - }; - bugReplicability: { valid: string[]; + }; + bugTypes: { invalid: string[]; + valid: string[]; + }; + campaign_type: { + icon: string; + id: number; + name: string; }; - hasBugForm: boolean; devices?: ({ id: number; } & components["schemas"]["UserDevice"])[]; - validFileExtensions: string[]; - }; - }; - }; - }; - }; - "get-users-me-campaigns-campaignId-compatible-devices": { - parameters: { - path: { - /** A campaign id */ - campaign: string; - }; - }; - responses: { - /** OK */ - 200: { - content: { - "application/json": components["schemas"]["UserDevice"][]; + end_date: string; + goal: string; + hasBugForm: boolean; + id: number; + language?: { + code: string; + message: string; + }; + minimumMedia: number; + title: string; + titleRule?: boolean; + useCases: { + id: number; + name: string; + }[]; + validFileExtensions: string[]; + }; }; }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; }; }; /** Send a user bug on a specific campaign */ @@ -3210,37 +3983,28 @@ export interface operations { 200: { content: { "application/json": { + additional?: { + slug: string; + value: string; + }[]; + current: string; + description: string; + device: components["schemas"]["UserDevice"]; + expected: string; id: number; internalId?: string; - testerId: number; - title: string; - description: string; + media: string[]; + notes: string; /** @enum {string} */ - status: "PENDING" | "APPROVED" | "REFUSED" | "NEED-REVIEW"; - expected: string; - current: string; + replicability: "ONCE" | "SOMETIMES" | "ALWAYS"; /** @enum {string} */ severity: "LOW" | "MEDIUM" | "HIGH" | "CRITICAL"; /** @enum {string} */ - replicability: "ONCE" | "SOMETIMES" | "ALWAYS"; - /** @enum {string} */ - type: - | "CRASH" - | "GRAPHIC" - | "MALFUNCTION" - | "OTHER" - | "PERFORMANCE" - | "SECURITY" - | "TYPO" - | "USABILITY"; - notes: string; + status: "PENDING" | "APPROVED" | "REFUSED" | "NEED-REVIEW"; + testerId: number; + title: string; + type: string; usecase: string; - device: components["schemas"]["UserDevice"]; - media: string[]; - additional?: { - slug: string; - value: string; - }[]; }; }; }; @@ -3250,33 +4014,24 @@ export interface operations { requestBody: { content: { "application/json": { - title: string; + additional?: { + slug: string; + value: string; + }[]; + current: string; description: string; + device: number; expected: string; - current: string; - /** @enum {string} */ - severity: "LOW" | "MEDIUM" | "HIGH" | "CRITICAL"; + lastSeen: string; + media: string[]; + notes: string; /** @enum {string} */ replicability: "ONCE" | "SOMETIMES" | "ALWAYS"; /** @enum {string} */ - type: - | "CRASH" - | "GRAPHIC" - | "MALFUNCTION" - | "OTHER" - | "PERFORMANCE" - | "SECURITY" - | "TYPO" - | "USABILITY"; - notes: string; - lastSeen: string; + severity: "LOW" | "MEDIUM" | "HIGH" | "CRITICAL"; + title: string; + type: string; usecase: number; - device: number; - media: string[]; - additional?: { - slug: string; - value: string; - }[]; }; }; }; @@ -3309,8 +4064,13 @@ export interface operations { 200: { content: { "application/json": ({ + id: number; question: string; short_name?: string; + validation?: { + error?: string; + regex: string; + }; value?: | number | { @@ -3319,22 +4079,17 @@ export interface operations { } | number[] | string; - validation?: { - regex: string; - error?: string; - }; - id: number; } & ( | { type: components["schemas"]["PreselectionQuestionSimple"]; } | { - type: components["schemas"]["PreselectionQuestionMultiple"]; options: string[]; + type: components["schemas"]["PreselectionQuestionMultiple"]; } | { - type: components["schemas"]["PreselectionQuestionCuf"]; options?: number[]; + type: components["schemas"]["PreselectionQuestionCuf"]; } ))[]; }; @@ -3343,216 +4098,43 @@ export interface operations { 404: components["responses"]["NotFound"]; }; }; - "post-users-me-campaigns-campaignId-forms": { - parameters: { - path: { - campaignId: string; - }; - }; - responses: { - /** OK */ - 200: unknown; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; - }; - requestBody: { - content: { - "application/json": { - form?: { - value: { - id?: number | number[]; - serialized?: - | string - | string[] - | { - city: string; - country: string; - }; - }; - question: number; - }[]; - device?: number[]; - }; - }; - }; - }; - "post-users-me-campaigns-campaignId-media": { - parameters: { - path: { - campaignId: string; - }; - }; - responses: { - /** OK */ - 200: { - content: { - "application/json": { - files?: { - name: string; - path: string; - }[]; - failed?: { - name: string; - /** @enum {string} */ - errorCode: - | "FILE_TOO_BIG" - | "INVALID_FILE_EXTENSION" - | "GENERIC_ERROR"; - }[]; - }; - }; - }; - }; - requestBody: { - content: { - "multipart/form-data": { - media?: string | string[]; - }; - }; - }; - }; - /** Add one certification to your profile */ - "post-users-me-certifications": { - responses: { - /** Created */ - 201: { - content: { - "application/json": - | components["schemas"]["Certification"] - | { - message: string; - }; - }; - }; - 403: components["responses"]["NotAuthorized"]; - }; - requestBody: { - content: { - "application/json": - | { - certifications: boolean; - } - | { - certification_id: number; - /** Format: date */ - achievement_date: string; - }; - }; - }; - }; - /** The certification will be removed */ - "delete-users-me-certifications-certificationId": { - parameters: { - path: { - /** The id of the certification */ - certificationId: number; - }; - }; - responses: { - /** OK */ - 200: { - content: { - "application/json": { - message?: string; - }; - }; - }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; - }; - }; - /** Get all your device data */ - "get-users-me-devices": { - responses: { - /** OK */ - 200: { - content: { - "application/json": ({ - id?: number; - } & components["schemas"]["UserDevice"] & { - [key: string]: unknown; - })[]; - }; - }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; - }; - }; - /** Add a new device to your user */ - "post-users-me-devices": { - responses: { - /** Created */ - 201: { - content: { - "application/json": { - id?: number; - } & components["schemas"]["UserDevice"]; - }; - }; - 403: components["responses"]["NotAuthorized"]; - }; - requestBody: { - content: { - "application/json": { - device: - | number - | ( - | "Notebook" - | "Desktop" - | "Ultrabook" - | "Gaming PC" - | "Tablet PC / Hybrid" - ); - operating_system: number; - }; - }; - }; - }; - /** Retrieve a single device */ - "get-users-me-devices-deviceId": { - parameters: { - path: { - deviceId: number; - }; - }; - responses: { - /** OK */ - 200: { - content: { - "application/json": { - id?: number; - } & components["schemas"]["UserDevice"]; - }; - }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; - }; - }; - /** The device will be disabled and won't be available for selections and bugs submission. You can't remove a device currently involved in a campaign */ - "delete-users-me-devices-deviceId": { + "post-users-me-campaigns-campaignId-forms": { parameters: { path: { - deviceId: number; + campaignId: string; }; }; responses: { /** OK */ - 200: { - content: { - "application/json": { - message?: string; - }; - }; - }; + 200: unknown; 403: components["responses"]["NotAuthorized"]; 404: components["responses"]["NotFound"]; }; + requestBody: { + content: { + "application/json": { + device?: number[]; + form?: { + question: number; + value: { + id?: number | number[]; + serialized?: + | string + | string[] + | { + city: string; + country: string; + }; + }; + }[]; + }; + }; + }; }; - /** You can change only operating system version */ - "patch-users-me-devices-deviceId": { + "post-users-me-campaigns-campaignId-media": { parameters: { path: { - deviceId: number; + campaignId: string; }; }; responses: { @@ -3560,47 +4142,34 @@ export interface operations { 200: { content: { "application/json": { - id?: number; - } & components["schemas"]["UserDevice"]; - }; - }; - /** Not Modified */ - 304: { - content: { - "application/json": { - id?: number; - } & components["schemas"]["UserDevice"]; + failed?: { + /** @enum {string} */ + errorCode: + | "FILE_TOO_BIG" + | "INVALID_FILE_EXTENSION" + | "GENERIC_ERROR"; + name: string; + }[]; + files?: { + name: string; + path: string; + }[]; + }; }; }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; }; requestBody: { content: { - "application/json": { - operating_system: number; + "multipart/form-data": { + media?: string | string[]; }; }; }; }; - /** Get all the experience points earned in AppQuality. */ - "get-users-me-experience": { + "get-users-me-campaigns-cid-payout-data": { parameters: { - query: { - /** Max items to retrieve */ - limit?: components["parameters"]["limit"]; - /** Items to skip for pagination */ - start?: components["parameters"]["start"]; - /** Key-value Array for item filtering */ - filterBy?: components["parameters"]["filterBy"]; - /** How to order values (ASC, DESC) */ - order?: components["parameters"]["order"]; - /** A comma separated list of fields which will be searched */ - searchBy?: components["parameters"]["searchBy"]; - /** The value to search for */ - search?: components["parameters"]["search"]; - /** The field for item order */ - orderBy?: "amount" | "campaign" | "date" | "note" | "activity" | "id"; + path: { + campaignId: string; }; }; responses: { @@ -3608,27 +4177,22 @@ export interface operations { 200: { content: { "application/json": { - results: { - id: number; - activity: { - id: number; - }; - campaign: { - id: number; - title?: string; - }; - /** Format: date */ - date: string; - amount: number; - note?: string; - }[]; - limit?: number; - size?: number; - start?: number; - /** @description The total number of experience entries */ - total?: number; - /** @description The total sum of experience */ - sum: number; + 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; }; }; }; @@ -3636,184 +4200,140 @@ export interface operations { 404: components["responses"]["NotFound"]; }; }; - /** Get your fiscal profile data */ - "get-users-me-fiscal": { + "get-users-me-campaigns-cid-preview": { + parameters: { + path: { + campaignId: string; + }; + }; responses: { /** OK */ 200: { content: { "application/json": { - address: { - country: string; - province: string; - city: string; - street: string; - streetNumber?: string; - cityCode: string; - }; - type: components["schemas"]["FiscalType"] | "internal"; - birthPlace: { - city?: string; - province?: string; + campaignType: string; + cap?: { + free: number; + value: number; }; - fiscalId: string; - /** @enum {string} */ - fiscalStatus: "Verified" | "Unverified"; + content: string; + endDate: string; + /** @enum {undefined} */ + selectionStatus?: "starting" | "excluded" | "ready" | "complete"; + startDate: string; /** @enum {string} */ - gender: "male" | "female"; + status: "available" | "applied" | "excluded" | "selected"; + tl?: { + email: string; + name: string; + }; }; }; }; - 401: components["responses"]["NotAuthorized"]; + 403: components["responses"]["NotAuthorized"]; 404: components["responses"]["NotFound"]; }; }; - /** Update your fiscal data */ - "put-users-me-fiscal": { + "get-users-me-campaign-campaignId-tasks": { + parameters: { + path: { + campaignId: string; + }; + }; responses: { /** OK */ 200: { content: { "application/json": { - address: { - country: string; - province: string; - city: string; - street: string; - streetNumber?: string; - cityCode: string; - }; - type: components["schemas"]["FiscalType"]; - birthPlace?: { - city?: string; - province?: string; - }; - fiscalId: string; - /** @enum {string} */ - fiscalStatus: "Verified" | "Unverified"; + content: string; + id: number; + is_required: number; + name: string; /** @enum {string} */ - gender: "male" | "female"; - }; + status: "completed" | "pending"; + }[]; }; }; - 401: components["responses"]["NotAuthorized"]; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; }; - requestBody: { - content: { - "application/json": { - address: { - country: string; - province: string; - city: string; - street: string; - streetNumber: string; - cityCode: string; - }; - type: components["schemas"]["FiscalType"]; - birthPlace?: components["schemas"]["FiscalBirthCity"]; - fiscalId: string; - /** @enum {string} */ - gender: "male" | "female"; - }; + }; + "post-users-me-campaigns-campaign-tasks-task": { + parameters: { + path: { + /** the campaign id */ + campaignId: string; + taskId: string; }; }; - }; - /** Create a new fiscal data entry from empty state */ - "post-users-me-fiscal": { responses: { - /** Created */ - 201: { - content: { - "application/json": { - address: { - country: string; - province: string; - city: string; - street: string; - streetNumber?: string; - cityCode: string; - }; - type: components["schemas"]["FiscalType"]; - birthPlace?: { - city?: string; - province?: string; - }; - fiscalId: string; - /** @enum {string} */ - fiscalStatus: "Verified" | "Unverified"; - /** @enum {string} */ - gender: "male" | "female"; - }; - }; - }; - 401: components["responses"]["NotAuthorized"]; + /** OK */ + 200: unknown; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; }; requestBody: { content: { "application/json": { - address: { - country: string; - province: string; - city: string; - street: string; - streetNumber: string; - cityCode: string; - }; - type: components["schemas"]["FiscalType"]; - birthPlace?: components["schemas"]["FiscalBirthCity"]; - fiscalId: string; - /** @enum {string} */ - gender: "male" | "female"; + /** @enum {undefined} */ + status: "completed"; }; }; }; }; - /** Edit your spoken languages */ - "put-users-me-languages": { + "get-users-me-campaigns-campaignId-compatible-devices": { + parameters: { + path: { + /** A campaign id */ + campaign: string; + }; + }; responses: { /** OK */ 200: { - content: { - "application/json": { - name?: string; - }[]; - }; - }; - 403: components["responses"]["NotAuthorized"]; - }; - requestBody: { - content: { - "application/json": string[]; + content: { + "application/json": components["schemas"]["UserDevice"][]; + }; }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; }; }; - /** Add one of the languages to your profile */ - "post-users-me-languages": { + /** Add one certification to your profile */ + "post-users-me-certifications": { responses: { /** Created */ 201: { content: { - "application/json": { - name: string; - }; + "application/json": + | components["schemas"]["Certification"] + | { + message: string; + }; }; }; 403: components["responses"]["NotAuthorized"]; }; requestBody: { content: { - "application/json": { - language_name?: string; - }; + "application/json": + | { + certifications: boolean; + } + | { + /** Format: date */ + achievement_date: string; + certification_id: number; + }; }; }; }; - /** The language will be removed from your profile */ - "delete-users-me-languages-languageId": { + /** The certification will be removed */ + "delete-users-me-certifications-certificationId": { parameters: { path: { - /** The id of the language */ - languageId: number; + /** The id of the certification */ + certificationId: number; }; }; responses: { @@ -3829,64 +4349,32 @@ export interface operations { 404: components["responses"]["NotFound"]; }; }; - /** Return all payment requests */ - "get-users-me-payments": { - parameters: { - query: { - /** Items to skip for pagination */ - start?: components["parameters"]["start"]; - /** Max items to retrieve */ - limit?: components["parameters"]["limit"]; - /** The field for item order */ - orderBy?: string; - /** How to order values (ASC, DESC) */ - order?: components["parameters"]["order"]; - }; - }; + /** Get all your device data */ + "get-users-me-devices": { responses: { /** OK */ 200: { content: { - "application/json": { - results?: ({ - id: number; - } & { - /** @enum {string} */ - status: "paid" | "processing"; - amount: { - net: components["schemas"]["Currency"]; - gross: components["schemas"]["Currency"]; - }; - paidDate: string; - method: { - /** @enum {string} */ - type: "paypal" | "iban"; - note: string; - }; - /** Format: uri-reference */ - receipt?: string; + "application/json": ({ + id?: number; + } & components["schemas"]["UserDevice"] & { + [key: string]: unknown; })[]; - limit?: number; - size: number; - start: number; - total?: number; - }; }; }; 403: components["responses"]["NotAuthorized"]; 404: components["responses"]["NotFound"]; }; }; - "post-users-me-payments": { - parameters: {}; + /** Add a new device to your user */ + "post-users-me-devices": { responses: { - /** OK */ - 200: { + /** Created */ + 201: { content: { "application/json": { id?: number; - amount?: number; - }; + } & components["schemas"]["UserDevice"]; }; }; 403: components["responses"]["NotAuthorized"]; @@ -3894,37 +4382,25 @@ export interface operations { requestBody: { content: { "application/json": { - method: - | { - /** @enum {string} */ - type: "paypal"; - email: string; - } - | { - /** @enum {string} */ - type: "iban"; - accountHolderName: string; - iban: string; - }; + device: + | number + | ( + | "Notebook" + | "Desktop" + | "Ultrabook" + | "Gaming PC" + | "Tablet PC / Hybrid" + ); + operating_system: number; }; }; }; }; - /** Return all attributions of a specific request */ - "get-users-me-payments-payment": { + /** Retrieve a single device */ + "get-users-me-devices-deviceId": { parameters: { path: { - payment: string; - }; - query: { - /** Max items to retrieve */ - limit?: components["parameters"]["limit"]; - /** Items to skip for pagination */ - start?: components["parameters"]["start"]; - /** How to order values (ASC, DESC) */ - order?: components["parameters"]["order"]; - /** The value to order by */ - orderBy?: "type" | "date" | "activity" | "net" | "gross"; + deviceId: number; }; }; responses: { @@ -3932,47 +4408,19 @@ export interface operations { 200: { content: { "application/json": { - results: ({ - id: number; - } & { - type: string; - amount: { - net?: components["schemas"]["Currency"]; - gross: components["schemas"]["Currency"]; - }; - /** Format: date */ - date: string; - activity: string; - })[]; - limit?: number; - size: number; - total?: number; - start: number; - }; + id?: number; + } & components["schemas"]["UserDevice"]; }; }; 403: components["responses"]["NotAuthorized"]; 404: components["responses"]["NotFound"]; }; }; - /** Return all single attributions that dials the pending booty */ - "get-users-me-pending-booty": { + /** The device will be disabled and won't be available for selections and bugs submission. You can't remove a device currently involved in a campaign */ + "delete-users-me-devices-deviceId": { parameters: { - query: { - /** Items to skip for pagination */ - start?: components["parameters"]["start"]; - /** Max items to retrieve */ - limit?: components["parameters"]["limit"]; - /** The field for item order */ - orderBy?: - | "id" - | "attributionDate" - | "activityName" - | "net" - | "gross" - | "activity"; - /** How to order values (ASC, DESC) */ - order?: components["parameters"]["order"]; + path: { + deviceId: number; }; }; responses: { @@ -3980,22 +4428,7 @@ export interface operations { 200: { content: { "application/json": { - results?: ({ - id: number; - } & { - name: string; - amount: { - net?: components["schemas"]["Currency"]; - gross: components["schemas"]["Currency"]; - }; - /** Format: date */ - attributionDate: string; - activity: string; - })[]; - limit?: number; - size: number; - start: number; - total?: number; + message?: string; }; }; }; @@ -4003,35 +4436,59 @@ export interface operations { 404: components["responses"]["NotFound"]; }; }; - /** Return all user permissions */ - "get-users-me-permissions": { - parameters: {}; + /** You can change only operating system version */ + "patch-users-me-devices-deviceId": { + parameters: { + path: { + deviceId: number; + }; + }; responses: { /** OK */ 200: { content: { "application/json": { - appq_bug?: components["schemas"]["Olp"]; - appq_campaign?: components["schemas"]["Olp"]; - appq_message_center?: components["schemas"]["Olp"]; - appq_prospect?: components["schemas"]["Olp"]; - appq_tester_selection?: components["schemas"]["Olp"]; - }; + id?: number; + } & components["schemas"]["UserDevice"]; + }; + }; + /** Not Modified */ + 304: { + content: { + "application/json": { + id?: number; + } & components["schemas"]["UserDevice"]; }; }; 403: components["responses"]["NotAuthorized"]; - /** Internal Server Error */ - 500: unknown; + 404: components["responses"]["NotFound"]; + }; + requestBody: { + content: { + "application/json": { + operating_system: number; + }; + }; }; }; - /** Get all popup defined for your user */ - "get-users-me-popups": { + /** Get all the experience points earned in AppQuality. */ + "get-users-me-experience": { parameters: { query: { - /** Show all popup history, expired popups included */ - showExpired?: boolean; + /** Max items to retrieve */ + limit?: components["parameters"]["limit"]; + /** Items to skip for pagination */ + start?: components["parameters"]["start"]; + /** Key-value Array for item filtering */ + filterBy?: components["parameters"]["filterBy"]; /** How to order values (ASC, DESC) */ order?: components["parameters"]["order"]; + /** A comma separated list of fields which will be searched */ + searchBy?: components["parameters"]["searchBy"]; + /** The value to search for */ + search?: components["parameters"]["search"]; + /** The field for item order */ + orderBy?: "amount" | "campaign" | "date" | "note" | "activity" | "id"; }; }; responses: { @@ -4039,222 +4496,239 @@ export interface operations { 200: { content: { "application/json": { - id?: number; - title?: string; - content?: string; - once?: boolean; - }[]; + limit?: number; + results: { + activity: { + id: number; + }; + amount: number; + campaign: { + id: number; + title?: string; + }; + /** Format: date */ + date: string; + id: number; + note?: string; + }[]; + size?: number; + start?: number; + /** @description The total sum of experience */ + sum: number; + /** @description The total number of experience entries */ + total?: number; + }; }; }; + 403: components["responses"]["NotAuthorized"]; 404: components["responses"]["NotFound"]; }; }; - /** Get a single popup. Will set the retrieved popup as expired */ - "get-users-me-popups-popup": { - parameters: { - path: { - popup: number; - }; - }; + /** Get your fiscal profile data */ + "get-users-me-fiscal": { responses: { /** OK */ 200: { content: { "application/json": { - id?: number; - } & components["schemas"]["Popup"]; + address: { + city: string; + cityCode: string; + country: string; + province: string; + street: string; + streetNumber?: string; + }; + birthPlace: { + city?: string; + province?: string; + }; + fiscalId: string; + /** @enum {string} */ + fiscalStatus: "Verified" | "Unverified"; + /** @enum {string} */ + gender: "male" | "female"; + type: components["schemas"]["FiscalType"] | "internal"; + }; }; }; + 401: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; }; }; - "get-users-me-rank": { - parameters: {}; + /** Update your fiscal data */ + "put-users-me-fiscal": { responses: { /** OK */ 200: { content: { "application/json": { - level: components["schemas"]["MonthlyLevel"]; - previousLevel: components["schemas"]["MonthlyLevel"]; - rank: number; - points: number; - prospect: { - level: components["schemas"]["MonthlyLevel"]; - maintenance?: number; - next?: { - points: number; - level: components["schemas"]["MonthlyLevel"]; - }; + address: { + city: string; + cityCode: string; + country: string; + province: string; + street: string; + streetNumber?: string; + }; + birthPlace?: { + city?: string; + province?: string; }; + fiscalId: string; + /** @enum {string} */ + fiscalStatus: "Verified" | "Unverified"; + /** @enum {string} */ + gender: "male" | "female"; + type: components["schemas"]["FiscalType"]; }; }; }; - 403: components["responses"]["NotAuthorized"]; + 401: components["responses"]["NotAuthorized"]; }; - }; - "get-users-me-rank-list": { - responses: { - /** OK */ - 200: { - content: { - "application/json": { - tops: components["schemas"]["RankingItem"][]; - peers: components["schemas"]["RankingItem"][]; + requestBody: { + content: { + "application/json": { + address: { + city: string; + cityCode: string; + country: string; + province: string; + street: string; + streetNumber: string; }; + birthPlace?: components["schemas"]["FiscalBirthCity"]; + fiscalId: string; + /** @enum {string} */ + gender: "male" | "female"; + type: components["schemas"]["FiscalType"]; }; }; - 403: components["responses"]["NotAuthorized"]; - 404: components["responses"]["NotFound"]; }; }; - "post-dossiers": { - parameters: {}; + /** Create a new fiscal data entry from empty state */ + "post-users-me-fiscal": { responses: { /** Created */ 201: { content: { "application/json": { - id: number; + address: { + city: string; + cityCode: string; + country: string; + province: string; + street: string; + streetNumber?: string; + }; + birthPlace?: { + city?: string; + province?: string; + }; + fiscalId: string; /** @enum {string} */ - message?: "HOOK_FAILED"; - }; - }; - }; - /** Partial Content */ - 206: { - content: { - "application/json": { - id?: number; + fiscalStatus: "Verified" | "Unverified"; + /** @enum {string} */ + gender: "male" | "female"; + type: components["schemas"]["FiscalType"]; }; }; }; + 401: components["responses"]["NotAuthorized"]; }; requestBody: { content: { - "application/json": components["schemas"]["DossierCreationData"] & { - duplicate?: { - fields?: number; - useCases?: number; - mailMerges?: number; - pages?: number; - testers?: number; - campaign?: number; + "application/json": { + address: { + city: string; + cityCode: string; + country: string; + province: string; + street: string; + streetNumber: string; }; + birthPlace?: components["schemas"]["FiscalBirthCity"]; + fiscalId: string; + /** @enum {string} */ + gender: "male" | "female"; + type: components["schemas"]["FiscalType"]; }; }; }; }; - "get-dossiers-campaign": { - parameters: { - path: { - /** A campaign id */ - campaign: string; - }; - }; + /** Edit your spoken languages */ + "put-users-me-languages": { responses: { /** OK */ 200: { content: { "application/json": { - id: number; - title: { - customer: string; - tester: string; - }; - /** Format: date-time */ - startDate: string; - /** Format: date-time */ - endDate: string; - /** Format: date-time */ - closeDate: string; - customer: { - id: number; - name: string; - }; - project: { - id: number; - name: string; - }; - testType: { - id: number; - name: string; - }; - deviceList: { - id: number; - name: string; - }[]; - csm: { - id: number; - name: string; - }; - roles?: { - role?: { - id: number; - name: string; - }; - user?: { - id: number; - name: string; - surname: string; - }; - }[]; - description?: string; - productLink?: string; - goal?: string; - outOfScope?: string; - deviceRequirements?: string; - target?: { - notes?: string; - size?: number; - cap?: number; - }; - countries?: components["schemas"]["CountryCode"][]; - languages?: { - name: string; - }[]; - browsers?: { - id: number; - name: string; - }[]; - productType?: { - id: number; - name: string; - }; - phase: { - id: number; - name: string; - }; - notes?: string; + name?: string; + }[]; + }; + }; + 403: components["responses"]["NotAuthorized"]; + }; + requestBody: { + content: { + "application/json": string[]; + }; + }; + }; + /** Add one of the languages to your profile */ + "post-users-me-languages": { + responses: { + /** Created */ + 201: { + content: { + "application/json": { + name: string; }; }; }; + 403: components["responses"]["NotAuthorized"]; + }; + requestBody: { + content: { + "application/json": { + language_name?: string; + }; + }; }; }; - "put-dossiers-campaign": { + /** The language will be removed from your profile */ + "delete-users-me-languages-languageId": { parameters: { path: { - /** A campaign id */ - campaign: string; + /** The id of the language */ + languageId: number; }; }; responses: { /** OK */ 200: { content: { - "application/json": { [key: string]: unknown }; + "application/json": { + message?: string; + }; }; }; - }; - requestBody: { - content: { - "application/json": components["schemas"]["DossierCreationData"]; - }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; }; }; - "get-customers-customer-projects": { + /** Return all payment requests */ + "get-users-me-payments": { parameters: { - path: { - customer: string; + query: { + /** Items to skip for pagination */ + start?: components["parameters"]["start"]; + /** Max items to retrieve */ + limit?: components["parameters"]["limit"]; + /** The field for item order */ + orderBy?: string; + /** How to order values (ASC, DESC) */ + order?: components["parameters"]["order"]; }; }; responses: { @@ -4262,44 +4736,83 @@ export interface operations { 200: { content: { "application/json": { - results: { + limit?: number; + results?: ({ id: number; - name: string; - }[]; + } & { + amount: { + gross: components["schemas"]["Currency"]; + net: components["schemas"]["Currency"]; + }; + method: { + note: string; + /** @enum {string} */ + type: "paypal" | "iban"; + }; + paidDate: string; + /** Format: uri-reference */ + receipt?: string; + /** @enum {string} */ + status: "paid" | "processing"; + })[]; + size: number; + start: number; + total?: number; }; }; }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; }; }; - "post-customers-customer-projects": { - parameters: { - path: { - customer: string; - }; - }; + "post-users-me-payments": { + parameters: {}; responses: { /** OK */ 200: { content: { "application/json": { - id: number; - name: string; + amount?: number; + id?: number; }; }; }; + 403: components["responses"]["NotAuthorized"]; }; requestBody: { content: { "application/json": { - name: string; + method: + | { + email: string; + /** @enum {string} */ + type: "paypal"; + } + | { + accountHolderName: string; + iban: string; + /** @enum {string} */ + type: "iban"; + }; }; }; }; }; - "get-users-by-role-role": { + /** Return all attributions of a specific request */ + "get-users-me-payments-payment": { parameters: { path: { - role: "tester_lead" | "quality_leader" | "ux_researcher" | "assistants"; + payment: string; + }; + query: { + /** Max items to retrieve */ + limit?: components["parameters"]["limit"]; + /** Items to skip for pagination */ + start?: components["parameters"]["start"]; + /** How to order values (ASC, DESC) */ + order?: components["parameters"]["order"]; + /** The value to order by */ + orderBy?: "type" | "date" | "activity" | "net" | "gross"; }; }; responses: { @@ -4307,71 +4820,128 @@ export interface operations { 200: { content: { "application/json": { - results: { + limit?: number; + results: ({ id: number; - name: string; - surname: string; - }[]; + } & { + activity: string; + amount: { + gross: components["schemas"]["Currency"]; + net?: components["schemas"]["Currency"]; + }; + /** Format: date */ + date: string; + type: string; + })[]; + size: number; + start: number; + total?: number; }; }; }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; }; }; - "get-browsers": { + /** Return all single attributions that dials the pending booty */ + "get-users-me-pending-booty": { + parameters: { + query: { + /** Items to skip for pagination */ + start?: components["parameters"]["start"]; + /** Max items to retrieve */ + limit?: components["parameters"]["limit"]; + /** The field for item order */ + orderBy?: + | "id" + | "attributionDate" + | "activityName" + | "net" + | "gross" + | "activity"; + /** How to order values (ASC, DESC) */ + order?: components["parameters"]["order"]; + }; + }; responses: { /** OK */ 200: { content: { "application/json": { - results: { + limit?: number; + results?: ({ id: number; + } & { + activity: string; + amount: { + gross: components["schemas"]["Currency"]; + net?: components["schemas"]["Currency"]; + }; + /** Format: date */ + attributionDate: string; name: string; - }[]; + })[]; + size: number; + start: number; + total?: number; }; }; }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; }; }; - "get-productTypes": { + /** Return all user permissions */ + "get-users-me-permissions": { parameters: {}; responses: { /** OK */ 200: { content: { "application/json": { - results: { - id: number; - name: string; - }[]; + appq_bug?: components["schemas"]["Olp"]; + appq_campaign?: components["schemas"]["Olp"]; + appq_message_center?: components["schemas"]["Olp"]; + appq_prospect?: components["schemas"]["Olp"]; + appq_tester_selection?: components["schemas"]["Olp"]; }; }; }; + 403: components["responses"]["NotAuthorized"]; + /** Internal Server Error */ + 500: unknown; }; }; - "get-phases": { + /** Get all popup defined for your user */ + "get-users-me-popups": { + parameters: { + query: { + /** Show all popup history, expired popups included */ + showExpired?: boolean; + /** How to order values (ASC, DESC) */ + order?: components["parameters"]["order"]; + }; + }; responses: { /** OK */ 200: { content: { "application/json": { - results: { - id: number; - name: string; - type: { - id: number; - name: string; - }; - }[]; - }; + content?: string; + id?: number; + once?: boolean; + title?: string; + }[]; }; }; + 404: components["responses"]["NotFound"]; }; }; - "put-dossiers-campaign-phases": { + /** Get a single popup. Will set the retrieved popup as expired */ + "get-users-me-popups-popup": { parameters: { path: { - /** A campaign id */ - campaign: string; + popup: number; }; }; responses: { @@ -4379,18 +4949,50 @@ export interface operations { 200: { content: { "application/json": { - id: number; - name: string; + id?: number; + } & components["schemas"]["Popup"]; + }; + }; + }; + }; + "get-users-me-rank": { + parameters: {}; + responses: { + /** OK */ + 200: { + content: { + "application/json": { + level: components["schemas"]["MonthlyLevel"]; + points: number; + previousLevel: components["schemas"]["MonthlyLevel"]; + prospect: { + level: components["schemas"]["MonthlyLevel"]; + maintenance?: number; + next?: { + level: components["schemas"]["MonthlyLevel"]; + points: number; + }; + }; + rank: number; }; }; }; + 403: components["responses"]["NotAuthorized"]; }; - requestBody: { - content: { - "application/json": { - phase: number; + }; + "get-users-me-rank-list": { + responses: { + /** OK */ + 200: { + content: { + "application/json": { + peers: components["schemas"]["RankingItem"][]; + tops: components["schemas"]["RankingItem"][]; + }; }; }; + 403: components["responses"]["NotAuthorized"]; + 404: components["responses"]["NotFound"]; }; }; }