feat: a public showcase of each project
A public endpoint sums up a public project for websites: epics with their dates and progress, the latest releases with the notes of shipped ones, the sprint under way and open tickets labelled good-first-issue. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -6245,6 +6245,44 @@
|
||||
"security": []
|
||||
}
|
||||
},
|
||||
"/api/explore/projects/{project}/showcase": {
|
||||
"get": {
|
||||
"description": "For public websites: epics with their dates and progress, the latest releases (with the notes of shipped ones), the sprint under way and open tickets labelled good-first-issue. Paths point into the web app.",
|
||||
"operationId": "ExploreController_showcase",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "project",
|
||||
"required": true,
|
||||
"in": "path",
|
||||
"description": "Project id or key",
|
||||
"schema": {
|
||||
"example": "WEB",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/ShowcaseDto"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "Not a public project"
|
||||
}
|
||||
},
|
||||
"summary": "A public project's showcase (no token needed)",
|
||||
"tags": [
|
||||
"Explore"
|
||||
],
|
||||
"security": []
|
||||
}
|
||||
},
|
||||
"/api/me/notifications": {
|
||||
"get": {
|
||||
"operationId": "NotificationsController_mine",
|
||||
@@ -11526,6 +11564,210 @@
|
||||
"markdown"
|
||||
]
|
||||
},
|
||||
"ShowcaseProjectDto": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"format": "uuid"
|
||||
},
|
||||
"key": {
|
||||
"type": "string",
|
||||
"example": "WEB"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id",
|
||||
"key",
|
||||
"name",
|
||||
"description"
|
||||
]
|
||||
},
|
||||
"ShowcaseSprintDto": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"goal": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"startDate": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"endDate": {
|
||||
"type": "string",
|
||||
"format": "date"
|
||||
},
|
||||
"percent": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"goal",
|
||||
"startDate",
|
||||
"endDate",
|
||||
"percent"
|
||||
]
|
||||
},
|
||||
"ShowcaseEpicDto": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"key": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
},
|
||||
"startDate": {
|
||||
"type": "string",
|
||||
"nullable": true,
|
||||
"format": "date"
|
||||
},
|
||||
"dueDate": {
|
||||
"type": "string",
|
||||
"nullable": true,
|
||||
"format": "date"
|
||||
},
|
||||
"percent": {
|
||||
"type": "number"
|
||||
},
|
||||
"done": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"path": {
|
||||
"type": "string",
|
||||
"example": "/p/WEB/issues/WEB-3",
|
||||
"description": "In the web app"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"key",
|
||||
"title",
|
||||
"startDate",
|
||||
"dueDate",
|
||||
"percent",
|
||||
"done",
|
||||
"path"
|
||||
]
|
||||
},
|
||||
"ShowcaseReleaseDto": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"status": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/ReleaseStatus"
|
||||
}
|
||||
]
|
||||
},
|
||||
"targetDate": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"releasedAt": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"percent": {
|
||||
"type": "number"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string",
|
||||
"nullable": true,
|
||||
"description": "Shipped ones only"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"status",
|
||||
"targetDate",
|
||||
"releasedAt",
|
||||
"percent",
|
||||
"notes"
|
||||
]
|
||||
},
|
||||
"ShowcaseIssueDto": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"key": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"description": "A ticket type id"
|
||||
},
|
||||
"path": {
|
||||
"type": "string",
|
||||
"example": "/p/WEB/issues/WEB-9"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"key",
|
||||
"title",
|
||||
"type",
|
||||
"path"
|
||||
]
|
||||
},
|
||||
"ShowcaseDto": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"project": {
|
||||
"$ref": "#/components/schemas/ShowcaseProjectDto"
|
||||
},
|
||||
"activeSprint": {
|
||||
"nullable": true,
|
||||
"type": "object",
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/ShowcaseSprintDto"
|
||||
}
|
||||
]
|
||||
},
|
||||
"roadmap": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/ShowcaseEpicDto"
|
||||
}
|
||||
},
|
||||
"releases": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/ShowcaseReleaseDto"
|
||||
}
|
||||
},
|
||||
"goodFirst": {
|
||||
"description": "Open tickets labelled good-first-issue",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/ShowcaseIssueDto"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"project",
|
||||
"activeSprint",
|
||||
"roadmap",
|
||||
"releases",
|
||||
"goodFirst"
|
||||
]
|
||||
},
|
||||
"Object": {
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
|
||||
@@ -917,6 +917,26 @@ export interface paths {
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/api/explore/projects/{project}/showcase": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path?: never;
|
||||
cookie?: never;
|
||||
};
|
||||
/**
|
||||
* A public project's showcase (no token needed)
|
||||
* @description For public websites: epics with their dates and progress, the latest releases (with the notes of shipped ones), the sprint under way and open tickets labelled good-first-issue. Paths point into the web app.
|
||||
*/
|
||||
get: operations["ExploreController_showcase"];
|
||||
put?: never;
|
||||
post?: never;
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/api/me/notifications": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
@@ -2115,6 +2135,63 @@ export interface components {
|
||||
*/
|
||||
markdown: string;
|
||||
};
|
||||
ShowcaseProjectDto: {
|
||||
/** Format: uuid */
|
||||
id: string;
|
||||
/** @example WEB */
|
||||
key: string;
|
||||
name: string;
|
||||
description: string | null;
|
||||
};
|
||||
ShowcaseSprintDto: {
|
||||
name: string;
|
||||
goal: string | null;
|
||||
/** Format: date */
|
||||
startDate: string;
|
||||
/** Format: date */
|
||||
endDate: string;
|
||||
percent: number;
|
||||
};
|
||||
ShowcaseEpicDto: {
|
||||
key: string;
|
||||
title: string;
|
||||
/** Format: date */
|
||||
startDate: string | null;
|
||||
/** Format: date */
|
||||
dueDate: string | null;
|
||||
percent: number;
|
||||
done: boolean;
|
||||
/**
|
||||
* @description In the web app
|
||||
* @example /p/WEB/issues/WEB-3
|
||||
*/
|
||||
path: string;
|
||||
};
|
||||
ShowcaseReleaseDto: {
|
||||
name: string;
|
||||
status: components["schemas"]["ReleaseStatus"];
|
||||
targetDate: string | null;
|
||||
releasedAt: string | null;
|
||||
percent: number;
|
||||
/** @description Shipped ones only */
|
||||
notes: string | null;
|
||||
};
|
||||
ShowcaseIssueDto: {
|
||||
key: string;
|
||||
title: string;
|
||||
/** @description A ticket type id */
|
||||
type: string;
|
||||
/** @example /p/WEB/issues/WEB-9 */
|
||||
path: string;
|
||||
};
|
||||
ShowcaseDto: {
|
||||
project: components["schemas"]["ShowcaseProjectDto"];
|
||||
activeSprint: components["schemas"]["ShowcaseSprintDto"] | null;
|
||||
roadmap: components["schemas"]["ShowcaseEpicDto"][];
|
||||
releases: components["schemas"]["ShowcaseReleaseDto"][];
|
||||
/** @description Open tickets labelled good-first-issue */
|
||||
goodFirst: components["schemas"]["ShowcaseIssueDto"][];
|
||||
};
|
||||
Object: Record<string, never>;
|
||||
/** @enum {string} */
|
||||
NotificationKind: "ASSIGNED" | "STATUS_CHANGED" | "QA_FAILED" | "COMMENTED" | "MENTIONED" | "WATCHED" | "ADDED_TO_PROJECT" | "REMINDER";
|
||||
@@ -6652,6 +6729,35 @@ export interface operations {
|
||||
};
|
||||
};
|
||||
};
|
||||
ExploreController_showcase: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path: {
|
||||
/** @description Project id or key */
|
||||
project: string;
|
||||
};
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content: {
|
||||
"application/json": components["schemas"]["ShowcaseDto"];
|
||||
};
|
||||
};
|
||||
/** @description Not a public project */
|
||||
404: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content?: never;
|
||||
};
|
||||
};
|
||||
};
|
||||
NotificationsController_mine: {
|
||||
parameters: {
|
||||
query?: {
|
||||
|
||||
Reference in New Issue
Block a user