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"];
};
};
}