diff --git a/package-lock.json b/package-lock.json
index 989a1507..59555a28 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,6 +22,7 @@
"vue": "^3.0.7",
"vue-i18n": "^9.0.0",
"vue-router": "^4.0.4",
+ "vue3-autocounter": "^1.0.6",
"vue3-markdown-it": "^1.0.7",
"vuex": "^4.0.0",
"vuex-oidc": "^3.10.2"
@@ -3687,6 +3688,17 @@
"vue": "^3.0.0"
}
},
+ "node_modules/vue3-autocounter": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/vue3-autocounter/-/vue3-autocounter-1.0.6.tgz",
+ "integrity": "sha512-jOgCD2WaOjt/tOAAGKDm2DTyQRdKyfqJv5ElUz/vR0ZJgUd4yDd6UX6+2YU3LQpY4qoFNZkzLloAfALAqK041g==",
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.5"
+ }
+ },
"node_modules/vue3-markdown-it": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/vue3-markdown-it/-/vue3-markdown-it-1.0.9.tgz",
@@ -6665,6 +6677,12 @@
"@vue/devtools-api": "^6.0.0-beta.14"
}
},
+ "vue3-autocounter": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/vue3-autocounter/-/vue3-autocounter-1.0.6.tgz",
+ "integrity": "sha512-jOgCD2WaOjt/tOAAGKDm2DTyQRdKyfqJv5ElUz/vR0ZJgUd4yDd6UX6+2YU3LQpY4qoFNZkzLloAfALAqK041g==",
+ "requires": {}
+ },
"vue3-markdown-it": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/vue3-markdown-it/-/vue3-markdown-it-1.0.9.tgz",
diff --git a/package.json b/package.json
index cd9d8d4e..c85d2ce4 100644
--- a/package.json
+++ b/package.json
@@ -25,6 +25,7 @@
"vue": "^3.0.7",
"vue-i18n": "^9.0.0",
"vue-router": "^4.0.4",
+ "vue3-autocounter": "^1.0.6",
"vue3-markdown-it": "^1.0.7",
"vuex": "^4.0.0",
"vuex-oidc": "^3.10.2"
diff --git a/public/feature-icons/discuss.png b/public/feature-icons/discuss.png
new file mode 100644
index 00000000..7a33ef61
Binary files /dev/null and b/public/feature-icons/discuss.png differ
diff --git a/public/feature-icons/github.png b/public/feature-icons/github.png
new file mode 100644
index 00000000..ea6ff545
Binary files /dev/null and b/public/feature-icons/github.png differ
diff --git a/public/feature-icons/vote.png b/public/feature-icons/vote.png
new file mode 100644
index 00000000..dfd208f4
Binary files /dev/null and b/public/feature-icons/vote.png differ
diff --git a/src/main.ts b/src/main.ts
index 97f6bffb..42569bbb 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -7,6 +7,8 @@ import App from './App.vue';
import messages from '@intlify/vite-plugin-vue-i18n/messages';
import VueMarkdownIt from 'vue3-markdown-it';
+import Vue3Autocounter from 'vue3-autocounter';
+
import dayjs from 'dayjs';
import localizedFormat from 'dayjs/plugin/localizedFormat';
import relativeTime from 'dayjs/plugin/relativeTime';
@@ -130,4 +132,6 @@ app.component("ProgressBar", ProgressBar);
app.component('Message', Message);
app.component('Timeline', Timeline);
+app.component('Autocounter', Vue3Autocounter);
+
app.mount('#app');
diff --git a/src/types/bazaar-api.ts b/src/types/bazaar-api.ts
index 44e57309..e43dfb07 100644
--- a/src/types/bazaar-api.ts
+++ b/src/types/bazaar-api.ts
@@ -29,20 +29,17 @@ export interface Statistic {
numberOfVotes?: number;
}
-export interface Attachment {
+export interface Category {
/** @format int32 */
id?: number;
name: string;
- description?: string;
- mimeType: string;
- identifier: string;
- fileUrl: string;
+ description: string;
/**
* @format int32
* @min 0
*/
- requirementId?: number;
+ projectId?: number;
creator?: User;
/** @format date-time */
@@ -50,6 +47,17 @@ export interface Attachment {
/** @format date-time */
lastUpdatedDate?: string;
+
+ /** @format date-time */
+ lastActivity?: string;
+
+ /** @format int32 */
+ numberOfRequirements?: number;
+
+ /** @format int32 */
+ numberOfFollowers?: number;
+ userContext?: UserContext;
+ additionalProperties?: Record;
}
export interface User {
@@ -75,17 +83,35 @@ export interface User {
email?: string;
}
-export interface Category {
+export interface UserContext {
+ /** The role the user has within the project. Only returned when requesting project resources. */
+ userRole?: "ProjectMember" | "ProjectManager" | "ProjectAdmin";
+
+ /** Only returned when requesting requirement resources. */
+ userVoted?: "UP_VOTE" | "DOWN_VOTE" | "NO_VOTE";
+ isFollower: boolean;
+
+ /** Only returned when requesting requirement resources. */
+ isDeveloper?: boolean;
+
+ /** Only returned when requesting requirement resources. */
+ isContributor?: boolean;
+}
+
+export interface Attachment {
/** @format int32 */
id?: number;
name: string;
- description: string;
+ description?: string;
+ mimeType: string;
+ identifier: string;
+ fileUrl: string;
/**
* @format int32
* @min 0
*/
- projectId?: number;
+ requirementId: number;
creator?: User;
/** @format date-time */
@@ -93,32 +119,6 @@ export interface Category {
/** @format date-time */
lastUpdatedDate?: string;
-
- /** @format date-time */
- lastActivity?: string;
-
- /** @format int32 */
- numberOfRequirements?: number;
-
- /** @format int32 */
- numberOfFollowers?: number;
- userContext?: UserContext;
- additionalProperties?: Record;
-}
-
-export interface UserContext {
- /** The role the user has within the project. Only returned when requesting project resources. */
- userRole?: "ProjectMember" | "ProjectManager" | "ProjectAdmin";
-
- /** Only returned when requesting requirement resources. */
- userVoted?: "UP_VOTE" | "DOWN_VOTE" | "NO_VOTE";
- isFollower: boolean;
-
- /** Only returned when requesting requirement resources. */
- isDeveloper?: boolean;
-
- /** Only returned when requesting requirement resources. */
- isContributor?: boolean;
}
export interface Comment {
@@ -191,7 +191,7 @@ export interface Project {
export interface Requirement {
/** @format int32 */
id?: number;
- name?: string;
+ name: string;
description: string;
/** @format date-time */
@@ -337,6 +337,23 @@ export namespace Version {
}
}
+export namespace UserStatistics {
+ /**
+ * No description
+ * @name GetUserStatistics
+ * @summary This method allows to retrieve statistics about the users of the Requirements Bazaar.
+ * @request GET:/user-statistics
+ * @secure
+ */
+ export namespace GetUserStatistics {
+ export type RequestParams = {};
+ export type RequestQuery = { start?: string; end?: string };
+ export type RequestBody = never;
+ export type RequestHeaders = {};
+ export type ResponseBody = Statistic;
+ }
+}
+
export namespace Statistics {
/**
* No description
@@ -371,54 +388,6 @@ export namespace Notifications {
}
}
-export namespace Attachments {
- /**
- * No description
- * @tags attachments
- * @name CreateAttachment
- * @summary This method allows to create a new attachment.
- * @request POST:/attachments
- * @secure
- */
- export namespace CreateAttachment {
- export type RequestParams = {};
- export type RequestQuery = {};
- export type RequestBody = Attachment;
- export type RequestHeaders = {};
- export type ResponseBody = Attachment;
- }
- /**
- * No description
- * @tags attachments
- * @name GetAttachment
- * @summary This method allows to retrieve a certain attachment
- * @request GET:/attachments/{attachmentId}
- * @secure
- */
- export namespace GetAttachment {
- export type RequestParams = { attachmentId: number };
- export type RequestQuery = {};
- export type RequestBody = never;
- export type RequestHeaders = {};
- export type ResponseBody = Attachment;
- }
- /**
- * No description
- * @tags attachments
- * @name DeleteAttachment
- * @summary This method deletes a specific attachment.
- * @request DELETE:/attachments/{attachmentId}
- * @secure
- */
- export namespace DeleteAttachment {
- export type RequestParams = { attachmentId: number };
- export type RequestQuery = {};
- export type RequestBody = never;
- export type RequestHeaders = {};
- export type ResponseBody = Attachment;
- }
-}
-
export namespace Categories {
/**
* No description
@@ -702,12 +671,27 @@ export namespace Projects {
/**
* No description
* @tags projects
- * @name UpdateMembership
+ * @name AddMember
+ * @summary This method allows to add a project member.
+ * @request POST:/projects/{projectId}/members
+ * @secure
+ */
+ export namespace AddMember {
+ export type RequestParams = { projectId: number };
+ export type RequestQuery = {};
+ export type RequestBody = ProjectMember;
+ export type RequestHeaders = {};
+ export type ResponseBody = void;
+ }
+ /**
+ * No description
+ * @tags projects
+ * @name UpdateMember
* @summary This method allows to modify the project members.
* @request PUT:/projects/{projectId}/members
* @secure
*/
- export namespace UpdateMembership {
+ export namespace UpdateMember {
export type RequestParams = { projectId: number };
export type RequestQuery = {};
export type RequestBody = ProjectMember[];
@@ -749,59 +733,16 @@ export namespace Projects {
* @tags projects
* @name RemoveMember
* @summary This method allows to remove a project member.
- * @request DELETE:/projects/{projectId}/members/{memberId}
+ * @request DELETE:/projects/{projectId}/members/{memberUserId}
* @secure
*/
export namespace RemoveMember {
- export type RequestParams = { projectId: number; memberId: number };
+ export type RequestParams = { projectId: number; memberUserId: number };
export type RequestQuery = {};
export type RequestBody = never;
export type RequestHeaders = {};
export type ResponseBody = void;
}
- /**
- * No description
- * @tags projects
- * @name GetCategoriesForProject
- * @summary This method returns the list of categories under a given project.
- * @request GET:/projects/{projectId}/categories
- * @secure
- */
- export namespace GetCategoriesForProject {
- export type RequestParams = { projectId: number };
- export type RequestQuery = {
- page?: number;
- per_page?: number;
- search?: string;
- sort?: ("name" | "date" | "last_activity" | "requirement" | "follower")[];
- sortDirection?: "ASC" | "DESC";
- };
- export type RequestBody = never;
- export type RequestHeaders = {};
- export type ResponseBody = Category[];
- }
- /**
- * No description
- * @tags projects
- * @name GetRequirementsForProject
- * @summary This method returns the list of requirements for a specific project.
- * @request GET:/projects/{projectId}/requirements
- * @secure
- */
- export namespace GetRequirementsForProject {
- export type RequestParams = { projectId: number };
- export type RequestQuery = {
- page?: number;
- per_page?: number;
- search?: string;
- state?: "all" | "open" | "realized";
- sort?: ("date" | "last_activity" | "name" | "vote" | "comment" | "follower")[];
- sortDirection?: "ASC" | "DESC";
- };
- export type RequestBody = never;
- export type RequestHeaders = {};
- export type ResponseBody = Requirement[];
- }
/**
* No description
* @tags projects
@@ -820,6 +761,7 @@ export namespace Projects {
sortDirection?: "ASC" | "DESC";
filters?: ("all" | "created" | "following")[];
ids?: number[];
+ recursive?: boolean;
};
export type RequestBody = never;
export type RequestHeaders = {};
@@ -858,32 +800,17 @@ export namespace Projects {
/**
* No description
* @tags projects
- * @name GetProject
- * @summary This method allows to retrieve a certain project.
- * @request GET:/projects/{projectId}
- * @secure
- */
- export namespace GetProject {
- export type RequestParams = { projectId: number };
- export type RequestQuery = {};
- export type RequestBody = never;
- export type RequestHeaders = {};
- export type ResponseBody = Project;
- }
- /**
- * No description
- * @tags projects
- * @name DeleteProject
- * @summary This method deletes a specific project.
- * @request DELETE:/projects/{projectId}
+ * @name GetStatisticsForProject
+ * @summary This method allows to retrieve statistics for one project.
+ * @request GET:/projects/{projectId}/statistics
* @secure
*/
- export namespace DeleteProject {
+ export namespace GetStatisticsForProject {
export type RequestParams = { projectId: number };
- export type RequestQuery = {};
+ export type RequestQuery = { since?: string };
export type RequestBody = never;
export type RequestHeaders = {};
- export type ResponseBody = void;
+ export type ResponseBody = Statistic;
}
/**
* No description
@@ -933,88 +860,116 @@ export namespace Projects {
/**
* No description
* @tags projects
- * @name GetContributorsForProject
- * @summary This method returns the list of contributors for a specific project.
- * @request GET:/projects/{projectId}/contributors
+ * @name GetCategoriesForProject
+ * @summary This method returns the list of categories under a given project.
+ * @request GET:/projects/{projectId}/categories
* @secure
*/
- export namespace GetContributorsForProject {
+ export namespace GetCategoriesForProject {
export type RequestParams = { projectId: number };
- export type RequestQuery = {};
+ export type RequestQuery = {
+ page?: number;
+ per_page?: number;
+ search?: string;
+ sort?: ("name" | "date" | "last_activity" | "requirement" | "follower")[];
+ sortDirection?: "ASC" | "DESC";
+ };
export type RequestBody = never;
export type RequestHeaders = {};
- export type ResponseBody = ProjectContributors;
+ export type ResponseBody = Category[];
}
/**
* No description
* @tags projects
- * @name GetFeedbacksForProject
- * @summary This method returns the list of given feedbacks for a specific project.
- * @request GET:/projects/{projectId}/feedbacks
+ * @name GetRequirementsForProject
+ * @summary This method returns the list of requirements for a specific project.
+ * @request GET:/projects/{projectId}/requirements
* @secure
*/
- export namespace GetFeedbacksForProject {
+ export namespace GetRequirementsForProject {
export type RequestParams = { projectId: number };
export type RequestQuery = {
page?: number;
per_page?: number;
search?: string;
- state?: "all" | "open";
- sort?: "date"[];
+ state?: "all" | "open" | "realized";
+ sort?: ("date" | "last_activity" | "name" | "vote" | "comment" | "follower")[];
sortDirection?: "ASC" | "DESC";
};
export type RequestBody = never;
export type RequestHeaders = {};
- export type ResponseBody = Feedback[];
+ export type ResponseBody = Requirement[];
}
/**
* No description
* @tags projects
- * @name GetTagsForProject
- * @summary This method returns the list of tags under a given project.
- * @request GET:/projects/{projectId}/tags
+ * @name GetProject
+ * @summary This method allows to retrieve a certain project.
+ * @request GET:/projects/{projectId}
* @secure
*/
- export namespace GetTagsForProject {
+ export namespace GetProject {
export type RequestParams = { projectId: number };
export type RequestQuery = {};
export type RequestBody = never;
export type RequestHeaders = {};
- export type ResponseBody = Tag[];
+ export type ResponseBody = Project;
}
/**
* No description
* @tags projects
- * @name CreateTag
- * @summary This method adds a new tag to a given project.
- * @request POST:/projects/{projectId}/tags
+ * @name DeleteProject
+ * @summary This method deletes a specific project.
+ * @request DELETE:/projects/{projectId}
* @secure
*/
- export namespace CreateTag {
+ export namespace DeleteProject {
export type RequestParams = { projectId: number };
export type RequestQuery = {};
- export type RequestBody = Tag;
+ export type RequestBody = never;
export type RequestHeaders = {};
- export type ResponseBody = Tag;
+ export type ResponseBody = void;
}
/**
* No description
* @tags projects
- * @name GetStatisticsForProject
- * @summary This method allows to retrieve statistics for one project.
- * @request GET:/projects/{projectId}/statistics
+ * @name GetContributorsForProject
+ * @summary This method returns the list of contributors for a specific project.
+ * @request GET:/projects/{projectId}/contributors
* @secure
*/
- export namespace GetStatisticsForProject {
+ export namespace GetContributorsForProject {
export type RequestParams = { projectId: number };
- export type RequestQuery = { since?: string };
+ export type RequestQuery = {};
export type RequestBody = never;
export type RequestHeaders = {};
- export type ResponseBody = Statistic;
+ export type ResponseBody = ProjectContributors;
}
-}
-
-export namespace Requirements {
+ /**
+ * No description
+ * @tags projects
+ * @name GetFeedbacksForProject
+ * @summary This method returns the list of given feedbacks for a specific project.
+ * @request GET:/projects/{projectId}/feedbacks
+ * @secure
+ */
+ export namespace GetFeedbacksForProject {
+ export type RequestParams = { projectId: number };
+ export type RequestQuery = {
+ page?: number;
+ per_page?: number;
+ search?: string;
+ state?: "all" | "open";
+ sort?: "date"[];
+ sortDirection?: "ASC" | "DESC";
+ };
+ export type RequestBody = never;
+ export type RequestHeaders = {};
+ export type ResponseBody = Feedback[];
+ }
+}
+
+export namespace Requirements {
/**
* No description
* @tags requirements
@@ -1173,21 +1128,6 @@ export namespace Requirements {
export type RequestHeaders = {};
export type ResponseBody = Comment[];
}
- /**
- * No description
- * @tags requirements
- * @name GetAttachmentsForRequirement
- * @summary This method returns the list of attachments for a specific requirement.
- * @request GET:/requirements/{requirementId}/attachments
- * @secure
- */
- export namespace GetAttachmentsForRequirement {
- export type RequestParams = { requirementId: number };
- export type RequestQuery = { page?: number; per_page?: number };
- export type RequestBody = never;
- export type RequestHeaders = {};
- export type ResponseBody = Attachment[];
- }
/**
* No description
* @tags requirements
@@ -1338,6 +1278,21 @@ export namespace Requirements {
export type RequestHeaders = {};
export type ResponseBody = RequirementContributors;
}
+ /**
+ * No description
+ * @tags requirements
+ * @name GetAttachmentsForRequirement
+ * @summary This method returns the list of attachments for a specific requirement.
+ * @request GET:/requirements/{requirementId}/attachments
+ * @secure
+ */
+ export namespace GetAttachmentsForRequirement {
+ export type RequestParams = { requirementId: number };
+ export type RequestQuery = { page?: number; per_page?: number };
+ export type RequestBody = never;
+ export type RequestHeaders = {};
+ export type ResponseBody = Attachment[];
+ }
}
export namespace Users {
@@ -1439,6 +1394,24 @@ export namespace Users {
}
}
+export namespace Webhook {
+ /**
+ * No description
+ * @tags webhook
+ * @name HandleWebhook
+ * @summary Webhook Endpoint
+ * @request POST:/webhook/{projectId}/github
+ * @secure
+ */
+ export namespace HandleWebhook {
+ export type RequestParams = { projectId: number };
+ export type RequestQuery = {};
+ export type RequestBody = string;
+ export type RequestHeaders = { "X-GitHub-Event"?: string; "X-Hub-Signature-256"?: string };
+ export type ResponseBody = void;
+ }
+}
+
export type QueryParamsType = Record;
export type ResponseFormat = keyof Omit;
@@ -1675,6 +1648,25 @@ export class Api extends HttpClient
+ this.request({
+ path: `/user-statistics`,
+ method: "GET",
+ query: query,
+ secure: true,
+ format: "json",
+ ...params,
+ }),
+ };
statistics = {
/**
* No description
@@ -1711,63 +1703,6 @@ export class Api extends HttpClient
- this.request({
- path: `/attachments`,
- method: "POST",
- body: body,
- secure: true,
- type: ContentType.Json,
- format: "json",
- ...params,
- }),
-
- /**
- * No description
- *
- * @tags attachments
- * @name GetAttachment
- * @summary This method allows to retrieve a certain attachment
- * @request GET:/attachments/{attachmentId}
- * @secure
- */
- getAttachment: (attachmentId: number, params: RequestParams = {}) =>
- this.request({
- path: `/attachments/${attachmentId}`,
- method: "GET",
- secure: true,
- format: "json",
- ...params,
- }),
-
- /**
- * No description
- *
- * @tags attachments
- * @name DeleteAttachment
- * @summary This method deletes a specific attachment.
- * @request DELETE:/attachments/{attachmentId}
- * @secure
- */
- deleteAttachment: (attachmentId: number, params: RequestParams = {}) =>
- this.request({
- path: `/attachments/${attachmentId}`,
- method: "DELETE",
- secure: true,
- format: "json",
- ...params,
- }),
- };
categories = {
/**
* No description
@@ -2123,12 +2058,31 @@ export class Api extends HttpClient
+ this.request({
+ path: `/projects/${projectId}/members`,
+ method: "POST",
+ body: body,
+ secure: true,
+ type: ContentType.Json,
+ ...params,
+ }),
+
+ /**
+ * No description
+ *
+ * @tags projects
+ * @name UpdateMember
* @summary This method allows to modify the project members.
* @request PUT:/projects/{projectId}/members
* @secure
*/
- updateMembership: (projectId: number, body: ProjectMember[], params: RequestParams = {}) =>
+ updateMember: (projectId: number, body: ProjectMember[], params: RequestParams = {}) =>
this.request({
path: `/projects/${projectId}/members`,
method: "PUT",
@@ -2182,76 +2136,17 @@ export class Api extends HttpClient
+ removeMember: (projectId: number, memberUserId: number, params: RequestParams = {}) =>
this.request({
- path: `/projects/${projectId}/members/${memberId}`,
+ path: `/projects/${projectId}/members/${memberUserId}`,
method: "DELETE",
secure: true,
...params,
}),
- /**
- * No description
- *
- * @tags projects
- * @name GetCategoriesForProject
- * @summary This method returns the list of categories under a given project.
- * @request GET:/projects/{projectId}/categories
- * @secure
- */
- getCategoriesForProject: (
- projectId: number,
- query?: {
- page?: number;
- per_page?: number;
- search?: string;
- sort?: ("name" | "date" | "last_activity" | "requirement" | "follower")[];
- sortDirection?: "ASC" | "DESC";
- },
- params: RequestParams = {},
- ) =>
- this.request({
- path: `/projects/${projectId}/categories`,
- method: "GET",
- query: query,
- secure: true,
- format: "json",
- ...params,
- }),
-
- /**
- * No description
- *
- * @tags projects
- * @name GetRequirementsForProject
- * @summary This method returns the list of requirements for a specific project.
- * @request GET:/projects/{projectId}/requirements
- * @secure
- */
- getRequirementsForProject: (
- projectId: number,
- query?: {
- page?: number;
- per_page?: number;
- search?: string;
- state?: "all" | "open" | "realized";
- sort?: ("date" | "last_activity" | "name" | "vote" | "comment" | "follower")[];
- sortDirection?: "ASC" | "DESC";
- },
- params: RequestParams = {},
- ) =>
- this.request({
- path: `/projects/${projectId}/requirements`,
- method: "GET",
- query: query,
- secure: true,
- format: "json",
- ...params,
- }),
-
/**
* No description
*
@@ -2270,6 +2165,7 @@ export class Api extends HttpClient
@@ -2326,37 +2222,21 @@ export class Api extends HttpClient
- this.request({
- path: `/projects/${projectId}`,
+ getStatisticsForProject: (projectId: number, query?: { since?: string }, params: RequestParams = {}) =>
+ this.request({
+ path: `/projects/${projectId}/statistics`,
method: "GET",
+ query: query,
secure: true,
format: "json",
...params,
}),
- /**
- * No description
- *
- * @tags projects
- * @name DeleteProject
- * @summary This method deletes a specific project.
- * @request DELETE:/projects/{projectId}
- * @secure
- */
- deleteProject: (projectId: number, params: RequestParams = {}) =>
- this.request({
- path: `/projects/${projectId}`,
- method: "DELETE",
- secure: true,
- ...params,
- }),
-
/**
* No description
*
@@ -2420,15 +2300,26 @@ export class Api extends HttpClient
- this.request({
- path: `/projects/${projectId}/contributors`,
+ getCategoriesForProject: (
+ projectId: number,
+ query?: {
+ page?: number;
+ per_page?: number;
+ search?: string;
+ sort?: ("name" | "date" | "last_activity" | "requirement" | "follower")[];
+ sortDirection?: "ASC" | "DESC";
+ },
+ params: RequestParams = {},
+ ) =>
+ this.request({
+ path: `/projects/${projectId}/categories`,
method: "GET",
+ query: query,
secure: true,
format: "json",
...params,
@@ -2438,25 +2329,25 @@ export class Api extends HttpClient
- this.request({
- path: `/projects/${projectId}/feedbacks`,
+ this.request({
+ path: `/projects/${projectId}/requirements`,
method: "GET",
query: query,
secure: true,
@@ -2468,14 +2359,14 @@ export class Api extends HttpClient
- this.request({
- path: `/projects/${projectId}/tags`,
+ getProject: (projectId: number, params: RequestParams = {}) =>
+ this.request({
+ path: `/projects/${projectId}`,
method: "GET",
secure: true,
format: "json",
@@ -2486,18 +2377,33 @@ export class Api extends HttpClient
- this.request({
- path: `/projects/${projectId}/tags`,
- method: "POST",
- body: body,
+ deleteProject: (projectId: number, params: RequestParams = {}) =>
+ this.request({
+ path: `/projects/${projectId}`,
+ method: "DELETE",
+ secure: true,
+ ...params,
+ }),
+
+ /**
+ * No description
+ *
+ * @tags projects
+ * @name GetContributorsForProject
+ * @summary This method returns the list of contributors for a specific project.
+ * @request GET:/projects/{projectId}/contributors
+ * @secure
+ */
+ getContributorsForProject: (projectId: number, params: RequestParams = {}) =>
+ this.request({
+ path: `/projects/${projectId}/contributors`,
+ method: "GET",
secure: true,
- type: ContentType.Json,
format: "json",
...params,
}),
@@ -2506,14 +2412,25 @@ export class Api extends HttpClient
- this.request({
- path: `/projects/${projectId}/statistics`,
+ getFeedbacksForProject: (
+ projectId: number,
+ query?: {
+ page?: number;
+ per_page?: number;
+ search?: string;
+ state?: "all" | "open";
+ sort?: "date"[];
+ sortDirection?: "ASC" | "DESC";
+ },
+ params: RequestParams = {},
+ ) =>
+ this.request({
+ path: `/projects/${projectId}/feedbacks`,
method: "GET",
query: query,
secure: true,
@@ -2725,29 +2642,6 @@ export class Api extends HttpClient
- this.request({
- path: `/requirements/${requirementId}/attachments`,
- method: "GET",
- query: query,
- secure: true,
- format: "json",
- ...params,
- }),
-
/**
* No description
*
@@ -2932,6 +2826,29 @@ export class Api extends HttpClient
+ this.request({
+ path: `/requirements/${requirementId}/attachments`,
+ method: "GET",
+ query: query,
+ secure: true,
+ format: "json",
+ ...params,
+ }),
};
users = {
/**
@@ -3055,4 +2972,24 @@ export class Api extends HttpClient
+ this.request({
+ path: `/webhook/${projectId}/github`,
+ method: "POST",
+ body: body,
+ secure: true,
+ type: ContentType.Json,
+ ...params,
+ }),
+ };
}
diff --git a/src/views/About.vue b/src/views/About.vue
index 270aca46..62909d45 100644
--- a/src/views/About.vue
+++ b/src/views/About.vue
@@ -43,6 +43,13 @@
our open source repositories, by sending us design proposals, or by volunteering to translate the page to one of
your native languages. Simply drop us an email at reqbaz@dbis.rwth-aachen.de and tell us about your idea.
+
+ Used Third Party Resources
+
+