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": {}
|
||||
|
||||
Reference in New Issue
Block a user