feat: add feedback backend foundation

This commit is contained in:
2026-04-30 03:31:42 -04:00
parent f9960b4fc9
commit cb6948aa14
27 changed files with 3428 additions and 25 deletions

View File

@@ -7,10 +7,31 @@
},
"servers": [
{
"url": "http://127.0.0.1:5081"
"url": "http://localhost:5080"
}
],
"paths": {
"/api/storage": {
"get": {
"operationId": "GetApiStorage",
"parameters": [
{
"name": "blobPath",
"in": "path",
"required": true,
"schema": {
"type": "string"
},
"x-position": 1
}
],
"responses": {
"200": {
"description": ""
}
}
}
},
"/api/workspaces/{id}/logo": {
"post": {
"tags": [
@@ -1200,6 +1221,372 @@
}
}
},
"/api/my-feedback/{id}/cancel": {
"post": {
"tags": [
"Feedback",
"Api"
],
"operationId": "SocializeApiModulesFeedbackHandlersCancelMyFeedbackHandler",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"x-name": "CancelMyFeedbackRequest",
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SocializeApiModulesFeedbackHandlersCancelMyFeedbackRequest"
}
}
},
"required": true,
"x-position": 1
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SocializeApiModulesFeedbackContractsFeedbackReportDto"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/FastEndpointsErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"security": [
{
"JWTBearerAuth": []
}
]
}
},
"/api/feedback/{id}": {
"get": {
"tags": [
"Feedback",
"Api"
],
"operationId": "SocializeApiModulesFeedbackHandlersGetDeveloperFeedbackHandler",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SocializeApiModulesFeedbackContractsFeedbackReportDto"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"JWTBearerAuth": [
"Developer"
]
}
]
},
"patch": {
"tags": [
"Feedback",
"Api"
],
"operationId": "SocializeApiModulesFeedbackHandlersUpdateDeveloperFeedbackHandler",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"x-name": "UpdateDeveloperFeedbackRequest",
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SocializeApiModulesFeedbackHandlersUpdateDeveloperFeedbackRequest"
}
}
},
"required": true,
"x-position": 1
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SocializeApiModulesFeedbackContractsFeedbackReportDto"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/FastEndpointsErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"JWTBearerAuth": [
"Developer"
]
}
]
}
},
"/api/my-feedback/{id}": {
"get": {
"tags": [
"Feedback",
"Api"
],
"operationId": "SocializeApiModulesFeedbackHandlersGetMyFeedbackHandler",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SocializeApiModulesFeedbackContractsFeedbackReportDto"
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"security": [
{
"JWTBearerAuth": []
}
]
}
},
"/api/feedback": {
"get": {
"tags": [
"Feedback",
"Api"
],
"operationId": "SocializeApiModulesFeedbackHandlersListDeveloperFeedbackHandler",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SocializeApiModulesFeedbackContractsFeedbackReportDto"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"JWTBearerAuth": [
"Developer"
]
}
]
},
"post": {
"tags": [
"Feedback",
"Api"
],
"operationId": "SocializeApiModulesFeedbackHandlersSubmitFeedbackHandler",
"requestBody": {
"x-name": "SubmitFeedbackRequest",
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SocializeApiModulesFeedbackHandlersSubmitFeedbackRequest"
}
}
},
"required": true,
"x-position": 1
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SocializeApiModulesFeedbackContractsFeedbackReportDto"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/FastEndpointsErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"security": [
{
"JWTBearerAuth": []
}
]
}
},
"/api/feedback/tags": {
"get": {
"tags": [
"Feedback",
"Api"
],
"operationId": "SocializeApiModulesFeedbackHandlersListFeedbackTagsHandler",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"JWTBearerAuth": [
"Developer"
]
}
]
}
},
"/api/my-feedback": {
"get": {
"tags": [
"Feedback",
"Api"
],
"operationId": "SocializeApiModulesFeedbackHandlersListMyFeedbackHandler",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SocializeApiModulesFeedbackContractsFeedbackReportDto"
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"security": [
{
"JWTBearerAuth": []
}
]
}
},
"/api/content-items": {
"post": {
"tags": [
@@ -2900,6 +3287,271 @@
"type": "object",
"additionalProperties": false
},
"SocializeApiModulesFeedbackContractsFeedbackReportDto": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"format": "guid"
},
"type": {
"type": "string"
},
"status": {
"type": "string"
},
"description": {
"type": "string"
},
"reporterUserId": {
"type": "string",
"format": "guid"
},
"reporterDisplayName": {
"type": "string"
},
"reporterEmail": {
"type": "string"
},
"metadata": {
"$ref": "#/components/schemas/SocializeApiModulesFeedbackContractsFeedbackMetadataDto"
},
"context": {
"$ref": "#/components/schemas/SocializeApiModulesFeedbackContractsFeedbackContextDto"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"lastActivityAt": {
"type": "string",
"format": "date-time"
},
"cancelledAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"cancellationReason": {
"type": "string",
"nullable": true
}
}
},
"SocializeApiModulesFeedbackContractsFeedbackMetadataDto": {
"type": "object",
"additionalProperties": false,
"properties": {
"submittedPath": {
"type": "string"
},
"browserUserAgent": {
"type": "string",
"nullable": true
},
"viewportWidth": {
"type": "integer",
"format": "int32",
"nullable": true
},
"viewportHeight": {
"type": "integer",
"format": "int32",
"nullable": true
},
"appVersion": {
"type": "string",
"nullable": true
}
}
},
"SocializeApiModulesFeedbackContractsFeedbackContextDto": {
"type": "object",
"additionalProperties": false,
"properties": {
"workspaceId": {
"type": "string",
"format": "guid",
"nullable": true
},
"workspaceName": {
"type": "string",
"nullable": true
},
"clientId": {
"type": "string",
"format": "guid",
"nullable": true
},
"clientName": {
"type": "string",
"nullable": true
},
"projectId": {
"type": "string",
"format": "guid",
"nullable": true
},
"projectName": {
"type": "string",
"nullable": true
},
"contentItemId": {
"type": "string",
"format": "guid",
"nullable": true
},
"contentItemTitle": {
"type": "string",
"nullable": true
}
}
},
"SocializeApiModulesFeedbackHandlersCancelMyFeedbackRequest": {
"type": "object",
"additionalProperties": false,
"properties": {
"reason": {
"type": "string",
"maxLength": 2000,
"minLength": 0,
"nullable": true
}
}
},
"SocializeApiModulesFeedbackHandlersSubmitFeedbackRequest": {
"type": "object",
"additionalProperties": false,
"required": [
"type",
"description",
"submittedPath"
],
"properties": {
"type": {
"type": "string",
"maxLength": 32,
"minLength": 0,
"nullable": false
},
"description": {
"type": "string",
"maxLength": 8000,
"minLength": 0,
"nullable": false
},
"submittedPath": {
"type": "string",
"maxLength": 2048,
"minLength": 0,
"nullable": false
},
"browserUserAgent": {
"type": "string",
"maxLength": 1024,
"minLength": 0,
"nullable": true
},
"viewportWidth": {
"type": "integer",
"format": "int32",
"minimum": 0.0,
"nullable": true,
"exclusiveMinimum": true
},
"viewportHeight": {
"type": "integer",
"format": "int32",
"minimum": 0.0,
"nullable": true,
"exclusiveMinimum": true
},
"appVersion": {
"type": "string",
"maxLength": 128,
"minLength": 0,
"nullable": true
},
"workspaceId": {
"type": "string",
"format": "guid",
"nullable": true
},
"workspaceName": {
"type": "string",
"maxLength": 256,
"minLength": 0,
"nullable": true
},
"clientId": {
"type": "string",
"format": "guid",
"nullable": true
},
"clientName": {
"type": "string",
"maxLength": 256,
"minLength": 0,
"nullable": true
},
"projectId": {
"type": "string",
"format": "guid",
"nullable": true
},
"projectName": {
"type": "string",
"maxLength": 256,
"minLength": 0,
"nullable": true
},
"contentItemId": {
"type": "string",
"format": "guid",
"nullable": true
},
"contentItemTitle": {
"type": "string",
"maxLength": 256,
"minLength": 0,
"nullable": true
}
}
},
"SocializeApiModulesFeedbackHandlersUpdateDeveloperFeedbackRequest": {
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"type": "string",
"maxLength": 32,
"minLength": 0,
"nullable": true
},
"status": {
"type": "string",
"maxLength": 32,
"minLength": 0,
"nullable": true
},
"tags": {
"type": "array",
"maxLength": 64,
"minLength": 0,
"nullable": true,
"items": {
"type": "string"
}
}
}
},
"SocializeApiModulesContentItemsHandlersContentItemDto": {
"type": "object",
"additionalProperties": false,