}
@@ -33,7 +33,7 @@ export default function HomePage() {
className="[&_div:has(svg)]:shadow"
/>
}
diff --git a/content/docs/study-rules-editor/basics/meta.json b/content/docs/study-rules-editor/basics/meta.json
deleted file mode 100644
index e289380..0000000
--- a/content/docs/study-rules-editor/basics/meta.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "pages": [
- "editor-overview",
- "study-rules"
- ]
-}
\ No newline at end of file
diff --git a/content/docs/study-rules-editor/basics/editor-overview.mdx b/content/docs/study-rules-editor/editor-overview.mdx
similarity index 95%
rename from content/docs/study-rules-editor/basics/editor-overview.mdx
rename to content/docs/study-rules-editor/editor-overview.mdx
index 747493e..26d319a 100644
--- a/content/docs/study-rules-editor/basics/editor-overview.mdx
+++ b/content/docs/study-rules-editor/editor-overview.mdx
@@ -1,6 +1,6 @@
---
-title: Study Rules Editor
-description: Overview of the study rules editor interface
+title: Editor Overview
+description: Main areas, navigation, and workflow for configuring study rules
---
## Introduction
@@ -15,14 +15,14 @@ description: Overview of the study rules editor interface
The **Study Rules Editor** is a graphical interface that allows you to create and manage these rules. It provides tools to define event handlers, configure contexts, and automate study workflows and participant management.
-
+
### Top Navigation Bar
- **"Project"**: Click here to open an existing project, save your project or export the study rules.
- **"Context"**: The editor context provides access to study and message keys, participant flags, reports and external event handlers that can be referenced in your rules.
-You can import a context from a recent session or [create a new one](/docs/study-rules-editor/basics/editor-overview#context-editor) via the **"Open Context Editor"** button.
+You can import a context from a recent session or [create a new one](/docs/study-rules-editor/editor-overview#context-editor) via the **"Open Context Editor"** button.
### General
@@ -102,7 +102,7 @@ Rules defined here are applied **when a participant leaves the study** (e.g., wh
The **Context Editor** is a configuration interface within the **Study Rules Editor**. It allows you to define the keys and identifiers that are used in **event handlers**, **conditions**, and **actions** throughout your study logic. These definitions ensure that all references to surveys, messages, flags, and other elements are valid and consistent.
-
+
### How to Access the Context Editor
@@ -179,4 +179,4 @@ Send data to external systems or trigger external workflows.
---
-For a complete list of available expressions and actions you can use in your study rules, see the [Methods of the study engine](/docs/study-rules-editor/basics/study-rules).
+For a complete list of available expressions and actions you can use in your study rules, see the [Methods of the study engine](/docs/study-rules-editor/study-rules).
diff --git a/content/docs/study-rules-editor/guide/entry-handler.mdx b/content/docs/study-rules-editor/guide/entry-handler.mdx
index 2b536e8..626a69a 100644
--- a/content/docs/study-rules-editor/guide/entry-handler.mdx
+++ b/content/docs/study-rules-editor/guide/entry-handler.mdx
@@ -8,7 +8,7 @@ This example shows how to configure actions that are executed automatically when
We’ll use the case where a **welcome message** is sent, the **intake survey** is assigned, and a **reminder message** for submitting the intake survey is scheduled.
## Prerequisite
-Before you can configure ENTRY actions, make sure the Survey keys and Message keys are already defined in the [Survey context](/docs/study-rules-editor/basics/editor-overview#context-editor).
+Before you can configure ENTRY actions, make sure the Survey keys and Message keys are already defined in the [Survey context](/docs/study-rules-editor/editor-overview#context-editor).
Needed for this example:
- Survey keys: `intake`
diff --git a/content/docs/study-rules-editor/meta.json b/content/docs/study-rules-editor/meta.json
index f368952..a3982ee 100644
--- a/content/docs/study-rules-editor/meta.json
+++ b/content/docs/study-rules-editor/meta.json
@@ -2,5 +2,10 @@
"title": "Study Rules Editor",
"description": "Documentation for using the graphical study rules editor",
"root": true,
- "icon": "GitFork"
+ "icon": "GitFork",
+ "pages": [
+ "editor-overview",
+ "study-rules",
+ "guide"
+ ]
}
\ No newline at end of file
diff --git a/content/docs/study-rules-editor/basics/study-rules.mdx b/content/docs/study-rules-editor/study-rules.mdx
similarity index 100%
rename from content/docs/study-rules-editor/basics/study-rules.mdx
rename to content/docs/study-rules-editor/study-rules.mdx
diff --git a/content/docs/survey-editor/basics/meta.json b/content/docs/survey-editor/basics/meta.json
deleted file mode 100644
index 9fd6c82..0000000
--- a/content/docs/survey-editor/basics/meta.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "pages": [
- "editor-overview",
- "item-structure",
- "conditions"
- ]
-}
\ No newline at end of file
diff --git a/content/docs/survey-editor/basics/conditions.mdx b/content/docs/survey-editor/conditions.mdx
similarity index 100%
rename from content/docs/survey-editor/basics/conditions.mdx
rename to content/docs/survey-editor/conditions.mdx
diff --git a/content/docs/survey-editor/basics/editor-overview.mdx b/content/docs/survey-editor/editor-overview.mdx
similarity index 87%
rename from content/docs/survey-editor/basics/editor-overview.mdx
rename to content/docs/survey-editor/editor-overview.mdx
index 03489ae..df111eb 100644
--- a/content/docs/survey-editor/basics/editor-overview.mdx
+++ b/content/docs/survey-editor/editor-overview.mdx
@@ -1,18 +1,18 @@
---
-title: Survey Editor Overview
-description: Overview of the survey editor interface
+title: Editor Overview
+description: Main areas, navigation, and workflow for building surveys
---
## Survey Editor Dashboard
-
+
This dashboard shows you the key content and structure of your survey.
### Top Navigation Bar
- **Survey Editor**: displays the currently open editor.
- **File**: Click here to generate a new survey, open an existing survey, save survey to disk or exit survey editor.
-- **View**: Click here to go to [Survey Properties](/docs/survey-editor/basics/editor-overview#survey-properties-workspace) section or Survey Simulator.
+- **View**: Click here to go to [Survey Properties](/docs/survey-editor/editor-overview#survey-properties-workspace) section or Survey Simulator.
- **Survey Name:** Top left shows the unique key name of the current survey. Click on it to change its root key name.
- **Survey label**: Top center displays the survey label. You can rename the survey label by clicking on it.
- **Color Selector**: Click here to change the theme color of the survey.
@@ -24,18 +24,18 @@ This dashboard shows you the key content and structure of your survey.
### Survey Item List
-- **Items**: This section lists all the [items](/docs/survey-editor/basics/item-structure#survey-items) of the survey. Each item has:
+- **Items**: This section lists all the [items](/docs/survey-editor/item-structure#survey-items) of the survey. Each item has:
- an icon symbolizing the type of question (e.g. checkmark in circle for single choice question)
- an unique **Item Key** (e.g., `SCG1`).
- an optional **Label** text (e.g., `Single Choice Question`).
-- Open the [item interface](/docs/survey-editor/basics/item-structure#item-interface) by clicking on the item or its icon shown in the left bar.
+- Open the [item interface](/docs/survey-editor/item-structure#item-interface) by clicking on the item or its icon shown in the left bar.
- New items can be added by
- Click on **+ Add new item** at the bottom of the item list
- Click on **+** in the left sidebar.
- Items can be ordered by
- drag and drop them in the item list or left sidebar or
- toggle the switch `Use random ordering` in the **Item ordering** section to random order items when the survey runs.
-- **Condition tab**: Switch to this tab to define [conditional logic](/docs/survey-editor/basics/conditions#conditions-and-expressions) that controls when items should be shown based on participant responses.
+- **Condition tab**: Switch to this tab to define [conditional logic](/docs/survey-editor/conditions#conditions-and-expressions) that controls when items should be shown based on participant responses.
---
@@ -44,7 +44,7 @@ This dashboard shows you the key content and structure of your survey.
The **Survey Properties** workspace allows you to define and manage overall configuration and behavior of your survey.
Click on **View** dropdown menu and select **Survey Properties** to open this section (shortcut **⌘ Cmd + 1**).
-
+
### Overview of Functions
@@ -62,7 +62,7 @@ Click on **View** dropdown menu and select **Survey Properties** to open this se
Use the language toggle to view and edit content in different languages. This helps manage multilingual surveys efficiently.
-
+
- **Access Conditions**
Configure who is allowed to access and complete the survey.
@@ -75,7 +75,7 @@ Click on **View** dropdown menu and select **Survey Properties** to open this se
- **Submission requires Login**
Enable this toggle if participants must be logged in to submit their responses. If disabled, anyone with access to the survey can submit a response.
-
+
- **Max Items per Page**
Set the maximum number of question or content items that should appear on a single survey page for small and large screens.
@@ -90,7 +90,7 @@ The simulator allows you to preview and test your survey questions under differe
Below are the key components visible in the interface:
-
+
### Survey Items
diff --git a/content/docs/survey-editor/guides/add-conditional-question.mdx b/content/docs/survey-editor/guides/add-conditional-question.mdx
index 44e65c5..1091283 100644
--- a/content/docs/survey-editor/guides/add-conditional-question.mdx
+++ b/content/docs/survey-editor/guides/add-conditional-question.mdx
@@ -22,7 +22,7 @@ Select the option **"Question or Info item"**.
Select the option **"Consent"**. The consent item is now shown in your item list. Click on the item to see the content item interface.
-Select the component you would like to edit by clicking on it (Read more about [item components](/docs/survey-editor/basics/item-structure#survey-items)).
+Select the component you would like to edit by clicking on it (Read more about [item components](/docs/survey-editor/item-structure#survey-items)).
Write your title text e.g. *"Consent to Data Storage"* in the text field of the title component. Go back to consent item interface.
@@ -126,6 +126,6 @@ In the dropdown menu, scroll to the Templates section and select **“Consent qu

- A response slot key is not required. Use the survey [simulator](/docs/survey-editor/basics/editor-overview#simulator) to verify that the conditional logic works as expected.
+ A response slot key is not required. Use the survey [simulator](/docs/survey-editor/editor-overview#simulator) to verify that the conditional logic works as expected.
diff --git a/content/docs/survey-editor/guides/add-date-constraints.mdx b/content/docs/survey-editor/guides/add-date-constraints.mdx
index a64c5ee..b968b94 100644
--- a/content/docs/survey-editor/guides/add-date-constraints.mdx
+++ b/content/docs/survey-editor/guides/add-date-constraints.mdx
@@ -17,7 +17,7 @@ Create a date question by clicking the plus icon in the left toolbar or the **"A
Select the option **"Date Input"**. The date item is now shown in your item list. Click on the item to see its interface.
-Select the component you would like to edit by clicking on it (Read more about [item components](/docs/survey-editor/basics/item-structure#survey-items)).
+Select the component you would like to edit by clicking on it (Read more about [item components](/docs/survey-editor/item-structure#survey-items)).
Write your title text. In our example, the title text is: *"What is your child’s date of birth?"*.
@@ -60,7 +60,7 @@ In the **Latest** section, click **+ add value**.
Select **"Get timestamp"**. Leave the **Offset** at *0 days*. This restricts the latest possible vaccination date to *today*.
-Use the survey [simulator](/docs/survey-editor/basics/editor-overview#simulator) to verify that your constraints are as expected.
+Use the survey [simulator](/docs/survey-editor/editor-overview#simulator) to verify that your constraints are as expected.
diff --git a/content/docs/survey-editor/guides/add-single-choice.mdx b/content/docs/survey-editor/guides/add-single-choice.mdx
index 89f7845..b0860bb 100644
--- a/content/docs/survey-editor/guides/add-single-choice.mdx
+++ b/content/docs/survey-editor/guides/add-single-choice.mdx
@@ -18,7 +18,7 @@ Select the option **"Single choice"**. The single choice item is now shown in yo
-Select the component you would like to edit by clicking on it (Read more about [item components](/docs/survey-editor/basics/item-structure#survey-items)).
+Select the component you would like to edit by clicking on it (Read more about [item components](/docs/survey-editor/item-structure#survey-items)).
Write your question in the text field of the title component. Add additional information in the text field of the subtitle. Write optional text before or after response options in top and bottom content components.
@@ -44,10 +44,10 @@ Select **"With formatted label"** to use rich text (bold, italic, etc.) in label
Enter label text of options for different languages by switching the language tabs above the options list. This ensures participants see the options in their selected language.
-Define optional [conditions](/docs/survey-editor/basics/conditions) to control whether an option is shown or disabled. Select the option row and click on **"Show more settings"**. Use the **Display** condition to show the option only under certain criteria, and the **Disabled** condition to keep it visible but prevent selection.
+Define optional [conditions](/docs/survey-editor/conditions) to control whether an option is shown or disabled. Select the option row and click on **"Show more settings"**. Use the **Display** condition to show the option only under certain criteria, and the **Disabled** condition to keep it visible but prevent selection.
-Use the tabs to set optional [conditions](/docs/survey-editor/basics/conditions), validations or advanced settings.
+Use the tabs to set optional [conditions](/docs/survey-editor/conditions), validations or advanced settings.
View this question in the Survey Simulator by clicking on **"View"** in the top bar and selecting **"Simulator"**.
diff --git a/content/docs/survey-editor/guides/edit-survey.mdx b/content/docs/survey-editor/guides/edit-survey.mdx
index ca9ed3f..8e3133b 100644
--- a/content/docs/survey-editor/guides/edit-survey.mdx
+++ b/content/docs/survey-editor/guides/edit-survey.mdx
@@ -29,5 +29,5 @@ A dialog appears where you can either upload a survey file from your computer or

-You are now ready to edit your survey! Learn how to [configure the editor interface](/docs/survey-editor/basics/editor-overview#survey-editor-dashboard) or [save your changes](/docs/survey-editor/guides/save-survey).
+You are now ready to edit your survey! Learn how to [configure the editor interface](/docs/survey-editor/editor-overview#survey-editor-dashboard) or [save your changes](/docs/survey-editor/guides/save-survey).
diff --git a/content/docs/survey-editor/guides/setup-survey.mdx b/content/docs/survey-editor/guides/setup-survey.mdx
index 0a6001d..96a9439 100644
--- a/content/docs/survey-editor/guides/setup-survey.mdx
+++ b/content/docs/survey-editor/guides/setup-survey.mdx
@@ -28,11 +28,11 @@ Click the **"Create new survey"** button and enter a **survey key**.

-You are now ready to edit your new survey! Learn more about how to configure the editor interface [here](/docs/survey-editor/basics/editor-overview#survey-editor-dashboard).
+You are now ready to edit your new survey! Learn more about how to configure the editor interface [here](/docs/survey-editor/editor-overview#survey-editor-dashboard).

-4. Click **"View"** and choose **"Survey Properties"** to define your [survey properties](/docs/survey-editor/basics/editor-overview#survey-properties-workspace) e.g. title, language or access conditions.
+4. Click **"View"** and choose **"Survey Properties"** to define your [survey properties](/docs/survey-editor/editor-overview#survey-properties-workspace) e.g. title, language or access conditions.
diff --git a/content/docs/survey-editor/basics/item-structure.mdx b/content/docs/survey-editor/item-structure.mdx
similarity index 94%
rename from content/docs/survey-editor/basics/item-structure.mdx
rename to content/docs/survey-editor/item-structure.mdx
index e838f02..760692a 100644
--- a/content/docs/survey-editor/basics/item-structure.mdx
+++ b/content/docs/survey-editor/item-structure.mdx
@@ -5,7 +5,7 @@ description: Understanding the structure of survey items
## Survey Items
-A survey consists of items. An item can belong to either a question type or a non-question type category. (Read more about [item types](/docs/survey-editor/basics/item-structure#item-types)).
+A survey consists of items. An item can belong to either a question type or a non-question type category. (Read more about [item types](/docs/survey-editor/item-structure#item-types)).
A question item is structured by the following **components**:
@@ -30,7 +30,7 @@ Main content that surrounds the response options:
The item editor is displayed when you select an item or its icon in the left sidebar of the main editor.
-
+
### Top Navigation Bar
@@ -51,7 +51,7 @@ The item editor is displayed when you select an item or its icon in the left sid
### Content Section (Left Side)
-All item components described [above](/docs/survey-editor/basics/item-structure#survey-items) are listed here. Select any component by clicking on it to view and edit its settings.
+All item components described [above](/docs/survey-editor/item-structure#survey-items) are listed here. Select any component by clicking on it to view and edit its settings.
### Preview Section (Right Side)
diff --git a/content/docs/survey-editor/meta.json b/content/docs/survey-editor/meta.json
index df098f7..3793f25 100644
--- a/content/docs/survey-editor/meta.json
+++ b/content/docs/survey-editor/meta.json
@@ -2,5 +2,11 @@
"title": "Survey Editor",
"description": "Documentation for using the graphical survey editor",
"root": true,
- "icon": "PencilRuler"
+ "icon": "PencilRuler",
+ "pages": [
+ "editor-overview",
+ "item-structure",
+ "conditions",
+ "guides"
+ ]
}
\ No newline at end of file
From be797a83acc1a536a28ce9a2e91bf2f227587fb4 Mon Sep 17 00:00:00 2001
From: kschneider84 <77678452+kschneider84@users.noreply.github.com>
Date: Fri, 19 Jun 2026 10:30:42 +0200
Subject: [PATCH 12/21] Remove schemas in index overview, sort endpoint
grouping by oder of tag list
---
scripts/generate-docs.ts | 129 +++++++++++++++++----------------------
1 file changed, 55 insertions(+), 74 deletions(-)
diff --git a/scripts/generate-docs.ts b/scripts/generate-docs.ts
index 7b95702..1138715 100644
--- a/scripts/generate-docs.ts
+++ b/scripts/generate-docs.ts
@@ -53,50 +53,6 @@ type GeneratedGroupEntry = {
type GeneratedEntry = GeneratedLeafEntry | GeneratedGroupEntry;
-type OpenAPISchema = {
- type?: string;
- format?: string;
- description?: string;
- required?: string[];
- properties?: Record;
- additionalProperties?: boolean | Record;
- enum?: unknown[];
- items?: unknown;
-};
-
-function escapeHtml(value: string): string {
- return value
- .replace(/&/g, '&')
- .replace(//g, '>');
-}
-
-function renderAdditionalProperties(additionalProperties: OpenAPISchema['additionalProperties']): string {
- if (additionalProperties === true) return 'yes';
- if (additionalProperties === false) return 'no';
- if (typeof additionalProperties === 'object') return 'schema-defined';
- return '-';
-}
-
-function renderPropertyRows(schema: OpenAPISchema): string {
- const properties = schema.properties ?? {};
- const propertyEntries = Object.entries(properties);
-
- if (propertyEntries.length === 0) {
- return 'Properties: -';
- }
-
- const rows = propertyEntries.map(([name, value]) => {
- const property = value as { type?: string; description?: string; format?: string };
- const type = property.type ?? 'object';
- const format = property.format ? ` (${property.format})` : '';
- const description = property.description ? ` - ${property.description}` : '';
- return `${escapeHtml(name)}: ${escapeHtml(type + format + description)}`;
- });
-
- return `Properties:`;
-}
-
const methodBadgeClass: Record = {
GET: 'text-emerald-600',
POST: 'text-blue-600',
@@ -120,7 +76,16 @@ async function generateForProfile(profile: DocsProfile) {
const primarySchema = Object.values(schemas)[0];
const indexTitle = primarySchema?.dereferenced.info?.title ?? 'API';
const indexDescription = primarySchema?.dereferenced.info?.description ?? 'All available pages';
- const schemaMap = (primarySchema?.dereferenced.components?.schemas ?? {}) as Record;
+ const declaredTags = Array.isArray(primarySchema?.dereferenced.tags)
+ ? primarySchema.dereferenced.tags
+ : [];
+ const tagOrderMap = new Map();
+
+ declaredTags.forEach((tag, index) => {
+ if (tag && typeof tag === 'object' && 'name' in tag && typeof (tag as { name?: unknown }).name === 'string') {
+ tagOrderMap.set((tag as { name: string }).name, index);
+ }
+ });
await generateFiles({
per: 'operation',
@@ -178,11 +143,27 @@ async function generateForProfile(profile: DocsProfile) {
return `${entry.info.title} ${method}} ${description} />`;
};
- const groupSections = topEntries.map((entry) => {
- if (entry.type !== 'group') {
- return '';
- }
+ const groupedEntries = topEntries
+ .filter((entry): entry is GeneratedGroupEntry => entry.type === 'group')
+ .sort((left, right) => {
+ const leftTag = left.tag?.name ?? '';
+ const rightTag = right.tag?.name ?? '';
+ const leftOrder = tagOrderMap.get(leftTag);
+ const rightOrder = tagOrderMap.get(rightTag);
+ if (leftOrder !== undefined && rightOrder !== undefined) {
+ return leftOrder - rightOrder;
+ }
+
+ if (leftOrder !== undefined) return -1;
+ if (rightOrder !== undefined) return 1;
+
+ const leftTitle = left.info?.title ?? left.tag?.name ?? 'Untagged';
+ const rightTitle = right.info?.title ?? right.tag?.name ?? 'Untagged';
+ return leftTitle.localeCompare(rightTitle);
+ });
+
+ const groupSections = groupedEntries.map((entry) => {
const groupTitle = entry.info?.title ?? entry.tag?.name ?? 'Untagged';
const groupDescription = entry.info?.description
? `\n\n${entry.info.description}`
@@ -192,6 +173,30 @@ async function generateForProfile(profile: DocsProfile) {
return `\n### ${groupTitle}${groupDescription}\n\n\n${cards.join('\n')}\n`;
}).filter(Boolean);
+ const orderedGroupPageIds = groupedEntries
+ .map((entry) => entry.path ?? entry.tag?.name)
+ .filter((value): value is string => Boolean(value));
+
+ const topLevelMetaFile = files.find((file) => file.path === 'meta.json');
+ if (topLevelMetaFile) {
+ try {
+ const parsed = JSON.parse(topLevelMetaFile.content) as { pages?: unknown };
+ const existingPages = Array.isArray(parsed.pages)
+ ? parsed.pages.filter((value): value is string => typeof value === 'string')
+ : [];
+
+ const orderedPages = [
+ ...orderedGroupPageIds.filter((page) => existingPages.includes(page)),
+ ...existingPages.filter((page) => !orderedGroupPageIds.includes(page)),
+ ];
+
+ parsed.pages = orderedPages;
+ topLevelMetaFile.content = `${JSON.stringify(parsed, null, 2)}\n`;
+ } catch {
+ // keep generated meta as-is when unexpected content shape is encountered
+ }
+ }
+
const ungroupedCards = topEntries
.filter((entry): entry is GeneratedLeafEntry => entry.type !== 'group')
.map(renderCard);
@@ -207,31 +212,7 @@ async function generateForProfile(profile: DocsProfile) {
: '',
].filter(Boolean).join('\n\n');
- const schemaBlocks = Object.entries(schemaMap).map(([name, schema]) => {
- const description = (schema.description ?? '-')
- .replace(/\r?\n/g, ' ')
- .trim();
- const required = schema.required?.length ? schema.required.join(', ') : '-';
- const enumValues = schema.enum?.length ? schema.enum.map((item) => JSON.stringify(item)).join(', ') : '-';
- const type = schema.type ?? 'object';
- const format = schema.format ?? '-';
- const additionalProperties = renderAdditionalProperties(schema.additionalProperties);
- const itemType = schema.items && typeof schema.items === 'object'
- ? ((schema.items as { type?: string }).type ?? 'object')
- : '-';
-
- const summaryText = description !== '-'
- ? `${escapeHtml(name)} - ${escapeHtml(description)}`
- : `${escapeHtml(name)}`;
-
- return `\n${summaryText}
\n\n- Type: ${escapeHtml(type)}
\n- Format: ${escapeHtml(format)}
\n- Required: ${escapeHtml(required)}
\n- Enum: ${escapeHtml(enumValues)}
\n- Array item type: ${escapeHtml(itemType)}
\n- Additional properties: ${escapeHtml(additionalProperties)}
\n${renderPropertyRows(schema)}\n
\n `;
- });
-
- const schemaSection = schemaBlocks.length > 0
- ? `\n## Schemas\n\nClick a schema to expand details.\n\n${schemaBlocks.join('\n\n')}\n`
- : '';
-
- indexFile.content = `---\ntitle: ${indexTitle}\ndescription: ${indexDescription}\n---\n\n{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}\n\n${endpointSection}\n${schemaSection}`;
+ indexFile.content = `---\ntitle: ${indexTitle}\ndescription: ${indexDescription}\n---\n\n{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}\n\n${endpointSection}`;
},
});
}
From bbf84a5f66020096f5e5040c907a404e88b4374a Mon Sep 17 00:00:00 2001
From: kschneider84 <77678452+kschneider84@users.noreply.github.com>
Date: Mon, 22 Jun 2026 09:11:07 +0200
Subject: [PATCH 13/21] Update README with new OpenAPI handling
---
README.md | 68 +++++++++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 61 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index b3dd638..dd92cf1 100644
--- a/README.md
+++ b/README.md
@@ -36,17 +36,71 @@ Read the [Introduction](https://fumadocs.dev/docs/mdx) for further details.
## For API Documentation
-Include the openapi spec file in the `public/openapi` directory.
+OpenAPI docs are generated from profiles defined in `scripts/doc-profiles.ts`.
-Add a new page with the name `api.mdx` in the `content/tech-docs/[api-name]` directory with the following content:
+### 1. Add the OpenAPI spec
-```mdx
----
-title: My API
-description: My API Description
----
+Place your spec file in the `openapi` directory, for example:
+
+- `openapi/my-api.yaml`
+
+### 2. Add or update a docs profile
+
+In `scripts/doc-profiles.ts`, add a new profile entry:
+
+```ts
+{
+ id: 'my-api',
+ input: './openapi/my-api.yaml',
+ outputDir: 'content/tech-docs/my-api/api',
+ baseUrl: '/tech-docs/my-api/api',
+ groupByTag: true,
+}
```
+`groupByTag: true` groups endpoints by OpenAPI tags in the generated docs.
+
+Current profiles:
+
+- `management-api` (`openapi/management-api.yaml`, `groupByTag: true`)
+- `participant-api` (`openapi/participant-api.yaml`, `groupByTag: true`)
+- `smtp-bridge` (`openapi/smtp-bridge.yaml`, `groupByTag: false`)
+
+### 3. Add the Tech Docs section (only for a new API)
+
+Create `content/tech-docs/my-api` with:
+
+- `overview.mdx` (landing page)
+- `meta.json` with `"pages": ["overview", "api"]`
+
+Then add `my-api` to `content/tech-docs/meta.json` so the section appears in the sidebar.
+
+### 4. Generate the API docs
+
+List available profiles:
+
+```bash
+pnpm exec tsx --no-cache scripts/generate-docs.ts --list
+```
+
+Generate one profile:
+
+```bash
+pnpm exec tsx --no-cache scripts/generate-docs.ts my-api
+```
+
+Generate all profiles:
+
+```bash
+pnpm exec tsx --no-cache scripts/generate-docs.ts --all
+```
+
+### 5. Result
+
+Generated API pages are written to `content/tech-docs//api` (including `index.mdx` and `meta.json`).
+
+Note: these files are generated and should not be edited manually. Re-run the generator after spec changes.
+
## Learn More
To learn more about Next.js and Fumadocs, take a look at the following
From e59e8413b7287a20bba4819996d8d6f4df3fca08 Mon Sep 17 00:00:00 2001
From: kschneider84 <77678452+kschneider84@users.noreply.github.com>
Date: Thu, 25 Jun 2026 15:03:46 +0200
Subject: [PATCH 14/21] Generate OpenAPI tech-docs
---
content/tech-docs/management-api/api.mdx | 4 -
.../actions_getPrevResponsesTaskResult.mdx | 15 +
.../actions_getPrevResponsesTaskStatus.mdx | 15 +
.../api/actions/actions_getTaskResult.mdx | 15 +
.../api/actions/actions_getTaskStatus.mdx | 15 +
.../api/actions/actions_runOnParticipant.mdx | 15 +
.../api/actions/actions_runOnParticipants.mdx | 15 +
.../actions_runPrevResponsesOnParticipant.mdx | 15 +
...actions_runPrevResponsesOnParticipants.mdx | 15 +
.../management-api/api/actions/meta.json | 14 +
.../management-api/api/app-roles/meta.json | 17 ++
.../userManagement_addAppRoleToUser.mdx | 15 +
.../userManagement_createAppRoleTemplate.mdx | 15 +
.../userManagement_deleteAppRoleTemplate.mdx | 15 +
...anagement_deleteAppRoleTemplatesForApp.mdx | 15 +
.../userManagement_deleteAppRolesForApp.mdx | 15 +
.../userManagement_getAppRoleTemplate.mdx | 15 +
.../userManagement_listAppRoleTemplates.mdx | 15 +
.../app-roles/userManagement_listAppRoles.mdx | 15 +
.../userManagement_listUserAppRoles.mdx | 15 +
.../userManagement_removeUserAppRole.mdx | 15 +
.../userManagement_updateAppRoleTemplate.mdx | 15 +
.../api/auth/auth_extendSession.mdx | 15 +
.../api/auth/auth_listPermissions.mdx | 15 +
.../api/auth/auth_renewToken.mdx | 15 +
.../api/auth/auth_signinWithIdp.mdx | 15 +
.../management-api/api/auth/meta.json | 10 +
.../api/code-lists/codeLists_addCodes.mdx | 15 +
.../api/code-lists/codeLists_getCodes.mdx | 15 +
.../api/code-lists/codeLists_getListKeys.mdx | 15 +
.../api/code-lists/codeLists_removeCode.mdx | 15 +
.../management-api/api/code-lists/meta.json | 10 +
.../api/files/dataExplorer_deleteFile.mdx | 15 +
.../api/files/dataExplorer_getFile.mdx | 15 +
.../api/files/dataExplorer_listFiles.mdx | 15 +
.../management-api/api/files/meta.json | 9 +
.../tech-docs/management-api/api/index.mdx | 270 ++++++++++++++++++
.../messaging_createScheduledEmail.mdx | 15 +
.../messaging_deleteGlobalEmailTemplate.mdx | 15 +
.../messaging_deleteScheduledEmail.mdx | 15 +
.../messaging_deleteStudyEmailTemplate.mdx | 15 +
.../messaging_getGlobalEmailTemplate.mdx | 15 +
.../messaging/messaging_getScheduledEmail.mdx | 15 +
.../messaging/messaging_getSmsTemplate.mdx | 15 +
.../messaging_getStudyEmailTemplate.mdx | 15 +
.../messaging_listAllStudyEmailTemplates.mdx | 15 +
.../messaging_listGlobalEmailTemplates.mdx | 15 +
.../messaging_listScheduledEmails.mdx | 15 +
.../messaging_listStudyEmailTemplates.mdx | 15 +
.../messaging_saveGlobalEmailTemplate.mdx | 15 +
.../messaging/messaging_saveSmsTemplate.mdx | 15 +
.../messaging_saveStudyEmailTemplate.mdx | 15 +
.../management-api/api/messaging/meta.json | 21 ++
.../tech-docs/management-api/api/meta.json | 22 ++
.../api/notifications/meta.json | 8 +
.../notifications_getSubscriptions.mdx | 15 +
.../notifications_updateSubscriptions.mdx | 15 +
.../dataExplorer_getParticipant.mdx | 15 +
.../dataExplorer_listParticipants.mdx | 15 +
...ataExporter_generateParticipantsExport.mdx | 15 +
.../dataExporter_getParticipantsCount.mdx | 15 +
...dataExporter_getParticipantsTaskResult.mdx | 15 +
...dataExporter_getParticipantsTaskStatus.mdx | 15 +
.../management-api/api/participants/meta.json | 18 ++
.../participants_createVirtualParticipant.mdx | 15 +
.../participants_editParticipant.mdx | 15 +
.../participants_listParticipantResponses.mdx | 15 +
.../participants_mergeParticipants.mdx | 15 +
.../participants_submitParticipantEvent.mdx | 15 +
...participants_submitParticipantResponse.mdx | 15 +
.../api/reports/dataExplorer_getReport.mdx | 15 +
.../reports/dataExplorer_listReportKeys.mdx | 15 +
.../api/reports/dataExplorer_listReports.mdx | 15 +
.../dataExporter_generateReportsExport.mdx | 15 +
.../reports/dataExporter_getReportsCount.mdx | 15 +
.../dataExporter_getReportsTaskResult.mdx | 15 +
.../dataExporter_getReportsTaskStatus.mdx | 15 +
.../management-api/api/reports/meta.json | 15 +
.../participants_submitParticipantReport.mdx | 15 +
.../participants_updateParticipantReport.mdx | 15 +
.../responses/dataExplorer_deleteResponse.mdx | 15 +
.../dataExplorer_deleteResponses.mdx | 15 +
.../responses/dataExplorer_getResponse.mdx | 15 +
.../responses/dataExplorer_listResponses.mdx | 15 +
.../dataExporter_generateResponsesExport.mdx | 15 +
...Exporter_getConfidentialResponseExport.mdx | 15 +
.../dataExporter_getConfidentialResponses.mdx | 15 +
.../dataExporter_getDailyResponseExport.mdx | 15 +
.../dataExporter_getResponsesCount.mdx | 15 +
.../dataExporter_getResponsesTaskResult.mdx | 15 +
.../dataExporter_getResponsesTaskStatus.mdx | 15 +
.../responses/dataExporter_getSurveyInfo.mdx | 15 +
...porter_listConfidentialResponseExports.mdx | 15 +
.../dataExporter_listDailyResponseExports.mdx | 15 +
.../management-api/api/responses/meta.json | 20 ++
.../api/service-accounts/meta.json | 18 ++
...nagement_addPermissionToServiceAccount.mdx | 15 +
.../userManagement_createServiceAccount.mdx | 15 +
...rManagement_createServiceAccountAPIKey.mdx | 15 +
.../userManagement_deleteServiceAccount.mdx | 15 +
...rManagement_deleteServiceAccountAPIKey.mdx | 15 +
...agement_deleteServiceAccountPermission.mdx | 15 +
.../userManagement_getServiceAccount.mdx | 15 +
...erManagement_listServiceAccountAPIKeys.mdx | 15 +
...nagement_listServiceAccountPermissions.mdx | 15 +
.../userManagement_listServiceAccounts.mdx | 15 +
.../userManagement_updateServiceAccount.mdx | 15 +
..._updateServiceAccountPermissionLimiter.mdx | 15 +
.../management-api/api/studies/meta.json | 15 +
.../api/studies/studies_createStudy.mdx | 15 +
.../api/studies/studies_deleteStudy.mdx | 15 +
.../api/studies/studies_exportConfig.mdx | 15 +
.../api/studies/studies_getStudy.mdx | 15 +
.../api/studies/studies_listStudies.mdx | 15 +
.../studies/studies_updateDisplayProps.mdx | 15 +
.../studies/studies_updateFileUploadRule.mdx | 15 +
.../api/studies/studies_updateIsDefault.mdx | 15 +
.../api/studies/studies_updateStatus.mdx | 15 +
.../api/study-counters/meta.json | 10 +
.../studyCounters_incrementValue.mdx | 15 +
.../studyCounters_listValues.mdx | 15 +
.../studyCounters_removeValue.mdx | 15 +
.../studyCounters_saveValue.mdx | 15 +
.../api/study-permissions/meta.json | 9 +
.../studyPermissions_addPermission.mdx | 15 +
.../studyPermissions_listPermissions.mdx | 15 +
.../studyPermissions_removePermission.mdx | 15 +
.../management-api/api/study-rules/meta.json | 11 +
.../study-rules/studyRules_deleteVersion.mdx | 15 +
.../api/study-rules/studyRules_getCurrent.mdx | 15 +
.../api/study-rules/studyRules_getVersion.mdx | 15 +
.../study-rules/studyRules_listVersions.mdx | 15 +
.../studyRules_publishNewVersion.mdx | 15 +
.../api/study-variables/meta.json | 12 +
.../studyVariables_addVariable.mdx | 15 +
.../studyVariables_deleteVariable.mdx | 15 +
.../studyVariables_getVariable.mdx | 15 +
.../studyVariables_listVariables.mdx | 15 +
.../studyVariables_updateVariableDef.mdx | 15 +
.../studyVariables_updateVariableValue.mdx | 15 +
.../management-api/api/surveys/meta.json | 14 +
.../api/surveys/surveys_createSurvey.mdx | 15 +
.../surveys/surveys_deleteSurveyVersion.mdx | 15 +
.../api/surveys/surveys_getLatestSurvey.mdx | 15 +
.../api/surveys/surveys_getSurveyVersion.mdx | 15 +
.../api/surveys/surveys_listSurveyInfos.mdx | 15 +
.../surveys/surveys_listSurveyVersions.mdx | 15 +
.../api/surveys/surveys_unpublishSurvey.mdx | 15 +
.../api/surveys/surveys_updateSurvey.mdx | 15 +
.../api/user-management/meta.json | 14 +
.../userManagement_addPermissionToUser.mdx | 15 +
.../userManagement_deleteManagementUser.mdx | 15 +
.../userManagement_deleteUserPermission.mdx | 15 +
.../userManagement_getManagementUser.mdx | 15 +
.../userManagement_listManagementUsers.mdx | 15 +
.../userManagement_listUserPermissions.mdx | 15 +
...agement_requestParticipantUserDeletion.mdx | 15 +
...userManagement_updatePermissionLimiter.mdx | 15 +
content/tech-docs/participant-api/api.mdx | 4 -
.../api/auth/getTempTokenInfo.mdx | 15 +
.../api/auth/loginWithEmail.mdx | 15 +
.../api/auth/loginWithTempToken.mdx | 15 +
.../participant-api/api/auth/logout.mdx | 15 +
.../participant-api/api/auth/meta.json | 18 ++
.../participant-api/api/auth/renewToken.mdx | 15 +
.../participant-api/api/auth/requestOTP.mdx | 15 +
.../api/auth/resendEmailVerification.mdx | 15 +
.../participant-api/api/auth/revokeTokens.mdx | 15 +
.../api/auth/signupWithEmail.mdx | 15 +
.../api/auth/validateToken.mdx | 15 +
.../participant-api/api/auth/verifyEmail.mdx | 15 +
.../participant-api/api/auth/verifyOTP.mdx | 15 +
.../api/events/customStudyEvent.mdx | 15 +
.../participant-api/api/events/enterStudy.mdx | 15 +
.../api/events/leaveStudyEvent.mdx | 15 +
.../api/events/mergeTempParticipant.mdx | 15 +
.../api/events/mergeVirtualParticipant.mdx | 15 +
.../participant-api/api/events/meta.json | 14 +
.../api/events/registerTempParticipant.mdx | 15 +
.../api/events/submitSurveyEvent.mdx | 15 +
.../events/submitTempParticipantResponse.mdx | 15 +
.../tech-docs/participant-api/api/index.mdx | 117 ++++++++
.../tech-docs/participant-api/api/meta.json | 11 +
.../participant-api/api/misc/getHealth.mdx | 15 +
.../participant-api/api/misc/meta.json | 8 +
.../api/misc/unsubscribeNewsletter.mdx | 15 +
.../deleteParticipantFile.mdx | 15 +
.../participant-data/getAssignedSurveys.mdx | 15 +
.../getConfidentialResponse.mdx | 15 +
.../api/participant-data/getLinkingCode.mdx | 15 +
.../participant-data/getParticipantFile.mdx | 15 +
.../participant-data/getParticipantState.mdx | 15 +
.../api/participant-data/getReports.mdx | 15 +
.../getStudyResponsesForProfile.mdx | 15 +
.../participant-data/getSubmissionHistory.mdx | 15 +
.../participant-data/getSurveyWithContext.mdx | 15 +
.../getTempParticipantSurveyWithContext.mdx | 15 +
.../getTempParticipantSurveys.mdx | 15 +
.../getVirtualParticipantsByLinkingCode.mdx | 15 +
.../participant-data/listParticipantFiles.mdx | 15 +
.../api/participant-data/meta.json | 21 ++
.../uploadParticipantFile.mdx | 15 +
.../api/password/getPasswordResetInfos.mdx | 15 +
.../api/password/initiatePasswordReset.mdx | 15 +
.../participant-api/api/password/meta.json | 9 +
.../api/password/resetPassword.mdx | 15 +
.../api/studies/getParticipatingStudies.mdx | 15 +
.../api/studies/getStudiesByStatus.mdx | 15 +
.../participant-api/api/studies/getStudy.mdx | 15 +
.../getStudyCodeListAvailableCount.mdx | 15 +
.../api/studies/getStudyVariable.mdx | 15 +
.../api/studies/getStudyVariables.mdx | 15 +
.../participant-api/api/studies/meta.json | 13 +
.../api/studies/studyHasCodeListCode.mdx | 15 +
.../participant-api/api/user/addProfile.mdx | 15 +
.../api/user/changeAccountEmail.mdx | 15 +
.../api/user/changePassword.mdx | 15 +
.../api/user/changePhoneNumber.mdx | 15 +
.../participant-api/api/user/deleteUser.mdx | 15 +
.../api/user/deleteUserAttribute.mdx | 15 +
.../participant-api/api/user/getUser.mdx | 15 +
.../api/user/getUserAttributes.mdx | 15 +
.../participant-api/api/user/meta.json | 20 ++
.../api/user/removeProfile.mdx | 15 +
.../user/requestPhoneNumberVerification.mdx | 15 +
.../api/user/setUserAttribute.mdx | 15 +
.../api/user/updateContactPreferences.mdx | 16 ++
.../api/user/updatePreferredLanguage.mdx | 15 +
.../api/user/updateProfile.mdx | 15 +
content/tech-docs/participant-api/meta.json | 2 +-
content/tech-docs/smtp-bridge/api.mdx | 4 -
.../tech-docs/smtp-bridge/api/getHealth.mdx | 15 +
content/tech-docs/smtp-bridge/api/index.mdx | 11 +
content/tech-docs/smtp-bridge/api/meta.json | 6 +
.../tech-docs/smtp-bridge/api/sendEmail.mdx | 15 +
content/tech-docs/smtp-bridge/meta.json | 2 +-
236 files changed, 3788 insertions(+), 14 deletions(-)
delete mode 100644 content/tech-docs/management-api/api.mdx
create mode 100644 content/tech-docs/management-api/api/actions/actions_getPrevResponsesTaskResult.mdx
create mode 100644 content/tech-docs/management-api/api/actions/actions_getPrevResponsesTaskStatus.mdx
create mode 100644 content/tech-docs/management-api/api/actions/actions_getTaskResult.mdx
create mode 100644 content/tech-docs/management-api/api/actions/actions_getTaskStatus.mdx
create mode 100644 content/tech-docs/management-api/api/actions/actions_runOnParticipant.mdx
create mode 100644 content/tech-docs/management-api/api/actions/actions_runOnParticipants.mdx
create mode 100644 content/tech-docs/management-api/api/actions/actions_runPrevResponsesOnParticipant.mdx
create mode 100644 content/tech-docs/management-api/api/actions/actions_runPrevResponsesOnParticipants.mdx
create mode 100644 content/tech-docs/management-api/api/actions/meta.json
create mode 100644 content/tech-docs/management-api/api/app-roles/meta.json
create mode 100644 content/tech-docs/management-api/api/app-roles/userManagement_addAppRoleToUser.mdx
create mode 100644 content/tech-docs/management-api/api/app-roles/userManagement_createAppRoleTemplate.mdx
create mode 100644 content/tech-docs/management-api/api/app-roles/userManagement_deleteAppRoleTemplate.mdx
create mode 100644 content/tech-docs/management-api/api/app-roles/userManagement_deleteAppRoleTemplatesForApp.mdx
create mode 100644 content/tech-docs/management-api/api/app-roles/userManagement_deleteAppRolesForApp.mdx
create mode 100644 content/tech-docs/management-api/api/app-roles/userManagement_getAppRoleTemplate.mdx
create mode 100644 content/tech-docs/management-api/api/app-roles/userManagement_listAppRoleTemplates.mdx
create mode 100644 content/tech-docs/management-api/api/app-roles/userManagement_listAppRoles.mdx
create mode 100644 content/tech-docs/management-api/api/app-roles/userManagement_listUserAppRoles.mdx
create mode 100644 content/tech-docs/management-api/api/app-roles/userManagement_removeUserAppRole.mdx
create mode 100644 content/tech-docs/management-api/api/app-roles/userManagement_updateAppRoleTemplate.mdx
create mode 100644 content/tech-docs/management-api/api/auth/auth_extendSession.mdx
create mode 100644 content/tech-docs/management-api/api/auth/auth_listPermissions.mdx
create mode 100644 content/tech-docs/management-api/api/auth/auth_renewToken.mdx
create mode 100644 content/tech-docs/management-api/api/auth/auth_signinWithIdp.mdx
create mode 100644 content/tech-docs/management-api/api/auth/meta.json
create mode 100644 content/tech-docs/management-api/api/code-lists/codeLists_addCodes.mdx
create mode 100644 content/tech-docs/management-api/api/code-lists/codeLists_getCodes.mdx
create mode 100644 content/tech-docs/management-api/api/code-lists/codeLists_getListKeys.mdx
create mode 100644 content/tech-docs/management-api/api/code-lists/codeLists_removeCode.mdx
create mode 100644 content/tech-docs/management-api/api/code-lists/meta.json
create mode 100644 content/tech-docs/management-api/api/files/dataExplorer_deleteFile.mdx
create mode 100644 content/tech-docs/management-api/api/files/dataExplorer_getFile.mdx
create mode 100644 content/tech-docs/management-api/api/files/dataExplorer_listFiles.mdx
create mode 100644 content/tech-docs/management-api/api/files/meta.json
create mode 100644 content/tech-docs/management-api/api/index.mdx
create mode 100644 content/tech-docs/management-api/api/messaging/messaging_createScheduledEmail.mdx
create mode 100644 content/tech-docs/management-api/api/messaging/messaging_deleteGlobalEmailTemplate.mdx
create mode 100644 content/tech-docs/management-api/api/messaging/messaging_deleteScheduledEmail.mdx
create mode 100644 content/tech-docs/management-api/api/messaging/messaging_deleteStudyEmailTemplate.mdx
create mode 100644 content/tech-docs/management-api/api/messaging/messaging_getGlobalEmailTemplate.mdx
create mode 100644 content/tech-docs/management-api/api/messaging/messaging_getScheduledEmail.mdx
create mode 100644 content/tech-docs/management-api/api/messaging/messaging_getSmsTemplate.mdx
create mode 100644 content/tech-docs/management-api/api/messaging/messaging_getStudyEmailTemplate.mdx
create mode 100644 content/tech-docs/management-api/api/messaging/messaging_listAllStudyEmailTemplates.mdx
create mode 100644 content/tech-docs/management-api/api/messaging/messaging_listGlobalEmailTemplates.mdx
create mode 100644 content/tech-docs/management-api/api/messaging/messaging_listScheduledEmails.mdx
create mode 100644 content/tech-docs/management-api/api/messaging/messaging_listStudyEmailTemplates.mdx
create mode 100644 content/tech-docs/management-api/api/messaging/messaging_saveGlobalEmailTemplate.mdx
create mode 100644 content/tech-docs/management-api/api/messaging/messaging_saveSmsTemplate.mdx
create mode 100644 content/tech-docs/management-api/api/messaging/messaging_saveStudyEmailTemplate.mdx
create mode 100644 content/tech-docs/management-api/api/messaging/meta.json
create mode 100644 content/tech-docs/management-api/api/meta.json
create mode 100644 content/tech-docs/management-api/api/notifications/meta.json
create mode 100644 content/tech-docs/management-api/api/notifications/notifications_getSubscriptions.mdx
create mode 100644 content/tech-docs/management-api/api/notifications/notifications_updateSubscriptions.mdx
create mode 100644 content/tech-docs/management-api/api/participants/dataExplorer_getParticipant.mdx
create mode 100644 content/tech-docs/management-api/api/participants/dataExplorer_listParticipants.mdx
create mode 100644 content/tech-docs/management-api/api/participants/dataExporter_generateParticipantsExport.mdx
create mode 100644 content/tech-docs/management-api/api/participants/dataExporter_getParticipantsCount.mdx
create mode 100644 content/tech-docs/management-api/api/participants/dataExporter_getParticipantsTaskResult.mdx
create mode 100644 content/tech-docs/management-api/api/participants/dataExporter_getParticipantsTaskStatus.mdx
create mode 100644 content/tech-docs/management-api/api/participants/meta.json
create mode 100644 content/tech-docs/management-api/api/participants/participants_createVirtualParticipant.mdx
create mode 100644 content/tech-docs/management-api/api/participants/participants_editParticipant.mdx
create mode 100644 content/tech-docs/management-api/api/participants/participants_listParticipantResponses.mdx
create mode 100644 content/tech-docs/management-api/api/participants/participants_mergeParticipants.mdx
create mode 100644 content/tech-docs/management-api/api/participants/participants_submitParticipantEvent.mdx
create mode 100644 content/tech-docs/management-api/api/participants/participants_submitParticipantResponse.mdx
create mode 100644 content/tech-docs/management-api/api/reports/dataExplorer_getReport.mdx
create mode 100644 content/tech-docs/management-api/api/reports/dataExplorer_listReportKeys.mdx
create mode 100644 content/tech-docs/management-api/api/reports/dataExplorer_listReports.mdx
create mode 100644 content/tech-docs/management-api/api/reports/dataExporter_generateReportsExport.mdx
create mode 100644 content/tech-docs/management-api/api/reports/dataExporter_getReportsCount.mdx
create mode 100644 content/tech-docs/management-api/api/reports/dataExporter_getReportsTaskResult.mdx
create mode 100644 content/tech-docs/management-api/api/reports/dataExporter_getReportsTaskStatus.mdx
create mode 100644 content/tech-docs/management-api/api/reports/meta.json
create mode 100644 content/tech-docs/management-api/api/reports/participants_submitParticipantReport.mdx
create mode 100644 content/tech-docs/management-api/api/reports/participants_updateParticipantReport.mdx
create mode 100644 content/tech-docs/management-api/api/responses/dataExplorer_deleteResponse.mdx
create mode 100644 content/tech-docs/management-api/api/responses/dataExplorer_deleteResponses.mdx
create mode 100644 content/tech-docs/management-api/api/responses/dataExplorer_getResponse.mdx
create mode 100644 content/tech-docs/management-api/api/responses/dataExplorer_listResponses.mdx
create mode 100644 content/tech-docs/management-api/api/responses/dataExporter_generateResponsesExport.mdx
create mode 100644 content/tech-docs/management-api/api/responses/dataExporter_getConfidentialResponseExport.mdx
create mode 100644 content/tech-docs/management-api/api/responses/dataExporter_getConfidentialResponses.mdx
create mode 100644 content/tech-docs/management-api/api/responses/dataExporter_getDailyResponseExport.mdx
create mode 100644 content/tech-docs/management-api/api/responses/dataExporter_getResponsesCount.mdx
create mode 100644 content/tech-docs/management-api/api/responses/dataExporter_getResponsesTaskResult.mdx
create mode 100644 content/tech-docs/management-api/api/responses/dataExporter_getResponsesTaskStatus.mdx
create mode 100644 content/tech-docs/management-api/api/responses/dataExporter_getSurveyInfo.mdx
create mode 100644 content/tech-docs/management-api/api/responses/dataExporter_listConfidentialResponseExports.mdx
create mode 100644 content/tech-docs/management-api/api/responses/dataExporter_listDailyResponseExports.mdx
create mode 100644 content/tech-docs/management-api/api/responses/meta.json
create mode 100644 content/tech-docs/management-api/api/service-accounts/meta.json
create mode 100644 content/tech-docs/management-api/api/service-accounts/userManagement_addPermissionToServiceAccount.mdx
create mode 100644 content/tech-docs/management-api/api/service-accounts/userManagement_createServiceAccount.mdx
create mode 100644 content/tech-docs/management-api/api/service-accounts/userManagement_createServiceAccountAPIKey.mdx
create mode 100644 content/tech-docs/management-api/api/service-accounts/userManagement_deleteServiceAccount.mdx
create mode 100644 content/tech-docs/management-api/api/service-accounts/userManagement_deleteServiceAccountAPIKey.mdx
create mode 100644 content/tech-docs/management-api/api/service-accounts/userManagement_deleteServiceAccountPermission.mdx
create mode 100644 content/tech-docs/management-api/api/service-accounts/userManagement_getServiceAccount.mdx
create mode 100644 content/tech-docs/management-api/api/service-accounts/userManagement_listServiceAccountAPIKeys.mdx
create mode 100644 content/tech-docs/management-api/api/service-accounts/userManagement_listServiceAccountPermissions.mdx
create mode 100644 content/tech-docs/management-api/api/service-accounts/userManagement_listServiceAccounts.mdx
create mode 100644 content/tech-docs/management-api/api/service-accounts/userManagement_updateServiceAccount.mdx
create mode 100644 content/tech-docs/management-api/api/service-accounts/userManagement_updateServiceAccountPermissionLimiter.mdx
create mode 100644 content/tech-docs/management-api/api/studies/meta.json
create mode 100644 content/tech-docs/management-api/api/studies/studies_createStudy.mdx
create mode 100644 content/tech-docs/management-api/api/studies/studies_deleteStudy.mdx
create mode 100644 content/tech-docs/management-api/api/studies/studies_exportConfig.mdx
create mode 100644 content/tech-docs/management-api/api/studies/studies_getStudy.mdx
create mode 100644 content/tech-docs/management-api/api/studies/studies_listStudies.mdx
create mode 100644 content/tech-docs/management-api/api/studies/studies_updateDisplayProps.mdx
create mode 100644 content/tech-docs/management-api/api/studies/studies_updateFileUploadRule.mdx
create mode 100644 content/tech-docs/management-api/api/studies/studies_updateIsDefault.mdx
create mode 100644 content/tech-docs/management-api/api/studies/studies_updateStatus.mdx
create mode 100644 content/tech-docs/management-api/api/study-counters/meta.json
create mode 100644 content/tech-docs/management-api/api/study-counters/studyCounters_incrementValue.mdx
create mode 100644 content/tech-docs/management-api/api/study-counters/studyCounters_listValues.mdx
create mode 100644 content/tech-docs/management-api/api/study-counters/studyCounters_removeValue.mdx
create mode 100644 content/tech-docs/management-api/api/study-counters/studyCounters_saveValue.mdx
create mode 100644 content/tech-docs/management-api/api/study-permissions/meta.json
create mode 100644 content/tech-docs/management-api/api/study-permissions/studyPermissions_addPermission.mdx
create mode 100644 content/tech-docs/management-api/api/study-permissions/studyPermissions_listPermissions.mdx
create mode 100644 content/tech-docs/management-api/api/study-permissions/studyPermissions_removePermission.mdx
create mode 100644 content/tech-docs/management-api/api/study-rules/meta.json
create mode 100644 content/tech-docs/management-api/api/study-rules/studyRules_deleteVersion.mdx
create mode 100644 content/tech-docs/management-api/api/study-rules/studyRules_getCurrent.mdx
create mode 100644 content/tech-docs/management-api/api/study-rules/studyRules_getVersion.mdx
create mode 100644 content/tech-docs/management-api/api/study-rules/studyRules_listVersions.mdx
create mode 100644 content/tech-docs/management-api/api/study-rules/studyRules_publishNewVersion.mdx
create mode 100644 content/tech-docs/management-api/api/study-variables/meta.json
create mode 100644 content/tech-docs/management-api/api/study-variables/studyVariables_addVariable.mdx
create mode 100644 content/tech-docs/management-api/api/study-variables/studyVariables_deleteVariable.mdx
create mode 100644 content/tech-docs/management-api/api/study-variables/studyVariables_getVariable.mdx
create mode 100644 content/tech-docs/management-api/api/study-variables/studyVariables_listVariables.mdx
create mode 100644 content/tech-docs/management-api/api/study-variables/studyVariables_updateVariableDef.mdx
create mode 100644 content/tech-docs/management-api/api/study-variables/studyVariables_updateVariableValue.mdx
create mode 100644 content/tech-docs/management-api/api/surveys/meta.json
create mode 100644 content/tech-docs/management-api/api/surveys/surveys_createSurvey.mdx
create mode 100644 content/tech-docs/management-api/api/surveys/surveys_deleteSurveyVersion.mdx
create mode 100644 content/tech-docs/management-api/api/surveys/surveys_getLatestSurvey.mdx
create mode 100644 content/tech-docs/management-api/api/surveys/surveys_getSurveyVersion.mdx
create mode 100644 content/tech-docs/management-api/api/surveys/surveys_listSurveyInfos.mdx
create mode 100644 content/tech-docs/management-api/api/surveys/surveys_listSurveyVersions.mdx
create mode 100644 content/tech-docs/management-api/api/surveys/surveys_unpublishSurvey.mdx
create mode 100644 content/tech-docs/management-api/api/surveys/surveys_updateSurvey.mdx
create mode 100644 content/tech-docs/management-api/api/user-management/meta.json
create mode 100644 content/tech-docs/management-api/api/user-management/userManagement_addPermissionToUser.mdx
create mode 100644 content/tech-docs/management-api/api/user-management/userManagement_deleteManagementUser.mdx
create mode 100644 content/tech-docs/management-api/api/user-management/userManagement_deleteUserPermission.mdx
create mode 100644 content/tech-docs/management-api/api/user-management/userManagement_getManagementUser.mdx
create mode 100644 content/tech-docs/management-api/api/user-management/userManagement_listManagementUsers.mdx
create mode 100644 content/tech-docs/management-api/api/user-management/userManagement_listUserPermissions.mdx
create mode 100644 content/tech-docs/management-api/api/user-management/userManagement_requestParticipantUserDeletion.mdx
create mode 100644 content/tech-docs/management-api/api/user-management/userManagement_updatePermissionLimiter.mdx
delete mode 100644 content/tech-docs/participant-api/api.mdx
create mode 100644 content/tech-docs/participant-api/api/auth/getTempTokenInfo.mdx
create mode 100644 content/tech-docs/participant-api/api/auth/loginWithEmail.mdx
create mode 100644 content/tech-docs/participant-api/api/auth/loginWithTempToken.mdx
create mode 100644 content/tech-docs/participant-api/api/auth/logout.mdx
create mode 100644 content/tech-docs/participant-api/api/auth/meta.json
create mode 100644 content/tech-docs/participant-api/api/auth/renewToken.mdx
create mode 100644 content/tech-docs/participant-api/api/auth/requestOTP.mdx
create mode 100644 content/tech-docs/participant-api/api/auth/resendEmailVerification.mdx
create mode 100644 content/tech-docs/participant-api/api/auth/revokeTokens.mdx
create mode 100644 content/tech-docs/participant-api/api/auth/signupWithEmail.mdx
create mode 100644 content/tech-docs/participant-api/api/auth/validateToken.mdx
create mode 100644 content/tech-docs/participant-api/api/auth/verifyEmail.mdx
create mode 100644 content/tech-docs/participant-api/api/auth/verifyOTP.mdx
create mode 100644 content/tech-docs/participant-api/api/events/customStudyEvent.mdx
create mode 100644 content/tech-docs/participant-api/api/events/enterStudy.mdx
create mode 100644 content/tech-docs/participant-api/api/events/leaveStudyEvent.mdx
create mode 100644 content/tech-docs/participant-api/api/events/mergeTempParticipant.mdx
create mode 100644 content/tech-docs/participant-api/api/events/mergeVirtualParticipant.mdx
create mode 100644 content/tech-docs/participant-api/api/events/meta.json
create mode 100644 content/tech-docs/participant-api/api/events/registerTempParticipant.mdx
create mode 100644 content/tech-docs/participant-api/api/events/submitSurveyEvent.mdx
create mode 100644 content/tech-docs/participant-api/api/events/submitTempParticipantResponse.mdx
create mode 100644 content/tech-docs/participant-api/api/index.mdx
create mode 100644 content/tech-docs/participant-api/api/meta.json
create mode 100644 content/tech-docs/participant-api/api/misc/getHealth.mdx
create mode 100644 content/tech-docs/participant-api/api/misc/meta.json
create mode 100644 content/tech-docs/participant-api/api/misc/unsubscribeNewsletter.mdx
create mode 100644 content/tech-docs/participant-api/api/participant-data/deleteParticipantFile.mdx
create mode 100644 content/tech-docs/participant-api/api/participant-data/getAssignedSurveys.mdx
create mode 100644 content/tech-docs/participant-api/api/participant-data/getConfidentialResponse.mdx
create mode 100644 content/tech-docs/participant-api/api/participant-data/getLinkingCode.mdx
create mode 100644 content/tech-docs/participant-api/api/participant-data/getParticipantFile.mdx
create mode 100644 content/tech-docs/participant-api/api/participant-data/getParticipantState.mdx
create mode 100644 content/tech-docs/participant-api/api/participant-data/getReports.mdx
create mode 100644 content/tech-docs/participant-api/api/participant-data/getStudyResponsesForProfile.mdx
create mode 100644 content/tech-docs/participant-api/api/participant-data/getSubmissionHistory.mdx
create mode 100644 content/tech-docs/participant-api/api/participant-data/getSurveyWithContext.mdx
create mode 100644 content/tech-docs/participant-api/api/participant-data/getTempParticipantSurveyWithContext.mdx
create mode 100644 content/tech-docs/participant-api/api/participant-data/getTempParticipantSurveys.mdx
create mode 100644 content/tech-docs/participant-api/api/participant-data/getVirtualParticipantsByLinkingCode.mdx
create mode 100644 content/tech-docs/participant-api/api/participant-data/listParticipantFiles.mdx
create mode 100644 content/tech-docs/participant-api/api/participant-data/meta.json
create mode 100644 content/tech-docs/participant-api/api/participant-data/uploadParticipantFile.mdx
create mode 100644 content/tech-docs/participant-api/api/password/getPasswordResetInfos.mdx
create mode 100644 content/tech-docs/participant-api/api/password/initiatePasswordReset.mdx
create mode 100644 content/tech-docs/participant-api/api/password/meta.json
create mode 100644 content/tech-docs/participant-api/api/password/resetPassword.mdx
create mode 100644 content/tech-docs/participant-api/api/studies/getParticipatingStudies.mdx
create mode 100644 content/tech-docs/participant-api/api/studies/getStudiesByStatus.mdx
create mode 100644 content/tech-docs/participant-api/api/studies/getStudy.mdx
create mode 100644 content/tech-docs/participant-api/api/studies/getStudyCodeListAvailableCount.mdx
create mode 100644 content/tech-docs/participant-api/api/studies/getStudyVariable.mdx
create mode 100644 content/tech-docs/participant-api/api/studies/getStudyVariables.mdx
create mode 100644 content/tech-docs/participant-api/api/studies/meta.json
create mode 100644 content/tech-docs/participant-api/api/studies/studyHasCodeListCode.mdx
create mode 100644 content/tech-docs/participant-api/api/user/addProfile.mdx
create mode 100644 content/tech-docs/participant-api/api/user/changeAccountEmail.mdx
create mode 100644 content/tech-docs/participant-api/api/user/changePassword.mdx
create mode 100644 content/tech-docs/participant-api/api/user/changePhoneNumber.mdx
create mode 100644 content/tech-docs/participant-api/api/user/deleteUser.mdx
create mode 100644 content/tech-docs/participant-api/api/user/deleteUserAttribute.mdx
create mode 100644 content/tech-docs/participant-api/api/user/getUser.mdx
create mode 100644 content/tech-docs/participant-api/api/user/getUserAttributes.mdx
create mode 100644 content/tech-docs/participant-api/api/user/meta.json
create mode 100644 content/tech-docs/participant-api/api/user/removeProfile.mdx
create mode 100644 content/tech-docs/participant-api/api/user/requestPhoneNumberVerification.mdx
create mode 100644 content/tech-docs/participant-api/api/user/setUserAttribute.mdx
create mode 100644 content/tech-docs/participant-api/api/user/updateContactPreferences.mdx
create mode 100644 content/tech-docs/participant-api/api/user/updatePreferredLanguage.mdx
create mode 100644 content/tech-docs/participant-api/api/user/updateProfile.mdx
delete mode 100644 content/tech-docs/smtp-bridge/api.mdx
create mode 100644 content/tech-docs/smtp-bridge/api/getHealth.mdx
create mode 100644 content/tech-docs/smtp-bridge/api/index.mdx
create mode 100644 content/tech-docs/smtp-bridge/api/meta.json
create mode 100644 content/tech-docs/smtp-bridge/api/sendEmail.mdx
diff --git a/content/tech-docs/management-api/api.mdx b/content/tech-docs/management-api/api.mdx
deleted file mode 100644
index e051759..0000000
--- a/content/tech-docs/management-api/api.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
----
-title: API
-description: Management API
----
diff --git a/content/tech-docs/management-api/api/actions/actions_getPrevResponsesTaskResult.mdx b/content/tech-docs/management-api/api/actions/actions_getPrevResponsesTaskResult.mdx
new file mode 100644
index 0000000..f10412c
--- /dev/null
+++ b/content/tech-docs/management-api/api/actions/actions_getPrevResponsesTaskResult.mdx
@@ -0,0 +1,15 @@
+---
+title: Get previous-responses actions task result
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/actions/actions_getPrevResponsesTaskStatus.mdx b/content/tech-docs/management-api/api/actions/actions_getPrevResponsesTaskStatus.mdx
new file mode 100644
index 0000000..7d12947
--- /dev/null
+++ b/content/tech-docs/management-api/api/actions/actions_getPrevResponsesTaskStatus.mdx
@@ -0,0 +1,15 @@
+---
+title: Get previous-responses actions task status
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/actions/actions_getTaskResult.mdx b/content/tech-docs/management-api/api/actions/actions_getTaskResult.mdx
new file mode 100644
index 0000000..7495f5e
--- /dev/null
+++ b/content/tech-docs/management-api/api/actions/actions_getTaskResult.mdx
@@ -0,0 +1,15 @@
+---
+title: Get actions task result
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/actions/actions_getTaskStatus.mdx b/content/tech-docs/management-api/api/actions/actions_getTaskStatus.mdx
new file mode 100644
index 0000000..5c90b9d
--- /dev/null
+++ b/content/tech-docs/management-api/api/actions/actions_getTaskStatus.mdx
@@ -0,0 +1,15 @@
+---
+title: Get actions task status
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/actions/actions_runOnParticipant.mdx b/content/tech-docs/management-api/api/actions/actions_runOnParticipant.mdx
new file mode 100644
index 0000000..2ce526e
--- /dev/null
+++ b/content/tech-docs/management-api/api/actions/actions_runOnParticipant.mdx
@@ -0,0 +1,15 @@
+---
+title: Run actions on a participant
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/actions/actions_runOnParticipants.mdx b/content/tech-docs/management-api/api/actions/actions_runOnParticipants.mdx
new file mode 100644
index 0000000..d8e7009
--- /dev/null
+++ b/content/tech-docs/management-api/api/actions/actions_runOnParticipants.mdx
@@ -0,0 +1,15 @@
+---
+title: Run actions on multiple participants
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/actions/actions_runPrevResponsesOnParticipant.mdx b/content/tech-docs/management-api/api/actions/actions_runPrevResponsesOnParticipant.mdx
new file mode 100644
index 0000000..1748c6e
--- /dev/null
+++ b/content/tech-docs/management-api/api/actions/actions_runPrevResponsesOnParticipant.mdx
@@ -0,0 +1,15 @@
+---
+title: Run actions on previous responses for a participant
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/actions/actions_runPrevResponsesOnParticipants.mdx b/content/tech-docs/management-api/api/actions/actions_runPrevResponsesOnParticipants.mdx
new file mode 100644
index 0000000..6dde1d8
--- /dev/null
+++ b/content/tech-docs/management-api/api/actions/actions_runPrevResponsesOnParticipants.mdx
@@ -0,0 +1,15 @@
+---
+title: Run actions on previous responses for multiple participants
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/actions/meta.json b/content/tech-docs/management-api/api/actions/meta.json
new file mode 100644
index 0000000..164980c
--- /dev/null
+++ b/content/tech-docs/management-api/api/actions/meta.json
@@ -0,0 +1,14 @@
+{
+ "title": "Actions",
+ "description": "Run actions on participants",
+ "pages": [
+ "actions_runOnParticipant",
+ "actions_runOnParticipants",
+ "actions_getTaskStatus",
+ "actions_getTaskResult",
+ "actions_runPrevResponsesOnParticipant",
+ "actions_runPrevResponsesOnParticipants",
+ "actions_getPrevResponsesTaskStatus",
+ "actions_getPrevResponsesTaskResult"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/app-roles/meta.json b/content/tech-docs/management-api/api/app-roles/meta.json
new file mode 100644
index 0000000..e341b31
--- /dev/null
+++ b/content/tech-docs/management-api/api/app-roles/meta.json
@@ -0,0 +1,17 @@
+{
+ "title": "App roles",
+ "description": "App role templates & assignments",
+ "pages": [
+ "userManagement_listUserAppRoles",
+ "userManagement_addAppRoleToUser",
+ "userManagement_removeUserAppRole",
+ "userManagement_listAppRoleTemplates",
+ "userManagement_createAppRoleTemplate",
+ "userManagement_getAppRoleTemplate",
+ "userManagement_updateAppRoleTemplate",
+ "userManagement_deleteAppRoleTemplate",
+ "userManagement_deleteAppRoleTemplatesForApp",
+ "userManagement_listAppRoles",
+ "userManagement_deleteAppRolesForApp"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/app-roles/userManagement_addAppRoleToUser.mdx b/content/tech-docs/management-api/api/app-roles/userManagement_addAppRoleToUser.mdx
new file mode 100644
index 0000000..80dd345
--- /dev/null
+++ b/content/tech-docs/management-api/api/app-roles/userManagement_addAppRoleToUser.mdx
@@ -0,0 +1,15 @@
+---
+title: Add app role to user
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/app-roles/userManagement_createAppRoleTemplate.mdx b/content/tech-docs/management-api/api/app-roles/userManagement_createAppRoleTemplate.mdx
new file mode 100644
index 0000000..d7b80e9
--- /dev/null
+++ b/content/tech-docs/management-api/api/app-roles/userManagement_createAppRoleTemplate.mdx
@@ -0,0 +1,15 @@
+---
+title: Create app role template
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/app-roles/userManagement_deleteAppRoleTemplate.mdx b/content/tech-docs/management-api/api/app-roles/userManagement_deleteAppRoleTemplate.mdx
new file mode 100644
index 0000000..ca80216
--- /dev/null
+++ b/content/tech-docs/management-api/api/app-roles/userManagement_deleteAppRoleTemplate.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete app role template
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/app-roles/userManagement_deleteAppRoleTemplatesForApp.mdx b/content/tech-docs/management-api/api/app-roles/userManagement_deleteAppRoleTemplatesForApp.mdx
new file mode 100644
index 0000000..89cbd10
--- /dev/null
+++ b/content/tech-docs/management-api/api/app-roles/userManagement_deleteAppRoleTemplatesForApp.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete app role templates for app
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/app-roles/userManagement_deleteAppRolesForApp.mdx b/content/tech-docs/management-api/api/app-roles/userManagement_deleteAppRolesForApp.mdx
new file mode 100644
index 0000000..1590719
--- /dev/null
+++ b/content/tech-docs/management-api/api/app-roles/userManagement_deleteAppRolesForApp.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete app roles for app
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/app-roles/userManagement_getAppRoleTemplate.mdx b/content/tech-docs/management-api/api/app-roles/userManagement_getAppRoleTemplate.mdx
new file mode 100644
index 0000000..ab40f4c
--- /dev/null
+++ b/content/tech-docs/management-api/api/app-roles/userManagement_getAppRoleTemplate.mdx
@@ -0,0 +1,15 @@
+---
+title: Get app role template
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/app-roles/userManagement_listAppRoleTemplates.mdx b/content/tech-docs/management-api/api/app-roles/userManagement_listAppRoleTemplates.mdx
new file mode 100644
index 0000000..3d6de59
--- /dev/null
+++ b/content/tech-docs/management-api/api/app-roles/userManagement_listAppRoleTemplates.mdx
@@ -0,0 +1,15 @@
+---
+title: List app role templates
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/app-roles/userManagement_listAppRoles.mdx b/content/tech-docs/management-api/api/app-roles/userManagement_listAppRoles.mdx
new file mode 100644
index 0000000..d4a7ad8
--- /dev/null
+++ b/content/tech-docs/management-api/api/app-roles/userManagement_listAppRoles.mdx
@@ -0,0 +1,15 @@
+---
+title: List app roles
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/app-roles/userManagement_listUserAppRoles.mdx b/content/tech-docs/management-api/api/app-roles/userManagement_listUserAppRoles.mdx
new file mode 100644
index 0000000..c490722
--- /dev/null
+++ b/content/tech-docs/management-api/api/app-roles/userManagement_listUserAppRoles.mdx
@@ -0,0 +1,15 @@
+---
+title: List app roles for user
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/app-roles/userManagement_removeUserAppRole.mdx b/content/tech-docs/management-api/api/app-roles/userManagement_removeUserAppRole.mdx
new file mode 100644
index 0000000..6edf917
--- /dev/null
+++ b/content/tech-docs/management-api/api/app-roles/userManagement_removeUserAppRole.mdx
@@ -0,0 +1,15 @@
+---
+title: Remove app role from user
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/app-roles/userManagement_updateAppRoleTemplate.mdx b/content/tech-docs/management-api/api/app-roles/userManagement_updateAppRoleTemplate.mdx
new file mode 100644
index 0000000..a0d1744
--- /dev/null
+++ b/content/tech-docs/management-api/api/app-roles/userManagement_updateAppRoleTemplate.mdx
@@ -0,0 +1,15 @@
+---
+title: Update app role template
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/auth/auth_extendSession.mdx b/content/tech-docs/management-api/api/auth/auth_extendSession.mdx
new file mode 100644
index 0000000..602f2ee
--- /dev/null
+++ b/content/tech-docs/management-api/api/auth/auth_extendSession.mdx
@@ -0,0 +1,15 @@
+---
+title: Extend session
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/auth/auth_listPermissions.mdx b/content/tech-docs/management-api/api/auth/auth_listPermissions.mdx
new file mode 100644
index 0000000..e40db4e
--- /dev/null
+++ b/content/tech-docs/management-api/api/auth/auth_listPermissions.mdx
@@ -0,0 +1,15 @@
+---
+title: List permissions and roles
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/auth/auth_renewToken.mdx b/content/tech-docs/management-api/api/auth/auth_renewToken.mdx
new file mode 100644
index 0000000..9c1b3ce
--- /dev/null
+++ b/content/tech-docs/management-api/api/auth/auth_renewToken.mdx
@@ -0,0 +1,15 @@
+---
+title: Get renew token
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/auth/auth_signinWithIdp.mdx b/content/tech-docs/management-api/api/auth/auth_signinWithIdp.mdx
new file mode 100644
index 0000000..a207f14
--- /dev/null
+++ b/content/tech-docs/management-api/api/auth/auth_signinWithIdp.mdx
@@ -0,0 +1,15 @@
+---
+title: Sign in with identity provider
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/auth/meta.json b/content/tech-docs/management-api/api/auth/meta.json
new file mode 100644
index 0000000..bbc3dd6
--- /dev/null
+++ b/content/tech-docs/management-api/api/auth/meta.json
@@ -0,0 +1,10 @@
+{
+ "title": "Auth",
+ "description": "Authentication & Session",
+ "pages": [
+ "auth_signinWithIdp",
+ "auth_extendSession",
+ "auth_renewToken",
+ "auth_listPermissions"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/code-lists/codeLists_addCodes.mdx b/content/tech-docs/management-api/api/code-lists/codeLists_addCodes.mdx
new file mode 100644
index 0000000..00312a4
--- /dev/null
+++ b/content/tech-docs/management-api/api/code-lists/codeLists_addCodes.mdx
@@ -0,0 +1,15 @@
+---
+title: Add codes to a study code list
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/code-lists/codeLists_getCodes.mdx b/content/tech-docs/management-api/api/code-lists/codeLists_getCodes.mdx
new file mode 100644
index 0000000..f3cb6d5
--- /dev/null
+++ b/content/tech-docs/management-api/api/code-lists/codeLists_getCodes.mdx
@@ -0,0 +1,15 @@
+---
+title: List codes of a study code list
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/code-lists/codeLists_getListKeys.mdx b/content/tech-docs/management-api/api/code-lists/codeLists_getListKeys.mdx
new file mode 100644
index 0000000..feac440
--- /dev/null
+++ b/content/tech-docs/management-api/api/code-lists/codeLists_getListKeys.mdx
@@ -0,0 +1,15 @@
+---
+title: List code list keys
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/code-lists/codeLists_removeCode.mdx b/content/tech-docs/management-api/api/code-lists/codeLists_removeCode.mdx
new file mode 100644
index 0000000..61b75c4
--- /dev/null
+++ b/content/tech-docs/management-api/api/code-lists/codeLists_removeCode.mdx
@@ -0,0 +1,15 @@
+---
+title: Remove a code from a study code list
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/code-lists/meta.json b/content/tech-docs/management-api/api/code-lists/meta.json
new file mode 100644
index 0000000..dc8dd92
--- /dev/null
+++ b/content/tech-docs/management-api/api/code-lists/meta.json
@@ -0,0 +1,10 @@
+{
+ "title": "Code lists",
+ "description": "Study code lists",
+ "pages": [
+ "codeLists_getListKeys",
+ "codeLists_getCodes",
+ "codeLists_addCodes",
+ "codeLists_removeCode"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/files/dataExplorer_deleteFile.mdx b/content/tech-docs/management-api/api/files/dataExplorer_deleteFile.mdx
new file mode 100644
index 0000000..33a8be7
--- /dev/null
+++ b/content/tech-docs/management-api/api/files/dataExplorer_deleteFile.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete file
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/files/dataExplorer_getFile.mdx b/content/tech-docs/management-api/api/files/dataExplorer_getFile.mdx
new file mode 100644
index 0000000..a8b00bb
--- /dev/null
+++ b/content/tech-docs/management-api/api/files/dataExplorer_getFile.mdx
@@ -0,0 +1,15 @@
+---
+title: Get file by ID
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/files/dataExplorer_listFiles.mdx b/content/tech-docs/management-api/api/files/dataExplorer_listFiles.mdx
new file mode 100644
index 0000000..5165422
--- /dev/null
+++ b/content/tech-docs/management-api/api/files/dataExplorer_listFiles.mdx
@@ -0,0 +1,15 @@
+---
+title: List files
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/files/meta.json b/content/tech-docs/management-api/api/files/meta.json
new file mode 100644
index 0000000..489cf89
--- /dev/null
+++ b/content/tech-docs/management-api/api/files/meta.json
@@ -0,0 +1,9 @@
+{
+ "title": "Files",
+ "description": "File management for studies",
+ "pages": [
+ "dataExplorer_listFiles",
+ "dataExplorer_getFile",
+ "dataExplorer_deleteFile"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/index.mdx b/content/tech-docs/management-api/api/index.mdx
new file mode 100644
index 0000000..d823d13
--- /dev/null
+++ b/content/tech-docs/management-api/api/index.mdx
@@ -0,0 +1,270 @@
+---
+title: Management API
+description: Endpoints for management authentication, user management, study administration, messaging, and participant administration.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
+### Auth
+
+Authentication & Session
+
+
+Sign in with identity provider POST} />
+Extend session POST} />
+Get renew token GET} />
+List permissions and roles GET} />
+
+
+### Studies
+
+Study management
+
+
+List all studies GET} />
+Create a new study POST} />
+Get study configuration by key GET} />
+Delete a study by key DELETE} />
+Export study configuration, surveys, and rules GET} />
+Update default status of a study PUT} />
+Update status of a study PUT} />
+Update display properties of a study PUT} />
+Update file upload configuration of a study PUT} />
+
+
+### Surveys
+
+Survey management
+
+
+List survey infos for a study GET} />
+Create a new survey in a study POST} />
+Get latest survey by key GET} />
+Update survey definition POST} />
+Unpublish a survey POST} />
+List all survey versions GET} />
+Get a specific survey version GET} />
+Delete a survey version DELETE} />
+
+
+### Study rules
+
+Study rules
+
+
+Get current published study rules GET} />
+Publish a new version of study rules POST} />
+List all study rules versions GET} />
+Get a study rules version by ID GET} />
+Delete a study rules version DELETE} />
+
+
+### Study variables
+
+Study variables
+
+
+List study variables GET} />
+Create a new study variable POST} />
+Get a study variable by key GET} />
+Delete a study variable DELETE} />
+Update study variable definition PUT} />
+Update study variable value PUT} />
+
+
+### Study counters
+
+Study counters
+
+
+List all study counter values GET} />
+Set a study counter value for scope POST} />
+Remove a study counter value DELETE} />
+Increment a study counter value PUT} />
+
+
+### Study permissions
+
+Permissions for a study
+
+
+List study permissions GET} />
+Add a study permission POST} />
+Remove a study permission DELETE} />
+
+
+### Notifications
+
+Notification subscriptions
+
+
+List notification subscriptions GET} />
+Update notification subscriptions PUT} />
+
+
+### Code lists
+
+Study code lists
+
+
+List code list keys GET} />
+List codes of a study code list GET} />
+Add codes to a study code list POST} />
+Remove a code from a study code list DELETE} />
+
+
+### Participants
+
+Participant operations
+
+
+Create virtual participant POST} />
+List participant responses GET} />
+Submit participant response POST} />
+Submit participant event POST} />
+Merge participants POST} />
+Edit participant PUT} />
+Get participants count GET} />
+Start participants export task POST} />
+Get participants export task status GET} />
+Get participants export task result GET} />
+List participants GET} />
+Get participant GET} />
+
+
+### Reports
+
+Participant reports
+
+
+Submit participant report POST} />
+Update participant report PUT} />
+Get report items count GET} />
+Start report export task POST} />
+Get report export task status GET} />
+Get report export task result GET} />
+List available report keys GET} />
+List reports GET} />
+Get report by ID GET} />
+
+
+### Responses
+
+Response exports & queries
+
+
+List survey info GET} />
+Get responses count GET} />
+Start responses export task POST} />
+Get responses export task status GET} />
+Get responses export task result GET} />
+List daily response exports GET} />
+Get daily response export by ID GET} />
+List confidential response exports GET} />
+Start confidential responses export task POST} />
+Get confidential response export by ID GET} />
+List survey responses GET} />
+Delete survey responses DELETE} />
+Get survey response by ID GET} />
+Delete survey response DELETE} />
+
+
+### Files
+
+File management for studies
+
+
+List files GET} />
+Get file by ID GET} />
+Delete file DELETE} />
+
+
+### Messaging
+
+Messaging templates & scheduled emails
+
+
+List global email templates GET} />
+Save global email template POST} />
+Get global email template by type GET} />
+Delete global email template DELETE} />
+List all study email templates GET} />
+List study email templates GET} />
+Save study email template POST} />
+Get study email template by type GET} />
+Delete study email template DELETE} />
+Save SMS template POST} />
+Get SMS template by type GET} />
+List scheduled emails GET} />
+Save scheduled email POST} />
+Get scheduled email GET} />
+Delete scheduled email DELETE} />
+
+
+### User management
+
+Management user accounts and permissions
+
+
+List management users GET} />
+Get management user GET} />
+Delete management user DELETE} />
+List user permissions GET} />
+Add permission to user POST} />
+Delete user permission DELETE} />
+Update permission limiter PUT} />
+Request participant user deletion POST} />
+
+
+### Service accounts
+
+Service account management
+
+
+List service accounts GET} />
+Create service account POST} />
+Get service account GET} />
+Delete service account DELETE} />
+Update service account PUT} />
+List service account API keys GET} />
+Create service account API key POST} />
+Delete service account API key DELETE} />
+List service account permissions GET} />
+Add permission to service account POST} />
+Delete service account permission DELETE} />
+Update service account permission limiter PUT} />
+
+
+### App roles
+
+App role templates & assignments
+
+
+List app roles for user GET} />
+Add app role to user POST} />
+Remove app role from user DELETE} />
+List app role templates GET} />
+Create app role template POST} />
+Get app role template GET} />
+Update app role template PUT} />
+Delete app role template DELETE} />
+Delete app role templates for app DELETE} />
+List app roles GET} />
+Delete app roles for app DELETE} />
+
+
+### Actions
+
+Run actions on participants
+
+
+Run actions on a participant POST} />
+Run actions on multiple participants POST} />
+Get actions task status GET} />
+Get actions task result GET} />
+Run actions on previous responses for a participant POST} />
+Run actions on previous responses for multiple participants POST} />
+Get previous-responses actions task status GET} />
+Get previous-responses actions task result GET} />
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/messaging/messaging_createScheduledEmail.mdx b/content/tech-docs/management-api/api/messaging/messaging_createScheduledEmail.mdx
new file mode 100644
index 0000000..fe37179
--- /dev/null
+++ b/content/tech-docs/management-api/api/messaging/messaging_createScheduledEmail.mdx
@@ -0,0 +1,15 @@
+---
+title: Save scheduled email
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/messaging/messaging_deleteGlobalEmailTemplate.mdx b/content/tech-docs/management-api/api/messaging/messaging_deleteGlobalEmailTemplate.mdx
new file mode 100644
index 0000000..e85e98d
--- /dev/null
+++ b/content/tech-docs/management-api/api/messaging/messaging_deleteGlobalEmailTemplate.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete global email template
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/messaging/messaging_deleteScheduledEmail.mdx b/content/tech-docs/management-api/api/messaging/messaging_deleteScheduledEmail.mdx
new file mode 100644
index 0000000..fdba593
--- /dev/null
+++ b/content/tech-docs/management-api/api/messaging/messaging_deleteScheduledEmail.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete scheduled email
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/messaging/messaging_deleteStudyEmailTemplate.mdx b/content/tech-docs/management-api/api/messaging/messaging_deleteStudyEmailTemplate.mdx
new file mode 100644
index 0000000..21ae082
--- /dev/null
+++ b/content/tech-docs/management-api/api/messaging/messaging_deleteStudyEmailTemplate.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete study email template
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/messaging/messaging_getGlobalEmailTemplate.mdx b/content/tech-docs/management-api/api/messaging/messaging_getGlobalEmailTemplate.mdx
new file mode 100644
index 0000000..9c2bfb6
--- /dev/null
+++ b/content/tech-docs/management-api/api/messaging/messaging_getGlobalEmailTemplate.mdx
@@ -0,0 +1,15 @@
+---
+title: Get global email template by type
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/messaging/messaging_getScheduledEmail.mdx b/content/tech-docs/management-api/api/messaging/messaging_getScheduledEmail.mdx
new file mode 100644
index 0000000..a9787e6
--- /dev/null
+++ b/content/tech-docs/management-api/api/messaging/messaging_getScheduledEmail.mdx
@@ -0,0 +1,15 @@
+---
+title: Get scheduled email
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/messaging/messaging_getSmsTemplate.mdx b/content/tech-docs/management-api/api/messaging/messaging_getSmsTemplate.mdx
new file mode 100644
index 0000000..10613ba
--- /dev/null
+++ b/content/tech-docs/management-api/api/messaging/messaging_getSmsTemplate.mdx
@@ -0,0 +1,15 @@
+---
+title: Get SMS template by type
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/messaging/messaging_getStudyEmailTemplate.mdx b/content/tech-docs/management-api/api/messaging/messaging_getStudyEmailTemplate.mdx
new file mode 100644
index 0000000..045af9d
--- /dev/null
+++ b/content/tech-docs/management-api/api/messaging/messaging_getStudyEmailTemplate.mdx
@@ -0,0 +1,15 @@
+---
+title: Get study email template by type
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/messaging/messaging_listAllStudyEmailTemplates.mdx b/content/tech-docs/management-api/api/messaging/messaging_listAllStudyEmailTemplates.mdx
new file mode 100644
index 0000000..33af81b
--- /dev/null
+++ b/content/tech-docs/management-api/api/messaging/messaging_listAllStudyEmailTemplates.mdx
@@ -0,0 +1,15 @@
+---
+title: List all study email templates
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/messaging/messaging_listGlobalEmailTemplates.mdx b/content/tech-docs/management-api/api/messaging/messaging_listGlobalEmailTemplates.mdx
new file mode 100644
index 0000000..08e2ced
--- /dev/null
+++ b/content/tech-docs/management-api/api/messaging/messaging_listGlobalEmailTemplates.mdx
@@ -0,0 +1,15 @@
+---
+title: List global email templates
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/messaging/messaging_listScheduledEmails.mdx b/content/tech-docs/management-api/api/messaging/messaging_listScheduledEmails.mdx
new file mode 100644
index 0000000..4183235
--- /dev/null
+++ b/content/tech-docs/management-api/api/messaging/messaging_listScheduledEmails.mdx
@@ -0,0 +1,15 @@
+---
+title: List scheduled emails
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/messaging/messaging_listStudyEmailTemplates.mdx b/content/tech-docs/management-api/api/messaging/messaging_listStudyEmailTemplates.mdx
new file mode 100644
index 0000000..585e565
--- /dev/null
+++ b/content/tech-docs/management-api/api/messaging/messaging_listStudyEmailTemplates.mdx
@@ -0,0 +1,15 @@
+---
+title: List study email templates
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/messaging/messaging_saveGlobalEmailTemplate.mdx b/content/tech-docs/management-api/api/messaging/messaging_saveGlobalEmailTemplate.mdx
new file mode 100644
index 0000000..86f8667
--- /dev/null
+++ b/content/tech-docs/management-api/api/messaging/messaging_saveGlobalEmailTemplate.mdx
@@ -0,0 +1,15 @@
+---
+title: Save global email template
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/messaging/messaging_saveSmsTemplate.mdx b/content/tech-docs/management-api/api/messaging/messaging_saveSmsTemplate.mdx
new file mode 100644
index 0000000..fc42cad
--- /dev/null
+++ b/content/tech-docs/management-api/api/messaging/messaging_saveSmsTemplate.mdx
@@ -0,0 +1,15 @@
+---
+title: Save SMS template
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/messaging/messaging_saveStudyEmailTemplate.mdx b/content/tech-docs/management-api/api/messaging/messaging_saveStudyEmailTemplate.mdx
new file mode 100644
index 0000000..4a750db
--- /dev/null
+++ b/content/tech-docs/management-api/api/messaging/messaging_saveStudyEmailTemplate.mdx
@@ -0,0 +1,15 @@
+---
+title: Save study email template
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/messaging/meta.json b/content/tech-docs/management-api/api/messaging/meta.json
new file mode 100644
index 0000000..cc37da8
--- /dev/null
+++ b/content/tech-docs/management-api/api/messaging/meta.json
@@ -0,0 +1,21 @@
+{
+ "title": "Messaging",
+ "description": "Messaging templates & scheduled emails",
+ "pages": [
+ "messaging_listGlobalEmailTemplates",
+ "messaging_saveGlobalEmailTemplate",
+ "messaging_getGlobalEmailTemplate",
+ "messaging_deleteGlobalEmailTemplate",
+ "messaging_listAllStudyEmailTemplates",
+ "messaging_listStudyEmailTemplates",
+ "messaging_saveStudyEmailTemplate",
+ "messaging_getStudyEmailTemplate",
+ "messaging_deleteStudyEmailTemplate",
+ "messaging_saveSmsTemplate",
+ "messaging_getSmsTemplate",
+ "messaging_listScheduledEmails",
+ "messaging_createScheduledEmail",
+ "messaging_getScheduledEmail",
+ "messaging_deleteScheduledEmail"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/meta.json b/content/tech-docs/management-api/api/meta.json
new file mode 100644
index 0000000..871d473
--- /dev/null
+++ b/content/tech-docs/management-api/api/meta.json
@@ -0,0 +1,22 @@
+{
+ "pages": [
+ "auth",
+ "studies",
+ "surveys",
+ "study-rules",
+ "study-variables",
+ "study-counters",
+ "study-permissions",
+ "notifications",
+ "code-lists",
+ "participants",
+ "reports",
+ "responses",
+ "files",
+ "messaging",
+ "user-management",
+ "service-accounts",
+ "app-roles",
+ "actions"
+ ]
+}
diff --git a/content/tech-docs/management-api/api/notifications/meta.json b/content/tech-docs/management-api/api/notifications/meta.json
new file mode 100644
index 0000000..d3757b7
--- /dev/null
+++ b/content/tech-docs/management-api/api/notifications/meta.json
@@ -0,0 +1,8 @@
+{
+ "title": "Notifications",
+ "description": "Notification subscriptions",
+ "pages": [
+ "notifications_getSubscriptions",
+ "notifications_updateSubscriptions"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/notifications/notifications_getSubscriptions.mdx b/content/tech-docs/management-api/api/notifications/notifications_getSubscriptions.mdx
new file mode 100644
index 0000000..94d3f08
--- /dev/null
+++ b/content/tech-docs/management-api/api/notifications/notifications_getSubscriptions.mdx
@@ -0,0 +1,15 @@
+---
+title: List notification subscriptions
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/notifications/notifications_updateSubscriptions.mdx b/content/tech-docs/management-api/api/notifications/notifications_updateSubscriptions.mdx
new file mode 100644
index 0000000..6e202a3
--- /dev/null
+++ b/content/tech-docs/management-api/api/notifications/notifications_updateSubscriptions.mdx
@@ -0,0 +1,15 @@
+---
+title: Update notification subscriptions
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/participants/dataExplorer_getParticipant.mdx b/content/tech-docs/management-api/api/participants/dataExplorer_getParticipant.mdx
new file mode 100644
index 0000000..4cdf299
--- /dev/null
+++ b/content/tech-docs/management-api/api/participants/dataExplorer_getParticipant.mdx
@@ -0,0 +1,15 @@
+---
+title: Get participant
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/participants/dataExplorer_listParticipants.mdx b/content/tech-docs/management-api/api/participants/dataExplorer_listParticipants.mdx
new file mode 100644
index 0000000..62af283
--- /dev/null
+++ b/content/tech-docs/management-api/api/participants/dataExplorer_listParticipants.mdx
@@ -0,0 +1,15 @@
+---
+title: List participants
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/participants/dataExporter_generateParticipantsExport.mdx b/content/tech-docs/management-api/api/participants/dataExporter_generateParticipantsExport.mdx
new file mode 100644
index 0000000..36ad307
--- /dev/null
+++ b/content/tech-docs/management-api/api/participants/dataExporter_generateParticipantsExport.mdx
@@ -0,0 +1,15 @@
+---
+title: Start participants export task
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/participants/dataExporter_getParticipantsCount.mdx b/content/tech-docs/management-api/api/participants/dataExporter_getParticipantsCount.mdx
new file mode 100644
index 0000000..5ec503a
--- /dev/null
+++ b/content/tech-docs/management-api/api/participants/dataExporter_getParticipantsCount.mdx
@@ -0,0 +1,15 @@
+---
+title: Get participants count
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/participants/dataExporter_getParticipantsTaskResult.mdx b/content/tech-docs/management-api/api/participants/dataExporter_getParticipantsTaskResult.mdx
new file mode 100644
index 0000000..3f996dc
--- /dev/null
+++ b/content/tech-docs/management-api/api/participants/dataExporter_getParticipantsTaskResult.mdx
@@ -0,0 +1,15 @@
+---
+title: Get participants export task result
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/participants/dataExporter_getParticipantsTaskStatus.mdx b/content/tech-docs/management-api/api/participants/dataExporter_getParticipantsTaskStatus.mdx
new file mode 100644
index 0000000..a95534b
--- /dev/null
+++ b/content/tech-docs/management-api/api/participants/dataExporter_getParticipantsTaskStatus.mdx
@@ -0,0 +1,15 @@
+---
+title: Get participants export task status
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/participants/meta.json b/content/tech-docs/management-api/api/participants/meta.json
new file mode 100644
index 0000000..d5c5af4
--- /dev/null
+++ b/content/tech-docs/management-api/api/participants/meta.json
@@ -0,0 +1,18 @@
+{
+ "title": "Participants",
+ "description": "Participant operations",
+ "pages": [
+ "participants_createVirtualParticipant",
+ "participants_listParticipantResponses",
+ "participants_submitParticipantResponse",
+ "participants_submitParticipantEvent",
+ "participants_mergeParticipants",
+ "participants_editParticipant",
+ "dataExporter_getParticipantsCount",
+ "dataExporter_generateParticipantsExport",
+ "dataExporter_getParticipantsTaskStatus",
+ "dataExporter_getParticipantsTaskResult",
+ "dataExplorer_listParticipants",
+ "dataExplorer_getParticipant"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/participants/participants_createVirtualParticipant.mdx b/content/tech-docs/management-api/api/participants/participants_createVirtualParticipant.mdx
new file mode 100644
index 0000000..0ae4ea5
--- /dev/null
+++ b/content/tech-docs/management-api/api/participants/participants_createVirtualParticipant.mdx
@@ -0,0 +1,15 @@
+---
+title: Create virtual participant
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/participants/participants_editParticipant.mdx b/content/tech-docs/management-api/api/participants/participants_editParticipant.mdx
new file mode 100644
index 0000000..654ddfd
--- /dev/null
+++ b/content/tech-docs/management-api/api/participants/participants_editParticipant.mdx
@@ -0,0 +1,15 @@
+---
+title: Edit participant
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/participants/participants_listParticipantResponses.mdx b/content/tech-docs/management-api/api/participants/participants_listParticipantResponses.mdx
new file mode 100644
index 0000000..fafe4b0
--- /dev/null
+++ b/content/tech-docs/management-api/api/participants/participants_listParticipantResponses.mdx
@@ -0,0 +1,15 @@
+---
+title: List participant responses
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/participants/participants_mergeParticipants.mdx b/content/tech-docs/management-api/api/participants/participants_mergeParticipants.mdx
new file mode 100644
index 0000000..d7967b7
--- /dev/null
+++ b/content/tech-docs/management-api/api/participants/participants_mergeParticipants.mdx
@@ -0,0 +1,15 @@
+---
+title: Merge participants
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/participants/participants_submitParticipantEvent.mdx b/content/tech-docs/management-api/api/participants/participants_submitParticipantEvent.mdx
new file mode 100644
index 0000000..9f1b711
--- /dev/null
+++ b/content/tech-docs/management-api/api/participants/participants_submitParticipantEvent.mdx
@@ -0,0 +1,15 @@
+---
+title: Submit participant event
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/participants/participants_submitParticipantResponse.mdx b/content/tech-docs/management-api/api/participants/participants_submitParticipantResponse.mdx
new file mode 100644
index 0000000..1a1061f
--- /dev/null
+++ b/content/tech-docs/management-api/api/participants/participants_submitParticipantResponse.mdx
@@ -0,0 +1,15 @@
+---
+title: Submit participant response
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/reports/dataExplorer_getReport.mdx b/content/tech-docs/management-api/api/reports/dataExplorer_getReport.mdx
new file mode 100644
index 0000000..a4e6d10
--- /dev/null
+++ b/content/tech-docs/management-api/api/reports/dataExplorer_getReport.mdx
@@ -0,0 +1,15 @@
+---
+title: Get report by ID
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/reports/dataExplorer_listReportKeys.mdx b/content/tech-docs/management-api/api/reports/dataExplorer_listReportKeys.mdx
new file mode 100644
index 0000000..9b19db8
--- /dev/null
+++ b/content/tech-docs/management-api/api/reports/dataExplorer_listReportKeys.mdx
@@ -0,0 +1,15 @@
+---
+title: List available report keys
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/reports/dataExplorer_listReports.mdx b/content/tech-docs/management-api/api/reports/dataExplorer_listReports.mdx
new file mode 100644
index 0000000..df65a57
--- /dev/null
+++ b/content/tech-docs/management-api/api/reports/dataExplorer_listReports.mdx
@@ -0,0 +1,15 @@
+---
+title: List reports
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/reports/dataExporter_generateReportsExport.mdx b/content/tech-docs/management-api/api/reports/dataExporter_generateReportsExport.mdx
new file mode 100644
index 0000000..05524a5
--- /dev/null
+++ b/content/tech-docs/management-api/api/reports/dataExporter_generateReportsExport.mdx
@@ -0,0 +1,15 @@
+---
+title: Start report export task
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/reports/dataExporter_getReportsCount.mdx b/content/tech-docs/management-api/api/reports/dataExporter_getReportsCount.mdx
new file mode 100644
index 0000000..def46b1
--- /dev/null
+++ b/content/tech-docs/management-api/api/reports/dataExporter_getReportsCount.mdx
@@ -0,0 +1,15 @@
+---
+title: Get report items count
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/reports/dataExporter_getReportsTaskResult.mdx b/content/tech-docs/management-api/api/reports/dataExporter_getReportsTaskResult.mdx
new file mode 100644
index 0000000..a56e637
--- /dev/null
+++ b/content/tech-docs/management-api/api/reports/dataExporter_getReportsTaskResult.mdx
@@ -0,0 +1,15 @@
+---
+title: Get report export task result
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/reports/dataExporter_getReportsTaskStatus.mdx b/content/tech-docs/management-api/api/reports/dataExporter_getReportsTaskStatus.mdx
new file mode 100644
index 0000000..0874db5
--- /dev/null
+++ b/content/tech-docs/management-api/api/reports/dataExporter_getReportsTaskStatus.mdx
@@ -0,0 +1,15 @@
+---
+title: Get report export task status
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/reports/meta.json b/content/tech-docs/management-api/api/reports/meta.json
new file mode 100644
index 0000000..21b8647
--- /dev/null
+++ b/content/tech-docs/management-api/api/reports/meta.json
@@ -0,0 +1,15 @@
+{
+ "title": "Reports",
+ "description": "Participant reports",
+ "pages": [
+ "participants_submitParticipantReport",
+ "participants_updateParticipantReport",
+ "dataExporter_getReportsCount",
+ "dataExporter_generateReportsExport",
+ "dataExporter_getReportsTaskStatus",
+ "dataExporter_getReportsTaskResult",
+ "dataExplorer_listReportKeys",
+ "dataExplorer_listReports",
+ "dataExplorer_getReport"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/reports/participants_submitParticipantReport.mdx b/content/tech-docs/management-api/api/reports/participants_submitParticipantReport.mdx
new file mode 100644
index 0000000..12faff4
--- /dev/null
+++ b/content/tech-docs/management-api/api/reports/participants_submitParticipantReport.mdx
@@ -0,0 +1,15 @@
+---
+title: Submit participant report
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/reports/participants_updateParticipantReport.mdx b/content/tech-docs/management-api/api/reports/participants_updateParticipantReport.mdx
new file mode 100644
index 0000000..bd66c71
--- /dev/null
+++ b/content/tech-docs/management-api/api/reports/participants_updateParticipantReport.mdx
@@ -0,0 +1,15 @@
+---
+title: Update participant report
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/responses/dataExplorer_deleteResponse.mdx b/content/tech-docs/management-api/api/responses/dataExplorer_deleteResponse.mdx
new file mode 100644
index 0000000..f5a1dc1
--- /dev/null
+++ b/content/tech-docs/management-api/api/responses/dataExplorer_deleteResponse.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete survey response
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/responses/dataExplorer_deleteResponses.mdx b/content/tech-docs/management-api/api/responses/dataExplorer_deleteResponses.mdx
new file mode 100644
index 0000000..afb70b0
--- /dev/null
+++ b/content/tech-docs/management-api/api/responses/dataExplorer_deleteResponses.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete survey responses
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/responses/dataExplorer_getResponse.mdx b/content/tech-docs/management-api/api/responses/dataExplorer_getResponse.mdx
new file mode 100644
index 0000000..6f35848
--- /dev/null
+++ b/content/tech-docs/management-api/api/responses/dataExplorer_getResponse.mdx
@@ -0,0 +1,15 @@
+---
+title: Get survey response by ID
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/responses/dataExplorer_listResponses.mdx b/content/tech-docs/management-api/api/responses/dataExplorer_listResponses.mdx
new file mode 100644
index 0000000..716dd52
--- /dev/null
+++ b/content/tech-docs/management-api/api/responses/dataExplorer_listResponses.mdx
@@ -0,0 +1,15 @@
+---
+title: List survey responses
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/responses/dataExporter_generateResponsesExport.mdx b/content/tech-docs/management-api/api/responses/dataExporter_generateResponsesExport.mdx
new file mode 100644
index 0000000..be71cb9
--- /dev/null
+++ b/content/tech-docs/management-api/api/responses/dataExporter_generateResponsesExport.mdx
@@ -0,0 +1,15 @@
+---
+title: Start responses export task
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/responses/dataExporter_getConfidentialResponseExport.mdx b/content/tech-docs/management-api/api/responses/dataExporter_getConfidentialResponseExport.mdx
new file mode 100644
index 0000000..a540340
--- /dev/null
+++ b/content/tech-docs/management-api/api/responses/dataExporter_getConfidentialResponseExport.mdx
@@ -0,0 +1,15 @@
+---
+title: Get confidential response export by ID
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/responses/dataExporter_getConfidentialResponses.mdx b/content/tech-docs/management-api/api/responses/dataExporter_getConfidentialResponses.mdx
new file mode 100644
index 0000000..d8e874f
--- /dev/null
+++ b/content/tech-docs/management-api/api/responses/dataExporter_getConfidentialResponses.mdx
@@ -0,0 +1,15 @@
+---
+title: Start confidential responses export task
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/responses/dataExporter_getDailyResponseExport.mdx b/content/tech-docs/management-api/api/responses/dataExporter_getDailyResponseExport.mdx
new file mode 100644
index 0000000..08475e3
--- /dev/null
+++ b/content/tech-docs/management-api/api/responses/dataExporter_getDailyResponseExport.mdx
@@ -0,0 +1,15 @@
+---
+title: Get daily response export by ID
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/responses/dataExporter_getResponsesCount.mdx b/content/tech-docs/management-api/api/responses/dataExporter_getResponsesCount.mdx
new file mode 100644
index 0000000..3f980f8
--- /dev/null
+++ b/content/tech-docs/management-api/api/responses/dataExporter_getResponsesCount.mdx
@@ -0,0 +1,15 @@
+---
+title: Get responses count
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/responses/dataExporter_getResponsesTaskResult.mdx b/content/tech-docs/management-api/api/responses/dataExporter_getResponsesTaskResult.mdx
new file mode 100644
index 0000000..51bf4c6
--- /dev/null
+++ b/content/tech-docs/management-api/api/responses/dataExporter_getResponsesTaskResult.mdx
@@ -0,0 +1,15 @@
+---
+title: Get responses export task result
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/responses/dataExporter_getResponsesTaskStatus.mdx b/content/tech-docs/management-api/api/responses/dataExporter_getResponsesTaskStatus.mdx
new file mode 100644
index 0000000..da338ee
--- /dev/null
+++ b/content/tech-docs/management-api/api/responses/dataExporter_getResponsesTaskStatus.mdx
@@ -0,0 +1,15 @@
+---
+title: Get responses export task status
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/responses/dataExporter_getSurveyInfo.mdx b/content/tech-docs/management-api/api/responses/dataExporter_getSurveyInfo.mdx
new file mode 100644
index 0000000..9730667
--- /dev/null
+++ b/content/tech-docs/management-api/api/responses/dataExporter_getSurveyInfo.mdx
@@ -0,0 +1,15 @@
+---
+title: List survey info
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/responses/dataExporter_listConfidentialResponseExports.mdx b/content/tech-docs/management-api/api/responses/dataExporter_listConfidentialResponseExports.mdx
new file mode 100644
index 0000000..479c279
--- /dev/null
+++ b/content/tech-docs/management-api/api/responses/dataExporter_listConfidentialResponseExports.mdx
@@ -0,0 +1,15 @@
+---
+title: List confidential response exports
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/responses/dataExporter_listDailyResponseExports.mdx b/content/tech-docs/management-api/api/responses/dataExporter_listDailyResponseExports.mdx
new file mode 100644
index 0000000..25aba6b
--- /dev/null
+++ b/content/tech-docs/management-api/api/responses/dataExporter_listDailyResponseExports.mdx
@@ -0,0 +1,15 @@
+---
+title: List daily response exports
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/responses/meta.json b/content/tech-docs/management-api/api/responses/meta.json
new file mode 100644
index 0000000..1bf5a2b
--- /dev/null
+++ b/content/tech-docs/management-api/api/responses/meta.json
@@ -0,0 +1,20 @@
+{
+ "title": "Responses",
+ "description": "Response exports & queries",
+ "pages": [
+ "dataExporter_getSurveyInfo",
+ "dataExporter_getResponsesCount",
+ "dataExporter_generateResponsesExport",
+ "dataExporter_getResponsesTaskStatus",
+ "dataExporter_getResponsesTaskResult",
+ "dataExporter_listDailyResponseExports",
+ "dataExporter_getDailyResponseExport",
+ "dataExporter_listConfidentialResponseExports",
+ "dataExporter_getConfidentialResponses",
+ "dataExporter_getConfidentialResponseExport",
+ "dataExplorer_listResponses",
+ "dataExplorer_deleteResponses",
+ "dataExplorer_getResponse",
+ "dataExplorer_deleteResponse"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/service-accounts/meta.json b/content/tech-docs/management-api/api/service-accounts/meta.json
new file mode 100644
index 0000000..3a54011
--- /dev/null
+++ b/content/tech-docs/management-api/api/service-accounts/meta.json
@@ -0,0 +1,18 @@
+{
+ "title": "Service accounts",
+ "description": "Service account management",
+ "pages": [
+ "userManagement_listServiceAccounts",
+ "userManagement_createServiceAccount",
+ "userManagement_getServiceAccount",
+ "userManagement_deleteServiceAccount",
+ "userManagement_updateServiceAccount",
+ "userManagement_listServiceAccountAPIKeys",
+ "userManagement_createServiceAccountAPIKey",
+ "userManagement_deleteServiceAccountAPIKey",
+ "userManagement_listServiceAccountPermissions",
+ "userManagement_addPermissionToServiceAccount",
+ "userManagement_deleteServiceAccountPermission",
+ "userManagement_updateServiceAccountPermissionLimiter"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/service-accounts/userManagement_addPermissionToServiceAccount.mdx b/content/tech-docs/management-api/api/service-accounts/userManagement_addPermissionToServiceAccount.mdx
new file mode 100644
index 0000000..10efc78
--- /dev/null
+++ b/content/tech-docs/management-api/api/service-accounts/userManagement_addPermissionToServiceAccount.mdx
@@ -0,0 +1,15 @@
+---
+title: Add permission to service account
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/service-accounts/userManagement_createServiceAccount.mdx b/content/tech-docs/management-api/api/service-accounts/userManagement_createServiceAccount.mdx
new file mode 100644
index 0000000..47d903b
--- /dev/null
+++ b/content/tech-docs/management-api/api/service-accounts/userManagement_createServiceAccount.mdx
@@ -0,0 +1,15 @@
+---
+title: Create service account
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/service-accounts/userManagement_createServiceAccountAPIKey.mdx b/content/tech-docs/management-api/api/service-accounts/userManagement_createServiceAccountAPIKey.mdx
new file mode 100644
index 0000000..579ee41
--- /dev/null
+++ b/content/tech-docs/management-api/api/service-accounts/userManagement_createServiceAccountAPIKey.mdx
@@ -0,0 +1,15 @@
+---
+title: Create service account API key
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/service-accounts/userManagement_deleteServiceAccount.mdx b/content/tech-docs/management-api/api/service-accounts/userManagement_deleteServiceAccount.mdx
new file mode 100644
index 0000000..98c33c9
--- /dev/null
+++ b/content/tech-docs/management-api/api/service-accounts/userManagement_deleteServiceAccount.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete service account
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/service-accounts/userManagement_deleteServiceAccountAPIKey.mdx b/content/tech-docs/management-api/api/service-accounts/userManagement_deleteServiceAccountAPIKey.mdx
new file mode 100644
index 0000000..5c53adb
--- /dev/null
+++ b/content/tech-docs/management-api/api/service-accounts/userManagement_deleteServiceAccountAPIKey.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete service account API key
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/service-accounts/userManagement_deleteServiceAccountPermission.mdx b/content/tech-docs/management-api/api/service-accounts/userManagement_deleteServiceAccountPermission.mdx
new file mode 100644
index 0000000..763841d
--- /dev/null
+++ b/content/tech-docs/management-api/api/service-accounts/userManagement_deleteServiceAccountPermission.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete service account permission
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/service-accounts/userManagement_getServiceAccount.mdx b/content/tech-docs/management-api/api/service-accounts/userManagement_getServiceAccount.mdx
new file mode 100644
index 0000000..de0ee21
--- /dev/null
+++ b/content/tech-docs/management-api/api/service-accounts/userManagement_getServiceAccount.mdx
@@ -0,0 +1,15 @@
+---
+title: Get service account
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/service-accounts/userManagement_listServiceAccountAPIKeys.mdx b/content/tech-docs/management-api/api/service-accounts/userManagement_listServiceAccountAPIKeys.mdx
new file mode 100644
index 0000000..5d0010e
--- /dev/null
+++ b/content/tech-docs/management-api/api/service-accounts/userManagement_listServiceAccountAPIKeys.mdx
@@ -0,0 +1,15 @@
+---
+title: List service account API keys
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/service-accounts/userManagement_listServiceAccountPermissions.mdx b/content/tech-docs/management-api/api/service-accounts/userManagement_listServiceAccountPermissions.mdx
new file mode 100644
index 0000000..d250c00
--- /dev/null
+++ b/content/tech-docs/management-api/api/service-accounts/userManagement_listServiceAccountPermissions.mdx
@@ -0,0 +1,15 @@
+---
+title: List service account permissions
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/service-accounts/userManagement_listServiceAccounts.mdx b/content/tech-docs/management-api/api/service-accounts/userManagement_listServiceAccounts.mdx
new file mode 100644
index 0000000..550404c
--- /dev/null
+++ b/content/tech-docs/management-api/api/service-accounts/userManagement_listServiceAccounts.mdx
@@ -0,0 +1,15 @@
+---
+title: List service accounts
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/service-accounts/userManagement_updateServiceAccount.mdx b/content/tech-docs/management-api/api/service-accounts/userManagement_updateServiceAccount.mdx
new file mode 100644
index 0000000..413fe08
--- /dev/null
+++ b/content/tech-docs/management-api/api/service-accounts/userManagement_updateServiceAccount.mdx
@@ -0,0 +1,15 @@
+---
+title: Update service account
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/service-accounts/userManagement_updateServiceAccountPermissionLimiter.mdx b/content/tech-docs/management-api/api/service-accounts/userManagement_updateServiceAccountPermissionLimiter.mdx
new file mode 100644
index 0000000..95eea45
--- /dev/null
+++ b/content/tech-docs/management-api/api/service-accounts/userManagement_updateServiceAccountPermissionLimiter.mdx
@@ -0,0 +1,15 @@
+---
+title: Update service account permission limiter
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/studies/meta.json b/content/tech-docs/management-api/api/studies/meta.json
new file mode 100644
index 0000000..cb63d70
--- /dev/null
+++ b/content/tech-docs/management-api/api/studies/meta.json
@@ -0,0 +1,15 @@
+{
+ "title": "Studies",
+ "description": "Study management",
+ "pages": [
+ "studies_listStudies",
+ "studies_createStudy",
+ "studies_getStudy",
+ "studies_deleteStudy",
+ "studies_exportConfig",
+ "studies_updateIsDefault",
+ "studies_updateStatus",
+ "studies_updateDisplayProps",
+ "studies_updateFileUploadRule"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/studies/studies_createStudy.mdx b/content/tech-docs/management-api/api/studies/studies_createStudy.mdx
new file mode 100644
index 0000000..7a5134c
--- /dev/null
+++ b/content/tech-docs/management-api/api/studies/studies_createStudy.mdx
@@ -0,0 +1,15 @@
+---
+title: Create a new study
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/studies/studies_deleteStudy.mdx b/content/tech-docs/management-api/api/studies/studies_deleteStudy.mdx
new file mode 100644
index 0000000..0ad41a9
--- /dev/null
+++ b/content/tech-docs/management-api/api/studies/studies_deleteStudy.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete a study by key
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/studies/studies_exportConfig.mdx b/content/tech-docs/management-api/api/studies/studies_exportConfig.mdx
new file mode 100644
index 0000000..fe57c03
--- /dev/null
+++ b/content/tech-docs/management-api/api/studies/studies_exportConfig.mdx
@@ -0,0 +1,15 @@
+---
+title: Export study configuration, surveys, and rules
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/studies/studies_getStudy.mdx b/content/tech-docs/management-api/api/studies/studies_getStudy.mdx
new file mode 100644
index 0000000..9690a17
--- /dev/null
+++ b/content/tech-docs/management-api/api/studies/studies_getStudy.mdx
@@ -0,0 +1,15 @@
+---
+title: Get study configuration by key
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/studies/studies_listStudies.mdx b/content/tech-docs/management-api/api/studies/studies_listStudies.mdx
new file mode 100644
index 0000000..5dc10ce
--- /dev/null
+++ b/content/tech-docs/management-api/api/studies/studies_listStudies.mdx
@@ -0,0 +1,15 @@
+---
+title: List all studies
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/studies/studies_updateDisplayProps.mdx b/content/tech-docs/management-api/api/studies/studies_updateDisplayProps.mdx
new file mode 100644
index 0000000..2ca1b08
--- /dev/null
+++ b/content/tech-docs/management-api/api/studies/studies_updateDisplayProps.mdx
@@ -0,0 +1,15 @@
+---
+title: Update display properties of a study
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/studies/studies_updateFileUploadRule.mdx b/content/tech-docs/management-api/api/studies/studies_updateFileUploadRule.mdx
new file mode 100644
index 0000000..abb2741
--- /dev/null
+++ b/content/tech-docs/management-api/api/studies/studies_updateFileUploadRule.mdx
@@ -0,0 +1,15 @@
+---
+title: Update file upload configuration of a study
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/studies/studies_updateIsDefault.mdx b/content/tech-docs/management-api/api/studies/studies_updateIsDefault.mdx
new file mode 100644
index 0000000..6943fd0
--- /dev/null
+++ b/content/tech-docs/management-api/api/studies/studies_updateIsDefault.mdx
@@ -0,0 +1,15 @@
+---
+title: Update default status of a study
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/studies/studies_updateStatus.mdx b/content/tech-docs/management-api/api/studies/studies_updateStatus.mdx
new file mode 100644
index 0000000..a89878d
--- /dev/null
+++ b/content/tech-docs/management-api/api/studies/studies_updateStatus.mdx
@@ -0,0 +1,15 @@
+---
+title: Update status of a study
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-counters/meta.json b/content/tech-docs/management-api/api/study-counters/meta.json
new file mode 100644
index 0000000..59a58ac
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-counters/meta.json
@@ -0,0 +1,10 @@
+{
+ "title": "Study counters",
+ "description": "Study counters",
+ "pages": [
+ "studyCounters_listValues",
+ "studyCounters_saveValue",
+ "studyCounters_removeValue",
+ "studyCounters_incrementValue"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-counters/studyCounters_incrementValue.mdx b/content/tech-docs/management-api/api/study-counters/studyCounters_incrementValue.mdx
new file mode 100644
index 0000000..c328008
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-counters/studyCounters_incrementValue.mdx
@@ -0,0 +1,15 @@
+---
+title: Increment a study counter value
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-counters/studyCounters_listValues.mdx b/content/tech-docs/management-api/api/study-counters/studyCounters_listValues.mdx
new file mode 100644
index 0000000..9df8ccc
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-counters/studyCounters_listValues.mdx
@@ -0,0 +1,15 @@
+---
+title: List all study counter values
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-counters/studyCounters_removeValue.mdx b/content/tech-docs/management-api/api/study-counters/studyCounters_removeValue.mdx
new file mode 100644
index 0000000..ac41173
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-counters/studyCounters_removeValue.mdx
@@ -0,0 +1,15 @@
+---
+title: Remove a study counter value
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-counters/studyCounters_saveValue.mdx b/content/tech-docs/management-api/api/study-counters/studyCounters_saveValue.mdx
new file mode 100644
index 0000000..db2da90
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-counters/studyCounters_saveValue.mdx
@@ -0,0 +1,15 @@
+---
+title: Set a study counter value for scope
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-permissions/meta.json b/content/tech-docs/management-api/api/study-permissions/meta.json
new file mode 100644
index 0000000..b1af529
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-permissions/meta.json
@@ -0,0 +1,9 @@
+{
+ "title": "Study permissions",
+ "description": "Permissions for a study",
+ "pages": [
+ "studyPermissions_listPermissions",
+ "studyPermissions_addPermission",
+ "studyPermissions_removePermission"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-permissions/studyPermissions_addPermission.mdx b/content/tech-docs/management-api/api/study-permissions/studyPermissions_addPermission.mdx
new file mode 100644
index 0000000..b576cae
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-permissions/studyPermissions_addPermission.mdx
@@ -0,0 +1,15 @@
+---
+title: Add a study permission
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-permissions/studyPermissions_listPermissions.mdx b/content/tech-docs/management-api/api/study-permissions/studyPermissions_listPermissions.mdx
new file mode 100644
index 0000000..1b0fffc
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-permissions/studyPermissions_listPermissions.mdx
@@ -0,0 +1,15 @@
+---
+title: List study permissions
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-permissions/studyPermissions_removePermission.mdx b/content/tech-docs/management-api/api/study-permissions/studyPermissions_removePermission.mdx
new file mode 100644
index 0000000..84b41d4
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-permissions/studyPermissions_removePermission.mdx
@@ -0,0 +1,15 @@
+---
+title: Remove a study permission
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-rules/meta.json b/content/tech-docs/management-api/api/study-rules/meta.json
new file mode 100644
index 0000000..03fc9b2
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-rules/meta.json
@@ -0,0 +1,11 @@
+{
+ "title": "Study rules",
+ "description": "Study rules",
+ "pages": [
+ "studyRules_getCurrent",
+ "studyRules_publishNewVersion",
+ "studyRules_listVersions",
+ "studyRules_getVersion",
+ "studyRules_deleteVersion"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-rules/studyRules_deleteVersion.mdx b/content/tech-docs/management-api/api/study-rules/studyRules_deleteVersion.mdx
new file mode 100644
index 0000000..1f82a72
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-rules/studyRules_deleteVersion.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete a study rules version
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-rules/studyRules_getCurrent.mdx b/content/tech-docs/management-api/api/study-rules/studyRules_getCurrent.mdx
new file mode 100644
index 0000000..c7ff670
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-rules/studyRules_getCurrent.mdx
@@ -0,0 +1,15 @@
+---
+title: Get current published study rules
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-rules/studyRules_getVersion.mdx b/content/tech-docs/management-api/api/study-rules/studyRules_getVersion.mdx
new file mode 100644
index 0000000..467a470
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-rules/studyRules_getVersion.mdx
@@ -0,0 +1,15 @@
+---
+title: Get a study rules version by ID
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-rules/studyRules_listVersions.mdx b/content/tech-docs/management-api/api/study-rules/studyRules_listVersions.mdx
new file mode 100644
index 0000000..6e61b6e
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-rules/studyRules_listVersions.mdx
@@ -0,0 +1,15 @@
+---
+title: List all study rules versions
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-rules/studyRules_publishNewVersion.mdx b/content/tech-docs/management-api/api/study-rules/studyRules_publishNewVersion.mdx
new file mode 100644
index 0000000..6f8ee27
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-rules/studyRules_publishNewVersion.mdx
@@ -0,0 +1,15 @@
+---
+title: Publish a new version of study rules
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-variables/meta.json b/content/tech-docs/management-api/api/study-variables/meta.json
new file mode 100644
index 0000000..57506b9
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-variables/meta.json
@@ -0,0 +1,12 @@
+{
+ "title": "Study variables",
+ "description": "Study variables",
+ "pages": [
+ "studyVariables_listVariables",
+ "studyVariables_addVariable",
+ "studyVariables_getVariable",
+ "studyVariables_deleteVariable",
+ "studyVariables_updateVariableDef",
+ "studyVariables_updateVariableValue"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-variables/studyVariables_addVariable.mdx b/content/tech-docs/management-api/api/study-variables/studyVariables_addVariable.mdx
new file mode 100644
index 0000000..aef8197
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-variables/studyVariables_addVariable.mdx
@@ -0,0 +1,15 @@
+---
+title: Create a new study variable
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-variables/studyVariables_deleteVariable.mdx b/content/tech-docs/management-api/api/study-variables/studyVariables_deleteVariable.mdx
new file mode 100644
index 0000000..2ce2cb1
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-variables/studyVariables_deleteVariable.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete a study variable
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-variables/studyVariables_getVariable.mdx b/content/tech-docs/management-api/api/study-variables/studyVariables_getVariable.mdx
new file mode 100644
index 0000000..e0b78bd
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-variables/studyVariables_getVariable.mdx
@@ -0,0 +1,15 @@
+---
+title: Get a study variable by key
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-variables/studyVariables_listVariables.mdx b/content/tech-docs/management-api/api/study-variables/studyVariables_listVariables.mdx
new file mode 100644
index 0000000..a581ecd
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-variables/studyVariables_listVariables.mdx
@@ -0,0 +1,15 @@
+---
+title: List study variables
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-variables/studyVariables_updateVariableDef.mdx b/content/tech-docs/management-api/api/study-variables/studyVariables_updateVariableDef.mdx
new file mode 100644
index 0000000..4a055f3
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-variables/studyVariables_updateVariableDef.mdx
@@ -0,0 +1,15 @@
+---
+title: Update study variable definition
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/study-variables/studyVariables_updateVariableValue.mdx b/content/tech-docs/management-api/api/study-variables/studyVariables_updateVariableValue.mdx
new file mode 100644
index 0000000..642e2b0
--- /dev/null
+++ b/content/tech-docs/management-api/api/study-variables/studyVariables_updateVariableValue.mdx
@@ -0,0 +1,15 @@
+---
+title: Update study variable value
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/surveys/meta.json b/content/tech-docs/management-api/api/surveys/meta.json
new file mode 100644
index 0000000..1cacbe4
--- /dev/null
+++ b/content/tech-docs/management-api/api/surveys/meta.json
@@ -0,0 +1,14 @@
+{
+ "title": "Surveys",
+ "description": "Survey management",
+ "pages": [
+ "surveys_listSurveyInfos",
+ "surveys_createSurvey",
+ "surveys_getLatestSurvey",
+ "surveys_updateSurvey",
+ "surveys_unpublishSurvey",
+ "surveys_listSurveyVersions",
+ "surveys_getSurveyVersion",
+ "surveys_deleteSurveyVersion"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/surveys/surveys_createSurvey.mdx b/content/tech-docs/management-api/api/surveys/surveys_createSurvey.mdx
new file mode 100644
index 0000000..90e5583
--- /dev/null
+++ b/content/tech-docs/management-api/api/surveys/surveys_createSurvey.mdx
@@ -0,0 +1,15 @@
+---
+title: Create a new survey in a study
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/surveys/surveys_deleteSurveyVersion.mdx b/content/tech-docs/management-api/api/surveys/surveys_deleteSurveyVersion.mdx
new file mode 100644
index 0000000..b7314b7
--- /dev/null
+++ b/content/tech-docs/management-api/api/surveys/surveys_deleteSurveyVersion.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete a survey version
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/surveys/surveys_getLatestSurvey.mdx b/content/tech-docs/management-api/api/surveys/surveys_getLatestSurvey.mdx
new file mode 100644
index 0000000..d74261c
--- /dev/null
+++ b/content/tech-docs/management-api/api/surveys/surveys_getLatestSurvey.mdx
@@ -0,0 +1,15 @@
+---
+title: Get latest survey by key
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/surveys/surveys_getSurveyVersion.mdx b/content/tech-docs/management-api/api/surveys/surveys_getSurveyVersion.mdx
new file mode 100644
index 0000000..08458da
--- /dev/null
+++ b/content/tech-docs/management-api/api/surveys/surveys_getSurveyVersion.mdx
@@ -0,0 +1,15 @@
+---
+title: Get a specific survey version
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/surveys/surveys_listSurveyInfos.mdx b/content/tech-docs/management-api/api/surveys/surveys_listSurveyInfos.mdx
new file mode 100644
index 0000000..780ff86
--- /dev/null
+++ b/content/tech-docs/management-api/api/surveys/surveys_listSurveyInfos.mdx
@@ -0,0 +1,15 @@
+---
+title: List survey infos for a study
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/surveys/surveys_listSurveyVersions.mdx b/content/tech-docs/management-api/api/surveys/surveys_listSurveyVersions.mdx
new file mode 100644
index 0000000..9c4cc13
--- /dev/null
+++ b/content/tech-docs/management-api/api/surveys/surveys_listSurveyVersions.mdx
@@ -0,0 +1,15 @@
+---
+title: List all survey versions
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/surveys/surveys_unpublishSurvey.mdx b/content/tech-docs/management-api/api/surveys/surveys_unpublishSurvey.mdx
new file mode 100644
index 0000000..c1cf67f
--- /dev/null
+++ b/content/tech-docs/management-api/api/surveys/surveys_unpublishSurvey.mdx
@@ -0,0 +1,15 @@
+---
+title: Unpublish a survey
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/surveys/surveys_updateSurvey.mdx b/content/tech-docs/management-api/api/surveys/surveys_updateSurvey.mdx
new file mode 100644
index 0000000..85d5640
--- /dev/null
+++ b/content/tech-docs/management-api/api/surveys/surveys_updateSurvey.mdx
@@ -0,0 +1,15 @@
+---
+title: Update survey definition
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/user-management/meta.json b/content/tech-docs/management-api/api/user-management/meta.json
new file mode 100644
index 0000000..550dce6
--- /dev/null
+++ b/content/tech-docs/management-api/api/user-management/meta.json
@@ -0,0 +1,14 @@
+{
+ "title": "User management",
+ "description": "Management user accounts and permissions",
+ "pages": [
+ "userManagement_listManagementUsers",
+ "userManagement_getManagementUser",
+ "userManagement_deleteManagementUser",
+ "userManagement_listUserPermissions",
+ "userManagement_addPermissionToUser",
+ "userManagement_deleteUserPermission",
+ "userManagement_updatePermissionLimiter",
+ "userManagement_requestParticipantUserDeletion"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/user-management/userManagement_addPermissionToUser.mdx b/content/tech-docs/management-api/api/user-management/userManagement_addPermissionToUser.mdx
new file mode 100644
index 0000000..47b75d2
--- /dev/null
+++ b/content/tech-docs/management-api/api/user-management/userManagement_addPermissionToUser.mdx
@@ -0,0 +1,15 @@
+---
+title: Add permission to user
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/user-management/userManagement_deleteManagementUser.mdx b/content/tech-docs/management-api/api/user-management/userManagement_deleteManagementUser.mdx
new file mode 100644
index 0000000..2d55eb1
--- /dev/null
+++ b/content/tech-docs/management-api/api/user-management/userManagement_deleteManagementUser.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete management user
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/user-management/userManagement_deleteUserPermission.mdx b/content/tech-docs/management-api/api/user-management/userManagement_deleteUserPermission.mdx
new file mode 100644
index 0000000..7ccd7f8
--- /dev/null
+++ b/content/tech-docs/management-api/api/user-management/userManagement_deleteUserPermission.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete user permission
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/user-management/userManagement_getManagementUser.mdx b/content/tech-docs/management-api/api/user-management/userManagement_getManagementUser.mdx
new file mode 100644
index 0000000..b8037b8
--- /dev/null
+++ b/content/tech-docs/management-api/api/user-management/userManagement_getManagementUser.mdx
@@ -0,0 +1,15 @@
+---
+title: Get management user
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/user-management/userManagement_listManagementUsers.mdx b/content/tech-docs/management-api/api/user-management/userManagement_listManagementUsers.mdx
new file mode 100644
index 0000000..0f9d389
--- /dev/null
+++ b/content/tech-docs/management-api/api/user-management/userManagement_listManagementUsers.mdx
@@ -0,0 +1,15 @@
+---
+title: List management users
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/user-management/userManagement_listUserPermissions.mdx b/content/tech-docs/management-api/api/user-management/userManagement_listUserPermissions.mdx
new file mode 100644
index 0000000..34fe322
--- /dev/null
+++ b/content/tech-docs/management-api/api/user-management/userManagement_listUserPermissions.mdx
@@ -0,0 +1,15 @@
+---
+title: List user permissions
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/user-management/userManagement_requestParticipantUserDeletion.mdx b/content/tech-docs/management-api/api/user-management/userManagement_requestParticipantUserDeletion.mdx
new file mode 100644
index 0000000..006df0f
--- /dev/null
+++ b/content/tech-docs/management-api/api/user-management/userManagement_requestParticipantUserDeletion.mdx
@@ -0,0 +1,15 @@
+---
+title: Request participant user deletion
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/user-management/userManagement_updatePermissionLimiter.mdx b/content/tech-docs/management-api/api/user-management/userManagement_updatePermissionLimiter.mdx
new file mode 100644
index 0000000..464d54d
--- /dev/null
+++ b/content/tech-docs/management-api/api/user-management/userManagement_updatePermissionLimiter.mdx
@@ -0,0 +1,15 @@
+---
+title: Update permission limiter
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api.mdx b/content/tech-docs/participant-api/api.mdx
deleted file mode 100644
index 391b47a..0000000
--- a/content/tech-docs/participant-api/api.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
----
-title: API
-description: Participant API
----
diff --git a/content/tech-docs/participant-api/api/auth/getTempTokenInfo.mdx b/content/tech-docs/participant-api/api/auth/getTempTokenInfo.mdx
new file mode 100644
index 0000000..0c80916
--- /dev/null
+++ b/content/tech-docs/participant-api/api/auth/getTempTokenInfo.mdx
@@ -0,0 +1,15 @@
+---
+title: Get info for a temporary token
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/auth/loginWithEmail.mdx b/content/tech-docs/participant-api/api/auth/loginWithEmail.mdx
new file mode 100644
index 0000000..ab9cb56
--- /dev/null
+++ b/content/tech-docs/participant-api/api/auth/loginWithEmail.mdx
@@ -0,0 +1,15 @@
+---
+title: Login with email and password
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/auth/loginWithTempToken.mdx b/content/tech-docs/participant-api/api/auth/loginWithTempToken.mdx
new file mode 100644
index 0000000..3b4b0d2
--- /dev/null
+++ b/content/tech-docs/participant-api/api/auth/loginWithTempToken.mdx
@@ -0,0 +1,15 @@
+---
+title: Login using a temporary token (optionally with password or access token)
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/auth/logout.mdx b/content/tech-docs/participant-api/api/auth/logout.mdx
new file mode 100644
index 0000000..f8de5c0
--- /dev/null
+++ b/content/tech-docs/participant-api/api/auth/logout.mdx
@@ -0,0 +1,15 @@
+---
+title: Logout user (invalidate current session)
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/auth/meta.json b/content/tech-docs/participant-api/api/auth/meta.json
new file mode 100644
index 0000000..4df1042
--- /dev/null
+++ b/content/tech-docs/participant-api/api/auth/meta.json
@@ -0,0 +1,18 @@
+{
+ "title": "Auth",
+ "description": "Authentication endpoints",
+ "pages": [
+ "loginWithEmail",
+ "signupWithEmail",
+ "loginWithTempToken",
+ "getTempTokenInfo",
+ "renewToken",
+ "validateToken",
+ "revokeTokens",
+ "resendEmailVerification",
+ "verifyEmail",
+ "logout",
+ "requestOTP",
+ "verifyOTP"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/auth/renewToken.mdx b/content/tech-docs/participant-api/api/auth/renewToken.mdx
new file mode 100644
index 0000000..ca23365
--- /dev/null
+++ b/content/tech-docs/participant-api/api/auth/renewToken.mdx
@@ -0,0 +1,15 @@
+---
+title: Renew access token
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/auth/requestOTP.mdx b/content/tech-docs/participant-api/api/auth/requestOTP.mdx
new file mode 100644
index 0000000..eb5c8d0
--- /dev/null
+++ b/content/tech-docs/participant-api/api/auth/requestOTP.mdx
@@ -0,0 +1,15 @@
+---
+title: Request OTP (email by default)
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/auth/resendEmailVerification.mdx b/content/tech-docs/participant-api/api/auth/resendEmailVerification.mdx
new file mode 100644
index 0000000..f7744f8
--- /dev/null
+++ b/content/tech-docs/participant-api/api/auth/resendEmailVerification.mdx
@@ -0,0 +1,15 @@
+---
+title: Resend email verification
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/auth/revokeTokens.mdx b/content/tech-docs/participant-api/api/auth/revokeTokens.mdx
new file mode 100644
index 0000000..e2dc7da
--- /dev/null
+++ b/content/tech-docs/participant-api/api/auth/revokeTokens.mdx
@@ -0,0 +1,15 @@
+---
+title: Revoke refresh tokens for user
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/auth/signupWithEmail.mdx b/content/tech-docs/participant-api/api/auth/signupWithEmail.mdx
new file mode 100644
index 0000000..5f9ed73
--- /dev/null
+++ b/content/tech-docs/participant-api/api/auth/signupWithEmail.mdx
@@ -0,0 +1,15 @@
+---
+title: Sign up with email
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/auth/validateToken.mdx b/content/tech-docs/participant-api/api/auth/validateToken.mdx
new file mode 100644
index 0000000..f8b8d48
--- /dev/null
+++ b/content/tech-docs/participant-api/api/auth/validateToken.mdx
@@ -0,0 +1,15 @@
+---
+title: Validate access token
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/auth/verifyEmail.mdx b/content/tech-docs/participant-api/api/auth/verifyEmail.mdx
new file mode 100644
index 0000000..385e254
--- /dev/null
+++ b/content/tech-docs/participant-api/api/auth/verifyEmail.mdx
@@ -0,0 +1,15 @@
+---
+title: Verify email by token
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/auth/verifyOTP.mdx b/content/tech-docs/participant-api/api/auth/verifyOTP.mdx
new file mode 100644
index 0000000..5f2063c
--- /dev/null
+++ b/content/tech-docs/participant-api/api/auth/verifyOTP.mdx
@@ -0,0 +1,15 @@
+---
+title: Verify OTP code
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/events/customStudyEvent.mdx b/content/tech-docs/participant-api/api/events/customStudyEvent.mdx
new file mode 100644
index 0000000..9e646ae
--- /dev/null
+++ b/content/tech-docs/participant-api/api/events/customStudyEvent.mdx
@@ -0,0 +1,15 @@
+---
+title: Trigger a custom study event
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/events/enterStudy.mdx b/content/tech-docs/participant-api/api/events/enterStudy.mdx
new file mode 100644
index 0000000..589af6e
--- /dev/null
+++ b/content/tech-docs/participant-api/api/events/enterStudy.mdx
@@ -0,0 +1,15 @@
+---
+title: Enter a study
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/events/leaveStudyEvent.mdx b/content/tech-docs/participant-api/api/events/leaveStudyEvent.mdx
new file mode 100644
index 0000000..28dad4d
--- /dev/null
+++ b/content/tech-docs/participant-api/api/events/leaveStudyEvent.mdx
@@ -0,0 +1,15 @@
+---
+title: Leave a study
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/events/mergeTempParticipant.mdx b/content/tech-docs/participant-api/api/events/mergeTempParticipant.mdx
new file mode 100644
index 0000000..2c316d5
--- /dev/null
+++ b/content/tech-docs/participant-api/api/events/mergeTempParticipant.mdx
@@ -0,0 +1,15 @@
+---
+title: Merge temporary participant into user profile
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/events/mergeVirtualParticipant.mdx b/content/tech-docs/participant-api/api/events/mergeVirtualParticipant.mdx
new file mode 100644
index 0000000..3be9048
--- /dev/null
+++ b/content/tech-docs/participant-api/api/events/mergeVirtualParticipant.mdx
@@ -0,0 +1,15 @@
+---
+title: Merge a virtual participant into user profile by linking code
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/events/meta.json b/content/tech-docs/participant-api/api/events/meta.json
new file mode 100644
index 0000000..0472764
--- /dev/null
+++ b/content/tech-docs/participant-api/api/events/meta.json
@@ -0,0 +1,14 @@
+{
+ "title": "Events",
+ "description": "Study service events endpoints",
+ "pages": [
+ "enterStudy",
+ "customStudyEvent",
+ "submitSurveyEvent",
+ "leaveStudyEvent",
+ "mergeTempParticipant",
+ "mergeVirtualParticipant",
+ "registerTempParticipant",
+ "submitTempParticipantResponse"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/events/registerTempParticipant.mdx b/content/tech-docs/participant-api/api/events/registerTempParticipant.mdx
new file mode 100644
index 0000000..9b50483
--- /dev/null
+++ b/content/tech-docs/participant-api/api/events/registerTempParticipant.mdx
@@ -0,0 +1,15 @@
+---
+title: Register a temporary participant
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/events/submitSurveyEvent.mdx b/content/tech-docs/participant-api/api/events/submitSurveyEvent.mdx
new file mode 100644
index 0000000..52b07a7
--- /dev/null
+++ b/content/tech-docs/participant-api/api/events/submitSurveyEvent.mdx
@@ -0,0 +1,15 @@
+---
+title: Submit survey response
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/events/submitTempParticipantResponse.mdx b/content/tech-docs/participant-api/api/events/submitTempParticipantResponse.mdx
new file mode 100644
index 0000000..a1594c9
--- /dev/null
+++ b/content/tech-docs/participant-api/api/events/submitTempParticipantResponse.mdx
@@ -0,0 +1,15 @@
+---
+title: Submit a survey response for a temporary participant
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/index.mdx b/content/tech-docs/participant-api/api/index.mdx
new file mode 100644
index 0000000..57910e5
--- /dev/null
+++ b/content/tech-docs/participant-api/api/index.mdx
@@ -0,0 +1,117 @@
+---
+title: Participant API
+description: Endpoints for participant authentication, user management, and study interactions.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
+### Auth
+
+Authentication endpoints
+
+
+Login with email and password POST} />
+Sign up with email POST} />
+Login using a temporary token (optionally with password or access token) POST} />
+Get info for a temporary token POST} />
+Renew access token POST} />
+Validate access token GET} />
+Revoke refresh tokens for user GET} />
+Resend email verification POST} />
+Verify email by token POST} />
+Logout user (invalidate current session) POST} />
+Request OTP (email by default) GET} />
+Verify OTP code POST} />
+
+
+### Password
+
+Password endpoints
+
+
+Initiate password reset POST} />
+Get info for a password reset token POST} />
+Reset password POST} />
+
+
+### Events
+
+Study service events endpoints
+
+
+Enter a study POST} />
+Trigger a custom study event POST} />
+Submit survey response POST} />
+Leave a study POST} />
+Merge temporary participant into user profile POST} />
+Merge a virtual participant into user profile by linking code POST} />
+Register a temporary participant POST} />
+Submit a survey response for a temporary participant POST} />
+
+
+### Participant data
+
+Endpoints getting participant data in study service
+
+
+Get assigned surveys for profiles GET} />
+Get a specific survey with context GET} />
+Get participant state GET} />
+Get a linking code by key GET} />
+Get survey responses for a profile GET} />
+Get confidential responses by key GET} />
+Get submission history for profiles GET} />
+Get reports for a profile GET} />
+Get assigned surveys for a temporary participant GET} />
+Get a survey with context for a temporary participant GET} />
+Get virtual participants by linking code GET} />
+List participant files GET} />
+Upload participant file POST} />
+Download participant file GET} />
+Delete participant file DELETE} />
+
+
+### Studies
+
+Endpoints getting study data in study service
+
+
+List studies by status GET} />
+Get study by key GET} />
+Check if a code exists in a code list GET} />
+Count available codes in a code list GET} />
+List variables for a study GET} />
+Get a study variable GET} />
+List studies the user participates in GET} />
+
+
+### User
+
+User endpoints
+
+
+Get current user GET} />
+Delete current user DELETE} />
+Update the account's preferred language PUT} />
+Add new profile POST} />
+Update profile PUT} />
+Remove a profile POST} />
+Change password POST} />
+Change account email POST} />
+Change phone number POST} />
+Request phone number verification code via SMS GET} />
+Get user attributes GET} />
+Create or update a user attribute POST} />
+Delete a user attribute DELETE} />
+Update contact preferences PUT} description={"Update the user's newsletter and weekly subscription preferences."} />
+
+
+### Misc
+
+Miscellaneous
+
+
+Health check GET} />
+Unsubscribe user from newsletter (via token) POST} />
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/meta.json b/content/tech-docs/participant-api/api/meta.json
new file mode 100644
index 0000000..53cb925
--- /dev/null
+++ b/content/tech-docs/participant-api/api/meta.json
@@ -0,0 +1,11 @@
+{
+ "pages": [
+ "auth",
+ "password",
+ "events",
+ "participant-data",
+ "studies",
+ "user",
+ "misc"
+ ]
+}
diff --git a/content/tech-docs/participant-api/api/misc/getHealth.mdx b/content/tech-docs/participant-api/api/misc/getHealth.mdx
new file mode 100644
index 0000000..292fe3a
--- /dev/null
+++ b/content/tech-docs/participant-api/api/misc/getHealth.mdx
@@ -0,0 +1,15 @@
+---
+title: Health check
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/misc/meta.json b/content/tech-docs/participant-api/api/misc/meta.json
new file mode 100644
index 0000000..848a564
--- /dev/null
+++ b/content/tech-docs/participant-api/api/misc/meta.json
@@ -0,0 +1,8 @@
+{
+ "title": "Misc",
+ "description": "Miscellaneous",
+ "pages": [
+ "getHealth",
+ "unsubscribeNewsletter"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/misc/unsubscribeNewsletter.mdx b/content/tech-docs/participant-api/api/misc/unsubscribeNewsletter.mdx
new file mode 100644
index 0000000..b13d4c9
--- /dev/null
+++ b/content/tech-docs/participant-api/api/misc/unsubscribeNewsletter.mdx
@@ -0,0 +1,15 @@
+---
+title: Unsubscribe user from newsletter (via token)
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/participant-data/deleteParticipantFile.mdx b/content/tech-docs/participant-api/api/participant-data/deleteParticipantFile.mdx
new file mode 100644
index 0000000..4de1d0e
--- /dev/null
+++ b/content/tech-docs/participant-api/api/participant-data/deleteParticipantFile.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete participant file
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/participant-data/getAssignedSurveys.mdx b/content/tech-docs/participant-api/api/participant-data/getAssignedSurveys.mdx
new file mode 100644
index 0000000..5fbcbbf
--- /dev/null
+++ b/content/tech-docs/participant-api/api/participant-data/getAssignedSurveys.mdx
@@ -0,0 +1,15 @@
+---
+title: Get assigned surveys for profiles
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/participant-data/getConfidentialResponse.mdx b/content/tech-docs/participant-api/api/participant-data/getConfidentialResponse.mdx
new file mode 100644
index 0000000..fc1af2b
--- /dev/null
+++ b/content/tech-docs/participant-api/api/participant-data/getConfidentialResponse.mdx
@@ -0,0 +1,15 @@
+---
+title: Get confidential responses by key
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/participant-data/getLinkingCode.mdx b/content/tech-docs/participant-api/api/participant-data/getLinkingCode.mdx
new file mode 100644
index 0000000..e50f267
--- /dev/null
+++ b/content/tech-docs/participant-api/api/participant-data/getLinkingCode.mdx
@@ -0,0 +1,15 @@
+---
+title: Get a linking code by key
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/participant-data/getParticipantFile.mdx b/content/tech-docs/participant-api/api/participant-data/getParticipantFile.mdx
new file mode 100644
index 0000000..0d7f724
--- /dev/null
+++ b/content/tech-docs/participant-api/api/participant-data/getParticipantFile.mdx
@@ -0,0 +1,15 @@
+---
+title: Download participant file
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/participant-data/getParticipantState.mdx b/content/tech-docs/participant-api/api/participant-data/getParticipantState.mdx
new file mode 100644
index 0000000..61c6bd1
--- /dev/null
+++ b/content/tech-docs/participant-api/api/participant-data/getParticipantState.mdx
@@ -0,0 +1,15 @@
+---
+title: Get participant state
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/participant-data/getReports.mdx b/content/tech-docs/participant-api/api/participant-data/getReports.mdx
new file mode 100644
index 0000000..d3058bf
--- /dev/null
+++ b/content/tech-docs/participant-api/api/participant-data/getReports.mdx
@@ -0,0 +1,15 @@
+---
+title: Get reports for a profile
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/participant-data/getStudyResponsesForProfile.mdx b/content/tech-docs/participant-api/api/participant-data/getStudyResponsesForProfile.mdx
new file mode 100644
index 0000000..fc9e7db
--- /dev/null
+++ b/content/tech-docs/participant-api/api/participant-data/getStudyResponsesForProfile.mdx
@@ -0,0 +1,15 @@
+---
+title: Get survey responses for a profile
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/participant-data/getSubmissionHistory.mdx b/content/tech-docs/participant-api/api/participant-data/getSubmissionHistory.mdx
new file mode 100644
index 0000000..333bbc8
--- /dev/null
+++ b/content/tech-docs/participant-api/api/participant-data/getSubmissionHistory.mdx
@@ -0,0 +1,15 @@
+---
+title: Get submission history for profiles
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/participant-data/getSurveyWithContext.mdx b/content/tech-docs/participant-api/api/participant-data/getSurveyWithContext.mdx
new file mode 100644
index 0000000..cd2dd39
--- /dev/null
+++ b/content/tech-docs/participant-api/api/participant-data/getSurveyWithContext.mdx
@@ -0,0 +1,15 @@
+---
+title: Get a specific survey with context
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/participant-data/getTempParticipantSurveyWithContext.mdx b/content/tech-docs/participant-api/api/participant-data/getTempParticipantSurveyWithContext.mdx
new file mode 100644
index 0000000..7dfbcf9
--- /dev/null
+++ b/content/tech-docs/participant-api/api/participant-data/getTempParticipantSurveyWithContext.mdx
@@ -0,0 +1,15 @@
+---
+title: Get a survey with context for a temporary participant
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/participant-data/getTempParticipantSurveys.mdx b/content/tech-docs/participant-api/api/participant-data/getTempParticipantSurveys.mdx
new file mode 100644
index 0000000..1a84263
--- /dev/null
+++ b/content/tech-docs/participant-api/api/participant-data/getTempParticipantSurveys.mdx
@@ -0,0 +1,15 @@
+---
+title: Get assigned surveys for a temporary participant
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/participant-data/getVirtualParticipantsByLinkingCode.mdx b/content/tech-docs/participant-api/api/participant-data/getVirtualParticipantsByLinkingCode.mdx
new file mode 100644
index 0000000..eff198b
--- /dev/null
+++ b/content/tech-docs/participant-api/api/participant-data/getVirtualParticipantsByLinkingCode.mdx
@@ -0,0 +1,15 @@
+---
+title: Get virtual participants by linking code
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/participant-data/listParticipantFiles.mdx b/content/tech-docs/participant-api/api/participant-data/listParticipantFiles.mdx
new file mode 100644
index 0000000..d5a67a7
--- /dev/null
+++ b/content/tech-docs/participant-api/api/participant-data/listParticipantFiles.mdx
@@ -0,0 +1,15 @@
+---
+title: List participant files
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/participant-data/meta.json b/content/tech-docs/participant-api/api/participant-data/meta.json
new file mode 100644
index 0000000..7019238
--- /dev/null
+++ b/content/tech-docs/participant-api/api/participant-data/meta.json
@@ -0,0 +1,21 @@
+{
+ "title": "Participant data",
+ "description": "Endpoints getting participant data in study service",
+ "pages": [
+ "getAssignedSurveys",
+ "getSurveyWithContext",
+ "getParticipantState",
+ "getLinkingCode",
+ "getStudyResponsesForProfile",
+ "getConfidentialResponse",
+ "getSubmissionHistory",
+ "getReports",
+ "getTempParticipantSurveys",
+ "getTempParticipantSurveyWithContext",
+ "getVirtualParticipantsByLinkingCode",
+ "listParticipantFiles",
+ "uploadParticipantFile",
+ "getParticipantFile",
+ "deleteParticipantFile"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/participant-data/uploadParticipantFile.mdx b/content/tech-docs/participant-api/api/participant-data/uploadParticipantFile.mdx
new file mode 100644
index 0000000..04e3e7a
--- /dev/null
+++ b/content/tech-docs/participant-api/api/participant-data/uploadParticipantFile.mdx
@@ -0,0 +1,15 @@
+---
+title: Upload participant file
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/password/getPasswordResetInfos.mdx b/content/tech-docs/participant-api/api/password/getPasswordResetInfos.mdx
new file mode 100644
index 0000000..c6d30cb
--- /dev/null
+++ b/content/tech-docs/participant-api/api/password/getPasswordResetInfos.mdx
@@ -0,0 +1,15 @@
+---
+title: Get info for a password reset token
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/password/initiatePasswordReset.mdx b/content/tech-docs/participant-api/api/password/initiatePasswordReset.mdx
new file mode 100644
index 0000000..b5e24c8
--- /dev/null
+++ b/content/tech-docs/participant-api/api/password/initiatePasswordReset.mdx
@@ -0,0 +1,15 @@
+---
+title: Initiate password reset
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/password/meta.json b/content/tech-docs/participant-api/api/password/meta.json
new file mode 100644
index 0000000..61f19e3
--- /dev/null
+++ b/content/tech-docs/participant-api/api/password/meta.json
@@ -0,0 +1,9 @@
+{
+ "title": "Password",
+ "description": "Password endpoints",
+ "pages": [
+ "initiatePasswordReset",
+ "getPasswordResetInfos",
+ "resetPassword"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/password/resetPassword.mdx b/content/tech-docs/participant-api/api/password/resetPassword.mdx
new file mode 100644
index 0000000..bbc4331
--- /dev/null
+++ b/content/tech-docs/participant-api/api/password/resetPassword.mdx
@@ -0,0 +1,15 @@
+---
+title: Reset password
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/studies/getParticipatingStudies.mdx b/content/tech-docs/participant-api/api/studies/getParticipatingStudies.mdx
new file mode 100644
index 0000000..380c3fd
--- /dev/null
+++ b/content/tech-docs/participant-api/api/studies/getParticipatingStudies.mdx
@@ -0,0 +1,15 @@
+---
+title: List studies the user participates in
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/studies/getStudiesByStatus.mdx b/content/tech-docs/participant-api/api/studies/getStudiesByStatus.mdx
new file mode 100644
index 0000000..8e76067
--- /dev/null
+++ b/content/tech-docs/participant-api/api/studies/getStudiesByStatus.mdx
@@ -0,0 +1,15 @@
+---
+title: List studies by status
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/studies/getStudy.mdx b/content/tech-docs/participant-api/api/studies/getStudy.mdx
new file mode 100644
index 0000000..e671bce
--- /dev/null
+++ b/content/tech-docs/participant-api/api/studies/getStudy.mdx
@@ -0,0 +1,15 @@
+---
+title: Get study by key
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/studies/getStudyCodeListAvailableCount.mdx b/content/tech-docs/participant-api/api/studies/getStudyCodeListAvailableCount.mdx
new file mode 100644
index 0000000..4464860
--- /dev/null
+++ b/content/tech-docs/participant-api/api/studies/getStudyCodeListAvailableCount.mdx
@@ -0,0 +1,15 @@
+---
+title: Count available codes in a code list
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/studies/getStudyVariable.mdx b/content/tech-docs/participant-api/api/studies/getStudyVariable.mdx
new file mode 100644
index 0000000..ec1cd51
--- /dev/null
+++ b/content/tech-docs/participant-api/api/studies/getStudyVariable.mdx
@@ -0,0 +1,15 @@
+---
+title: Get a study variable
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/studies/getStudyVariables.mdx b/content/tech-docs/participant-api/api/studies/getStudyVariables.mdx
new file mode 100644
index 0000000..568cf16
--- /dev/null
+++ b/content/tech-docs/participant-api/api/studies/getStudyVariables.mdx
@@ -0,0 +1,15 @@
+---
+title: List variables for a study
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/studies/meta.json b/content/tech-docs/participant-api/api/studies/meta.json
new file mode 100644
index 0000000..3363d80
--- /dev/null
+++ b/content/tech-docs/participant-api/api/studies/meta.json
@@ -0,0 +1,13 @@
+{
+ "title": "Studies",
+ "description": "Endpoints getting study data in study service",
+ "pages": [
+ "getStudiesByStatus",
+ "getStudy",
+ "studyHasCodeListCode",
+ "getStudyCodeListAvailableCount",
+ "getStudyVariables",
+ "getStudyVariable",
+ "getParticipatingStudies"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/studies/studyHasCodeListCode.mdx b/content/tech-docs/participant-api/api/studies/studyHasCodeListCode.mdx
new file mode 100644
index 0000000..68bc6de
--- /dev/null
+++ b/content/tech-docs/participant-api/api/studies/studyHasCodeListCode.mdx
@@ -0,0 +1,15 @@
+---
+title: Check if a code exists in a code list
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/user/addProfile.mdx b/content/tech-docs/participant-api/api/user/addProfile.mdx
new file mode 100644
index 0000000..85914a2
--- /dev/null
+++ b/content/tech-docs/participant-api/api/user/addProfile.mdx
@@ -0,0 +1,15 @@
+---
+title: Add new profile
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/user/changeAccountEmail.mdx b/content/tech-docs/participant-api/api/user/changeAccountEmail.mdx
new file mode 100644
index 0000000..5d07ecb
--- /dev/null
+++ b/content/tech-docs/participant-api/api/user/changeAccountEmail.mdx
@@ -0,0 +1,15 @@
+---
+title: Change account email
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/user/changePassword.mdx b/content/tech-docs/participant-api/api/user/changePassword.mdx
new file mode 100644
index 0000000..b2a0d6e
--- /dev/null
+++ b/content/tech-docs/participant-api/api/user/changePassword.mdx
@@ -0,0 +1,15 @@
+---
+title: Change password
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/user/changePhoneNumber.mdx b/content/tech-docs/participant-api/api/user/changePhoneNumber.mdx
new file mode 100644
index 0000000..e23f995
--- /dev/null
+++ b/content/tech-docs/participant-api/api/user/changePhoneNumber.mdx
@@ -0,0 +1,15 @@
+---
+title: Change phone number
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/user/deleteUser.mdx b/content/tech-docs/participant-api/api/user/deleteUser.mdx
new file mode 100644
index 0000000..c138fa6
--- /dev/null
+++ b/content/tech-docs/participant-api/api/user/deleteUser.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete current user
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/user/deleteUserAttribute.mdx b/content/tech-docs/participant-api/api/user/deleteUserAttribute.mdx
new file mode 100644
index 0000000..3a09abe
--- /dev/null
+++ b/content/tech-docs/participant-api/api/user/deleteUserAttribute.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete a user attribute
+full: true
+_openapi:
+ method: DELETE
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/user/getUser.mdx b/content/tech-docs/participant-api/api/user/getUser.mdx
new file mode 100644
index 0000000..d37b5e6
--- /dev/null
+++ b/content/tech-docs/participant-api/api/user/getUser.mdx
@@ -0,0 +1,15 @@
+---
+title: Get current user
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/user/getUserAttributes.mdx b/content/tech-docs/participant-api/api/user/getUserAttributes.mdx
new file mode 100644
index 0000000..09012fa
--- /dev/null
+++ b/content/tech-docs/participant-api/api/user/getUserAttributes.mdx
@@ -0,0 +1,15 @@
+---
+title: Get user attributes
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/user/meta.json b/content/tech-docs/participant-api/api/user/meta.json
new file mode 100644
index 0000000..4ec2cf9
--- /dev/null
+++ b/content/tech-docs/participant-api/api/user/meta.json
@@ -0,0 +1,20 @@
+{
+ "title": "User",
+ "description": "User endpoints",
+ "pages": [
+ "getUser",
+ "deleteUser",
+ "updatePreferredLanguage",
+ "addProfile",
+ "updateProfile",
+ "removeProfile",
+ "changePassword",
+ "changeAccountEmail",
+ "changePhoneNumber",
+ "requestPhoneNumberVerification",
+ "getUserAttributes",
+ "setUserAttribute",
+ "deleteUserAttribute",
+ "updateContactPreferences"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/user/removeProfile.mdx b/content/tech-docs/participant-api/api/user/removeProfile.mdx
new file mode 100644
index 0000000..f224789
--- /dev/null
+++ b/content/tech-docs/participant-api/api/user/removeProfile.mdx
@@ -0,0 +1,15 @@
+---
+title: Remove a profile
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/user/requestPhoneNumberVerification.mdx b/content/tech-docs/participant-api/api/user/requestPhoneNumberVerification.mdx
new file mode 100644
index 0000000..ed4f5aa
--- /dev/null
+++ b/content/tech-docs/participant-api/api/user/requestPhoneNumberVerification.mdx
@@ -0,0 +1,15 @@
+---
+title: Request phone number verification code via SMS
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/user/setUserAttribute.mdx b/content/tech-docs/participant-api/api/user/setUserAttribute.mdx
new file mode 100644
index 0000000..966e23f
--- /dev/null
+++ b/content/tech-docs/participant-api/api/user/setUserAttribute.mdx
@@ -0,0 +1,15 @@
+---
+title: Create or update a user attribute
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/user/updateContactPreferences.mdx b/content/tech-docs/participant-api/api/user/updateContactPreferences.mdx
new file mode 100644
index 0000000..19951d5
--- /dev/null
+++ b/content/tech-docs/participant-api/api/user/updateContactPreferences.mdx
@@ -0,0 +1,16 @@
+---
+title: Update contact preferences
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: Update the user's newsletter and weekly subscription preferences.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/user/updatePreferredLanguage.mdx b/content/tech-docs/participant-api/api/user/updatePreferredLanguage.mdx
new file mode 100644
index 0000000..797dbfc
--- /dev/null
+++ b/content/tech-docs/participant-api/api/user/updatePreferredLanguage.mdx
@@ -0,0 +1,15 @@
+---
+title: Update the account's preferred language
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/api/user/updateProfile.mdx b/content/tech-docs/participant-api/api/user/updateProfile.mdx
new file mode 100644
index 0000000..0ede110
--- /dev/null
+++ b/content/tech-docs/participant-api/api/user/updateProfile.mdx
@@ -0,0 +1,15 @@
+---
+title: Update profile
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/participant-api/meta.json b/content/tech-docs/participant-api/meta.json
index 47c1d96..abccb1d 100644
--- a/content/tech-docs/participant-api/meta.json
+++ b/content/tech-docs/participant-api/meta.json
@@ -1,6 +1,6 @@
{
"title": "Participant API",
- "description": "TODO",
+ "description": "API for participant-facing operations",
"root": true,
"icon": "Globe",
"pages": [
diff --git a/content/tech-docs/smtp-bridge/api.mdx b/content/tech-docs/smtp-bridge/api.mdx
deleted file mode 100644
index 9a3c444..0000000
--- a/content/tech-docs/smtp-bridge/api.mdx
+++ /dev/null
@@ -1,4 +0,0 @@
----
-title: API
-description: SMTP Bridge API
----
diff --git a/content/tech-docs/smtp-bridge/api/getHealth.mdx b/content/tech-docs/smtp-bridge/api/getHealth.mdx
new file mode 100644
index 0000000..cc2b955
--- /dev/null
+++ b/content/tech-docs/smtp-bridge/api/getHealth.mdx
@@ -0,0 +1,15 @@
+---
+title: Health check
+full: true
+_openapi:
+ method: GET
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/smtp-bridge/api/index.mdx b/content/tech-docs/smtp-bridge/api/index.mdx
new file mode 100644
index 0000000..8e23e89
--- /dev/null
+++ b/content/tech-docs/smtp-bridge/api/index.mdx
@@ -0,0 +1,11 @@
+---
+title: SMTP Bridge API
+description: Simple bridge for sending emails via configured SMTP servers.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
+Health check GET} />
+Send an email POST} />
+
\ No newline at end of file
diff --git a/content/tech-docs/smtp-bridge/api/meta.json b/content/tech-docs/smtp-bridge/api/meta.json
new file mode 100644
index 0000000..eb96376
--- /dev/null
+++ b/content/tech-docs/smtp-bridge/api/meta.json
@@ -0,0 +1,6 @@
+{
+ "pages": [
+ "getHealth",
+ "sendEmail"
+ ]
+}
diff --git a/content/tech-docs/smtp-bridge/api/sendEmail.mdx b/content/tech-docs/smtp-bridge/api/sendEmail.mdx
new file mode 100644
index 0000000..58c0865
--- /dev/null
+++ b/content/tech-docs/smtp-bridge/api/sendEmail.mdx
@@ -0,0 +1,15 @@
+---
+title: Send an email
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/smtp-bridge/meta.json b/content/tech-docs/smtp-bridge/meta.json
index 7a02bea..dcded40 100644
--- a/content/tech-docs/smtp-bridge/meta.json
+++ b/content/tech-docs/smtp-bridge/meta.json
@@ -1,6 +1,6 @@
{
"title": "SMTP Bridge",
- "description": "TODO",
+ "description": "Email service integration",
"root": true,
"icon": "Mail",
"pages": [
From fb1f283f49174af4570216e03bc227bf35e94432 Mon Sep 17 00:00:00 2001
From: kschneider84 <77678452+kschneider84@users.noreply.github.com>
Date: Fri, 26 Jun 2026 10:46:52 +0200
Subject: [PATCH 15/21] Remove redundant json files
---
public/openapi/management-api.json | 10091 --------------------------
public/openapi/participant-api.json | 4054 -----------
public/openapi/smtp-bridge.json | 243 -
3 files changed, 14388 deletions(-)
delete mode 100644 public/openapi/management-api.json
delete mode 100644 public/openapi/participant-api.json
delete mode 100644 public/openapi/smtp-bridge.json
diff --git a/public/openapi/management-api.json b/public/openapi/management-api.json
deleted file mode 100644
index 7cbaf90..0000000
--- a/public/openapi/management-api.json
+++ /dev/null
@@ -1,10091 +0,0 @@
-{
- "openapi": "3.1.0",
- "info": {
- "title": "Management API",
- "version": "1.0.0",
- "description": "Endpoints for management authentication, user management, study administration, messaging, and participant administration."
- },
- "tags": [
- {
- "name": "auth",
- "description": "Authentication & Session"
- },
- {
- "name": "studies",
- "description": "Study management"
- },
- {
- "name": "surveys",
- "description": "Survey management"
- },
- {
- "name": "study-rules",
- "description": "Study rules"
- },
- {
- "name": "study-variables",
- "description": "Study variables"
- },
- {
- "name": "study-counters",
- "description": "Study counters"
- },
- {
- "name": "study-permissions",
- "description": "Permissions for a study"
- },
- {
- "name": "notifications",
- "description": "Notification subscriptions"
- },
- {
- "name": "code-lists",
- "description": "Study code lists"
- },
- {
- "name": "participants",
- "description": "Participant operations"
- },
- {
- "name": "reports",
- "description": "Participant reports"
- },
- {
- "name": "responses",
- "description": "Response exports & queries"
- },
- {
- "name": "files",
- "description": "File management for studies"
- },
- {
- "name": "messaging",
- "description": "Messaging templates & scheduled emails"
- },
- {
- "name": "user-management",
- "description": "Management user accounts and permissions"
- },
- {
- "name": "service-accounts",
- "description": "Service account management"
- },
- {
- "name": "app-roles",
- "description": "App role templates & assignments"
- },
- {
- "name": "actions",
- "description": "Run actions on participants"
- }
- ],
- "components": {
- "securitySchemes": {
- "BearerAuth": {
- "type": "http",
- "scheme": "bearer",
- "bearerFormat": "JWT"
- }
- },
- "responses": {
- "Error400": {
- "description": "Bad Request",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Error"
- }
- }
- }
- },
- "Error401": {
- "description": "Unauthorized",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Error"
- }
- }
- }
- },
- "Error403": {
- "description": "Forbidden",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Error"
- }
- }
- }
- },
- "Error404": {
- "description": "Not Found",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Error"
- }
- }
- }
- },
- "Error429": {
- "description": "Too Many Requests",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Error"
- }
- }
- }
- },
- "Error500": {
- "description": "Internal Server Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Error"
- }
- }
- }
- }
- },
- "schemas": {
- "Message": {
- "type": "object",
- "properties": {
- "message": {
- "type": "string"
- }
- },
- "additionalProperties": false
- },
- "Error": {
- "type": "object",
- "properties": {
- "error": {
- "type": "string"
- }
- },
- "additionalProperties": false
- },
- "User": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID"
- },
- "account": {
- "$ref": "#/components/schemas/Account"
- },
- "timestamps": {
- "$ref": "#/components/schemas/Timestamps"
- },
- "profiles": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Profile"
- }
- },
- "contactPreferences": {
- "$ref": "#/components/schemas/ContactPreferences"
- },
- "contactInfos": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ContactInfo"
- }
- }
- },
- "additionalProperties": false
- },
- "Account": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string"
- },
- "accountID": {
- "type": "string"
- }
- },
- "additionalProperties": true
- },
- "Timestamps": {
- "type": "object",
- "properties": {
- "lastTokenRefresh": {
- "type": "integer"
- },
- "lastLogin": {
- "type": "integer"
- },
- "createdAt": {
- "type": "integer"
- },
- "updatedAt": {
- "type": "integer"
- },
- "lastPasswordChange": {
- "type": "integer"
- },
- "reminderToConfirmSentAt": {
- "type": "integer"
- },
- "markedForDeletion": {
- "type": "integer"
- }
- },
- "additionalProperties": false
- },
- "Profile": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "createdAt": {
- "type": "integer"
- },
- "mainProfile": {
- "type": "boolean"
- }
- },
- "additionalProperties": true
- },
- "ContactPreferences": {
- "type": "object",
- "properties": {
- "subscribedToNewsletter": {
- "type": "boolean"
- },
- "sendNewsletterTo": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "subscribedToWeekly": {
- "type": "boolean"
- },
- "receiveWeeklyMessageDayOfWeek": {
- "type": "integer"
- }
- },
- "additionalProperties": false
- },
- "ContactInfo": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "type": {
- "type": "string",
- "enum": [
- "email",
- "phone"
- ]
- },
- "confirmedAt": {
- "type": "integer"
- },
- "confirmationLinkSentAt": {
- "type": "integer"
- },
- "email": {
- "type": "string"
- },
- "phone": {
- "type": "string"
- }
- },
- "additionalProperties": false
- },
- "Study": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID",
- "example": "64b8f0f2e1b1c8a1d2e3f4g5"
- },
- "key": {
- "type": "string"
- },
- "secretKey": {
- "type": "string"
- },
- "status": {
- "type": "string"
- },
- "props": {
- "type": "object",
- "additionalProperties": true
- },
- "configs": {
- "type": "object",
- "additionalProperties": true
- },
- "notificationSubscriptions": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "stats": {
- "type": "object",
- "additionalProperties": true
- },
- "nextTimerEvent": {
- "type": "integer"
- },
- "rules": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- }
- }
- },
- "additionalProperties": false,
- "description": "Study object"
- },
- "Survey": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID"
- },
- "surveyKey": {
- "type": "string"
- },
- "props": {
- "type": "object",
- "additionalProperties": true
- },
- "prefillRules": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "contextRules": {
- "type": "object",
- "additionalProperties": true
- },
- "maxItemsPerPage": {
- "type": "object",
- "additionalProperties": true
- },
- "availableFor": {
- "type": "string"
- },
- "requireLoginBeforeSubmission": {
- "type": "boolean"
- },
- "published": {
- "type": "integer"
- },
- "unpublished": {
- "type": "integer"
- },
- "surveyDefinition": {
- "type": "object",
- "additionalProperties": true
- },
- "versionId": {
- "type": "string"
- },
- "metadata": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- }
- },
- "additionalProperties": false,
- "description": "Survey object"
- },
- "StudyVariables": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID"
- },
- "createdAt": {
- "type": "string",
- "format": "date-time"
- },
- "configUpdatedAt": {
- "type": "string",
- "format": "date-time"
- },
- "valueUpdatedAt": {
- "type": "string",
- "format": "date-time"
- },
- "studyKey": {
- "type": "string"
- },
- "key": {
- "type": "string"
- },
- "value": {
- "oneOf": [
- {
- "type": "string"
- },
- {
- "type": "integer"
- },
- {
- "type": "number"
- },
- {
- "type": "boolean"
- },
- {
- "type": "string",
- "format": "date-time"
- },
- {
- "type": "object",
- "additionalProperties": true
- },
- {
- "type": "array",
- "items": {}
- },
- {
- "type": "null"
- }
- ]
- },
- "type": {
- "type": "string",
- "enum": [
- "string",
- "int",
- "float",
- "boolean",
- "date"
- ]
- },
- "label": {
- "type": "string"
- },
- "description": {
- "type": "string"
- },
- "uiType": {
- "type": "string"
- },
- "uiPriority": {
- "type": "integer"
- },
- "configs": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "additionalProperties": false,
- "description": "Study variable object"
- },
- "Permission": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID"
- },
- "subjectId": {
- "type": "string"
- },
- "subjectType": {
- "type": "string"
- },
- "resourceType": {
- "type": "string"
- },
- "resourceKey": {
- "type": "string"
- },
- "action": {
- "type": "string"
- },
- "limiter": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- }
- },
- "additionalProperties": false,
- "description": "Permission object"
- },
- "AppRoleTemplate": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID"
- },
- "appName": {
- "type": "string"
- },
- "role": {
- "type": "string"
- },
- "requiredPermissions": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Permission"
- }
- },
- "createdAt": {
- "type": "string",
- "format": "date-time"
- },
- "updatedAt": {
- "type": "string",
- "format": "date-time"
- }
- },
- "additionalProperties": false,
- "description": "App role template object"
- },
- "ServiceUser": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID"
- },
- "label": {
- "type": "string"
- },
- "description": {
- "type": "string"
- },
- "createdAt": {
- "type": "string",
- "format": "date-time"
- }
- },
- "additionalProperties": false
- },
- "ServiceUserAPIKey": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "serviceUserID": {
- "type": "string"
- },
- "key": {
- "type": "string"
- },
- "expiresAt": {
- "type": "string",
- "format": "date-time"
- },
- "createdAt": {
- "type": "string",
- "format": "date-time"
- },
- "lastUsedAt": {
- "type": "string",
- "format": "date-time"
- }
- },
- "additionalProperties": false
- },
- "StudyRules": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID"
- },
- "studyKey": {
- "type": "string"
- },
- "uploadedAt": {
- "type": "integer"
- },
- "uploadedBy": {
- "type": "string"
- },
- "rules": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "serialisedRules": {
- "type": "string"
- }
- },
- "additionalProperties": false,
- "description": "Study rules object"
- },
- "SurveyInfo": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string"
- }
- }
- },
- "StudyCounter": {
- "type": "object",
- "properties": {
- "studyKey": {
- "type": "string"
- },
- "scope": {
- "type": "string"
- },
- "value": {
- "type": "integer"
- }
- },
- "additionalProperties": false,
- "description": "Study counter object"
- },
- "NotificationSubscription": {
- "type": "object",
- "properties": {
- "messageType": {
- "type": "string"
- },
- "email": {
- "type": "string"
- }
- },
- "additionalProperties": false,
- "description": "Notification Subscription object"
- },
- "PaginationInfos": {
- "type": "object",
- "description": "Pagination information",
- "properties": {
- "totalCount": {
- "type": "integer"
- },
- "currentPage": {
- "type": "integer"
- },
- "totalPages": {
- "type": "integer"
- },
- "pageSize": {
- "type": "integer"
- }
- },
- "additionalProperties": false
- },
- "StudyCodeListEntry": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID"
- },
- "studyKey": {
- "type": "string"
- },
- "listKey": {
- "type": "string"
- },
- "code": {
- "type": "string"
- },
- "addedAt": {
- "type": "string",
- "format": "date-time"
- }
- },
- "additionalProperties": false,
- "description": "Study Code List Entry object"
- },
- "EmailTemplate": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID"
- },
- "messageType": {
- "type": "string"
- },
- "studyKey": {
- "type": "string"
- },
- "defaultLanguage": {
- "type": "string"
- },
- "headerOverrides": {
- "type": "object",
- "additionalProperties": true
- },
- "translations": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- }
- }
- },
- "additionalProperties": false,
- "description": "Email Template object"
- },
- "SmsTemplate": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID"
- },
- "userID": {
- "type": "string"
- },
- "messageType": {
- "type": "string"
- },
- "sentAt": {
- "type": "string",
- "format": "date-time"
- },
- "phoneNumber": {
- "type": "string"
- }
- },
- "additionalProperties": false,
- "description": "SMS Template object"
- },
- "ScheduledEmail": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID"
- },
- "template": {
- "$ref": "#/components/schemas/EmailTemplate"
- },
- "type": {
- "type": "string"
- },
- "studyKey": {
- "type": "string"
- },
- "condition": {
- "type": "object",
- "additionalProperties": true
- },
- "nextTime": {
- "type": "integer"
- },
- "period": {
- "type": "integer"
- },
- "label": {
- "type": "string"
- },
- "until": {
- "type": "integer"
- }
- },
- "additionalProperties": false,
- "description": "Scheduled Email object"
- },
- "Report": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "MongoDB ObjectID as hex string"
- },
- "key": {
- "type": "string"
- },
- "participantID": {
- "type": "string"
- },
- "responseID": {
- "type": "string"
- },
- "timestamp": {
- "type": "integer",
- "description": "Unix timestamp"
- },
- "modifiedAt": {
- "type": "string",
- "format": "date-time"
- },
- "data": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ReportData"
- }
- }
- },
- "additionalProperties": false,
- "description": "Report object",
- "required": [
- "key",
- "participantID",
- "timestamp"
- ]
- },
- "ReportData": {
- "type": "object",
- "properties": {
- "key": { "type": "string" },
- "value": { "type": "string" },
- "dtype": {
- "type": "string",
- "enum": ["date", "float", "int", "string", "rawMessage", "keyList"]
- }
- },
- "additionalProperties": false
- },
- "Task": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "createdAt": {
- "type": "string",
- "format": "date-time"
- },
- "createdBy": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string",
- "format": "date-time"
- },
- "status": {
- "type": "string"
- },
- "targetCount": {
- "type": "integer"
- },
- "processedCount": {
- "type": "integer"
- },
- "resultFile": {
- "type": "string"
- },
- "fileType": {
- "type": "string"
- },
- "error": {
- "type": "string"
- }
- },
- "additionalProperties": true
- },
- "FileInfo": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID"
- },
- "participantID": {
- "type": "string"
- },
- "status": {
- "type": "string"
- },
- "uploadedBy": {
- "type": "string"
- },
- "path": {
- "type": "string"
- },
- "previewPath": {
- "type": "string"
- },
- "submittedAt": {
- "type": "integer"
- },
- "createdAt": {
- "type": "string",
- "format": "date-time"
- },
- "updatedAt": {
- "type": "string",
- "format": "date-time"
- },
- "fileType": {
- "type": "string"
- },
- "visibleToParticipant": {
- "type": "boolean"
- },
- "size": {
- "type": "integer"
- }
- },
- "required": [
- "id",
- "participantID",
- "path"
- ],
- "additionalProperties": false,
- "description": "File Info object"
- },
- "AppRole": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID"
- },
- "subjectId": {
- "type": "string"
- },
- "subjectType": {
- "type": "string"
- },
- "appName": {
- "type": "string"
- },
- "role": {
- "type": "string"
- },
- "createdAt": {
- "type": "string",
- "format": "date-time"
- }
- }
- },
- "Participant": {
- "type": "object",
- "description": "Participant object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID"
- },
- "participantId": {
- "type": "string"
- },
- "currentStudySession": {
- "type": "string"
- },
- "modifiedAt": {
- "type": "integer"
- },
- "enteredAt": {
- "type": "integer"
- },
- "studyStatus": {
- "type": "string"
- },
- "flags": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "linkingCodes": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- },
- "assignedSurveys": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/AssignedSurvey"
- }
- },
- "lastSubmissions": {
- "type": "object",
- "additionalProperties": {
- "type": "integer"
- }
- },
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- }
- }
- },
- "required": [
- "participantId"
- ],
- "additionalProperties": false
- },
- "AssignedSurvey": {
- "type": "object",
- "description": "Assigned survey object",
- "properties": {
- "studyKey": {
- "type": "string"
- },
- "surveyKey": {
- "type": "string"
- },
- "validFrom": {
- "type": "integer"
- },
- "validUntil": {
- "type": "integer"
- },
- "category": {
- "type": "string"
- },
- "profileID": {
- "type": "string"
- }
- },
- "required": [
- "studyKey",
- "surveyKey"
- ],
- "additionalProperties": false
- },
- "SurveyResponse": {
- "type": "object",
- "description": "Survey response",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID"
- },
- "key": {
- "type": "string"
- },
- "participantId": {
- "type": "string"
- },
- "versionId": {
- "type": "string"
- },
- "openedAt": {
- "type": "integer"
- },
- "submittedAt": {
- "type": "integer"
- },
- "arrivedAt": {
- "type": "integer"
- },
- "responses": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "context": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- }
- },
- "required": [
- "key"
- ],
- "additionalProperties": false
- },
- "ManagementUser": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "MongoDB ObjectID as hex string"
- },
- "sub": {
- "type": "string"
- },
- "email": {
- "type": "string",
- "format": "email"
- },
- "username": {
- "type": "string"
- },
- "provider": {
- "type": "string"
- },
- "imageUrl": {
- "type": "string",
- "format": "uri"
- },
- "isAdmin": {
- "type": "boolean"
- },
- "lastLoginAt": {
- "type": "string",
- "format": "date-time"
- },
- "createdAt": {
- "type": "string",
- "format": "date-time"
- }
- },
- "additionalProperties": false,
- "description": "Management User object"
- }
- }
- },
- "paths": {
- "/v1/auth/signin-with-idp": {
- "post": {
- "tags": [
- "auth"
- ],
- "operationId": "auth_signinWithIdp",
- "summary": "Sign in with identity provider",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "sub": {
- "type": "string",
- "description": "IDP Subject (User ID)"
- },
- "roles": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "name": {
- "type": "string"
- },
- "provider": {
- "type": "string"
- },
- "email": {
- "type": "string",
- "format": "email"
- },
- "imageURL": {
- "type": "string"
- },
- "renewToken": {
- "type": "string",
- "description": "Token used to renew the session"
- },
- "instanceID": {
- "type": "string"
- }
- },
- "required": [
- "sub"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Signed in",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "accessToken": {
- "type": "string"
- },
- "sessionID": {
- "type": "string"
- },
- "expiresAt": {
- "type": "integer",
- "description": "Unix timestamp (seconds)"
- },
- "isAdmin": {
- "type": "boolean"
- }
- },
- "required": [
- "accessToken",
- "sessionID",
- "expiresAt",
- "isAdmin"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "403": {
- "$ref": "#/components/responses/Error403"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/auth/extend-session": {
- "post": {
- "tags": [
- "auth"
- ],
- "operationId": "auth_extendSession",
- "summary": "Extend session",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "renewToken": {
- "type": "string"
- }
- },
- "required": [
- "renewToken"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Session extended",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "accessToken": {
- "type": "string"
- },
- "sessionID": {
- "type": "string"
- },
- "expiresAt": {
- "type": "integer",
- "description": "Unix timestamp (seconds)"
- },
- "isAdmin": {
- "type": "boolean"
- }
- },
- "required": [
- "accessToken",
- "sessionID",
- "expiresAt",
- "isAdmin"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "403": {
- "$ref": "#/components/responses/Error403"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/auth/renew-token/{sessionID}": {
- "get": {
- "tags": [
- "auth"
- ],
- "operationId": "auth_renewToken",
- "summary": "Get renew token",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "sessionID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Renew token",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "renewToken": {
- "type": "string"
- }
- },
- "required": [
- "renewToken"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "403": {
- "$ref": "#/components/responses/Error403"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/auth/permissions": {
- "get": {
- "tags": [
- "auth"
- ],
- "operationId": "auth_listPermissions",
- "summary": "List permissions and roles",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "responses": {
- "200": {
- "description": "Permissions",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "isAdmin": {
- "type": "boolean"
- },
- "permissions": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Permission"
- }
- },
- "appRoles": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/AppRole"
- }
- }
- },
- "required": [
- "isAdmin",
- "permissions",
- "appRoles"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/participants/virtual": {
- "post": {
- "tags": [
- "participants"
- ],
- "operationId": "participants_createVirtualParticipant",
- "summary": "Create virtual participant",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Virtual participant created",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "message": {
- "type": "string"
- },
- "participant": {
- "$ref": "#/components/schemas/Participant"
- }
- },
- "required": [
- "message",
- "participant"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/participants/{participantID}/responses": {
- "get": {
- "tags": [
- "participants"
- ],
- "operationId": "participants_listParticipantResponses",
- "summary": "List participant responses",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "participantID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "page",
- "in": "query",
- "schema": {
- "type": "integer",
- "minimum": 1
- }
- },
- {
- "name": "limit",
- "in": "query",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "maximum": 100
- }
- },
- {
- "name": "filter",
- "in": "query",
- "description": "bson.M object to filter responses",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- },
- {
- "name": "sort",
- "in": "query",
- "description": "bson.M object to sort responses",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- }
- ],
- "responses": {
- "200": {
- "description": "List participant responses",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "responses": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/SurveyResponse"
- }
- },
- "pagination": {
- "$ref": "#/components/schemas/PaginationInfos"
- }
- },
- "required": [
- "responses",
- "pagination"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": [
- "participants"
- ],
- "operationId": "participants_submitParticipantResponse",
- "summary": "Submit participant response",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "participantID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/SurveyResponse"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Submit participant response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "message": {
- "type": "string"
- },
- "result": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/AssignedSurvey"
- }
- },
- "participant": {
- "$ref": "#/components/schemas/Participant"
- }
- },
- "required": [
- "message",
- "result",
- "participant"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/participants/{participantID}/events": {
- "post": {
- "tags": [
- "participants"
- ],
- "operationId": "participants_submitParticipantEvent",
- "summary": "Submit participant event",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "participantID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "eventKey": {
- "type": "string"
- },
- "payload": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- }
- },
- "required": [
- "eventKey"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Submit participant event",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "message": {
- "type": "string"
- },
- "result": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/AssignedSurvey"
- }
- }
- },
- "required": [
- "message",
- "result"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/participants/{participantID}/reports": {
- "post": {
- "tags": [
- "reports"
- ],
- "operationId": "participants_submitParticipantReport",
- "summary": "Submit participant report",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "participantID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Report"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Submit participant report",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/participants/{participantID}/reports/{reportID}": {
- "put": {
- "tags": [
- "reports"
- ],
- "operationId": "participants_updateParticipantReport",
- "summary": "Update participant report",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "participantID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "reportID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "data": {
- "$ref": "#/components/schemas/ReportData"
- },
- "mode": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "required": [
- "data",
- "mode"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Update participant report",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/participants/merge": {
- "post": {
- "tags": [
- "participants"
- ],
- "operationId": "participants_mergeParticipants",
- "summary": "Merge participants",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "targetParticipantID": {
- "type": "string"
- },
- "withParticipantID": {
- "type": "string"
- }
- },
- "required": [
- "targetParticipantID",
- "withParticipantID"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Merge participants",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "participant": {
- "$ref": "#/components/schemas/Participant"
- }
- },
- "required": [
- "participant"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/participants/{participantID}": {
- "put": {
- "tags": [
- "participants"
- ],
- "operationId": "participants_editParticipant",
- "summary": "Edit participant",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "participantID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Participant"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Edit participant",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "message": {
- "type": "string"
- },
- "participant": {
- "$ref": "#/components/schemas/Participant"
- }
- },
- "required": [
- "message",
- "participant"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/messaging/email-templates/global-templates": {
- "get": {
- "tags": [
- "messaging"
- ],
- "operationId": "messaging_listGlobalEmailTemplates",
- "summary": "List global email templates",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "responses": {
- "200": {
- "description": "List global templates",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "templates": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/EmailTemplate"
- }
- }
- },
- "required": [
- "templates"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": [
- "messaging"
- ],
- "operationId": "messaging_saveGlobalEmailTemplate",
- "summary": "Save global email template",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/EmailTemplate"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Save global template",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "template": {
- "$ref": "#/components/schemas/EmailTemplate"
- }
- },
- "required": [
- "template"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/messaging/email-templates/global-templates/{messageType}": {
- "get": {
- "tags": [
- "messaging"
- ],
- "operationId": "messaging_getGlobalEmailTemplate",
- "summary": "Get global email template by type",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "messageType",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Global template",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "template": {
- "$ref": "#/components/schemas/EmailTemplate"
- }
- },
- "required": [
- "template"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "delete": {
- "tags": [
- "messaging"
- ],
- "operationId": "messaging_deleteGlobalEmailTemplate",
- "summary": "Delete global email template",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "messageType",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/messaging/email-templates/study-templates": {
- "get": {
- "tags": [
- "messaging"
- ],
- "operationId": "messaging_listAllStudyEmailTemplates",
- "summary": "List all study email templates",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "responses": {
- "200": {
- "description": "List study templates (all studies)",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "templates": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/EmailTemplate"
- }
- }
- },
- "required": [
- "templates"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/messaging/email-templates/study-templates/{studyKey}": {
- "get": {
- "tags": [
- "messaging"
- ],
- "operationId": "messaging_listStudyEmailTemplates",
- "summary": "List study email templates",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "List study templates",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "templates": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/EmailTemplate"
- }
- }
- },
- "required": [
- "templates"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": [
- "messaging"
- ],
- "operationId": "messaging_saveStudyEmailTemplate",
- "summary": "Save study email template",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/EmailTemplate"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Save study template",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "template": {
- "$ref": "#/components/schemas/EmailTemplate"
- }
- },
- "required": [
- "template"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "404": {
- "$ref": "#/components/responses/Error404"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/messaging/email-templates/study-templates/{studyKey}/{messageType}": {
- "get": {
- "tags": [
- "messaging"
- ],
- "operationId": "messaging_getStudyEmailTemplate",
- "summary": "Get study email template by type",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "messageType",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Study template",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "template": {
- "$ref": "#/components/schemas/EmailTemplate"
- }
- },
- "required": [
- "template"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "delete": {
- "tags": [
- "messaging"
- ],
- "operationId": "messaging_deleteStudyEmailTemplate",
- "summary": "Delete study email template",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "messageType",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/messaging/sms-templates/": {
- "post": {
- "tags": [
- "messaging"
- ],
- "operationId": "messaging_saveSmsTemplate",
- "summary": "Save SMS template",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/SmsTemplate"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Save SMS template",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "template": {
- "$ref": "#/components/schemas/SmsTemplate"
- }
- },
- "required": [
- "template"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/messaging/sms-templates/{messageType}": {
- "get": {
- "tags": [
- "messaging"
- ],
- "operationId": "messaging_getSmsTemplate",
- "summary": "Get SMS template by type",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "messageType",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "SMS template",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "template": {
- "$ref": "#/components/schemas/SmsTemplate"
- }
- },
- "required": [
- "template"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/messaging/scheduled-emails/": {
- "get": {
- "tags": [
- "messaging"
- ],
- "operationId": "messaging_listScheduledEmails",
- "summary": "List scheduled emails",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "responses": {
- "200": {
- "description": "List scheduled emails",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "schedules": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ScheduledEmail"
- }
- }
- },
- "required": [
- "schedules"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": [
- "messaging"
- ],
- "operationId": "messaging_createScheduledEmail",
- "summary": "Save scheduled email",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ScheduledEmail"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Save scheduled email",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "schedule": {
- "$ref": "#/components/schemas/ScheduledEmail"
- }
- },
- "required": [
- "schedule"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/messaging/scheduled-emails/{id}": {
- "get": {
- "tags": [
- "messaging"
- ],
- "operationId": "messaging_getScheduledEmail",
- "summary": "Get scheduled email",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "id",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Scheduled email",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "schedule": {
- "$ref": "#/components/schemas/ScheduledEmail"
- }
- },
- "required": [
- "schedule"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "delete": {
- "tags": [
- "messaging"
- ],
- "operationId": "messaging_deleteScheduledEmail",
- "summary": "Delete scheduled email",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "id",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/": {
- "get": {
- "tags": [
- "studies"
- ],
- "operationId": "studies_listStudies",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "List all studies",
- "responses": {
- "200": {
- "description": "List all studies",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "studies": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Study"
- }
- }
- },
- "required": [
- "studies"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": [
- "studies"
- ],
- "operationId": "studies_createStudy",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Create a new study",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "studyKey": {
- "type": "string"
- },
- "secretKey": {
- "type": "string"
- },
- "isSystemDefaultStudy": {
- "type": "boolean"
- }
- },
- "required": [
- "studyKey",
- "secretKey"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "Created study",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "study": {
- "$ref": "#/components/schemas/Study"
- }
- },
- "required": [
- "study"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/": {
- "get": {
- "tags": [
- "studies"
- ],
- "operationId": "studies_getStudy",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Get study configuration by key",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Study config",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "study": {
- "$ref": "#/components/schemas/Study"
- }
- },
- "required": [
- "study"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "delete": {
- "tags": [
- "studies"
- ],
- "operationId": "studies_deleteStudy",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Delete a study by key",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/export-config": {
- "get": {
- "tags": [
- "studies"
- ],
- "operationId": "studies_exportConfig",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Export study configuration, surveys, and rules",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "config",
- "in": "query",
- "schema": {
- "type": "string",
- "enum": [
- "true",
- "false"
- ],
- "default": "false"
- }
- },
- {
- "name": "surveys",
- "in": "query",
- "schema": {
- "type": "string",
- "enum": [
- "true",
- "false"
- ],
- "default": "false"
- }
- },
- {
- "name": "rules",
- "in": "query",
- "schema": {
- "type": "string",
- "enum": [
- "true",
- "false"
- ],
- "default": "false"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Export",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "exportedAt": {
- "type": "string",
- "format": "date-time"
- },
- "config": {
- "$ref": "#/components/schemas/Study"
- },
- "rules": {
- "$ref": "#/components/schemas/StudyRules"
- },
- "surveys": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Survey"
- }
- }
- },
- "additionalProperties": false,
- "description": "Stream Export Object"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/is-default": {
- "put": {
- "tags": [
- "studies"
- ],
- "operationId": "studies_updateIsDefault",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Update default status of a study",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "isDefault": {
- "type": "boolean"
- }
- },
- "required": [
- "isDefault"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Updated",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/status": {
- "put": {
- "tags": [
- "studies"
- ],
- "operationId": "studies_updateStatus",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Update status of a study",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "status": {
- "type": "string"
- }
- },
- "required": [
- "status"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Updated",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/display-props": {
- "put": {
- "tags": [
- "studies"
- ],
- "operationId": "studies_updateDisplayProps",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Update display properties of a study",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "name": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "description": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- }
- }
- },
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Updated",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/file-upload-config": {
- "put": {
- "tags": [
- "studies"
- ],
- "operationId": "studies_updateFileUploadRule",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Update file upload configuration of a study",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "simplifiedAllowedUpload": {
- "type": "boolean"
- },
- "expression": {
- "type": "object",
- "additionalProperties": true
- }
- }
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Updated",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/surveys/": {
- "get": {
- "tags": [
- "surveys"
- ],
- "operationId": "surveys_listSurveyInfos",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "List survey infos for a study",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "List survey infos",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "surveys": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/SurveyInfo"
- }
- }
- },
- "required": [
- "surveys"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": [
- "surveys"
- ],
- "operationId": "surveys_createSurvey",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Create a new survey in a study",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Survey"
- }
- }
- }
- },
- "responses": {
- "201": {
- "description": "Created survey",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "survey": {
- "$ref": "#/components/schemas/Survey"
- }
- },
- "required": [
- "survey"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/surveys/{surveyKey}": {
- "get": {
- "tags": [
- "surveys"
- ],
- "operationId": "surveys_getLatestSurvey",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Get latest survey by key",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "surveyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Latest survey",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "survey": {
- "$ref": "#/components/schemas/Survey"
- }
- },
- "required": [
- "survey"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": [
- "surveys"
- ],
- "operationId": "surveys_updateSurvey",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Update survey definition",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "surveyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "survey": {
- "$ref": "#/components/schemas/Survey"
- }
- },
- "required": [
- "survey"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Updated survey",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "survey": {
- "$ref": "#/components/schemas/Survey"
- }
- },
- "required": [
- "survey"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/surveys/{surveyKey}/unpublish": {
- "post": {
- "tags": [
- "surveys"
- ],
- "operationId": "surveys_unpublishSurvey",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Unpublish a survey",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "surveyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Unpublished",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/surveys/{surveyKey}/versions": {
- "get": {
- "tags": [
- "surveys"
- ],
- "operationId": "surveys_listSurveyVersions",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "List all survey versions",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "surveyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Versions",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "versions": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Survey"
- }
- }
- },
- "required": [
- "versions"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/surveys/{surveyKey}/versions/{versionID}": {
- "get": {
- "tags": [
- "surveys"
- ],
- "operationId": "surveys_getSurveyVersion",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Get a specific survey version",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "surveyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "versionID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Version",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "survey": {
- "$ref": "#/components/schemas/Survey"
- }
- },
- "required": [
- "survey"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "delete": {
- "tags": [
- "surveys"
- ],
- "operationId": "surveys_deleteSurveyVersion",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Delete a survey version",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "surveyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "versionID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/permissions/": {
- "get": {
- "tags": [
- "study-permissions"
- ],
- "operationId": "studyPermissions_listPermissions",
- "summary": "List study permissions",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Permission list",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "permissions": {
- "type": "object",
- "additionalProperties": {
- "type": "object",
- "properties": {
- "user": {
- "type": "object",
- "additionalProperties": true
- },
- "permissions": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Permission"
- }
- }
- }
- }
- }
- },
- "required": [
- "permissions"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": [
- "study-permissions"
- ],
- "operationId": "studyPermissions_addPermission",
- "summary": "Add a study permission",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Permission"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Created",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/permissions/{permissionID}": {
- "delete": {
- "tags": [
- "study-permissions"
- ],
- "operationId": "studyPermissions_removePermission",
- "summary": "Remove a study permission",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "permissionID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Removed",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/notification-subscriptions/": {
- "get": {
- "tags": [
- "notifications"
- ],
- "operationId": "notifications_getSubscriptions",
- "summary": "List notification subscriptions",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Subscriptions",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "subscriptions": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/NotificationSubscription"
- }
- }
- },
- "required": [
- "subscriptions"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "put": {
- "tags": [
- "notifications"
- ],
- "operationId": "notifications_updateSubscriptions",
- "summary": "Update notification subscriptions",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "subscriptions": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/NotificationSubscription"
- }
- }
- },
- "required": [
- "subscriptions"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Updated",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/study-code-list/list-keys": {
- "get": {
- "tags": [
- "code-lists"
- ],
- "operationId": "codeLists_getListKeys",
- "summary": "List code list keys",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "List keys",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "listKeys": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- },
- "required": [
- "listKeys"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/study-code-list/codes": {
- "get": {
- "tags": [
- "code-lists"
- ],
- "operationId": "codeLists_getCodes",
- "summary": "List codes of a study code list",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "listKey",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "page",
- "in": "query",
- "description": "page number (starting from 1)",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "default": 1
- }
- },
- {
- "name": "limit",
- "in": "query",
- "description": "maximum number of codes per page",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "default": 10
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Codes",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "codeList": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/StudyCodeListEntry"
- }
- },
- "pagination": {
- "$ref": "#/components/schemas/PaginationInfos"
- }
- },
- "required": [
- "codeList",
- "pagination"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": [
- "code-lists"
- ],
- "operationId": "codeLists_addCodes",
- "summary": "Add codes to a study code list",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "listKey": {
- "type": "string"
- },
- "codes": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- },
- "required": [
- "listKey",
- "codes"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Added",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "errors": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- },
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- }
- }
- },
- "delete": {
- "tags": [
- "code-lists"
- ],
- "operationId": "codeLists_removeCode",
- "summary": "Remove a code from a study code list",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "listKey",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "code",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Removed",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean"
- }
- },
- "required": [
- "success"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/study-counters/": {
- "get": {
- "tags": [
- "study-counters"
- ],
- "operationId": "studyCounters_listValues",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "List all study counter values",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Counter values",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "values": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/StudyCounter"
- }
- }
- },
- "required": [
- "values"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/study-counters/{scope}": {
- "post": {
- "tags": [
- "study-counters"
- ],
- "operationId": "studyCounters_saveValue",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Set a study counter value for scope",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "scope",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "value": {
- "type": "integer"
- }
- },
- "required": [
- "value"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Saved",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "value": {
- "type": "integer"
- }
- },
- "required": [
- "value"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "put": {
- "tags": [
- "study-counters"
- ],
- "operationId": "studyCounters_incrementValue",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Increment a study counter value",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "scope",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Incremented",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "value": {
- "type": "integer"
- }
- },
- "required": [
- "value"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "delete": {
- "tags": [
- "study-counters"
- ],
- "operationId": "studyCounters_removeValue",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "summary": "Remove a study counter value",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "scope",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Removed",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean"
- }
- },
- "required": [
- "success"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/variables/": {
- "get": {
- "tags": [
- "study-variables"
- ],
- "operationId": "studyVariables_listVariables",
- "summary": "List study variables",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Variable list",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "variables": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/StudyVariables"
- }
- }
- },
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": [
- "study-variables"
- ],
- "operationId": "studyVariables_addVariable",
- "summary": "Create a new study variable",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "variableDef": {
- "$ref": "#/components/schemas/StudyVariables"
- }
- },
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Created variable",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- }
- },
- "additionalProperties": false,
- "required": [
- "id"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/variables/{variableKey}": {
- "get": {
- "tags": [
- "study-variables"
- ],
- "operationId": "studyVariables_getVariable",
- "summary": "Get a study variable by key",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "variableKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Variable",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "variable": {
- "$ref": "#/components/schemas/StudyVariables"
- }
- },
- "additionalProperties": false,
- "required": [
- "variable"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "put": {
- "tags": [
- "study-variables"
- ],
- "operationId": "studyVariables_updateVariableDef",
- "summary": "Update study variable definition",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "variableKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "variableDef": {
- "$ref": "#/components/schemas/StudyVariables"
- }
- },
- "required": [
- "variableDef"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Updated",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "delete": {
- "tags": [
- "study-variables"
- ],
- "operationId": "studyVariables_deleteVariable",
- "summary": "Delete a study variable",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "variableKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean"
- }
- },
- "required": [
- "success"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/variables/{variableKey}/value": {
- "put": {
- "tags": [
- "study-variables"
- ],
- "operationId": "studyVariables_updateVariableValue",
- "summary": "Update study variable value",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "variableKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "variable": {
- "$ref": "#/components/schemas/StudyVariables"
- }
- },
- "required": [
- "variable"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Value updated",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/rules/": {
- "get": {
- "tags": [
- "study-rules"
- ],
- "operationId": "studyRules_getCurrent",
- "summary": "Get current published study rules",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Current rules",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "studyRules": {
- "$ref": "#/components/schemas/StudyRules"
- }
- },
- "required": [
- "studyRules"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": [
- "study-rules"
- ],
- "operationId": "studyRules_publishNewVersion",
- "summary": "Publish a new version of study rules",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/StudyRules"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Published",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/rules/versions": {
- "get": {
- "tags": [
- "study-rules"
- ],
- "operationId": "studyRules_listVersions",
- "summary": "List all study rules versions",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Versions",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "versions": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/StudyRules"
- }
- }
- },
- "required": [
- "versions"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/rules/versions/{id}": {
- "get": {
- "tags": [
- "study-rules"
- ],
- "operationId": "studyRules_getVersion",
- "summary": "Get a study rules version by ID",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "id",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Version",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "studyRules": {
- "$ref": "#/components/schemas/StudyRules"
- }
- },
- "required": [
- "studyRules"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "delete": {
- "tags": [
- "study-rules"
- ],
- "operationId": "studyRules_deleteVersion",
- "summary": "Delete a study rules version",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "id",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/run-actions/participants/{participantID}": {
- "post": {
- "tags": [
- "actions"
- ],
- "operationId": "actions_runOnParticipant",
- "summary": "Run actions on a participant",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "participantID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "rules": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- }
- }
- },
- "required": [
- "rules"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Task started",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "participantCount": {
- "type": "integer"
- },
- "duration": {
- "type": "integer"
- },
- "ruleResults": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- }
- },
- "required": [
- "participantCount",
- "duration",
- "ruleResults"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/run-actions/participants/": {
- "post": {
- "tags": [
- "actions"
- ],
- "operationId": "actions_runOnParticipants",
- "summary": "Run actions on multiple participants",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "rules": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- }
- }
- },
- "required": [
- "rules"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Task started",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "task": {
- "$ref": "#/components/schemas/Task"
- }
- },
- "required": [
- "task"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/run-actions/participants/task/{taskID}": {
- "get": {
- "tags": [
- "actions"
- ],
- "operationId": "actions_getTaskStatus",
- "summary": "Get actions task status",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "taskID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Task status",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "task": {
- "$ref": "#/components/schemas/Task"
- }
- },
- "required": [
- "task"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "403": {
- "$ref": "#/components/responses/Error403"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/run-actions/participants/task/{taskID}/result": {
- "get": {
- "tags": [
- "actions"
- ],
- "operationId": "actions_getTaskResult",
- "summary": "Get actions task result",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "taskID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Result",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "result": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- },
- "required": [
- "result"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "403": {
- "$ref": "#/components/responses/Error403"
- },
- "404": {
- "$ref": "#/components/responses/Error404"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/run-actions/previous-responses/{participantID}": {
- "post": {
- "tags": [
- "actions"
- ],
- "operationId": "actions_runPrevResponsesOnParticipant",
- "summary": "Run actions on previous responses for a participant",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "participantID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "surveyKeys": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "from": {
- "type": "integer"
- },
- "to": {
- "type": "integer"
- },
- "rules": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- }
- }
- }
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Task started",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "participantCount": {
- "type": "integer"
- },
- "duration": {
- "type": "integer"
- },
- "ruleResults": {
- "type": "array",
- "items": {
- "type": "integer"
- }
- }
- },
- "required": [
- "participantCount",
- "duration",
- "ruleResults"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/run-actions/previous-responses/": {
- "post": {
- "tags": [
- "actions"
- ],
- "operationId": "actions_runPrevResponsesOnParticipants",
- "summary": "Run actions on previous responses for multiple participants",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "surveyKeys": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "from": {
- "type": "integer"
- },
- "to": {
- "type": "integer"
- },
- "rules": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- }
- }
- }
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Task started",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "task": {
- "$ref": "#/components/schemas/Task"
- }
- },
- "required": [
- "task"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/run-actions/previous-responses/task/{taskID}": {
- "get": {
- "tags": [
- "actions"
- ],
- "operationId": "actions_getPrevResponsesTaskStatus",
- "summary": "Get previous-responses actions task status",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "taskID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Task status",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "task": {
- "$ref": "#/components/schemas/Task"
- }
- },
- "required": [
- "task"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "403": {
- "$ref": "#/components/responses/Error403"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/run-actions/previous-responses/task/{taskID}/result": {
- "get": {
- "tags": [
- "actions"
- ],
- "operationId": "actions_getPrevResponsesTaskResult",
- "summary": "Get previous-responses actions task result",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "taskID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Result",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "result": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- },
- "required": [
- "result"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "403": {
- "$ref": "#/components/responses/Error403"
- },
- "404": {
- "$ref": "#/components/responses/Error404"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/survey-info/": {
- "get": {
- "tags": [
- "responses"
- ],
- "operationId": "dataExporter_getSurveyInfo",
- "summary": "List survey info",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "surveyKey",
- "in": "query",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "File download (JSON or CSV)",
- "headers": {
- "Content-Disposition": {
- "description": "Indicates the filename the client should save.",
- "schema": {
- "type": "string"
- }
- }
- },
- "content": {
- "application/json": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- },
- "text/csv": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/responses/count": {
- "get": {
- "tags": [
- "responses"
- ],
- "operationId": "dataExporter_getResponsesCount",
- "summary": "Get responses count",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "surveyKey",
- "in": "query",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "filter",
- "in": "query",
- "description": "bson.M object to filter files",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Count",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "count": {
- "type": "integer"
- }
- },
- "required": [
- "count"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/responses/": {
- "post": {
- "tags": [
- "responses"
- ],
- "operationId": "dataExporter_generateResponsesExport",
- "summary": "Start responses export task",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "surveyKey",
- "in": "query",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "page",
- "in": "query",
- "description": "page number (starting from 1)",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "default": 1
- }
- },
- {
- "name": "limit",
- "in": "query",
- "description": "maximum number of responses per page",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "default": 10
- }
- },
- {
- "name": "filter",
- "in": "query",
- "description": "bson.M object to filter responses",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- },
- {
- "name": "sort",
- "in": "query",
- "description": "bson.M object to sort responses",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- },
- {
- "name": "shortKeys",
- "in": "query",
- "description": "return short keys for responses",
- "schema": {
- "type": "boolean",
- "default": false
- }
- },
- {
- "name": "questionOptionSep",
- "in": "query",
- "description": "separator used in option keys",
- "schema": {
- "type": "string",
- "default": "-"
- }
- },
- {
- "name": "format",
- "in": "query",
- "description": "response export format",
- "schema": {
- "type": "string",
- "default": "wide",
- "enum": [
- "wide",
- "long",
- "json"
- ]
- }
- },
- {
- "name": "extraContextColumns",
- "in": "query",
- "description": "comma-separated list of extra context columns",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Export started",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "task": {
- "$ref": "#/components/schemas/Task"
- }
- },
- "required": [
- "task"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/responses/task/{taskID}": {
- "get": {
- "tags": [
- "responses"
- ],
- "operationId": "dataExporter_getResponsesTaskStatus",
- "summary": "Get responses export task status",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "taskID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Task status",
- "content": {
- "application/json": {
- "type": "object",
- "properties": {
- "task": {
- "$ref": "#/components/schemas/Task"
- }
- },
- "required": [
- "task"
- ]
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "403": {
- "$ref": "#/components/responses/Error403"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/responses/task/{taskID}/result": {
- "get": {
- "tags": [
- "responses"
- ],
- "operationId": "dataExporter_getResponsesTaskResult",
- "summary": "Get responses export task result",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "taskID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "File download",
- "headers": {
- "Content-Disposition": {
- "description": "Indicates the filename the client should save.",
- "schema": {
- "type": "string"
- }
- }
- },
- "content": {
- "*/*": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "403": {
- "$ref": "#/components/responses/Error403"
- },
- "404": {
- "$ref": "#/components/responses/Error404"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/responses/daily-exports": {
- "get": {
- "tags": [
- "responses"
- ],
- "operationId": "dataExporter_listDailyResponseExports",
- "summary": "List daily response exports",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Exports",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "dailyExports": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- },
- "required": [
- "dailyExports"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/responses/daily-exports/{exportID}": {
- "get": {
- "tags": [
- "responses"
- ],
- "operationId": "dataExporter_getDailyResponseExport",
- "summary": "Get daily response export by ID",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "exportID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "File download (JSON or CSV)",
- "headers": {
- "Content-Disposition": {
- "description": "Indicates the filename the client should save.",
- "schema": {
- "type": "string"
- }
- }
- },
- "content": {
- "application/json": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- },
- "text/csv": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- }
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "403": {
- "$ref": "#/components/responses/Error403"
- },
- "404": {
- "$ref": "#/components/responses/Error404"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/participants/count": {
- "get": {
- "tags": [
- "participants"
- ],
- "operationId": "dataExporter_getParticipantsCount",
- "summary": "Get participants count",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "filter",
- "in": "query",
- "description": "bson.M object to filter participants",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Count",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "count": {
- "type": "integer"
- }
- },
- "required": [
- "count"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/participants/": {
- "post": {
- "tags": [
- "participants"
- ],
- "operationId": "dataExporter_generateParticipantsExport",
- "summary": "Start participants export task",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "filter",
- "in": "query",
- "description": "bson.M object to filter participants",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- },
- {
- "name": "sort",
- "in": "query",
- "description": "bson.M object to sort participants",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Export started",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "task": {
- "$ref": "#/components/schemas/Task"
- }
- },
- "required": [
- "task"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/participants/task/{taskID}": {
- "get": {
- "tags": [
- "participants"
- ],
- "operationId": "dataExporter_getParticipantsTaskStatus",
- "summary": "Get participants export task status",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "taskID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Task status",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "task": {
- "$ref": "#/components/schemas/Task"
- }
- }
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "403": {
- "$ref": "#/components/responses/Error403"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/participants/task/{taskID}/result": {
- "get": {
- "tags": [
- "participants"
- ],
- "operationId": "dataExporter_getParticipantsTaskResult",
- "summary": "Get participants export task result",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "taskID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "File download",
- "headers": {
- "Content-Disposition": {
- "description": "Indicates the filename the client should save.",
- "schema": {
- "type": "string"
- }
- }
- },
- "content": {
- "*/*": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "403": {
- "$ref": "#/components/responses/Error403"
- },
- "404": {
- "$ref": "#/components/responses/Error404"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/reports/count": {
- "get": {
- "tags": [
- "reports"
- ],
- "operationId": "dataExporter_getReportsCount",
- "summary": "Get report items count",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "reportKey",
- "in": "query",
- "description": "filter by report key",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "pid",
- "in": "query",
- "description": "filter by participant ID",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "from",
- "in": "query",
- "description": "filter by timestamp (greater than or equal to this value)",
- "schema": {
- "type": "integer"
- }
- },
- {
- "name": "until",
- "in": "query",
- "description": "filter by timestamp (less than or equal to this value)",
- "schema": {
- "type": "integer"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Count",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "count": {
- "type": "integer"
- }
- },
- "required": [
- "count"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/reports/": {
- "post": {
- "tags": [
- "reports"
- ],
- "operationId": "dataExporter_generateReportsExport",
- "summary": "Start report export task",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "reportKey",
- "in": "query",
- "description": "filter by report key",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "pid",
- "in": "query",
- "description": "filter by participant ID",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "from",
- "in": "query",
- "description": "filter by timestamp (greater than or equal to this value)",
- "schema": {
- "type": "integer"
- }
- },
- {
- "name": "until",
- "in": "query",
- "description": "filter by timestamp (less than or equal to this value)",
- "schema": {
- "type": "integer"
- }
- },
- {
- "name": "type",
- "in": "query",
- "description": "export type: 'csv' to download as table, 'raw' to export as JSON",
- "schema": {
- "type": "string",
- "enum": ["raw", "csv"],
- "default": "raw"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Export started",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "task": {
- "$ref": "#/components/schemas/Task"
- }
- },
- "required": [
- "task"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/reports/task/{taskID}": {
- "get": {
- "tags": [
- "reports"
- ],
- "operationId": "dataExporter_getReportsTaskStatus",
- "summary": "Get report export task status",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "taskID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Task status",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "task": {
- "$ref": "#/components/schemas/Task"
- }
- },
- "required": [
- "task"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "403": {
- "$ref": "#/components/responses/Error403"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/reports/task/{taskID}/result": {
- "get": {
- "tags": [
- "reports"
- ],
- "operationId": "dataExporter_getReportsTaskResult",
- "summary": "Get report export task result",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "taskID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "File download",
- "headers": {
- "Content-Disposition": {
- "description": "Indicates the filename the client should save.",
- "schema": {
- "type": "string"
- }
- }
- },
- "content": {
- "*/*": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "403": {
- "$ref": "#/components/responses/Error403"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/confidential-responses/": {
- "post": {
- "tags": [
- "responses"
- ],
- "operationId": "dataExporter_getConfidentialResponses",
- "summary": "Start confidential responses export task",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "participantIDs": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "keyFilter": {
- "type": "string"
- }
- },
- "required": [
- "participantIDs"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Export started",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "responses": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- },
- "description": "Confidential survey response export entry"
- }
- },
- "required": [
- "responses"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "get": {
- "tags": [
- "responses"
- ],
- "operationId": "dataExporter_listConfidentialResponseExports",
- "summary": "List confidential response exports",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Exports",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "availableFiles": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- },
- "required": [
- "availableFiles"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-exporter/confidential-responses/{exportID}": {
- "get": {
- "tags": [
- "responses"
- ],
- "operationId": "dataExporter_getConfidentialResponseExport",
- "summary": "Get confidential response export by ID",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "exportID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "File download (JSON or CSV)",
- "headers": {
- "Content-Disposition": {
- "description": "Indicates the filename the client should save.",
- "schema": {
- "type": "string"
- }
- }
- },
- "content": {
- "application/json": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- },
- "text/csv": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "404": {
- "$ref": "#/components/responses/Error404"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-explorer/responses/": {
- "get": {
- "tags": [
- "responses"
- ],
- "operationId": "dataExplorer_listResponses",
- "summary": "List survey responses",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "surveyKey",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "shortKeys",
- "in": "query",
- "description": "whether to return short keys for responses",
- "required": false,
- "schema": {
- "type": "boolean",
- "default": false
- }
- },
- {
- "name": "questionOptionSep",
- "in": "query",
- "description": "character used to seperate question options in response",
- "required": false,
- "schema": {
- "type": "string",
- "default": "-"
- }
- },
- {
- "name": "format",
- "in": "query",
- "description": "format for survey responses",
- "required": false,
- "schema": {
- "type": "string",
- "default": "wide",
- "enum": [
- "wide",
- "long",
- "json"
- ]
- }
- },
- {
- "name": "page",
- "in": "query",
- "description": "page number (starting from 1)",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "default": 1
- }
- },
- {
- "name": "limit",
- "in": "query",
- "description": "maximum number of responses per page",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "default": 10
- }
- },
- {
- "name": "filter",
- "in": "query",
- "description": "bson.M object to filter responses",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- },
- {
- "name": "sort",
- "in": "query",
- "description": "bson.M object to sort responses",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- },
- {
- "name": "extraContextColumns",
- "in": "query",
- "description": "comma-separated list of extra context columns to include in the response",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "List responses",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "responses": {
- "type": "array",
- "items": {
- "type": "object",
- "description": "Responses",
- "additionalProperties": {
- "type": "object"
- }
- }
- },
- "pagination": {
- "$ref": "#/components/schemas/PaginationInfos"
- }
- },
- "required": [
- "responses",
- "pagination"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "delete": {
- "tags": [
- "responses"
- ],
- "operationId": "dataExplorer_deleteResponses",
- "summary": "Delete survey responses",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "surveyKey",
- "in": "query",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "controlField",
- "in": "query",
- "description": "field used to control deletion (should be equal to studyKey)",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "filter",
- "in": "query",
- "description": "bson.M object to filter responses to delete",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted summary",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-explorer/responses/{responseId}": {
- "get": {
- "tags": [
- "responses"
- ],
- "operationId": "dataExplorer_getResponse",
- "summary": "Get survey response by ID",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "responseId",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "shortKeys",
- "in": "query",
- "description": "whether to return short keys for response",
- "required": false,
- "schema": {
- "type": "boolean",
- "default": false
- }
- },
- {
- "name": "questionOptionSep",
- "in": "query",
- "description": "character used to seperate question options in response",
- "required": false,
- "schema": {
- "type": "string",
- "default": "-"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "response": {
- "type": "object",
- "description": "Response",
- "additionalProperties": {
- "type": "object"
- }
- }
- },
- "required": [
- "response"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "delete": {
- "tags": [
- "responses"
- ],
- "operationId": "dataExplorer_deleteResponse",
- "summary": "Delete survey response",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "responseId",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-explorer/participants/": {
- "get": {
- "tags": [
- "participants"
- ],
- "operationId": "dataExplorer_listParticipants",
- "summary": "List participants",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "page",
- "in": "query",
- "description": "page number (starting from 1)",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "default": 1
- }
- },
- {
- "name": "limit",
- "in": "query",
- "description": "maximum number of participants per page",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "default": 10
- }
- },
- {
- "name": "filter",
- "in": "query",
- "description": "bson.M object to filter participants",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- },
- {
- "name": "sort",
- "in": "query",
- "description": "bson.M object to sort participants",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Participants",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "participants": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Participant"
- }
- },
- "pagination": {
- "$ref": "#/components/schemas/PaginationInfos"
- }
- },
- "required": [
- "participants",
- "pagination"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-explorer/participants/{participantID}": {
- "get": {
- "tags": [
- "participants"
- ],
- "operationId": "dataExplorer_getParticipant",
- "summary": "Get participant",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "participantID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Participant",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "participant": {
- "$ref": "#/components/schemas/Participant"
- }
- },
- "required": [
- "participant"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-explorer/reports/keys": {
- "get": {
- "tags": [
- "reports"
- ],
- "operationId": "dataExplorer_listReportKeys",
- "summary": "List available report keys",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "pid",
- "in": "query",
- "description": "filter by participant ID",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "from",
- "in": "query",
- "description": "filter by timestamp (greater than or equal to this value)",
- "schema": {
- "type": "integer"
- }
- },
- {
- "name": "until",
- "in": "query",
- "description": "filter by timestamp (less than or equal to this value)",
- "schema": {
- "type": "integer"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Report keys",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "reportKeys": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- },
- "required": [
- "reportKeys"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-explorer/reports/": {
- "get": {
- "tags": [
- "reports"
- ],
- "operationId": "dataExplorer_listReports",
- "summary": "List reports",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "reportKey",
- "in": "query",
- "description": "filter by report key",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "pid",
- "in": "query",
- "description": "filter by participant ID",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "from",
- "in": "query",
- "description": "filter by timestamp (greater than or equal to this value)",
- "schema": {
- "type": "integer"
- }
- },
- {
- "name": "until",
- "in": "query",
- "description": "filter by timestamp (less than or equal to this value)",
- "schema": {
- "type": "integer"
- }
- },
- {
- "name": "page",
- "in": "query",
- "description": "page number (starting from 1)",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "default": 1
- }
- },
- {
- "name": "limit",
- "in": "query",
- "description": "maximum number of reports per page",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "default": 10
- }
- },
- {
- "name": "filter",
- "in": "query",
- "description": "bson.M object to filter files",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Reports",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "reports": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Report"
- }
- },
- "pagination": {
- "$ref": "#/components/schemas/PaginationInfos"
- }
- },
- "required": [
- "reports",
- "pagination"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-explorer/reports/{reportID}": {
- "get": {
- "tags": [
- "reports"
- ],
- "operationId": "dataExplorer_getReport",
- "summary": "Get report by ID",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "reportID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Report",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "report": {
- "$ref": "#/components/schemas/Report"
- }
- },
- "required": [
- "report"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-explorer/files/": {
- "get": {
- "tags": [
- "files"
- ],
- "operationId": "dataExplorer_listFiles",
- "summary": "List files",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "page",
- "in": "query",
- "description": "page number (starting from 1)",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "default": 1
- }
- },
- {
- "name": "limit",
- "in": "query",
- "description": "maximum number of files per page",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "default": 10
- }
- },
- {
- "name": "filter",
- "in": "query",
- "description": "bson.M object to filter files",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Files",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "files": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/FileInfo"
- }
- },
- "pagination": {
- "$ref": "#/components/schemas/PaginationInfos"
- }
- },
- "required": [
- "files",
- "pagination"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/studies/{studyKey}/data-explorer/files/{fileID}": {
- "get": {
- "tags": [
- "files"
- ],
- "operationId": "dataExplorer_getFile",
- "summary": "Get file by ID",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "fileID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "File",
- "content": {
- "application/octet-stream": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "headers": {
- "Content-Disposition": {
- "description": "The filename suggested for the download.",
- "schema": {
- "type": "string"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "404": {
- "$ref": "#/components/responses/Error404"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "delete": {
- "tags": [
- "files"
- ],
- "operationId": "dataExplorer_deleteFile",
- "summary": "Delete file",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "fileID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/management-users": {
- "get": {
- "tags": [
- "user-management"
- ],
- "summary": "List management users",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_listManagementUsers",
- "responses": {
- "200": {
- "description": "List management users",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "users": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ManagementUser"
- }
- }
- },
- "required": [
- "users"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/management-users/{userID}": {
- "get": {
- "tags": [
- "user-management"
- ],
- "summary": "Get management user",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_getManagementUser",
- "parameters": [
- {
- "name": "userID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Management user",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "user": {
- "$ref": "#/components/schemas/ManagementUser"
- }
- },
- "required": [
- "user"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "delete": {
- "tags": [
- "user-management"
- ],
- "summary": "Delete management user",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_deleteManagementUser",
- "parameters": [
- {
- "name": "userID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted management user",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/management-users/{userID}/permissions": {
- "get": {
- "tags": [
- "user-management"
- ],
- "summary": "List user permissions",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_listUserPermissions",
- "parameters": [
- {
- "name": "userID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Permissions",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "permissions": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Permission"
- }
- }
- },
- "required": [
- "permissions"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": [
- "user-management"
- ],
- "summary": "Add permission to user",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_addPermissionToUser",
- "parameters": [
- {
- "name": "userID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Permission"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Added permission",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "permission": {
- "$ref": "#/components/schemas/Permission"
- }
- },
- "required": [
- "permission"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/management-users/{userID}/permissions/{permissionID}": {
- "delete": {
- "tags": [
- "user-management"
- ],
- "summary": "Delete user permission",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_deleteUserPermission",
- "parameters": [
- {
- "name": "userID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "permissionID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/management-users/{userID}/permissions/{permissionID}/limiter": {
- "put": {
- "tags": [
- "user-management"
- ],
- "summary": "Update permission limiter",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_updatePermissionLimiter",
- "parameters": [
- {
- "name": "userID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "permissionID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Permission"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Updated limiter",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/management-users/{userID}/app-roles": {
- "get": {
- "tags": [
- "app-roles"
- ],
- "summary": "List app roles for user",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_listUserAppRoles",
- "parameters": [
- {
- "name": "userID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "App roles",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "appRoles": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/AppRole"
- }
- }
- },
- "required": [
- "appRoles"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/management-users/{userID}/app-roles/{appRoleTemplateID}": {
- "post": {
- "tags": [
- "app-roles"
- ],
- "summary": "Add app role to user",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_addAppRoleToUser",
- "parameters": [
- {
- "name": "userID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "appRoleTemplateID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Added app role",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/management-users/{userID}/app-roles/{appRoleID}": {
- "delete": {
- "tags": [
- "app-roles"
- ],
- "summary": "Remove app role from user",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_removeUserAppRole",
- "parameters": [
- {
- "name": "userID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "appRoleID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Removed role",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/app-roles/templates/": {
- "get": {
- "tags": [
- "app-roles"
- ],
- "summary": "List app role templates",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_listAppRoleTemplates",
- "responses": {
- "200": {
- "description": "Templates",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "appRoleTemplates": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/AppRoleTemplate"
- }
- }
- },
- "required": [
- "appRoleTemplates"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": [
- "app-roles"
- ],
- "summary": "Create app role template",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_createAppRoleTemplate",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "appName": {
- "type": "string"
- },
- "role": {
- "type": "string"
- },
- "requiredPermissions": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Permission"
- }
- }
- },
- "required": [
- "appName",
- "role"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Created template",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/app-roles/templates/{appRoleTemplateID}": {
- "get": {
- "tags": [
- "app-roles"
- ],
- "summary": "Get app role template",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_getAppRoleTemplate",
- "parameters": [
- {
- "name": "appRoleTemplateID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Template",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "appRoleTemplate": {
- "$ref": "#/components/schemas/AppRoleTemplate"
- }
- },
- "required": [
- "appRoleTemplate"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "put": {
- "tags": [
- "app-roles"
- ],
- "summary": "Update app role template",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_updateAppRoleTemplate",
- "parameters": [
- {
- "name": "appRoleTemplateID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "appName": {
- "type": "string"
- },
- "role": {
- "type": "string"
- },
- "requiredPermissions": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Permission"
- }
- }
- },
- "required": [
- "appName",
- "role"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Updated template",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/app-roles/templates/delete/{appRoleTemplateID}": {
- "delete": {
- "tags": [
- "app-roles"
- ],
- "summary": "Delete app role template",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_deleteAppRoleTemplate",
- "parameters": [
- {
- "name": "appRoleTemplateID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/app-roles/templates/delete-for-app/{appName}": {
- "delete": {
- "tags": [
- "app-roles"
- ],
- "summary": "Delete app role templates for app",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_deleteAppRoleTemplatesForApp",
- "parameters": [
- {
- "name": "appName",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted templates",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/app-roles/": {
- "get": {
- "tags": [
- "app-roles"
- ],
- "summary": "List app roles",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_listAppRoles",
- "responses": {
- "200": {
- "description": "App roles",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "appRoles": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/AppRole"
- }
- }
- },
- "required": [
- "appRoles"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/app-roles/delete/{appName}": {
- "delete": {
- "tags": [
- "app-roles"
- ],
- "summary": "Delete app roles for app",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_deleteAppRolesForApp",
- "parameters": [
- {
- "name": "appName",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted app roles",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/participant-users/request-deletion": {
- "post": {
- "tags": [
- "user-management"
- ],
- "summary": "Request participant user deletion",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_requestParticipantUserDeletion",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "email": {
- "type": "string",
- "format": "email"
- }
- },
- "required": [
- "email"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Deletion requested",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/service-accounts/": {
- "get": {
- "tags": [
- "service-accounts"
- ],
- "summary": "List service accounts",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_listServiceAccounts",
- "responses": {
- "200": {
- "description": "Service accounts",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "serviceAccounts": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ServiceUser"
- }
- }
- },
- "required": [
- "serviceAccounts"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": [
- "service-accounts"
- ],
- "summary": "Create service account",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_createServiceAccount",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "label": {
- "type": "string"
- },
- "description": {
- "type": "string"
- }
- },
- "additionalProperties": false,
- "required": [
- "label",
- "description"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Created service account",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "serviceAccount": {
- "$ref": "#/components/schemas/ServiceUser"
- }
- },
- "required": [
- "serviceAccount"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/service-accounts/{serviceAccountID}": {
- "get": {
- "tags": [
- "service-accounts"
- ],
- "summary": "Get service account",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_getServiceAccount",
- "parameters": [
- {
- "name": "serviceAccountID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Service account",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "serviceAccount": {
- "$ref": "#/components/schemas/ServiceUser"
- }
- },
- "required": [
- "serviceAccount"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "put": {
- "tags": [
- "service-accounts"
- ],
- "summary": "Update service account",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_updateServiceAccount",
- "parameters": [
- {
- "name": "serviceAccountID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "label": {
- "type": "string"
- },
- "description": {
- "type": "string"
- }
- },
- "additionalProperties": false,
- "required": [
- "label",
- "description"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Updated service account",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "serviceAccount": {
- "$ref": "#/components/schemas/ServiceUser"
- }
- },
- "required": [
- "serviceAccount"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "delete": {
- "tags": [
- "service-accounts"
- ],
- "summary": "Delete service account",
- "operationId": "userManagement_deleteServiceAccount",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "serviceAccountID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted service account",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean"
- }
- },
- "required": [
- "success"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/service-accounts/{serviceAccountID}/api-keys": {
- "get": {
- "tags": [
- "service-accounts"
- ],
- "summary": "List service account API keys",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_listServiceAccountAPIKeys",
- "parameters": [
- {
- "name": "serviceAccountID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "API keys",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "apiKeys": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ServiceUserAPIKey"
- }
- }
- },
- "required": [
- "apiKeys"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": [
- "service-accounts"
- ],
- "summary": "Create service account API key",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_createServiceAccountAPIKey",
- "parameters": [
- {
- "name": "serviceAccountID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "expiresAt": {
- "type": "integer"
- }
- },
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Created API key",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean"
- }
- },
- "required": [
- "success"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/service-accounts/{serviceAccountID}/api-keys/{apiKeyID}": {
- "delete": {
- "tags": [
- "service-accounts"
- ],
- "summary": "Delete service account API key",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_deleteServiceAccountAPIKey",
- "parameters": [
- {
- "name": "serviceAccountID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "apiKeyID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted API key",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean"
- }
- },
- "required": [
- "success"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/service-accounts/{serviceAccountID}/permissions": {
- "get": {
- "tags": [
- "service-accounts"
- ],
- "summary": "List service account permissions",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_listServiceAccountPermissions",
- "parameters": [
- {
- "name": "serviceAccountID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Permissions",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "permissions": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Permission"
- }
- }
- },
- "required": [
- "permissions"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": [
- "service-accounts"
- ],
- "summary": "Add permission to service account",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_addPermissionToServiceAccount",
- "parameters": [
- {
- "name": "serviceAccountID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Permission"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Added permission",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "permission": {
- "$ref": "#/components/schemas/Permission"
- }
- },
- "required": [
- "permission"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/service-accounts/{serviceAccountID}/permissions/{permissionID}": {
- "delete": {
- "tags": [
- "service-accounts"
- ],
- "summary": "Delete service account permission",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "userManagement_deleteServiceAccountPermission",
- "parameters": [
- {
- "name": "serviceAccountID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "permissionID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Deleted",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user-management/service-accounts/{serviceAccountID}/permissions/{permissionID}/limiter": {
- "put": {
- "tags": [
- "service-accounts"
- ],
- "summary": "Update service account permission limiter",
- "operationId": "userManagement_updateServiceAccountPermissionLimiter",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "parameters": [
- {
- "name": "serviceAccountID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "permissionID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Permission"
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Updated permission limiter",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- }
- }
-}
diff --git a/public/openapi/participant-api.json b/public/openapi/participant-api.json
deleted file mode 100644
index 92e1b67..0000000
--- a/public/openapi/participant-api.json
+++ /dev/null
@@ -1,4054 +0,0 @@
-{
- "openapi": "3.1.0",
- "info": {
- "title": "Participant API",
- "version": "1.0.0",
- "description": "Endpoints for participant authentication, user management, and study interactions."
- },
- "paths": {
- "/": {
- "get": {
- "summary": "Health check",
- "operationId": "getHealth",
- "tags": [
- "misc"
- ],
- "responses": {
- "200": {
- "description": "Service is healthy",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HealthStatus"
- },
- "examples": {
- "ok": {
- "value": {
- "status": "ok"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "/v1/auth/login": {
- "post": {
- "tags": [
- "auth"
- ],
- "summary": "Login with email and password",
- "operationId": "loginWithEmail",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "email": {
- "type": "string",
- "format": "email"
- },
- "password": {
- "type": "string"
- },
- "instanceId": {
- "type": "string"
- }
- },
- "required": [
- "email",
- "password",
- "instanceId"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Access and refresh tokens with user",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "token": {
- "$ref": "#/components/schemas/TokenEnvelope"
- },
- "user": {
- "$ref": "#/components/schemas/User"
- }
- },
- "required": [
- "token",
- "user"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/auth/signup": {
- "post": {
- "tags": [
- "auth"
- ],
- "summary": "Sign up with email",
- "operationId": "signupWithEmail",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "email": {
- "type": "string",
- "format": "email"
- },
- "password": {
- "type": "string"
- },
- "instanceId": {
- "type": "string"
- },
- "infoCheck": {
- "type": "string"
- },
- "preferredLanguage": {
- "type": "string"
- },
- "withAttributes": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string"
- },
- "attributes": {
- "type": "object",
- "additionalProperties": true
- }
- }
- }
- },
- "required": [
- "email",
- "password",
- "instanceId"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Access and refresh tokens with user",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "token": {
- "$ref": "#/components/schemas/TokenEnvelope"
- },
- "user": {
- "$ref": "#/components/schemas/User"
- }
- },
- "required": [
- "token",
- "user"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "429": {
- "$ref": "#/components/responses/Error429"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/auth/login-with-temptoken": {
- "post": {
- "tags": [
- "auth"
- ],
- "summary": "Login using a temporary token (optionally with password or access token)",
- "operationId": "loginWithTempToken",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "tempToken": {
- "type": "string"
- },
- "accessToken": {
- "type": "string"
- },
- "password": {
- "type": "string"
- }
- },
- "required": [
- "tempToken"
- ],
- "additionalProperties": false,
- "description": "Provide either accessToken or password along with tempToken."
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Access and refresh tokens with user",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "token": {
- "$ref": "#/components/schemas/TokenEnvelopeWithLastOTP"
- },
- "user": {
- "$ref": "#/components/schemas/User"
- }
- },
- "required": [
- "token",
- "user"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/auth/temptoken-info": {
- "post": {
- "tags": [
- "auth"
- ],
- "summary": "Get info for a temporary token",
- "operationId": "getTempTokenInfo",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "instanceId": {
- "type": "string"
- },
- "tempToken": {
- "type": "string"
- }
- },
- "required": [
- "instanceId",
- "tempToken"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Info returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "userID": {
- "type": "string"
- },
- "email": {
- "type": "string",
- "format": "email"
- }
- },
- "required": [
- "userID",
- "email"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/auth/token/renew": {
- "post": {
- "tags": [
- "auth"
- ],
- "summary": "Renew access token",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "renewToken",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "refreshToken": {
- "type": "string"
- }
- },
- "required": [
- "refreshToken"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Access and refresh tokens with user",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "token": {
- "$ref": "#/components/schemas/TokenEnvelopeWithLastOTP"
- },
- "user": {
- "$ref": "#/components/schemas/User"
- }
- },
- "required": [
- "token",
- "user"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/auth/token/validate": {
- "get": {
- "tags": [
- "auth"
- ],
- "summary": "Validate access token",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "validateToken",
- "responses": {
- "200": {
- "description": "Token valid",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "tokenInfos": {
- "type": "object",
- "description": "Decoded participant user JWT claims",
- "additionalProperties": true
- }
- },
- "required": [
- "tokenInfos"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- }
- }
- }
- },
- "/v1/auth/token/revoke": {
- "get": {
- "tags": [
- "auth"
- ],
- "summary": "Revoke refresh tokens for user",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "revokeTokens",
- "responses": {
- "200": {
- "description": "Revoked",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/auth/resend-email-verification": {
- "post": {
- "tags": [
- "auth"
- ],
- "summary": "Resend email verification",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "resendEmailVerification",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "email": {
- "type": "string",
- "format": "email"
- }
- },
- "required": [
- "email"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "$ref": "#/components/responses/MessageOk"
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "429": {
- "$ref": "#/components/responses/Error429"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/auth/verify-email": {
- "post": {
- "tags": [
- "auth"
- ],
- "summary": "Verify email by token",
- "operationId": "verifyEmail",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "token": {
- "type": "string"
- }
- },
- "required": [
- "token"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "User returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "user": {
- "$ref": "#/components/schemas/User"
- }
- },
- "required": [
- "user"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/auth/logout": {
- "post": {
- "tags": [
- "auth"
- ],
- "summary": "Logout user (invalidate current session)",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "logout",
- "responses": {
- "200": {
- "description": "User logged out",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "message": {
- "type": "string"
- },
- "tokensRevoked": {
- "type": "integer"
- }
- },
- "required": [
- "message",
- "tokensRevoked"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/auth/otp": {
- "get": {
- "tags": [
- "auth"
- ],
- "summary": "Request OTP (email by default)",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "requestOTP",
- "parameters": [
- {
- "name": "type",
- "in": "query",
- "schema": {
- "type": "string",
- "enum": [
- "email",
- "sms"
- ],
- "default": "email"
- }
- }
- ],
- "responses": {
- "200": {
- "$ref": "#/components/responses/MessageOk"
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/auth/otp/verify": {
- "post": {
- "tags": [
- "auth"
- ],
- "summary": "Verify OTP code",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "verifyOTP",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string"
- }
- },
- "required": [
- "code"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Access and refresh tokens with user",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "token": {
- "$ref": "#/components/schemas/TokenEnvelopeWithLastOTP"
- },
- "user": {
- "$ref": "#/components/schemas/User"
- }
- },
- "required": [
- "token",
- "user"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/password-reset/initiate": {
- "post": {
- "tags": ["password"],
- "summary": "Initiate password reset",
- "operationId": "initiatePasswordReset",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "email": {
- "type": "string",
- "format": "email"
- },
- "instanceID": {
- "type": "string"
- }
- },
- "required": [
- "email",
- "instanceID"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "$ref": "#/components/responses/MessageOk"
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "429": {
- "$ref": "#/components/responses/Error429"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/password-reset/get-infos": {
- "post": {
- "tags": ["password"],
- "summary": "Get info for a password reset token",
- "operationId": "getPasswordResetInfos",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "token": {
- "type": "string"
- }
- },
- "required": [
- "token"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Account ID returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "accountId": {
- "type": "string"
- }
- },
- "required": [
- "accountId"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/password-reset/reset": {
- "post": {
- "tags": ["password"],
- "summary": "Reset password",
- "operationId": "resetPassword",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "token": {
- "type": "string"
- },
- "newPassword": {
- "type": "string"
- }
- },
- "required": [
- "token",
- "newPassword"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "$ref": "#/components/responses/MessageOk"
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/studies/": {
- "get": {
- "tags": ["studies"],
- "summary": "List studies by status",
- "operationId": "getStudiesByStatus",
- "parameters": [
- {
- "name": "instanceID",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "status",
- "in": "query",
- "required": false,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "studies": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string"
- },
- "status": {
- "type": "string"
- },
- "props": {
- "type": "object",
- "additionalProperties": true
- },
- "stats": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "required": [
- "key",
- "status",
- "props",
- "stats"
- ]
- }
- }
- },
- "required": [
- "studies"
- ]
- }
- }
- }
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/studies/{studyKey}": {
- "get": {
- "tags": ["studies"],
- "summary": "Get study by key",
- "operationId": "getStudy",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "instanceID",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "study": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string"
- },
- "status": {
- "type": "string"
- },
- "props": {
- "type": "object",
- "additionalProperties": true
- },
- "stats": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "required": [
- "key",
- "status",
- "props",
- "stats"
- ]
- }
- }
- }
- }
- }
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/studies/{studyKey}/code-lists/has-code": {
- "get": {
- "tags": ["studies"],
- "summary": "Check if a code exists in a code list",
- "operationId": "studyHasCodeListCode",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "instanceID",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "listKey",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "code",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "exists": {
- "type": "boolean"
- }
- },
- "required": [
- "exists"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/studies/{studyKey}/code-lists/available-count": {
- "get": {
- "tags": ["studies"],
- "summary": "Count available codes in a code list",
- "operationId": "getStudyCodeListAvailableCount",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "listKey",
- "in": "query",
- "required": true,
- "schema": { "type": "string" }
- },
- {
- "name": "instanceID",
- "in": "query",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "availableCount": {
- "type": "integer"
- }
- },
- "required": [
- "availableCount"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/studies/{studyKey}/variables": {
- "get": {
- "tags": ["studies"],
- "summary": "List variables for a study",
- "operationId": "getStudyVariables",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "instanceID",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "variables": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/StudyVariables"
- }
- }
- },
- "required": [
- "variables"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/studies/{studyKey}/variables/{variableKey}": {
- "get": {
- "tags": ["studies"],
- "summary": "Get a study variable",
- "operationId": "getStudyVariable",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "variableKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "instanceID",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "variable": {
- "$ref": "#/components/schemas/StudyVariables"
- }
- },
- "required": [
- "variable"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/studies/participating": {
- "get": {
- "tags": ["studies"],
- "summary": "List studies the user participates in",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "getParticipatingStudies",
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "studies": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/StudyInfo"
- }
- }
- },
- "required": [
- "studies"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/events/{studyKey}/enter": {
- "post": {
- "tags": ["events"],
- "summary": "Enter a study",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "enterStudy",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "profileID": {
- "type": "string"
- }
- },
- "required": [
- "profileID"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Assigned surveys returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "assignedSurveys": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/AssignedSurvey"
- }
- }
- },
- "required": [
- "assignedSurveys"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/events/{studyKey}/custom": {
- "post": {
- "tags": ["events"],
- "summary": "Trigger a custom study event",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "customStudyEvent",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "eventKey": {
- "type": "string"
- },
- "profileID": {
- "type": "string"
- },
- "payload": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "required": [
- "eventKey",
- "profileID"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Assigned surveys returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "assignedSurveys": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/AssignedSurvey"
- }
- }
- },
- "required": [
- "assignedSurveys"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/events/{studyKey}/submit": {
- "post": {
- "tags": ["events"],
- "summary": "Submit survey response",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "submitSurveyEvent",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "profileID": {
- "type": "string"
- },
- "response": {
- "type": "object",
- "description": "SurveyResponse",
- "additionalProperties": true
- }
- },
- "required": [
- "profileID",
- "response"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Assigned surveys returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "assignedSurveys": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/AssignedSurvey"
- }
- }
- },
- "required": [
- "assignedSurveys"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/events/{studyKey}/leave": {
- "post": {
- "tags": ["events"],
- "summary": "Leave a study",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "leaveStudyEvent",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "profileID": {
- "type": "string"
- }
- },
- "required": [
- "profileID"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Assigned surveys returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "assignedSurveys": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/AssignedSurvey"
- }
- }
- },
- "required": [
- "assignedSurveys"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/events/{studyKey}/merge-temporary-participant": {
- "post": {
- "tags": ["events"],
- "summary": "Merge temporary participant into user profile",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "mergeTempParticipant",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "profileID": {
- "type": "string"
- },
- "temporaryParticipantID": {
- "type": "string"
- }
- },
- "required": [
- "profileID",
- "temporaryParticipantID"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Assigned surveys of participant returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "assignedSurveys": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/AssignedSurvey"
- }
- }
- },
- "required": [
- "assignedSurveys"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/events/{studyKey}/merge-virtual-participant": {
- "post": {
- "tags": ["events"],
- "summary": "Merge a virtual participant into user profile by linking code",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "mergeVirtualParticipant",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "profileID": {
- "type": "string"
- },
- "virtualParticipantID": {
- "type": "string"
- },
- "linkingCodeKey": {
- "type": "string"
- },
- "linkingCodeValue": {
- "type": "string"
- }
- },
- "required": [
- "profileID",
- "virtualParticipantID",
- "linkingCodeKey",
- "linkingCodeValue"
- ],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Assigned surveys of merged participant returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "assignedSurveys": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/AssignedSurvey"
- }
- }
- },
- "required": [
- "assignedSurveys"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/participant-data/{studyKey}/surveys": {
- "get": {
- "tags": ["participant-data"],
- "summary": "Get assigned surveys for profiles",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "getAssignedSurveys",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "pids",
- "in": "query",
- "required": true,
- "description": "Comma-separated profile IDs",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Assigned surveys with survey infos returned",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/AssignedSurveysWithInfos"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/participant-data/{studyKey}/survey/{surveyKey}": {
- "get": {
- "tags": ["participant-data"],
- "summary": "Get a specific survey with context",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "getSurveyWithContext",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "surveyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "pid",
- "in": "query",
- "required": true,
- "description": "Profile ID",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Survey with context returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "surveyWithContext": {
- "$ref": "#/components/schemas/AssignedSurveyWithContext"
- }
- },
- "required": [
- "surveyWithContext"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/participant-data/{studyKey}/participant-state": {
- "get": {
- "tags": ["participant-data"],
- "summary": "Get participant state",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "getParticipantState",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "pid",
- "in": "query",
- "required": true,
- "description": "Profile ID",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Participant state returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "participant": {
- "$ref": "#/components/schemas/Participant"
- }
- },
- "required": [
- "participant"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/participant-data/{studyKey}/linking-code": {
- "get": {
- "tags": ["participant-data"],
- "summary": "Get a linking code by key",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "getLinkingCode",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "pid",
- "in": "query",
- "required": true,
- "description": "Profile ID",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "key",
- "in": "query",
- "required": true,
- "description": "Key for linking code",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Linking code returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "linkingCode": {
- "type": "string"
- }
- },
- "required": [
- "linkingCode"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/participant-data/{studyKey}/responses": {
- "get": {
- "tags": ["participant-data"],
- "summary": "Get survey responses for a profile",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "getStudyResponsesForProfile",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "pid",
- "in": "query",
- "required": false,
- "description": "Profile ID",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "surveyKey",
- "in": "query",
- "required": false,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "page",
- "in": "query",
- "description": "page number (starting from 1)",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "default": 1
- }
- },
- {
- "name": "limit",
- "in": "query",
- "description": "maximum number of responses per page",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "default": 10
- }
- },
- {
- "name": "filter",
- "in": "query",
- "description": "bson.M object to filter responses",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- },
- {
- "name": "sort",
- "in": "query",
- "description": "bson.M object to sort responses",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- },
- {
- "name": "shortKeys",
- "in": "query",
- "description": "whether to return short keys for responses",
- "schema": {
- "type": "boolean",
- "default": false
- }
- },
- {
- "name": "questionOptionSep",
- "in": "query",
- "description": "character used to seperate slot keys in response",
- "schema": {
- "type": "string",
- "default": "-"
- }
- },
- {
- "name": "format",
- "in": "query",
- "description": "format for survey responses",
- "schema": {
- "type": "string",
- "default": "wide",
- "enum": ["wide", "long", "json"]
- }
- },
- {
- "name": "extraContextColumns",
- "in": "query",
- "description": "comma-separated list of extra context columns to include in the response",
- "schema": {
- "type": "string"
- }
- }
-
- ],
- "responses": {
- "200": {
- "description": "Responses returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "responses": {
- "type": "array",
- "items": {
- "type": "object",
- "description": "Responses",
- "additionalProperties": {
- "type": "object"
- }
- }
- },
- "pagination": {
- "$ref": "#/components/schemas/PaginationInfos"
- }
- },
- "required": [
- "responses",
- "pagination"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/participant-data/{studyKey}/confidential-response": {
- "get": {
- "tags": ["participant-data"],
- "summary": "Get confidential responses by key",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "getConfidentialResponse",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "pid",
- "in": "query",
- "required": true,
- "description": "Profile ID",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "key",
- "in": "query",
- "required": true,
- "description": "Key for confidential responses",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Confidential responses returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "confidentialResponse": {
- "type": "array",
- "items": {
- "type": "object",
- "description": "Confidential survey response export entry",
- "additionalProperties": true
- }
- }
- },
- "required": [
- "confidentialResponse"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/participant-data/{studyKey}/submission-history": {
- "get": {
- "tags": ["participant-data"],
- "summary": "Get submission history for profiles",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "getSubmissionHistory",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "pids",
- "in": "query",
- "required": true,
- "description": "Comma-separated profile IDs",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "limit",
- "in": "query",
- "required": false,
- "description": "Maximum number of submissions per page",
- "schema": {
- "type": "integer",
- "default": 100,
- "minimum": 1
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Submission history returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "submissionHistory": {
- "$ref": "#/components/schemas/SubmissionHistory"
- }
- },
- "required": [
- "submissionHistory"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/participant-data/{studyKey}/reports": {
- "get": {
- "tags": ["participant-data"],
- "summary": "Get reports for a profile",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "getReports",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "pid",
- "in": "query",
- "required": true,
- "description": "Profile ID",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "page",
- "in": "query",
- "description": "page number (starting from 1)",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "default": 1
- }
- },
- {
- "name": "limit",
- "in": "query",
- "description": "maximum number of reports per page",
- "schema": {
- "type": "integer",
- "minimum": 1,
- "default": 10
- }
- },
- {
- "name": "filter",
- "in": "query",
- "description": "bson.M object to filter reports",
- "schema": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
- }
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Reports returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "reports": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Report"
- }
- },
- "pagination": {
- "$ref": "#/components/schemas/PaginationInfos"
- }
- },
- "required": [
- "reports",
- "pagination"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/temp-participant/register": {
- "post": {
- "tags": ["events"],
- "summary": "Register a temporary participant",
- "operationId": "registerTempParticipant",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "instanceId": {
- "type": "string"
- },
- "studyKey": {
- "type": "string"
- }
- },
- "required": [
- "instanceId",
- "studyKey"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Temporary participant returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "participant": {
- "$ref": "#/components/schemas/Participant"
- }
- },
- "required": [
- "participant"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/temp-participant/surveys": {
- "get": {
- "tags": ["participant-data"],
- "summary": "Get assigned surveys for a temporary participant",
- "operationId": "getTempParticipantSurveys",
- "parameters": [
- {
- "name": "instanceID",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "studyKey",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "pid",
- "in": "query",
- "required": true,
- "description": "Profile ID",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Assigned surveys with survey infos returned",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/AssignedSurveysWithInfos"
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/temp-participant/survey": {
- "get": {
- "tags": ["participant-data"],
- "summary": "Get a survey with context for a temporary participant",
- "operationId": "getTempParticipantSurveyWithContext",
- "parameters": [
- {
- "name": "instanceID",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "studyKey",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "surveyKey",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "pid",
- "in": "query",
- "required": false,
- "description": "Profile ID",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Survey with context returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "surveyWithContext": {
- "$ref": "#/components/schemas/AssignedSurveyWithContext"
- }
- },
- "required": [
- "surveyWithContext"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/temp-participant/submit-response": {
- "post": {
- "tags": ["events"],
- "summary": "Submit a survey response for a temporary participant",
- "operationId": "submitTempParticipantResponse",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "instanceId": {
- "type": "string"
- },
- "studyKey": {
- "type": "string"
- },
- "pid": {
- "type": "string"
- },
- "response": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "required": [
- "instanceId",
- "studyKey",
- "pid",
- "response"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Assigned surveys returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "assignedSurveys": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/AssignedSurvey"
- }
- }
- },
- "required": [
- "assignedSurveys"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/virtual-participants/{studyKey}/": {
- "get": {
- "tags": ["participant-data"],
- "summary": "Get virtual participants by linking code",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "getVirtualParticipantsByLinkingCode",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "key",
- "in": "query",
- "required": true,
- "description": "Linking code key",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "value",
- "in": "query",
- "required": true,
- "description": "Linking code value",
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Participants returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "participants": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Participant"
- }
- }
- },
- "required": [
- "participants"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/study-service/participant-data/{studyKey}/files": {
- "post": {
- "tags": ["participant-data"],
- "summary": "Upload participant file",
- "security": [ { "BearerAuth": [] } ],
- "operationId": "uploadParticipantFile",
- "parameters": [
- {
- "name": "studyKey",
- "in": "path",
- "required": true,
- "schema": { "type": "string" }
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "multipart/form-data": {
- "schema": {
- "type": "object",
- "properties": {
- "profileID": {
- "type": "string",
- "description": "ID of the profile"
- },
- "file": {
- "type": "string",
- "format": "binary",
- "description": "File to upload. Only 'image/jpeg' and 'image/png' are allowed."
- }
- },
- "required": ["profileID", "file"]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "File uploaded",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "id": { "type": "string", "description": "object ID of the uploaded file" },
- "path": { "type": "string" },
- "status": { "type": "string", "const": "ready" }
- },
- "required": ["id", "path", "status"],
- "additionalProperties": false
- }
- }
- }
- },
- "400": { "$ref": "#/components/responses/Error400" },
- "401": { "$ref": "#/components/responses/Error401" },
- "403": { "$ref": "#/components/responses/Error403" },
- "500": { "$ref": "#/components/responses/Error500" }
- }
- },
- "get": {
- "tags": ["participant-data"],
- "summary": "List participant files",
- "security": [ { "BearerAuth": [] } ],
- "operationId": "listParticipantFiles",
- "parameters": [
- { "name": "studyKey", "in": "path", "required": true, "schema": { "type": "string" } },
- { "name": "pid", "in": "query", "required": true, "description": "Profile ID", "schema": { "type": "string" } },
- { "name": "page", "in": "query", "description": "page number (starting from 1)", "schema": { "type": "integer", "minimum": 1, "default": 1 } },
- { "name": "limit", "in": "query", "description": "maximum number of files per page", "schema": { "type": "integer", "minimum": 1, "default": 10 } }
- ],
- "responses": {
- "200": {
- "description": "Files returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "fileInfos": { "type": "array", "items": { "$ref": "#/components/schemas/FileInfo" } },
- "pagination": { "$ref": "#/components/schemas/PaginationInfos" }
- },
- "required": ["fileInfos", "pagination"],
- "additionalProperties": false
- }
- }
- }
- },
- "400": { "$ref": "#/components/responses/Error400" },
- "401": { "$ref": "#/components/responses/Error401" },
- "500": { "$ref": "#/components/responses/Error500" }
- }
- }
- },
- "/v1/study-service/participant-data/{studyKey}/files/{fileID}": {
- "get": {
- "tags": ["participant-data"],
- "summary": "Download participant file",
- "security": [ { "BearerAuth": [] } ],
- "operationId": "getParticipantFile",
- "parameters": [
- { "name": "studyKey", "in": "path", "required": true, "schema": { "type": "string" } },
- { "name": "fileID", "in": "path", "required": true, "schema": { "type": "string" } },
- { "name": "pid", "in": "query", "required": true, "description": "Profile ID", "schema": { "type": "string" } }
- ],
- "responses": {
- "200": {
- "description": "File",
- "content": {
- "application/octet-stream": {
- "schema": { "type": "string", "format": "binary" }
- }
- }
- },
- "400": { "$ref": "#/components/responses/Error400" },
- "401": { "$ref": "#/components/responses/Error401" },
- "404": { "$ref": "#/components/responses/Error404" },
- "500": { "$ref": "#/components/responses/Error500" }
- }
- },
- "delete": {
- "tags": ["participant-data"],
- "summary": "Delete participant file",
- "security": [ { "BearerAuth": [] } ],
- "operationId": "deleteParticipantFile",
- "parameters": [
- { "name": "studyKey", "in": "path", "required": true, "schema": { "type": "string" } },
- { "name": "fileID", "in": "path", "required": true, "schema": { "type": "string" } },
- { "name": "pid", "in": "query", "required": true, "description": "Profile ID", "schema": { "type": "string" } }
- ],
- "responses": {
- "200": { "description": "Deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } },
- "400": { "$ref": "#/components/responses/Error400" },
- "401": { "$ref": "#/components/responses/Error401" },
- "404": { "$ref": "#/components/responses/Error404" },
- "500": { "$ref": "#/components/responses/Error500" }
- }
- }
- },
- "/v1/user/": {
- "get": {
- "tags": ["user"],
- "summary": "Get current user",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "getUser",
- "responses": {
- "200": {
- "description": "User returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "user": {
- "$ref": "#/components/schemas/User"
- }
- },
- "required": [
- "user"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "delete": {
- "tags": ["user"],
- "summary": "Delete current user",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "deleteUser",
- "requestBody": {
- "required": false,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "exitSurveyResponse": {
- "type": "object",
- "additionalProperties": true
- }
- }
- }
- }
- }
- },
- "responses": {
- "200": {
- "$ref": "#/components/responses/MessageOk"
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user/preferred-language": {
- "put": {
- "summary": "Update the account's preferred language",
- "tags": ["user"],
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "updatePreferredLanguage",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "newLocale": { "type": "string", "description": "language code, e.g., en, de-DE" }
- },
- "required": ["newLocale"],
- "additionalProperties": false
- }
- }
- }
- },
- "responses": {
- "200": {
- "$ref": "#/components/responses/MessageOk"
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user/profiles": {
- "post": {
- "tags": ["user"],
- "summary": "Add new profile",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "addProfile",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "profile": {
- "$ref": "#/components/schemas/Profile"
- }
- },
- "required": [
- "profile"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Profile added",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "profile": {
- "$ref": "#/components/schemas/Profile"
- }
- },
- "required": [
- "profile"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "put": {
- "tags": ["user"],
- "summary": "Update profile",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "updateProfile",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "profile": {
- "$ref": "#/components/schemas/Profile"
- }
- },
- "required": [
- "profile"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Profile updated",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "profile": {
- "$ref": "#/components/schemas/Profile"
- }
- },
- "required": [
- "profile"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user/profiles/remove": {
- "post": {
- "tags": ["user"],
- "summary": "Remove a profile",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "removeProfile",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "profileId": {
- "type": "string"
- },
- "exitSurveyResponse": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "required": [
- "profileId"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "$ref": "#/components/responses/MessageOk"
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user/password": {
- "post": {
- "tags": ["user"],
- "summary": "Change password",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "changePassword",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "oldPassword": {
- "type": "string"
- },
- "newPassword": {
- "type": "string"
- }
- },
- "required": [
- "oldPassword",
- "newPassword"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "$ref": "#/components/responses/MessageOk"
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user/change-account-email": {
- "post": {
- "tags": ["user"],
- "summary": "Change account email",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "changeAccountEmail",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "email": {
- "type": "string",
- "format": "email"
- },
- "password": {
- "type": "string"
- }
- },
- "required": [
- "email",
- "password"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "$ref": "#/components/responses/MessageOk"
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user/change-phone-number": {
- "post": {
- "tags": ["user"],
- "summary": "Change phone number",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "changePhoneNumber",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "newPhoneNumber": {
- "type": "string"
- },
- "password": {
- "type": "string"
- }
- },
- "required": [
- "newPhoneNumber",
- "password"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "$ref": "#/components/responses/MessageOk"
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "429": {
- "$ref": "#/components/responses/Error429"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user/request-phone-number-verification": {
- "get": {
- "tags": ["user"],
- "summary": "Request phone number verification code via SMS",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "requestPhoneNumberVerification",
- "responses": {
- "200": {
- "$ref": "#/components/responses/MessageOk"
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "429": {
- "$ref": "#/components/responses/Error429"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user/attributes": {
- "get": {
- "tags": ["user"],
- "summary": "Get user attributes",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "getUserAttributes",
- "responses": {
- "200": {
- "description": "Attributes returned",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "attributes": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/UserAttributes"
- }
- }
- },
- "required": [
- "attributes"
- ]
- }
- }
- }
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- },
- "post": {
- "tags": ["user"],
- "summary": "Create or update a user attribute",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "setUserAttribute",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string"
- },
- "attributes": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "required": [
- "type",
- "attributes"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "$ref": "#/components/responses/MessageOk"
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user/attributes/{attributeID}": {
- "delete": {
- "tags": ["user"],
- "summary": "Delete a user attribute",
- "security": [
- {
- "BearerAuth": []
- }
- ],
- "operationId": "deleteUserAttribute",
- "parameters": [
- {
- "name": "attributeID",
- "in": "path",
- "required": true,
- "schema": {
- "type": "string"
- }
- }
- ],
- "responses": {
- "200": {
- "$ref": "#/components/responses/MessageOk"
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "401": {
- "$ref": "#/components/responses/Error401"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- },
- "/v1/user/contact-preferences": {
- "put": {
- "tags": ["user"],
- "summary": "Update contact preferences",
- "description": "Update the user's newsletter and weekly subscription preferences.",
- "security": [
- { "BearerAuth": [] }
- ],
- "operationId": "updateContactPreferences",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "subscribedToNewsletter": {
- "type": "boolean"
- },
- "toggleWeeklySubscription": {
- "type": "boolean"
- }
- },
- "required": [
- "subscribedToNewsletter",
- "toggleWeeklySubscription"
- ]
- }
- }
- }
- },
- "responses": {
- "200": { "$ref": "#/components/responses/MessageOk"},
- "400": { "$ref": "#/components/responses/Error400" },
- "401": { "$ref": "#/components/responses/Error401" },
- "500": { "$ref": "#/components/responses/Error500" }
- }
- }
- },
- "/v1/unsubscribe-newsletter": {
- "post": {
- "tags": ["misc"],
- "summary": "Unsubscribe user from newsletter (via token)",
- "operationId": "unsubscribeNewsletter",
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "token": {
- "type": "string"
- }
- },
- "required": [
- "token"
- ]
- }
- }
- }
- },
- "responses": {
- "200": {
- "$ref": "#/components/responses/MessageOk"
- },
- "400": {
- "$ref": "#/components/responses/Error400"
- },
- "500": {
- "$ref": "#/components/responses/Error500"
- }
- }
- }
- }
- },
- "components": {
- "securitySchemes": {
- "BearerAuth": {
- "type": "http",
- "scheme": "bearer",
- "bearerFormat": "JWT"
- }
- },
- "responses": {
- "MessageOk": {
- "description": "Generic OK message",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Message"
- }
- }
- }
- },
- "Error400": {
- "description": "Bad request",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Error"
- }
- }
- }
- },
- "Error401": {
- "description": "Unauthorized",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Error"
- }
- }
- }
- },
- "Error403": {
- "description": "Forbidden",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Error"
- }
- }
- }
- },
- "Error404": {
- "description": "Not Found",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Error"
- }
- }
- }
- },
- "Error429": {
- "description": "Too many requests",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Error"
- }
- }
- }
- },
- "Error500": {
- "description": "Internal Server Error",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Error"
- }
- }
- }
- }
- },
- "schemas": {
- "HealthStatus": {
- "type": "object",
- "properties": {
- "status": {
- "type": "string"
- }
- },
- "required": [
- "status"
- ],
- "additionalProperties": false
- },
- "Message": {
- "type": "object",
- "properties": {
- "message": {
- "type": "string"
- }
- },
- "required": [
- "message"
- ],
- "additionalProperties": false
- },
- "Error": {
- "type": "object",
- "properties": {
- "error": {
- "type": "string"
- }
- },
- "required": [
- "error"
- ],
- "additionalProperties": false
- },
- "TokenEnvelope": {
- "type": "object",
- "properties": {
- "accessToken": {
- "type": "string"
- },
- "refreshToken": {
- "type": "string"
- },
- "expiresIn": {
- "type": "number"
- },
- "selectedProfile": {
- "type": "string"
- }
- },
- "required": [
- "accessToken",
- "refreshToken",
- "expiresIn",
- "selectedProfile"
- ],
- "additionalProperties": false
- },
- "TokenEnvelopeWithLastOTP": {
- "type": "object",
- "properties": {
- "accessToken": {
- "type": "string"
- },
- "refreshToken": {
- "type": "string"
- },
- "expiresIn": {
- "type": "number"
- },
- "selectedProfile": {
- "type": "string"
- },
- "lastOTP": {
- "type": "object",
- "additionalProperties": {
- "type": "integer"
- }
- }
- },
- "required": [
- "accessToken",
- "refreshToken",
- "expiresIn",
- "selectedProfile",
- "lastOTP"
- ],
- "additionalProperties": false
- },
- "AssignedSurvey": {
- "type": "object",
- "description": "Assigned survey object",
- "additionalProperties": true
- },
- "AssignedSurveysWithInfos": {
- "type": "object",
- "description": "Assigned surveys object with survey infos",
- "properties": {
- "surveys": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "surveyInfos": {
- "type": "array",
- "items": {
- "type": "object",
- "additionalProperties": true
- }
- }
- },
- "required": [
- "surveys",
- "surveyInfos"
- ],
- "additionalProperties": false
- },
- "AssignedSurveyWithContext": {
- "type": "object",
- "description": "Assigned survey object with optional context and prefill survey response",
- "properties": {
- "survey": {
- "type": "object",
- "additionalProperties": true
- },
- "context": {
- "type": "object",
- "additionalProperties": true
- },
- "prefill": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "required": [
- "survey"
- ],
- "additionalProperties": false
- },
- "FileInfo": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ObjectID"
- },
- "participantID": {
- "type": "string"
- },
- "status": {
- "type": "string"
- },
- "uploadedBy": {
- "type": "string"
- },
- "path": {
- "type": "string"
- },
- "previewPath": {
- "type": "string"
- },
- "submittedAt": {
- "type": "integer"
- },
- "createdAt": {
- "type": "string",
- "format": "date-time"
- },
- "updatedAt": {
- "type": "string",
- "format": "date-time"
- },
- "fileType": {
- "type": "string"
- },
- "visibleToParticipant": {
- "type": "boolean"
- },
- "size": {
- "type": "integer"
- }
- },
- "required": [
- "id",
- "participantID",
- "path"
- ],
- "additionalProperties": false,
- "description": "File Info object"
- },
- "PaginationInfos": {
- "type": "object",
- "description": "Pagination information",
- "properties": {
- "totalCount": {
- "type": "integer"
- },
- "currentPage": {
- "type": "integer"
- },
- "totalPages": {
- "type": "integer"
- },
- "pageSize": {
- "type": "integer"
- }
- },
- "additionalProperties": false
- },
- "SubmissionHistory": {
- "type": "object",
- "description": "Submission history",
- "additionalProperties": true
- },
- "Report": {
- "type": "object",
- "description": "Report object",
- "properties": {
- "id": {
- "type": "string",
- "description": "MongoDB ObjectID as hex string"
- },
- "key": {
- "type": "string"
- },
- "participantID": {
- "type": "string"
- },
- "responseID": {
- "type": "string"
- },
- "timestamp": {
- "type": "integer",
- "description": "Unix timestamp"
- },
- "modifiedAt": {
- "type": "string",
- "format": "date-time"
- },
- "data": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "key": { "type": "string" },
- "value": { "type": "string" },
- "dtype": {
- "type": "string",
- "enum": ["date", "float", "int", "string", "rawMessage", "keyList"]
- }
- },
- "additionalProperties": false
- }
- }
- },
- "required": [
- "key",
- "participantID",
- "timestamp"
- ],
- "additionalProperties": false
- },
- "Participant": {
- "type": "object",
- "description": "Participant defines the datamodel for current state of the participant in a study as stored in the database",
- "additionalProperties": true
- },
- "User": {
- "type": "object",
- "description": "User object",
- "additionalProperties": true
- },
- "Profile": {
- "type": "object",
- "description": "User profile object",
- "additionalProperties": true
- },
- "UserAttributes": {
- "type": "object",
- "description": "User attributes object",
- "additionalProperties": true
- },
- "StudyInfo": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string"
- },
- "status": {
- "type": "string"
- },
- "props": {
- "type": "object",
- "additionalProperties": true
- },
- "stats": {
- "type": "object",
- "additionalProperties": true
- },
- "profileIds": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "ProfileIDs only required in study info objects related to participants"
- }
- },
- "required": [
- "key",
- "status",
- "props",
- "stats",
- "profileIds"
- ],
- "additionalProperties": false
- },
- "StudyVariables": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "MongoDB ObjectID",
- "example": "64e4b2f2c2a4e2b1a1c2d3e4"
- },
- "createdAt": {
- "type": "string",
- "format": "date-time"
- },
- "configUpdatedAt": {
- "type": "string",
- "format": "date-time"
- },
- "valueUpdatedAt": {
- "type": "string",
- "format": "date-time"
- },
- "studyKey": {
- "type": "string"
- },
- "key": {
- "type": "string"
- },
- "value": {
- "description": "Value of the study variable, type depends on 'type'",
- "oneOf": [
- { "type": "string" },
- { "type": "integer" },
- { "type": "number", "format": "float" },
- { "type": "boolean" },
- { "type": "string", "format": "date-time" }
- ]
- },
- "type": {
- "type": "string",
- "enum": ["string", "int", "float", "boolean", "date"]
- },
- "label": {
- "type": "string"
- },
- "description": {
- "type": "string"
- },
- "uiType": {
- "type": "string"
- },
- "uiPriority": {
- "type": "integer"
- },
- "configs": {
- "type": "object",
- "additionalProperties": true
- }
- },
- "required": [
- "createdAt",
- "configUpdatedAt",
- "valueUpdatedAt",
- "studyKey",
- "key",
- "value",
- "type"
- ]
- }
- }
- },
- "tags": [
- {
- "name": "auth",
- "description": "Authentication endpoints"
- },
- {
- "name": "password",
- "description": "Password endpoints"
- },
- {
- "name": "events",
- "description": "Study service events endpoints"
- },
- {
- "name": "participant-data",
- "description": "Endpoints getting participant data in study service"
- },
- {
- "name": "studies",
- "description": "Endpoints getting study data in study service"
- },
- {
- "name": "user",
- "description": "User endpoints"
- },
- {
- "name": "misc",
- "description": "Miscellaneous"
- }
- ]
-}
\ No newline at end of file
diff --git a/public/openapi/smtp-bridge.json b/public/openapi/smtp-bridge.json
deleted file mode 100644
index b5ae6df..0000000
--- a/public/openapi/smtp-bridge.json
+++ /dev/null
@@ -1,243 +0,0 @@
-{
- "openapi": "3.1.0",
- "info": {
- "title": "SMTP Bridge API",
- "version": "1.0.0",
- "description": "Simple bridge for sending emails via configured SMTP servers."
- },
- "paths": {
- "/": {
- "get": {
- "summary": "Health check",
- "operationId": "getHealth",
- "responses": {
- "200": {
- "description": "Service is healthy",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/HealthStatus"
- },
- "examples": {
- "ok": {
- "value": {
- "status": "ok"
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "/send-email": {
- "post": {
- "summary": "Send an email",
- "operationId": "sendEmail",
- "security": [
- {
- "ApiKeyAuth": []
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/SendEmailRequest"
- },
- "examples": {
- "basic": {
- "value": {
- "to": [
- "user@example.com"
- ],
- "subject": "Hello",
- "content": "Hi there
",
- "highPrio": false
- }
- },
- "withHeaderOverrides": {
- "value": {
- "to": [
- "user@example.com"
- ],
- "subject": "Important",
- "content": "Text body",
- "highPrio": true,
- "headerOverrides": {
- "from": "\"System Notifications\" ",
- "sender": "system@example.com",
- "replyTo": [
- "support@example.com"
- ],
- "noReplyTo": false
- }
- }
- }
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "Email accepted for sending",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/SuccessMessage"
- },
- "examples": {
- "sent": {
- "value": {
- "message": "email sent"
- }
- }
- }
- }
- }
- },
- "400": {
- "description": "Bad request",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Error"
- },
- "examples": {
- "missingApiKey": {
- "value": {
- "error": "A valid API key missing"
- }
- },
- "missingTo": {
- "value": {
- "error": "missing 'to' field"
- }
- }
- }
- }
- }
- },
- "500": {
- "description": "Failed to send after retries",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Error"
- },
- "examples": {
- "sendFailed": {
- "value": {
- "error": "failed to send email"
- }
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "components": {
- "securitySchemes": {
- "ApiKeyAuth": {
- "type": "apiKey",
- "in": "header",
- "name": "Api-Key",
- "description": "Provide a valid API key in the 'Api-Key' header"
- }
- },
- "schemas": {
- "HealthStatus": {
- "type": "object",
- "properties": {
- "status": {
- "type": "string"
- }
- },
- "required": [
- "status"
- ],
- "additionalProperties": false
- },
- "SuccessMessage": {
- "type": "object",
- "properties": {
- "message": {
- "type": "string"
- }
- },
- "required": [
- "message"
- ],
- "additionalProperties": false
- },
- "Error": {
- "type": "object",
- "properties": {
- "error": {
- "type": "string"
- }
- },
- "required": [
- "error"
- ],
- "additionalProperties": false
- },
- "HeaderOverrides": {
- "type": "object",
- "properties": {
- "from": {
- "type": "string"
- },
- "sender": {
- "type": "string"
- },
- "replyTo": {
- "type": "array",
- "items": {
- "type": "string",
- "format": "email"
- }
- },
- "noReplyTo": {
- "type": "boolean"
- }
- },
- "additionalProperties": false
- },
- "SendEmailRequest": {
- "type": "object",
- "properties": {
- "to": {
- "type": "array",
- "items": {
- "type": "string",
- "format": "email"
- },
- "minItems": 1
- },
- "subject": {
- "type": "string"
- },
- "content": {
- "type": "string"
- },
- "highPrio": {
- "type": "boolean"
- },
- "headerOverrides": {
- "$ref": "#/components/schemas/HeaderOverrides"
- }
- },
- "required": [
- "to"
- ],
- "additionalProperties": false
- }
- }
- }
-}
\ No newline at end of file
From 5ebd736d72d74385eb21ba2df6639cf2912bbbb4 Mon Sep 17 00:00:00 2001
From: kschneider84 <77678452+kschneider84@users.noreply.github.com>
Date: Mon, 29 Jun 2026 08:36:38 +0200
Subject: [PATCH 16/21] Add endpoints "remove study session", "update study
track account"
---
.../management-api/api/accounts/meta.json | 7 ++
.../api/accounts/updateStudyTrackAccount.mdx | 17 +++
.../tech-docs/management-api/api/index.mdx | 9 ++
.../tech-docs/management-api/api/meta.json | 1 +
.../management-api/api/participants/meta.json | 1 +
.../participants_removeStudySession.mdx | 15 +++
openapi/management-api.yaml | 111 ++++++++++++++++++
7 files changed, 161 insertions(+)
create mode 100644 content/tech-docs/management-api/api/accounts/meta.json
create mode 100644 content/tech-docs/management-api/api/accounts/updateStudyTrackAccount.mdx
create mode 100644 content/tech-docs/management-api/api/participants/participants_removeStudySession.mdx
diff --git a/content/tech-docs/management-api/api/accounts/meta.json b/content/tech-docs/management-api/api/accounts/meta.json
new file mode 100644
index 0000000..55b909c
--- /dev/null
+++ b/content/tech-docs/management-api/api/accounts/meta.json
@@ -0,0 +1,7 @@
+{
+ "title": "Accounts",
+ "description": "Account tracking and identification",
+ "pages": [
+ "updateStudyTrackAccount"
+ ]
+}
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/accounts/updateStudyTrackAccount.mdx b/content/tech-docs/management-api/api/accounts/updateStudyTrackAccount.mdx
new file mode 100644
index 0000000..2dad414
--- /dev/null
+++ b/content/tech-docs/management-api/api/accounts/updateStudyTrackAccount.mdx
@@ -0,0 +1,17 @@
+---
+title: Update study track-account flag
+full: true
+_openapi:
+ method: PUT
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: |
+ Updates whether account tracking is enabled for the given study.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/tech-docs/management-api/api/index.mdx b/content/tech-docs/management-api/api/index.mdx
index d823d13..f49cf9f 100644
--- a/content/tech-docs/management-api/api/index.mdx
+++ b/content/tech-docs/management-api/api/index.mdx
@@ -123,6 +123,7 @@ Participant operations
List participant responses GET} />
Submit participant response POST} />
Submit participant event POST} />
+Remove or replace a participant study session POST} />
Merge participants POST} />
Edit participant PUT} />
Get participants count GET} />
@@ -133,6 +134,14 @@ Participant operations
Get participant GET} />
+### Accounts
+
+Account tracking and identification
+
+
+Update study track-account flag PUT} description={"Updates whether account tracking is enabled for the given study.\n"} />
+
+
### Reports
Participant reports
diff --git a/content/tech-docs/management-api/api/meta.json b/content/tech-docs/management-api/api/meta.json
index 871d473..81d2635 100644
--- a/content/tech-docs/management-api/api/meta.json
+++ b/content/tech-docs/management-api/api/meta.json
@@ -10,6 +10,7 @@
"notifications",
"code-lists",
"participants",
+ "accounts",
"reports",
"responses",
"files",
diff --git a/content/tech-docs/management-api/api/participants/meta.json b/content/tech-docs/management-api/api/participants/meta.json
index d5c5af4..9eadd68 100644
--- a/content/tech-docs/management-api/api/participants/meta.json
+++ b/content/tech-docs/management-api/api/participants/meta.json
@@ -6,6 +6,7 @@
"participants_listParticipantResponses",
"participants_submitParticipantResponse",
"participants_submitParticipantEvent",
+ "participants_removeStudySession",
"participants_mergeParticipants",
"participants_editParticipant",
"dataExporter_getParticipantsCount",
diff --git a/content/tech-docs/management-api/api/participants/participants_removeStudySession.mdx b/content/tech-docs/management-api/api/participants/participants_removeStudySession.mdx
new file mode 100644
index 0000000..d2bd1df
--- /dev/null
+++ b/content/tech-docs/management-api/api/participants/participants_removeStudySession.mdx
@@ -0,0 +1,15 @@
+---
+title: Remove or replace a participant study session
+full: true
+_openapi:
+ method: POST
+ webhook: false
+ toc: []
+ structuredData:
+ headings: []
+ contents: []
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/openapi/management-api.yaml b/openapi/management-api.yaml
index d9c3388..5f325ef 100644
--- a/openapi/management-api.yaml
+++ b/openapi/management-api.yaml
@@ -26,6 +26,8 @@ tags:
description: Study code lists
- name: participants
description: Participant operations
+- name: accounts
+ description: Account tracking and identification
- name: reports
description: Participant reports
- name: responses
@@ -1172,6 +1174,65 @@ paths:
"$ref": "#/components/responses/Error401"
'500':
"$ref": "#/components/responses/Error500"
+ "/v1/studies/{studyKey}/participants/{participantID}/remove-session":
+ post:
+ tags:
+ - participants
+ operationId: participants_removeStudySession
+ summary: Remove or replace a participant study session
+ security:
+ - BearerAuth: []
+ parameters:
+ - name: studyKey
+ in: path
+ required: true
+ schema:
+ type: string
+ - name: participantID
+ in: path
+ required: true
+ schema:
+ type: string
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ sessionToRemove:
+ type: string
+ replacementSession:
+ type: string
+ description: Optional replacement session; if empty, the session association is removed.
+ required:
+ - sessionToRemove
+ additionalProperties: false
+ responses:
+ '200':
+ description: Session removed
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ message:
+ type: string
+ participant:
+ "$ref": "#/components/schemas/Participant"
+ responsesUpdated:
+ type: integer
+ required:
+ - message
+ - participant
+ - responsesUpdated
+ additionalProperties: false
+ '400':
+ "$ref": "#/components/responses/Error400"
+ '401':
+ "$ref": "#/components/responses/Error401"
+ '500':
+ "$ref": "#/components/responses/Error500"
"/v1/studies/{studyKey}/participants/{participantID}/reports":
post:
tags:
@@ -6295,3 +6356,53 @@ paths:
"$ref": "#/components/responses/Error401"
'500':
"$ref": "#/components/responses/Error500"
+ /v1/studies/{studyKey}/track-account:
+ put:
+ operationId: updateStudyTrackAccount
+ tags:
+ - accounts
+ summary: Update study track-account flag
+ description: >
+ Updates whether account tracking is enabled for the given study.
+ security:
+ - BearerAuth: []
+ parameters:
+ - name: studyKey
+ in: path
+ required: true
+ description: Unique key of the study
+ schema:
+ type: string
+ requestBody:
+ required: true
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ trackAccount:
+ type: boolean
+ examples:
+ enable:
+ summary: Enable tracking
+ value:
+ trackAccount: true
+ disable:
+ summary: Disable tracking
+ value:
+ trackAccount: false
+ responses:
+ "200":
+ description: Successfully updated
+ content:
+ application/json:
+ schema:
+ "$ref": "#/components/schemas/Message"
+ example:
+ message: study track account updated
+ '400':
+ "$ref": "#/components/responses/Error400"
+ '401':
+ "$ref": "#/components/responses/Error401"
+ '500':
+ "$ref": "#/components/responses/Error500"
\ No newline at end of file
From b28c5d77b1409bb109ef0d24d1a0147b72ec881b Mon Sep 17 00:00:00 2001
From: kschneider84 <77678452+kschneider84@users.noreply.github.com>
Date: Wed, 1 Jul 2026 14:37:08 +0200
Subject: [PATCH 17/21] Remove swagger-ui-react
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---
package.json | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/package.json b/package.json
index 2c9ff86..71b6b80 100644
--- a/package.json
+++ b/package.json
@@ -17,8 +17,7 @@
"lucide-react": "^0.546.0",
"next": "16.1.6",
"react": "^19.2.4",
- "react-dom": "^19.2.4",
- "swagger-ui-react": "^5.32.6"
+ "react-dom": "^19.2.4"
},
"devDependencies": {
"@tailwindcss/postcss": "^4.1.15",
From c705336dac3cb731627a41ca77eedb2e582e1846 Mon Sep 17 00:00:00 2001
From: kschneider84 <77678452+kschneider84@users.noreply.github.com>
Date: Wed, 1 Jul 2026 15:03:32 +0200
Subject: [PATCH 18/21] remove swagger component
---
package.json | 1 -
pnpm-lock.yaml | 1344 ------------------------------------------------
2 files changed, 1345 deletions(-)
diff --git a/package.json b/package.json
index 71b6b80..63e3ce9 100644
--- a/package.json
+++ b/package.json
@@ -25,7 +25,6 @@
"@types/node": "25.3.3",
"@types/react": "^19.2.2",
"@types/react-dom": "^19.2.2",
- "@types/swagger-ui-react": "^5.18.0",
"eslint": "^10.0.2",
"eslint-config-next": "16.1.6",
"postcss": "^8.5.6",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 2f6719e..639215b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -35,9 +35,6 @@ importers:
react-dom:
specifier: ^19.2.4
version: 19.2.6(react@19.2.6)
- swagger-ui-react:
- specifier: ^5.32.6
- version: 5.32.6(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
devDependencies:
'@tailwindcss/postcss':
specifier: ^4.1.15
@@ -54,9 +51,6 @@ importers:
'@types/react-dom':
specifier: ^19.2.2
version: 19.2.3(@types/react@19.2.15)
- '@types/swagger-ui-react':
- specifier: ^5.18.0
- version: 5.18.0
eslint:
specifier: ^10.0.2
version: 10.4.1(jiti@2.7.0)
@@ -140,14 +134,6 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
- '@babel/runtime-corejs3@7.29.7':
- resolution: {integrity: sha512-ppj9ouYku+RX0ljtgZd+KMO5mkM2bCqg8H2PYAFWnLsHEIKIdRojqbJ2i3eVHrisuxy7nOFCmngTDdWtUCdXUQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/runtime@7.29.7':
- resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==}
- engines: {node: '>=6.9.0'}
-
'@babel/template@7.29.7':
resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==}
engines: {node: '>=6.9.0'}
@@ -1213,9 +1199,6 @@ packages:
'@rtsao/scc@1.1.0':
resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
- '@scarf/scarf@1.4.0':
- resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==}
-
'@shikijs/core@4.1.0':
resolution: {integrity: sha512-jLJtSJeuFffqX6/inRE1zqU5aFv2hrszvYgq3OjbAgFRZiWv7abKMDdQzYxuSDfmUPQozZvI/kuy6VMTvnvqTQ==}
engines: {node: '>=20'}
@@ -1250,122 +1233,6 @@ packages:
'@standard-schema/spec@1.1.0':
resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
- '@swagger-api/apidom-ast@1.11.1':
- resolution: {integrity: sha512-5vcFzXltmIpCsjQouVKzjj7pPPUxYmwIARHuenim96GDnmqqVTtAoBXpIX++cD5RcJA72EBEqepQ+VSAA12RPA==}
-
- '@swagger-api/apidom-core@1.11.1':
- resolution: {integrity: sha512-KsN0dZBsutUGWtbsqBMvQ+3pJUjq/wRRABCNIG2Ys/1Ctq8FaQaA0MoICPuYgDZCUNsZuJYbw6Swm6e0GaHWtA==}
-
- '@swagger-api/apidom-error@1.11.1':
- resolution: {integrity: sha512-7KV2Ac4BOcrv4yJz7T5DbZiTdqbnVUT+g68Hjhabl5zhD28mfEEn9V8Zq2D6rtjlCYkqWAMFb8Y6Y+9ssH5wgA==}
-
- '@swagger-api/apidom-json-pointer@1.11.1':
- resolution: {integrity: sha512-c8QSUgQxDolTO+rP2bvX4CrZOrnTMTAMh0xGq8LaYvzVzs0bQT7ZApsbcA/4bzWlwcg6wy2Uuw+qMadl1FNR3w==}
-
- '@swagger-api/apidom-ns-api-design-systems@1.11.1':
- resolution: {integrity: sha512-2K3Ix+nRHDkuixkZ4FAMWY5MAJHipzpFvZrRtneZ7hsx7nObw9HYEXZw/yXuYrvnhC8jsE4z91Gwuvvz7ZjfPw==}
-
- '@swagger-api/apidom-ns-arazzo-1@1.11.1':
- resolution: {integrity: sha512-rnICw0uXnKeNHUaS+Ip7lxtVXqH1iA3zFlX446e4XAamJd6yU28sujIsGiZ71qPQ217teidkfK7Bx7MktHdiEw==}
-
- '@swagger-api/apidom-ns-asyncapi-2@1.11.1':
- resolution: {integrity: sha512-syABiWLeWRfKoonUhPriPVwDDeEOlN5RD20Dj/MS9DT5r1BJUrAB1BfRRRHsVhzaXVdUcKKH99iC9C842J9kvA==}
-
- '@swagger-api/apidom-ns-asyncapi-3@1.11.1':
- resolution: {integrity: sha512-y4syE8jOEGuSirc3YaeI0dh3rEvHfc/pERQOTj3KofS2IABpBXTmtg+oDfG2zte1/Cyc/eJ6qecVAns5mhBpow==}
-
- '@swagger-api/apidom-ns-json-schema-2019-09@1.11.1':
- resolution: {integrity: sha512-1SNXikZN2uQ1YZ3A4dzWBoMN6wTkba1qZdy/NOkweFtoLuBb63KKN/gD1e6chQV8+ikqGn8TTUZnYvX6SVBZ6g==}
-
- '@swagger-api/apidom-ns-json-schema-2020-12@1.11.1':
- resolution: {integrity: sha512-oyvTkjDXI9k3G8oVHOvpL/t1MfZmx8d7rgeNqsm6j/vK6WlOXIOHdN9LTYRo8YdACaWq/JV5B30grkio/HRMKQ==}
-
- '@swagger-api/apidom-ns-json-schema-draft-4@1.11.1':
- resolution: {integrity: sha512-Ha23zkVSItmFZbAoSKMI7hwYJT7yTMWO+EcNzDBEClsqRrkcCtvF2YsiQZcyUt5SrEwV8rW0TWE0CVG+WEs2zg==}
-
- '@swagger-api/apidom-ns-json-schema-draft-6@1.11.1':
- resolution: {integrity: sha512-Gm4ULCg4yulfjZiMIbH1XiiKHI/BqK0zc1GexViiLShXS35/2dc27GmpI0YgV7S+DqvivNrwAkqojeN7ho9/NA==}
-
- '@swagger-api/apidom-ns-json-schema-draft-7@1.11.1':
- resolution: {integrity: sha512-OHW4Qb0BqbHJ3QoQcGREE5bobMeBkZzSQe/0RFGayhI1HJZqrmwtot2nLAuie9sQJoj/xeUprOsA/he06NVFEw==}
-
- '@swagger-api/apidom-ns-openapi-2@1.11.1':
- resolution: {integrity: sha512-yXHJmyN+NyF2xBD6KlFmGuMrf1hKqK9pm/FwStepIUqvn6bfTGgEdUi5BivQuErRrN6NtQczFF21Jlu6jjg86Q==}
-
- '@swagger-api/apidom-ns-openapi-3-0@1.11.1':
- resolution: {integrity: sha512-R2zHd33OiVT5eTlYKS1FyVDP0G76ymdP2EIrBPbM1FDKam1kRIRdgZA2StCd9PY4oNp/LqQKMnfe9wdLWZS3AA==}
-
- '@swagger-api/apidom-ns-openapi-3-1@1.11.1':
- resolution: {integrity: sha512-FtoW4wkFO1VSHu6G+wUZ71hQhIOuastJPyWEePbfySE4Uiz+01t/X/ODnl2OHRGVUYFoJa7kJi5/xqcsprdxtA==}
-
- '@swagger-api/apidom-ns-openapi-3-2@1.11.1':
- resolution: {integrity: sha512-ILJAgp6mHwoV8rRuKYD3QuvPdcRcmK9YmAfrsjgC7fJM7irqzC+nBOKhrWVpTAee7r3b+B3HpV5MG8aKGd9qNQ==}
-
- '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.11.1':
- resolution: {integrity: sha512-bCt1/7NPfCznhq2D3Y1UcZowdxMtr6wGCISMSPf3ziaCcOQhy7sG/nWEzS/rwcKCVNefVft833Ab3jaCWGivJw==}
-
- '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.11.1':
- resolution: {integrity: sha512-hUcshr5ydn/L4VsgP5nyrFDp4QqIADrx5nQnFddw/OWCNi1Al19ccPxuBh1Qlf421AAmk1oUiybeGyduvRsVPQ==}
-
- '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.11.1':
- resolution: {integrity: sha512-8ydiEnlSJ7DPhFqg9Z11u4Vda16yaOuIGLablI0mOnYoAMTlqnteGk5CDPlVb970VBTYvsNlgW+164XfHAU/6w==}
-
- '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.11.1':
- resolution: {integrity: sha512-G4++rZDMKokEfq78EJ2aE7pgd1Xo70XIn1/ikSiT5awfuhPJzNcV99ZdzQI2xVVU/pbKIL2Vc/b5SP1IRlfCwA==}
-
- '@swagger-api/apidom-parser-adapter-asyncapi-json-2@1.11.1':
- resolution: {integrity: sha512-7Npn4LkG4q95b2VimG3SV0lqgG3xPeF5Srq+sVbG7iFd4yDubvEVy5zzqx5QH4tOtATdarhv6glA9j3hTfWBdQ==}
-
- '@swagger-api/apidom-parser-adapter-asyncapi-json-3@1.11.1':
- resolution: {integrity: sha512-/C1CzsnUW2ZMBg4kWYrhrfqmyjb4aGo9+YaySQwdArLfM8l2HCOQqDEteGIivedVEsmTpVdhC60gdb6N2VzSaQ==}
-
- '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@1.11.1':
- resolution: {integrity: sha512-0Xfu8PLM787el0R7lwjFfQYe0Bpv3Jz0YlkEiQqAVvftVb0oNi8tg9FhDTR8ju/N94gpNXIfaH/5Ahgz5G+NKg==}
-
- '@swagger-api/apidom-parser-adapter-asyncapi-yaml-3@1.11.1':
- resolution: {integrity: sha512-DqoR43NsFBmiJW1h2Xg3n2V6NQx+95qJ3ziA9rIbKJHGCidHtjNJgi4I7sWGnaIApIHijYY2bW22MKXaT0a0cQ==}
-
- '@swagger-api/apidom-parser-adapter-json@1.11.1':
- resolution: {integrity: sha512-L8XFzTbEknHDhD40M/pSoDlimjlYaXXWZS4AmyD3i+XRfiDWWVhEWHPE9OTNk6UL8R6DOBm3RSDxAd5xpLoPjg==}
-
- '@swagger-api/apidom-parser-adapter-openapi-json-2@1.11.1':
- resolution: {integrity: sha512-s9xZa/h4Yiz+Qc304s+9JSTPFsToYtSWQCeyA9jkHOWy/Oq8ZjD9wg34IjENS3yBqM1YLz6Dk+PX06DcyAOnnw==}
-
- '@swagger-api/apidom-parser-adapter-openapi-json-3-0@1.11.1':
- resolution: {integrity: sha512-dLGaVn24N+YZRB0vzQMC4R+aiSNfD81Xcp5TwdEbE+jOeOnoOe5NqzqCWjaDpSMChDsK/NdaSDjQj4uiYfWpug==}
-
- '@swagger-api/apidom-parser-adapter-openapi-json-3-1@1.11.1':
- resolution: {integrity: sha512-EnYF3rzPZoiCYDnp4ChB6K15RUV4rE6QfEh7fTEwIlkWMUKv4oVwZd8aqz2i9laRZiBH6S2uUoED8YNtCNbeIg==}
-
- '@swagger-api/apidom-parser-adapter-openapi-json-3-2@1.11.1':
- resolution: {integrity: sha512-digw37g+k/rg87HHMUHuSZVWH1Kh8OjC8SmQflIh1Oot9fGhmnZWddsws+sKWSVy6/HveuZPykL8bxtSV3Nc/A==}
-
- '@swagger-api/apidom-parser-adapter-openapi-yaml-2@1.11.1':
- resolution: {integrity: sha512-b38GFur/NjjLFBCVR/wo7DRF6EW5h8B5jBe7C17EVaJvg9eRzknnr9/KMnxYeTtjQVO8W/JeY7LlLad1/j0pcA==}
-
- '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@1.11.1':
- resolution: {integrity: sha512-dza6Bwe5kLL+4jANuaScxvYh3o7RxESp6Riz6M09cXRysyRrHFQ7UYuUhxepSD4jSiSxJQS8nu0i547i6Z7W7Q==}
-
- '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@1.11.1':
- resolution: {integrity: sha512-PgmolQN1PYdROSo/cHNyXINVD+aLmW6VqfwT7potNo08c4aWj+QQ/a0Az+mldfJ+G98WjNRvEKr8dhEw8zfqmw==}
-
- '@swagger-api/apidom-parser-adapter-openapi-yaml-3-2@1.11.1':
- resolution: {integrity: sha512-+nmtJ3/wPLBBN6d8xI8rD0mOz80V4iSRe6rYYOQ/skel673N1SY4B58Ufnc7KnMNV4cOce/a52ASQ1Qd1csLvQ==}
-
- '@swagger-api/apidom-parser-adapter-yaml-1-2@1.11.1':
- resolution: {integrity: sha512-KEgk5PoSmmLC7ZvH0+RF4FPyWAj0NyrPFbTr04DmNPznfr2qpGqvt3ZBmAJm82jrWoI1dc8EH1ugT1YX69N8ww==}
-
- '@swagger-api/apidom-reference@1.11.1':
- resolution: {integrity: sha512-wxsRo12YVc2Q4o81K9EGzX5oM1htNDkeCIRkLyg1wPvzFQUH4khd6aOWYaX/0V0L+7yqwwmeW/t80xV8qLEGAQ==}
-
- '@swaggerexpert/cookie@2.0.2':
- resolution: {integrity: sha512-DPI8YJ0Vznk4CT+ekn3rcFNq1uQwvUHZhH6WvTSPD0YKBIlMS9ur2RYKghXuxxOiqOam/i4lHJH4xTIiTgs3Mg==}
- engines: {node: '>=12.20.0'}
-
- '@swaggerexpert/json-pointer@2.10.2':
- resolution: {integrity: sha512-qMx1nOrzoB+PF+pzb26Q4Tc2sOlrx9Ba2UBNX9hB31Omrq+QoZ2Gly0KLrQWw4Of1AQ4J9lnD+XOdwOdcdXqqw==}
- engines: {node: '>=12.20.0'}
-
'@swc/helpers@0.5.15':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
@@ -1461,14 +1328,6 @@ packages:
'@tailwindcss/postcss@4.3.0':
resolution: {integrity: sha512-Jm05Tjx+9yCLGv5qw1c+84Psds8MnyrEQYCB+FFk2lgGiUjlRqdxke4mVTuYrj2xnVZqKim2Apr5ySuQRYAw/w==}
- '@tree-sitter-grammars/tree-sitter-yaml@0.7.1':
- resolution: {integrity: sha512-AynBwkIoQCTgjDR33bDUp9Mqq+YTco0is3n5hRApMqG9of/6A4eQsfC1/uSEeHSUyMQSYawcAWamsexnVpIP4Q==}
- peerDependencies:
- tree-sitter: ^0.22.4
- peerDependenciesMeta:
- tree-sitter:
- optional: true
-
'@tybys/wasm-util@0.10.2':
resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==}
@@ -1505,12 +1364,6 @@ packages:
'@types/node@25.3.3':
resolution: {integrity: sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==}
- '@types/prismjs@1.26.6':
- resolution: {integrity: sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==}
-
- '@types/ramda@0.30.2':
- resolution: {integrity: sha512-PyzHvjCalm2BRYjAU6nIB3TprYwMNOUY/7P/N8bSzp9W/yM2YrtGtAnnVtaCNSeOZ8DzKyFDvaqQs7LnWwwmBA==}
-
'@types/react-dom@19.2.3':
resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
peerDependencies:
@@ -1519,21 +1372,12 @@ packages:
'@types/react@19.2.15':
resolution: {integrity: sha512-eRwcGNHve+E8qtEQSSRl6urh+rFop4v8gm6O8rGv25CodbvFdLjA1vVQ1KkiFE0w0UPOnb8tDiFKL5lp0rtY5Q==}
- '@types/swagger-ui-react@5.18.0':
- resolution: {integrity: sha512-c2M9adVG7t28t1pq19K9Jt20VLQf0P/fwJwnfcmsVVsdkwCWhRmbKDu+tIs0/NGwJ/7GY8lBx+iKZxuDI5gDbw==}
-
- '@types/trusted-types@2.0.7':
- resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
-
'@types/unist@2.0.11':
resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
'@types/unist@3.0.3':
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
- '@types/use-sync-external-store@0.0.6':
- resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==}
-
'@typescript-eslint/eslint-plugin@8.60.0':
resolution: {integrity: sha512-QYb/sa74/s7OKMbACMjrYnGspj9Hs5YI5aaffSL65UfeBUzVzBJfVo3oWSpbzPurvm7yaCCo2Lk7lVj610HqKw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -1726,19 +1570,9 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
- agent-base@6.0.2:
- resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
- engines: {node: '>= 6.0.0'}
-
ajv@6.15.0:
resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==}
- apg-lite@1.0.5:
- resolution: {integrity: sha512-SlI+nLMQDzCZfS39ihzjGp3JNBQfJXyMi6cg9tkLOCPVErgFsUIAEdO9IezR7kbP5Xd0ozcPNQBkf9TO5cHgWw==}
-
- argparse@1.0.10:
- resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
-
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
@@ -1793,12 +1627,6 @@ packages:
resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
engines: {node: '>= 0.4'}
- asynckit@0.4.0:
- resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
-
- autolinker@3.16.2:
- resolution: {integrity: sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==}
-
available-typed-arrays@1.0.7:
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
engines: {node: '>= 0.4'}
@@ -1807,9 +1635,6 @@ packages:
resolution: {integrity: sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA==}
engines: {node: '>=4'}
- axios@1.16.1:
- resolution: {integrity: sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==}
-
axobject-query@4.1.0:
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
engines: {node: '>= 0.4'}
@@ -1824,9 +1649,6 @@ packages:
resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
engines: {node: 18 || 20 || >=22}
- base64-js@1.5.1:
- resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
-
baseline-browser-mapping@2.10.33:
resolution: {integrity: sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw==}
engines: {node: '>=6.0.0'}
@@ -1848,9 +1670,6 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
- buffer@6.0.3:
- resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
-
call-bind-apply-helpers@1.0.2:
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
engines: {node: '>= 0.4'}
@@ -1888,9 +1707,6 @@ packages:
class-variance-authority@0.7.1:
resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
- classnames@2.5.1:
- resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
-
client-only@0.0.1:
resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
@@ -1901,10 +1717,6 @@ packages:
collapse-white-space@2.1.0:
resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==}
- combined-stream@1.0.8:
- resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
- engines: {node: '>= 0.8'}
-
comma-separated-tokens@2.0.3:
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
@@ -1917,19 +1729,10 @@ packages:
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
- copy-to-clipboard@3.3.3:
- resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==}
-
- core-js-pure@3.49.0:
- resolution: {integrity: sha512-XM4RFka59xATyJv/cS3O3Kml72hQXUeGRuuTmMYFxwzc9/7C8OYTaIR/Ji+Yt8DXzsFLNhat15cE/JP15HrCgw==}
-
cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
- css.escape@1.5.1:
- resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
-
csstype@3.2.3:
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
@@ -1968,17 +1771,9 @@ packages:
decode-named-character-reference@1.3.0:
resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==}
- deep-extend@0.6.0:
- resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
- engines: {node: '>=4.0.0'}
-
deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
- deepmerge@4.3.1:
- resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
- engines: {node: '>=0.10.0'}
-
define-data-property@1.1.4:
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
engines: {node: '>= 0.4'}
@@ -1987,10 +1782,6 @@ packages:
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
- delayed-stream@1.0.0:
- resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
- engines: {node: '>=0.4.0'}
-
dequal@2.0.3:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
engines: {node: '>=6'}
@@ -2009,13 +1800,6 @@ packages:
resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
engines: {node: '>=0.10.0'}
- dompurify@3.4.7:
- resolution: {integrity: sha512-2jBxDJY4RR06tQNy4w5FlFH7kfxsQZlufd0sbv+chfHCxeJwrFw2baUDsSwvBISD4K4RDbd0PTfy3uNXsR6siA==}
-
- drange@1.1.1:
- resolution: {integrity: sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==}
- engines: {node: '>=4'}
-
dunder-proto@1.0.1:
resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
engines: {node: '>= 0.4'}
@@ -2252,9 +2036,6 @@ packages:
resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
engines: {node: '>=8.6.0'}
- fast-json-patch@3.1.1:
- resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==}
-
fast-json-stable-stringify@2.1.0:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
@@ -2264,9 +2045,6 @@ packages:
fastq@1.20.1:
resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
- fault@1.0.4:
- resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==}
-
fdir@6.5.0:
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
engines: {node: '>=12.0.0'}
@@ -2295,27 +2073,10 @@ packages:
flatted@3.4.2:
resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==}
- follow-redirects@1.16.0:
- resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==}
- engines: {node: '>=4.0'}
- peerDependencies:
- debug: '*'
- peerDependenciesMeta:
- debug:
- optional: true
-
for-each@0.3.5:
resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
engines: {node: '>= 0.4'}
- form-data@4.0.5:
- resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
- engines: {node: '>= 6'}
-
- format@0.2.2:
- resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
- engines: {node: '>=0.4.x'}
-
framer-motion@12.40.0:
resolution: {integrity: sha512-uaBd3qC1v3KQqBEjwTUd183K6PbS+j0yR9w9VmEOLWA/tnUcSn8Xa3uck7t4dgpDoUss8xQTcj8W2L07lrnLFg==}
peerDependencies:
@@ -2582,22 +2343,9 @@ packages:
hermes-parser@0.25.1:
resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==}
- highlight.js@10.7.3:
- resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==}
-
- highlightjs-vue@1.0.0:
- resolution: {integrity: sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==}
-
html-void-elements@3.0.0:
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
- https-proxy-agent@5.0.1:
- resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
- engines: {node: '>= 6'}
-
- ieee754@1.2.1:
- resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
-
ignore@5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
@@ -2606,17 +2354,10 @@ packages:
resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
engines: {node: '>= 4'}
- immutable@3.8.3:
- resolution: {integrity: sha512-AUY/VyX0E5XlibOmWt10uabJzam1zlYjwiEgQSDc5+UIkFNaF9WM0JxXKaNMGf+F/ffUF+7kRKXM9A7C0xXqMg==}
- engines: {node: '>=0.10.0'}
-
imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
- inherits@2.0.4:
- resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
-
inline-style-parser@0.2.7:
resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==}
@@ -2624,9 +2365,6 @@ packages:
resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
engines: {node: '>= 0.4'}
- invariant@2.2.4:
- resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
-
is-alphabetical@2.0.1:
resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
@@ -2760,16 +2498,9 @@ packages:
resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==}
hasBin: true
- js-file-download@0.4.12:
- resolution: {integrity: sha512-rML+NkoD08p5Dllpjo0ffy4jRHeY6Zsapvr/W86N7E0yuzAO6qa5X9+xog6zQNlH102J7IXljNY2FtS6Lj3ucg==}
-
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
- js-yaml@4.1.1:
- resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
- hasBin: true
-
js-yaml@4.2.0:
resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==}
hasBin: true
@@ -2893,12 +2624,6 @@ packages:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
- lodash.debounce@4.0.8:
- resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
-
- lodash@4.18.1:
- resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==}
-
longest-streak@3.1.0:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
@@ -2906,9 +2631,6 @@ packages:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
- lowlight@1.20.0:
- resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==}
-
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
@@ -3097,18 +2819,6 @@ packages:
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
- mime-db@1.52.0:
- resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
- engines: {node: '>= 0.6'}
-
- mime-types@2.1.35:
- resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
- engines: {node: '>= 0.6'}
-
- minim@0.23.8:
- resolution: {integrity: sha512-bjdr2xW1dBCMsMGGsUeqM4eFI60m94+szhxWys+B1ztIt6gWSfeGBdSVCIawezeHYLYn0j6zrsXdQS/JllBzww==}
- engines: {node: '>=6'}
-
minimatch@10.2.5:
resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==}
engines: {node: 18 || 20 || >=22}
@@ -3155,10 +2865,6 @@ packages:
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
- neotraverse@0.6.18:
- resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==}
- engines: {node: '>= 10'}
-
next-themes@0.4.6:
resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==}
peerDependencies:
@@ -3186,21 +2892,10 @@ packages:
sass:
optional: true
- node-abort-controller@3.1.1:
- resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==}
-
- node-addon-api@8.8.0:
- resolution: {integrity: sha512-c5Ko1fZJIJmzhFIkhRN76WTq+fC6tWnGy9CXA0fA+XygsWZmEwG8vmbkNqxMyoaa0Tin4djul49NzdVcJJcjeA==}
- engines: {node: ^18 || ^20 || >= 21}
-
node-exports-info@1.6.0:
resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==}
engines: {node: '>= 0.4'}
- node-gyp-build@4.8.4:
- resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
- hasBin: true
-
node-releases@2.0.46:
resolution: {integrity: sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==}
engines: {node: '>=18'}
@@ -3243,14 +2938,6 @@ packages:
oniguruma-to-es@4.3.6:
resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==}
- openapi-path-templating@2.2.1:
- resolution: {integrity: sha512-eN14VrDvl/YyGxxrkGOHkVkWEoPyhyeydOUrbvjoz8K5eIGgELASwN1eqFOJ2CTQMGCy2EntOK1KdtJ8ZMekcg==}
- engines: {node: '>=12.20.0'}
-
- openapi-server-url-templating@1.3.0:
- resolution: {integrity: sha512-DPlCms3KKEbjVQb0spV6Awfn6UWNheuG/+folQPzh/wUaKwuqvj8zt5gagD7qoyxtE03cIiKPgLFS3Q8Bz00uQ==}
- engines: {node: '>=12.20.0'}
-
optionator@0.9.4:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'}
@@ -3311,93 +2998,27 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
- prismjs@1.30.0:
- resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
- engines: {node: '>=6'}
-
prop-types@15.8.1:
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
property-information@7.1.0:
resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
- proxy-from-env@2.1.0:
- resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==}
- engines: {node: '>=10'}
-
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
- querystringify@2.2.0:
- resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
-
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
- ramda-adjunct@5.1.0:
- resolution: {integrity: sha512-8qCpl2vZBXEJyNbi4zqcgdfHtcdsWjOGbiNSEnEBrM6Y0OKOT8UxJbIVGm1TIcjaSu2MxaWcgtsNlKlCk7o7qg==}
- engines: {node: '>=0.10.3'}
- peerDependencies:
- ramda: '>= 0.30.0'
-
- ramda@0.30.1:
- resolution: {integrity: sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==}
-
- randexp@0.5.3:
- resolution: {integrity: sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==}
- engines: {node: '>=4'}
-
- randombytes@2.1.0:
- resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
-
- react-copy-to-clipboard@5.1.0:
- resolution: {integrity: sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==}
- peerDependencies:
- react: ^15.3.0 || 16 || 17 || 18
-
- react-debounce-input@3.3.0:
- resolution: {integrity: sha512-VEqkvs8JvY/IIZvh71Z0TC+mdbxERvYF33RcebnodlsUZ8RSgyKe2VWaHXv4+/8aoOgXLxWrdsYs2hDhcwbUgA==}
- peerDependencies:
- react: ^15.3.0 || 16 || 17 || 18
-
react-dom@19.2.6:
resolution: {integrity: sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==}
peerDependencies:
react: ^19.2.6
- react-immutable-proptypes@2.2.0:
- resolution: {integrity: sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ==}
- peerDependencies:
- immutable: '>=3.6.2'
-
- react-immutable-pure-component@2.2.2:
- resolution: {integrity: sha512-vkgoMJUDqHZfXXnjVlG3keCxSO/U6WeDQ5/Sl0GK2cH8TOxEzQ5jXqDXHEL/jqk6fsNxV05oH5kD7VNMUE2k+A==}
- peerDependencies:
- immutable: '>= 2 || >= 4.0.0-rc'
- react: '>= 16.6'
- react-dom: '>= 16.6'
-
- react-inspector@6.0.2:
- resolution: {integrity: sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ==}
- peerDependencies:
- react: ^16.8.4 || ^17.0.0 || ^18.0.0
-
react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
- react-redux@9.3.0:
- resolution: {integrity: sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==}
- peerDependencies:
- '@types/react': ^18.2.25 || ^19
- react: ^18.0 || ^19
- redux: ^5.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- redux:
- optional: true
-
react-remove-scroll-bar@2.3.8:
resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==}
engines: {node: '>=10'}
@@ -3428,12 +3049,6 @@ packages:
'@types/react':
optional: true
- react-syntax-highlighter@16.1.1:
- resolution: {integrity: sha512-PjVawBGy80C6YbC5DDZJeUjBmC7skaoEUdvfFQediQHgCL7aKyVHe57SaJGfQsloGDac+gCpTfRdtxzWWKmCXA==}
- engines: {node: '>= 16.20.2'}
- peerDependencies:
- react: '>= 0.14.0'
-
react@19.2.6:
resolution: {integrity: sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==}
engines: {node: '>=0.10.0'}
@@ -3456,21 +3071,10 @@ packages:
recma-stringify@1.0.0:
resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==}
- redux-immutable@4.0.0:
- resolution: {integrity: sha512-SchSn/DWfGb3oAejd+1hhHx01xUoxY+V7TeK0BKqpkLKiQPVFf7DYzEaKmrEVxsWxielKfSK9/Xq66YyxgR1cg==}
- peerDependencies:
- immutable: ^3.8.1 || ^4.0.0-rc.1
-
- redux@5.0.1:
- resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==}
-
reflect.getprototypeof@1.0.10:
resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
engines: {node: '>= 0.4'}
- refractor@5.0.0:
- resolution: {integrity: sha512-QXOrHQF5jOpjjLfiNk5GFnWhRXvxjUVnlFxkeDmewR5sXkr3iM46Zo+CnRR8B+MDVqkULW4EcLVcRBNOPXHosw==}
-
regex-recursion@6.0.2:
resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
@@ -3508,21 +3112,6 @@ packages:
remark@15.0.1:
resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==}
- remarkable@2.0.1:
- resolution: {integrity: sha512-YJyMcOH5lrR+kZdmB0aJJ4+93bEojRZ1HGDn9Eagu6ibg7aVZhc3OWbbShRid+Q5eAfsEqWxpe+g5W5nYNfNiA==}
- engines: {node: '>= 6.0.0'}
- hasBin: true
-
- repeat-string@1.6.1:
- resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
- engines: {node: '>=0.10'}
-
- requires-port@1.0.0:
- resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
-
- reselect@5.2.0:
- resolution: {integrity: sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==}
-
resolve-pkg-maps@1.0.0:
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
@@ -3531,10 +3120,6 @@ packages:
engines: {node: '>= 0.4'}
hasBin: true
- ret@0.2.2:
- resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==}
- engines: {node: '>=4'}
-
reusify@1.1.0:
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
@@ -3546,9 +3131,6 @@ packages:
resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==}
engines: {node: '>=0.4'}
- safe-buffer@5.2.1:
- resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
-
safe-push-apply@1.0.0:
resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
engines: {node: '>= 0.4'}
@@ -3572,10 +3154,6 @@ packages:
engines: {node: '>=10'}
hasBin: true
- serialize-error@8.1.0:
- resolution: {integrity: sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==}
- engines: {node: '>=10'}
-
set-function-length@1.2.2:
resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
engines: {node: '>= 0.4'}
@@ -3588,11 +3166,6 @@ packages:
resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
engines: {node: '>= 0.4'}
- sha.js@2.4.12:
- resolution: {integrity: sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==}
- engines: {node: '>= 0.10'}
- hasBin: true
-
sharp@0.34.5:
resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
@@ -3609,10 +3182,6 @@ packages:
resolution: {integrity: sha512-l/ABZPUR5v70jI10EzqfMS/I96vjSGv2y0ihUV+WYFzv0EfvW4s54m0Lg8wCrrL+2IkwBzFTuxkZjPf8b2NX9Q==}
engines: {node: '>=20'}
- short-unique-id@5.3.2:
- resolution: {integrity: sha512-KRT/hufMSxXKEDSQujfVE0Faa/kZ51ihUcZQAcmP04t00DvPj7Ox5anHke1sJYUtzSuiT/Y5uyzg/W7bBEGhCg==}
- hasBin: true
-
side-channel-list@1.0.1:
resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==}
engines: {node: '>= 0.4'}
@@ -3640,9 +3209,6 @@ packages:
space-separated-tokens@2.0.2:
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
- sprintf-js@1.0.3:
- resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
-
stable-hash@0.0.5:
resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==}
@@ -3703,16 +3269,6 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
- swagger-client@3.37.4:
- resolution: {integrity: sha512-3xxqc9s99Vsf47ket2j7D4Tw6b6T7ObNvTqSP009yBeoAo0fy0yprqOVxFISTrvRxN7jgfrEi8GXMhsjzb1M0g==}
- engines: {node: '>=22'}
-
- swagger-ui-react@5.32.6:
- resolution: {integrity: sha512-2q2kXd6eDR+syyWV5HE2CkWANyr2MHPkNezG4M7fC0FPlBUZEsNgyA/2dcb9dIwgE5xd995dO42h89fNMF5/ng==}
- peerDependencies:
- react: '>=16.8.0 <20'
- react-dom: '>=16.8.0 <20'
-
tailwind-merge@3.6.0:
resolution: {integrity: sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==}
@@ -3731,31 +3287,10 @@ packages:
resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
engines: {node: '>=12.0.0'}
- to-buffer@1.2.2:
- resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==}
- engines: {node: '>= 0.4'}
-
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
- toggle-selection@1.0.6:
- resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==}
-
- tree-sitter-json@0.24.8:
- resolution: {integrity: sha512-Tc9ZZYwHyWZ3Tt1VEw7Pa2scu1YO7/d2BCBbKTx5hXwig3UfdQjsOPkPyLpDJOn/m1UBEWYAtSdGAwCSyagBqQ==}
- peerDependencies:
- tree-sitter: ^0.21.1
- peerDependenciesMeta:
- tree-sitter:
- optional: true
-
- tree-sitter@0.21.1:
- resolution: {integrity: sha512-7dxoA6kYvtgWw80265MyqJlkRl4yawIjO7S5MigytjELkX43fV2WsAXzsNfO7sBpPPCF5Gp0+XzHk0DwLCq3xQ==}
-
- tree-sitter@0.22.4:
- resolution: {integrity: sha512-usbHZP9/oxNsUY65MQUsduGRqDHQOou1cagUSwjhoSYAmSahjQDAVsh9s+SlZkn8X8+O1FULRGwHu7AFP3kjzg==}
-
trim-lines@3.0.1:
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
@@ -3768,12 +3303,6 @@ packages:
peerDependencies:
typescript: '>=4.8.4'
- ts-mixer@6.0.4:
- resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==}
-
- ts-toolbelt@9.6.0:
- resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==}
-
tsconfig-paths@3.15.0:
resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
@@ -3789,10 +3318,6 @@ packages:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
- type-fest@0.20.2:
- resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
- engines: {node: '>=10'}
-
typed-array-buffer@1.0.3:
resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
engines: {node: '>= 0.4'}
@@ -3809,9 +3334,6 @@ packages:
resolution: {integrity: sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==}
engines: {node: '>= 0.4'}
- types-ramda@0.30.1:
- resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==}
-
typescript-eslint@8.60.0:
resolution: {integrity: sha512-9f65qWLZdAW9m1JaxBDUHcqRUfL8bkxxXL7XxEfI+F09q56PkBvIfCjLF3yInsDM/BBmwkqmCQdCZe/RYlIWEw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -3855,9 +3377,6 @@ packages:
unist-util-visit@5.1.0:
resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==}
- unraw@3.0.0:
- resolution: {integrity: sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg==}
-
unrs-resolver@1.12.2:
resolution: {integrity: sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==}
@@ -3870,9 +3389,6 @@ packages:
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
- url-parse@1.5.10:
- resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
-
use-callback-ref@1.3.3:
resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==}
engines: {node: '>=10'}
@@ -3893,11 +3409,6 @@ packages:
'@types/react':
optional: true
- use-sync-external-store@1.6.0:
- resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
-
vfile-location@5.0.3:
resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
@@ -3910,9 +3421,6 @@ packages:
web-namespaces@2.0.1:
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
- web-tree-sitter@0.24.5:
- resolution: {integrity: sha512-+J/2VSHN8J47gQUAvF8KDadrfz6uFYVjxoxbKWDoXVsH2u7yLdarCnIURnrMA6uSRkgX3SdmqM5BOoQjPdSh5w==}
-
which-boxed-primitive@1.1.1:
resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
engines: {node: '>= 0.4'}
@@ -3938,12 +3446,6 @@ packages:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
- xml-but-prettier@1.0.1:
- resolution: {integrity: sha512-C2CJaadHrZTqESlH03WOyw0oZTtoy2uEg6dSDF6YRg+9GnYNub53RRemLpnvtbHDFelxMx4LajiFsYeR6XJHgQ==}
-
- xml@1.0.1:
- resolution: {integrity: sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==}
-
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
@@ -3951,9 +3453,6 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
- zenscroll@4.0.2:
- resolution: {integrity: sha512-jEA1znR7b4C/NnaycInCU6h/d15ZzCd1jmsruqOKnZP6WXQSMH3W2GL+OXbkruslU4h+Tzuos0HdswzRUk/Vgg==}
-
zod-validation-error@4.0.2:
resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
engines: {node: '>=18.0.0'}
@@ -4047,12 +3546,6 @@ snapshots:
dependencies:
'@babel/types': 7.29.7
- '@babel/runtime-corejs3@7.29.7':
- dependencies:
- core-js-pure: 3.49.0
-
- '@babel/runtime@7.29.7': {}
-
'@babel/template@7.29.7':
dependencies:
'@babel/code-frame': 7.29.7
@@ -4915,8 +4408,6 @@ snapshots:
'@rtsao/scc@1.1.0': {}
- '@scarf/scarf@1.4.0': {}
-
'@shikijs/core@4.1.0':
dependencies:
'@shikijs/primitive': 4.1.0
@@ -4959,439 +4450,6 @@ snapshots:
'@standard-schema/spec@1.1.0': {}
- '@swagger-api/apidom-ast@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-error': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- unraw: 3.0.0
-
- '@swagger-api/apidom-core@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-ast': 1.11.1
- '@swagger-api/apidom-error': 1.11.1
- '@types/ramda': 0.30.2
- minim: 0.23.8
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- short-unique-id: 5.3.2
- ts-mixer: 6.0.4
-
- '@swagger-api/apidom-error@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
-
- '@swagger-api/apidom-json-pointer@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-error': 1.11.1
- '@swaggerexpert/json-pointer': 2.10.2
-
- '@swagger-api/apidom-ns-api-design-systems@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-error': 1.11.1
- '@swagger-api/apidom-ns-openapi-3-1': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- ts-mixer: 6.0.4
- optional: true
-
- '@swagger-api/apidom-ns-arazzo-1@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-json-schema-2020-12': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- ts-mixer: 6.0.4
- optional: true
-
- '@swagger-api/apidom-ns-asyncapi-2@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-json-schema-draft-7': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- ts-mixer: 6.0.4
- optional: true
-
- '@swagger-api/apidom-ns-asyncapi-3@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-asyncapi-2': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- ts-mixer: 6.0.4
- optional: true
-
- '@swagger-api/apidom-ns-json-schema-2019-09@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-error': 1.11.1
- '@swagger-api/apidom-ns-json-schema-draft-7': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- ts-mixer: 6.0.4
-
- '@swagger-api/apidom-ns-json-schema-2020-12@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-error': 1.11.1
- '@swagger-api/apidom-ns-json-schema-2019-09': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- ts-mixer: 6.0.4
-
- '@swagger-api/apidom-ns-json-schema-draft-4@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-ast': 1.11.1
- '@swagger-api/apidom-core': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- ts-mixer: 6.0.4
-
- '@swagger-api/apidom-ns-json-schema-draft-6@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-error': 1.11.1
- '@swagger-api/apidom-ns-json-schema-draft-4': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- ts-mixer: 6.0.4
-
- '@swagger-api/apidom-ns-json-schema-draft-7@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-error': 1.11.1
- '@swagger-api/apidom-ns-json-schema-draft-6': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- ts-mixer: 6.0.4
-
- '@swagger-api/apidom-ns-openapi-2@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-error': 1.11.1
- '@swagger-api/apidom-ns-json-schema-draft-4': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- ts-mixer: 6.0.4
- optional: true
-
- '@swagger-api/apidom-ns-openapi-3-0@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-error': 1.11.1
- '@swagger-api/apidom-ns-json-schema-draft-4': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- ts-mixer: 6.0.4
-
- '@swagger-api/apidom-ns-openapi-3-1@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-ast': 1.11.1
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-json-pointer': 1.11.1
- '@swagger-api/apidom-ns-json-schema-2020-12': 1.11.1
- '@swagger-api/apidom-ns-openapi-3-0': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- ts-mixer: 6.0.4
-
- '@swagger-api/apidom-ns-openapi-3-2@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-ast': 1.11.1
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-json-pointer': 1.11.1
- '@swagger-api/apidom-ns-json-schema-2020-12': 1.11.1
- '@swagger-api/apidom-ns-openapi-3-0': 1.11.1
- '@swagger-api/apidom-ns-openapi-3-1': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- ts-mixer: 6.0.4
-
- '@swagger-api/apidom-parser-adapter-api-design-systems-json@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-api-design-systems': 1.11.1
- '@swagger-api/apidom-parser-adapter-json': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optional: true
-
- '@swagger-api/apidom-parser-adapter-api-design-systems-yaml@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-api-design-systems': 1.11.1
- '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optional: true
-
- '@swagger-api/apidom-parser-adapter-arazzo-json-1@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-arazzo-1': 1.11.1
- '@swagger-api/apidom-parser-adapter-json': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optional: true
-
- '@swagger-api/apidom-parser-adapter-arazzo-yaml-1@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-arazzo-1': 1.11.1
- '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optional: true
-
- '@swagger-api/apidom-parser-adapter-asyncapi-json-2@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-asyncapi-2': 1.11.1
- '@swagger-api/apidom-parser-adapter-json': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optional: true
-
- '@swagger-api/apidom-parser-adapter-asyncapi-json-3@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-asyncapi-3': 1.11.1
- '@swagger-api/apidom-parser-adapter-json': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optional: true
-
- '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-asyncapi-2': 1.11.1
- '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optional: true
-
- '@swagger-api/apidom-parser-adapter-asyncapi-yaml-3@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-asyncapi-3': 1.11.1
- '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optional: true
-
- '@swagger-api/apidom-parser-adapter-json@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-ast': 1.11.1
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-error': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- tree-sitter: 0.21.1
- tree-sitter-json: 0.24.8(tree-sitter@0.21.1)
- web-tree-sitter: 0.24.5
- optional: true
-
- '@swagger-api/apidom-parser-adapter-openapi-json-2@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-openapi-2': 1.11.1
- '@swagger-api/apidom-parser-adapter-json': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optional: true
-
- '@swagger-api/apidom-parser-adapter-openapi-json-3-0@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-openapi-3-0': 1.11.1
- '@swagger-api/apidom-parser-adapter-json': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optional: true
-
- '@swagger-api/apidom-parser-adapter-openapi-json-3-1@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-openapi-3-1': 1.11.1
- '@swagger-api/apidom-parser-adapter-json': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optional: true
-
- '@swagger-api/apidom-parser-adapter-openapi-json-3-2@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-openapi-3-2': 1.11.1
- '@swagger-api/apidom-parser-adapter-json': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optional: true
-
- '@swagger-api/apidom-parser-adapter-openapi-yaml-2@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-openapi-2': 1.11.1
- '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optional: true
-
- '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-openapi-3-0': 1.11.1
- '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optional: true
-
- '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-openapi-3-1': 1.11.1
- '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optional: true
-
- '@swagger-api/apidom-parser-adapter-openapi-yaml-3-2@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-ns-openapi-3-2': 1.11.1
- '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.11.1
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optional: true
-
- '@swagger-api/apidom-parser-adapter-yaml-1-2@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-ast': 1.11.1
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-error': 1.11.1
- '@tree-sitter-grammars/tree-sitter-yaml': 0.7.1(tree-sitter@0.22.4)
- '@types/ramda': 0.30.2
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- tree-sitter: 0.22.4
- web-tree-sitter: 0.24.5
- optional: true
-
- '@swagger-api/apidom-reference@1.11.1':
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-error': 1.11.1
- '@types/ramda': 0.30.2
- axios: 1.16.1
- minimatch: 10.2.5
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- optionalDependencies:
- '@swagger-api/apidom-json-pointer': 1.11.1
- '@swagger-api/apidom-ns-arazzo-1': 1.11.1
- '@swagger-api/apidom-ns-asyncapi-2': 1.11.1
- '@swagger-api/apidom-ns-openapi-2': 1.11.1
- '@swagger-api/apidom-ns-openapi-3-0': 1.11.1
- '@swagger-api/apidom-ns-openapi-3-1': 1.11.1
- '@swagger-api/apidom-ns-openapi-3-2': 1.11.1
- '@swagger-api/apidom-parser-adapter-api-design-systems-json': 1.11.1
- '@swagger-api/apidom-parser-adapter-api-design-systems-yaml': 1.11.1
- '@swagger-api/apidom-parser-adapter-arazzo-json-1': 1.11.1
- '@swagger-api/apidom-parser-adapter-arazzo-yaml-1': 1.11.1
- '@swagger-api/apidom-parser-adapter-asyncapi-json-2': 1.11.1
- '@swagger-api/apidom-parser-adapter-asyncapi-json-3': 1.11.1
- '@swagger-api/apidom-parser-adapter-asyncapi-yaml-2': 1.11.1
- '@swagger-api/apidom-parser-adapter-asyncapi-yaml-3': 1.11.1
- '@swagger-api/apidom-parser-adapter-json': 1.11.1
- '@swagger-api/apidom-parser-adapter-openapi-json-2': 1.11.1
- '@swagger-api/apidom-parser-adapter-openapi-json-3-0': 1.11.1
- '@swagger-api/apidom-parser-adapter-openapi-json-3-1': 1.11.1
- '@swagger-api/apidom-parser-adapter-openapi-json-3-2': 1.11.1
- '@swagger-api/apidom-parser-adapter-openapi-yaml-2': 1.11.1
- '@swagger-api/apidom-parser-adapter-openapi-yaml-3-0': 1.11.1
- '@swagger-api/apidom-parser-adapter-openapi-yaml-3-1': 1.11.1
- '@swagger-api/apidom-parser-adapter-openapi-yaml-3-2': 1.11.1
- '@swagger-api/apidom-parser-adapter-yaml-1-2': 1.11.1
- transitivePeerDependencies:
- - debug
- - supports-color
-
- '@swaggerexpert/cookie@2.0.2':
- dependencies:
- apg-lite: 1.0.5
-
- '@swaggerexpert/json-pointer@2.10.2':
- dependencies:
- apg-lite: 1.0.5
-
'@swc/helpers@0.5.15':
dependencies:
tslib: 2.8.1
@@ -5465,14 +4523,6 @@ snapshots:
postcss: 8.5.15
tailwindcss: 4.3.0
- '@tree-sitter-grammars/tree-sitter-yaml@0.7.1(tree-sitter@0.22.4)':
- dependencies:
- node-addon-api: 8.8.0
- node-gyp-build: 4.8.4
- optionalDependencies:
- tree-sitter: 0.22.4
- optional: true
-
'@tybys/wasm-util@0.10.2':
dependencies:
tslib: 2.8.1
@@ -5510,12 +4560,6 @@ snapshots:
dependencies:
undici-types: 7.18.2
- '@types/prismjs@1.26.6': {}
-
- '@types/ramda@0.30.2':
- dependencies:
- types-ramda: 0.30.1
-
'@types/react-dom@19.2.3(@types/react@19.2.15)':
dependencies:
'@types/react': 19.2.15
@@ -5524,19 +4568,10 @@ snapshots:
dependencies:
csstype: 3.2.3
- '@types/swagger-ui-react@5.18.0':
- dependencies:
- '@types/react': 19.2.15
-
- '@types/trusted-types@2.0.7':
- optional: true
-
'@types/unist@2.0.11': {}
'@types/unist@3.0.3': {}
- '@types/use-sync-external-store@0.0.6': {}
-
'@typescript-eslint/eslint-plugin@8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.2
@@ -5706,12 +4741,6 @@ snapshots:
acorn@8.16.0: {}
- agent-base@6.0.2:
- dependencies:
- debug: 4.4.3
- transitivePeerDependencies:
- - supports-color
-
ajv@6.15.0:
dependencies:
fast-deep-equal: 3.1.3
@@ -5719,12 +4748,6 @@ snapshots:
json-schema-traverse: 0.4.1
uri-js: 4.4.1
- apg-lite@1.0.5: {}
-
- argparse@1.0.10:
- dependencies:
- sprintf-js: 1.0.3
-
argparse@2.0.1: {}
aria-hidden@1.2.6:
@@ -5806,28 +4829,12 @@ snapshots:
async-function@1.0.0: {}
- asynckit@0.4.0: {}
-
- autolinker@3.16.2:
- dependencies:
- tslib: 2.8.1
-
available-typed-arrays@1.0.7:
dependencies:
possible-typed-array-names: 1.1.0
axe-core@4.11.4: {}
- axios@1.16.1:
- dependencies:
- follow-redirects: 1.16.0
- form-data: 4.0.5
- https-proxy-agent: 5.0.1
- proxy-from-env: 2.1.0
- transitivePeerDependencies:
- - debug
- - supports-color
-
axobject-query@4.1.0: {}
bail@2.0.2: {}
@@ -5836,8 +4843,6 @@ snapshots:
balanced-match@4.0.4: {}
- base64-js@1.5.1: {}
-
baseline-browser-mapping@2.10.33: {}
brace-expansion@1.1.15:
@@ -5861,11 +4866,6 @@ snapshots:
node-releases: 2.0.46
update-browserslist-db: 1.2.3(browserslist@4.28.2)
- buffer@6.0.3:
- dependencies:
- base64-js: 1.5.1
- ieee754: 1.2.1
-
call-bind-apply-helpers@1.0.2:
dependencies:
es-errors: 1.3.0
@@ -5903,18 +4903,12 @@ snapshots:
dependencies:
clsx: 2.1.1
- classnames@2.5.1: {}
-
client-only@0.0.1: {}
clsx@2.1.1: {}
collapse-white-space@2.1.0: {}
- combined-stream@1.0.8:
- dependencies:
- delayed-stream: 1.0.0
-
comma-separated-tokens@2.0.3: {}
compute-scroll-into-view@3.1.1: {}
@@ -5923,20 +4917,12 @@ snapshots:
convert-source-map@2.0.0: {}
- copy-to-clipboard@3.3.3:
- dependencies:
- toggle-selection: 1.0.6
-
- core-js-pure@3.49.0: {}
-
cross-spawn@7.0.6:
dependencies:
path-key: 3.1.1
shebang-command: 2.0.0
which: 2.0.2
- css.escape@1.5.1: {}
-
csstype@3.2.3: {}
damerau-levenshtein@1.0.8: {}
@@ -5971,12 +4957,8 @@ snapshots:
dependencies:
character-entities: 2.0.2
- deep-extend@0.6.0: {}
-
deep-is@0.1.4: {}
- deepmerge@4.3.1: {}
-
define-data-property@1.1.4:
dependencies:
es-define-property: 1.0.1
@@ -5989,8 +4971,6 @@ snapshots:
has-property-descriptors: 1.0.2
object-keys: 1.1.1
- delayed-stream@1.0.0: {}
-
dequal@2.0.3: {}
detect-libc@2.1.2: {}
@@ -6005,12 +4985,6 @@ snapshots:
dependencies:
esutils: 2.0.3
- dompurify@3.4.7:
- optionalDependencies:
- '@types/trusted-types': 2.0.7
-
- drange@1.1.1: {}
-
dunder-proto@1.0.1:
dependencies:
call-bind-apply-helpers: 1.0.2
@@ -6463,8 +5437,6 @@ snapshots:
merge2: 1.4.1
micromatch: 4.0.8
- fast-json-patch@3.1.1: {}
-
fast-json-stable-stringify@2.1.0: {}
fast-levenshtein@2.0.6: {}
@@ -6473,10 +5445,6 @@ snapshots:
dependencies:
reusify: 1.1.0
- fault@1.0.4:
- dependencies:
- format: 0.2.2
-
fdir@6.5.0(picomatch@4.0.4):
optionalDependencies:
picomatch: 4.0.4
@@ -6501,22 +5469,10 @@ snapshots:
flatted@3.4.2: {}
- follow-redirects@1.16.0: {}
-
for-each@0.3.5:
dependencies:
is-callable: 1.2.7
- form-data@4.0.5:
- dependencies:
- asynckit: 0.4.0
- combined-stream: 1.0.8
- es-set-tostringtag: 2.1.0
- hasown: 2.0.4
- mime-types: 2.1.35
-
- format@0.2.2: {}
-
framer-motion@12.40.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6):
dependencies:
motion-dom: 12.40.0
@@ -6858,31 +5814,14 @@ snapshots:
dependencies:
hermes-estree: 0.25.1
- highlight.js@10.7.3: {}
-
- highlightjs-vue@1.0.0: {}
-
html-void-elements@3.0.0: {}
- https-proxy-agent@5.0.1:
- dependencies:
- agent-base: 6.0.2
- debug: 4.4.3
- transitivePeerDependencies:
- - supports-color
-
- ieee754@1.2.1: {}
-
ignore@5.3.2: {}
ignore@7.0.5: {}
- immutable@3.8.3: {}
-
imurmurhash@0.1.4: {}
- inherits@2.0.4: {}
-
inline-style-parser@0.2.7: {}
internal-slot@1.1.0:
@@ -6891,10 +5830,6 @@ snapshots:
hasown: 2.0.4
side-channel: 1.1.0
- invariant@2.2.4:
- dependencies:
- loose-envify: 1.4.0
-
is-alphabetical@2.0.1: {}
is-alphanumerical@2.0.1:
@@ -7035,14 +5970,8 @@ snapshots:
jiti@2.7.0: {}
- js-file-download@0.4.12: {}
-
js-tokens@4.0.0: {}
- js-yaml@4.1.1:
- dependencies:
- argparse: 2.0.1
-
js-yaml@4.2.0:
dependencies:
argparse: 2.0.1
@@ -7136,21 +6065,12 @@ snapshots:
dependencies:
p-locate: 5.0.0
- lodash.debounce@4.0.8: {}
-
- lodash@4.18.1: {}
-
longest-streak@3.1.0: {}
loose-envify@1.4.0:
dependencies:
js-tokens: 4.0.0
- lowlight@1.20.0:
- dependencies:
- fault: 1.0.4
- highlight.js: 10.7.3
-
lru-cache@5.1.1:
dependencies:
yallist: 3.1.1
@@ -7607,16 +6527,6 @@ snapshots:
braces: 3.0.3
picomatch: 2.3.2
- mime-db@1.52.0: {}
-
- mime-types@2.1.35:
- dependencies:
- mime-db: 1.52.0
-
- minim@0.23.8:
- dependencies:
- lodash: 4.18.1
-
minimatch@10.2.5:
dependencies:
brace-expansion: 5.0.6
@@ -7649,8 +6559,6 @@ snapshots:
natural-compare@1.4.0: {}
- neotraverse@0.6.18: {}
-
next-themes@0.4.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6):
dependencies:
react: 19.2.6
@@ -7680,11 +6588,6 @@ snapshots:
- '@babel/core'
- babel-plugin-macros
- node-abort-controller@3.1.1: {}
-
- node-addon-api@8.8.0:
- optional: true
-
node-exports-info@1.6.0:
dependencies:
array.prototype.flatmap: 1.3.3
@@ -7692,9 +6595,6 @@ snapshots:
object.entries: 1.1.9
semver: 6.3.1
- node-gyp-build@4.8.4:
- optional: true
-
node-releases@2.0.46: {}
object-assign@4.1.1: {}
@@ -7747,14 +6647,6 @@ snapshots:
regex: 6.1.0
regex-recursion: 6.0.2
- openapi-path-templating@2.2.1:
- dependencies:
- apg-lite: 1.0.5
-
- openapi-server-url-templating@1.3.0:
- dependencies:
- apg-lite: 1.0.5
-
optionator@0.9.4:
dependencies:
deep-is: 0.1.4
@@ -7820,8 +6712,6 @@ snapshots:
prelude-ls@1.2.1: {}
- prismjs@1.30.0: {}
-
prop-types@15.8.1:
dependencies:
loose-envify: 1.4.0
@@ -7830,72 +6720,17 @@ snapshots:
property-information@7.1.0: {}
- proxy-from-env@2.1.0: {}
-
punycode@2.3.1: {}
- querystringify@2.2.0: {}
-
queue-microtask@1.2.3: {}
- ramda-adjunct@5.1.0(ramda@0.30.1):
- dependencies:
- ramda: 0.30.1
-
- ramda@0.30.1: {}
-
- randexp@0.5.3:
- dependencies:
- drange: 1.1.1
- ret: 0.2.2
-
- randombytes@2.1.0:
- dependencies:
- safe-buffer: 5.2.1
-
- react-copy-to-clipboard@5.1.0(react@19.2.6):
- dependencies:
- copy-to-clipboard: 3.3.3
- prop-types: 15.8.1
- react: 19.2.6
-
- react-debounce-input@3.3.0(react@19.2.6):
- dependencies:
- lodash.debounce: 4.0.8
- prop-types: 15.8.1
- react: 19.2.6
-
react-dom@19.2.6(react@19.2.6):
dependencies:
react: 19.2.6
scheduler: 0.27.0
- react-immutable-proptypes@2.2.0(immutable@3.8.3):
- dependencies:
- immutable: 3.8.3
- invariant: 2.2.4
-
- react-immutable-pure-component@2.2.2(immutable@3.8.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6):
- dependencies:
- immutable: 3.8.3
- react: 19.2.6
- react-dom: 19.2.6(react@19.2.6)
-
- react-inspector@6.0.2(react@19.2.6):
- dependencies:
- react: 19.2.6
-
react-is@16.13.1: {}
- react-redux@9.3.0(@types/react@19.2.15)(react@19.2.6)(redux@5.0.1):
- dependencies:
- '@types/use-sync-external-store': 0.0.6
- react: 19.2.6
- use-sync-external-store: 1.6.0(react@19.2.6)
- optionalDependencies:
- '@types/react': 19.2.15
- redux: 5.0.1
-
react-remove-scroll-bar@2.3.8(@types/react@19.2.15)(react@19.2.6):
dependencies:
react: 19.2.6
@@ -7923,16 +6758,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.15
- react-syntax-highlighter@16.1.1(react@19.2.6):
- dependencies:
- '@babel/runtime': 7.29.7
- highlight.js: 10.7.3
- highlightjs-vue: 1.0.0
- lowlight: 1.20.0
- prismjs: 1.30.0
- react: 19.2.6
- refractor: 5.0.0
-
react@19.2.6: {}
readdirp@5.0.0: {}
@@ -7966,12 +6791,6 @@ snapshots:
unified: 11.0.5
vfile: 6.0.3
- redux-immutable@4.0.0(immutable@3.8.3):
- dependencies:
- immutable: 3.8.3
-
- redux@5.0.1: {}
-
reflect.getprototypeof@1.0.10:
dependencies:
call-bind: 1.0.9
@@ -7983,13 +6802,6 @@ snapshots:
get-proto: 1.0.1
which-builtin-type: 1.2.1
- refractor@5.0.0:
- dependencies:
- '@types/hast': 3.0.4
- '@types/prismjs': 1.26.6
- hastscript: 9.0.1
- parse-entities: 4.0.2
-
regex-recursion@6.0.2:
dependencies:
regex-utilities: 2.3.0
@@ -8073,17 +6885,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- remarkable@2.0.1:
- dependencies:
- argparse: 1.0.10
- autolinker: 3.16.2
-
- repeat-string@1.6.1: {}
-
- requires-port@1.0.0: {}
-
- reselect@5.2.0: {}
-
resolve-pkg-maps@1.0.0: {}
resolve@2.0.0-next.7:
@@ -8095,8 +6896,6 @@ snapshots:
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
- ret@0.2.2: {}
-
reusify@1.1.0: {}
run-parallel@1.2.0:
@@ -8111,8 +6910,6 @@ snapshots:
has-symbols: 1.1.0
isarray: 2.0.5
- safe-buffer@5.2.1: {}
-
safe-push-apply@1.0.0:
dependencies:
es-errors: 1.3.0
@@ -8134,10 +6931,6 @@ snapshots:
semver@7.8.1: {}
- serialize-error@8.1.0:
- dependencies:
- type-fest: 0.20.2
-
set-function-length@1.2.2:
dependencies:
define-data-property: 1.1.4
@@ -8160,12 +6953,6 @@ snapshots:
es-errors: 1.3.0
es-object-atoms: 1.1.2
- sha.js@2.4.12:
- dependencies:
- inherits: 2.0.4
- safe-buffer: 5.2.1
- to-buffer: 1.2.2
-
sharp@0.34.5:
dependencies:
'@img/colour': 1.1.0
@@ -8215,8 +7002,6 @@ snapshots:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
- short-unique-id@5.3.2: {}
-
side-channel-list@1.0.1:
dependencies:
es-errors: 1.3.0
@@ -8251,8 +7036,6 @@ snapshots:
space-separated-tokens@2.0.2: {}
- sprintf-js@1.0.3: {}
-
stable-hash@0.0.5: {}
stop-iteration-iterator@1.1.0:
@@ -8334,73 +7117,6 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
- swagger-client@3.37.4:
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@scarf/scarf': 1.4.0
- '@swagger-api/apidom-core': 1.11.1
- '@swagger-api/apidom-error': 1.11.1
- '@swagger-api/apidom-json-pointer': 1.11.1
- '@swagger-api/apidom-ns-openapi-3-1': 1.11.1
- '@swagger-api/apidom-ns-openapi-3-2': 1.11.1
- '@swagger-api/apidom-reference': 1.11.1
- '@swaggerexpert/cookie': 2.0.2
- deepmerge: 4.3.1
- fast-json-patch: 3.1.1
- js-yaml: 4.1.1
- neotraverse: 0.6.18
- node-abort-controller: 3.1.1
- openapi-path-templating: 2.2.1
- openapi-server-url-templating: 1.3.0
- ramda: 0.30.1
- ramda-adjunct: 5.1.0(ramda@0.30.1)
- transitivePeerDependencies:
- - debug
- - supports-color
-
- swagger-ui-react@5.32.6(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.6))(react@19.2.6):
- dependencies:
- '@babel/runtime-corejs3': 7.29.7
- '@scarf/scarf': 1.4.0
- base64-js: 1.5.1
- buffer: 6.0.3
- classnames: 2.5.1
- css.escape: 1.5.1
- deep-extend: 0.6.0
- dompurify: 3.4.7
- ieee754: 1.2.1
- immutable: 3.8.3
- js-file-download: 0.4.12
- js-yaml: 4.1.1
- lodash: 4.18.1
- prop-types: 15.8.1
- randexp: 0.5.3
- randombytes: 2.1.0
- react: 19.2.6
- react-copy-to-clipboard: 5.1.0(react@19.2.6)
- react-debounce-input: 3.3.0(react@19.2.6)
- react-dom: 19.2.6(react@19.2.6)
- react-immutable-proptypes: 2.2.0(immutable@3.8.3)
- react-immutable-pure-component: 2.2.2(immutable@3.8.3)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
- react-inspector: 6.0.2(react@19.2.6)
- react-redux: 9.3.0(@types/react@19.2.15)(react@19.2.6)(redux@5.0.1)
- react-syntax-highlighter: 16.1.1(react@19.2.6)
- redux: 5.0.1
- redux-immutable: 4.0.0(immutable@3.8.3)
- remarkable: 2.0.1
- reselect: 5.2.0
- serialize-error: 8.1.0
- sha.js: 2.4.12
- swagger-client: 3.37.4
- url-parse: 1.5.10
- xml: 1.0.1
- xml-but-prettier: 1.0.1
- zenscroll: 4.0.2
- transitivePeerDependencies:
- - '@types/react'
- - debug
- - supports-color
-
tailwind-merge@3.6.0: {}
tailwindcss@4.3.0: {}
@@ -8414,38 +7130,10 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.4)
picomatch: 4.0.4
- to-buffer@1.2.2:
- dependencies:
- isarray: 2.0.5
- safe-buffer: 5.2.1
- typed-array-buffer: 1.0.3
-
to-regex-range@5.0.1:
dependencies:
is-number: 7.0.0
- toggle-selection@1.0.6: {}
-
- tree-sitter-json@0.24.8(tree-sitter@0.21.1):
- dependencies:
- node-addon-api: 8.8.0
- node-gyp-build: 4.8.4
- optionalDependencies:
- tree-sitter: 0.21.1
- optional: true
-
- tree-sitter@0.21.1:
- dependencies:
- node-addon-api: 8.8.0
- node-gyp-build: 4.8.4
- optional: true
-
- tree-sitter@0.22.4:
- dependencies:
- node-addon-api: 8.8.0
- node-gyp-build: 4.8.4
- optional: true
-
trim-lines@3.0.1: {}
trough@2.2.0: {}
@@ -8454,10 +7142,6 @@ snapshots:
dependencies:
typescript: 5.9.3
- ts-mixer@6.0.4: {}
-
- ts-toolbelt@9.6.0: {}
-
tsconfig-paths@3.15.0:
dependencies:
'@types/json5': 0.0.29
@@ -8477,8 +7161,6 @@ snapshots:
dependencies:
prelude-ls: 1.2.1
- type-fest@0.20.2: {}
-
typed-array-buffer@1.0.3:
dependencies:
call-bound: 1.0.4
@@ -8512,10 +7194,6 @@ snapshots:
possible-typed-array-names: 1.1.0
reflect.getprototypeof: 1.0.10
- types-ramda@0.30.1:
- dependencies:
- ts-toolbelt: 9.6.0
-
typescript-eslint@8.60.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3):
dependencies:
'@typescript-eslint/eslint-plugin': 8.60.0(@typescript-eslint/parser@8.60.0(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3))(eslint@10.4.1(jiti@2.7.0))(typescript@5.9.3)
@@ -8580,8 +7258,6 @@ snapshots:
unist-util-is: 6.0.1
unist-util-visit-parents: 6.0.2
- unraw@3.0.0: {}
-
unrs-resolver@1.12.2:
dependencies:
napi-postinstall: 0.3.4
@@ -8619,11 +7295,6 @@ snapshots:
dependencies:
punycode: 2.3.1
- url-parse@1.5.10:
- dependencies:
- querystringify: 2.2.0
- requires-port: 1.0.0
-
use-callback-ref@1.3.3(@types/react@19.2.15)(react@19.2.6):
dependencies:
react: 19.2.6
@@ -8639,10 +7310,6 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.15
- use-sync-external-store@1.6.0(react@19.2.6):
- dependencies:
- react: 19.2.6
-
vfile-location@5.0.3:
dependencies:
'@types/unist': 3.0.3
@@ -8660,9 +7327,6 @@ snapshots:
web-namespaces@2.0.1: {}
- web-tree-sitter@0.24.5:
- optional: true
-
which-boxed-primitive@1.1.1:
dependencies:
is-bigint: 1.1.0
@@ -8710,18 +7374,10 @@ snapshots:
word-wrap@1.2.5: {}
- xml-but-prettier@1.0.1:
- dependencies:
- repeat-string: 1.6.1
-
- xml@1.0.1: {}
-
yallist@3.1.1: {}
yocto-queue@0.1.0: {}
- zenscroll@4.0.2: {}
-
zod-validation-error@4.0.2(zod@4.4.3):
dependencies:
zod: 4.4.3
From 5ed53a066b73068acccb5bbe86ad64e35ac8b2c3 Mon Sep 17 00:00:00 2001
From: kschneider84 <77678452+kschneider84@users.noreply.github.com>
Date: Wed, 1 Jul 2026 15:03:53 +0200
Subject: [PATCH 19/21] update coderabbit review configs
---
.coderabbit.yaml | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 .coderabbit.yaml
diff --git a/.coderabbit.yaml b/.coderabbit.yaml
new file mode 100644
index 0000000..55c025a
--- /dev/null
+++ b/.coderabbit.yaml
@@ -0,0 +1,5 @@
+reviews:
+ path_filters:
+ - "!case-docs/content/tech-docs/management-api/api/**"
+ - "!case-docs/content/tech-docs/participant-api/api/**"
+ - "!case-docs/content/tech-docs/smtp-bridge/api/**"
\ No newline at end of file
From 8b3ff05ade667c1f652c2448949c94cbad1dcee9 Mon Sep 17 00:00:00 2001
From: kschneider84 <77678452+kschneider84@users.noreply.github.com>
Date: Wed, 1 Jul 2026 15:04:06 +0200
Subject: [PATCH 20/21] remove unused imports
---
lib/source-docs.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/source-docs.ts b/lib/source-docs.ts
index 1a00d01..ea7df50 100644
--- a/lib/source-docs.ts
+++ b/lib/source-docs.ts
@@ -1,7 +1,7 @@
import { docs } from 'fumadocs-mdx:collections/server';
-import { loader, multiple } from 'fumadocs-core/source';
+import { loader } from 'fumadocs-core/source';
import { lucideIconsPlugin } from 'fumadocs-core/source/lucide-icons';
-import { openapiPlugin, openapiSource } from 'fumadocs-openapi/server';
+import { openapiPlugin } from 'fumadocs-openapi/server';
// See https://fumadocs.vercel.app/docs/headless/source-api for more info
export const source = loader(
From d979d9d2e61834e7be814e3e3182dee8a9981dc0 Mon Sep 17 00:00:00 2001
From: kschneider84 <77678452+kschneider84@users.noreply.github.com>
Date: Wed, 1 Jul 2026 15:04:52 +0200
Subject: [PATCH 21/21] add participant-api and smtp bridge to default inputs
---
lib/openapi.ts | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/lib/openapi.ts b/lib/openapi.ts
index 869d402..f6658fa 100644
--- a/lib/openapi.ts
+++ b/lib/openapi.ts
@@ -1,6 +1,10 @@
import { createOpenAPI } from 'fumadocs-openapi/server';
-export const defaultOpenAPIInput = './openapi/management-api.yaml';
+export const defaultOpenAPIInputs = [
+ './openapi/management-api.yaml',
+ './openapi/participant-api.yaml',
+ './openapi/smtp-bridge.yaml',
+];
export function createDocsOpenAPI(input: string | string[]) {
const normalizedInput = Array.isArray(input) ? input : [input];
@@ -10,4 +14,4 @@ export function createDocsOpenAPI(input: string | string[]) {
});
}
-export const openapi = createDocsOpenAPI(defaultOpenAPIInput);
+export const openapi = createDocsOpenAPI(defaultOpenAPIInputs);