Add application API keys
linter / quality (pull_request) Successful in 1m19s
tests / ci (8.4) (pull_request) Successful in 1m32s

This commit is contained in:
2026-04-20 19:58:24 +02:00
parent a6a4615ad5
commit bf0e50464a
31 changed files with 1124 additions and 46 deletions
+90 -2
View File
@@ -3,14 +3,18 @@
"info": {
"title": "KanbanGit Application API",
"version": "0.1.0",
"description": "First-party JSON API for KanbanGit UI-equivalent workflows. Authentication is intentionally not described here because API verification will be added globally by the application later."
"description": "First-party JSON API for KanbanGit UI-equivalent workflows. Application endpoints require a bearer application key created in Settings > Applications."
},
"servers": [
{
"url": "/api"
}
],
"security": [],
"security": [
{
"ApplicationKey": []
}
],
"tags": [
{
"name": "Projects"
@@ -29,6 +33,9 @@
},
{
"name": "Git Connections"
},
{
"name": "Users"
}
],
"paths": {
@@ -1041,10 +1048,45 @@
}
}
}
},
"/users/{user}/assigned-tickets": {
"get": {
"tags": ["Users"],
"operationId": "getUserAssignedTickets",
"parameters": [
{
"$ref": "#/components/parameters/UserId"
}
],
"responses": {
"200": {
"$ref": "#/components/responses/AssignedTicketsPayload"
},
"401": {
"$ref": "#/components/responses/Unauthenticated"
}
}
}
}
},
"components": {
"securitySchemes": {
"ApplicationKey": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "KanbanGit application key",
"description": "Use a first-party application key created in Settings > Applications."
}
},
"parameters": {
"UserId": {
"name": "user",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
},
"ProjectId": {
"name": "project",
"in": "path",
@@ -1600,6 +1642,16 @@
}
}
},
"AssignedTicketsPayload": {
"description": "Tickets assigned to a user grouped by projects visible to the authenticated application key owner.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssignedTicketsPayloadEnvelope"
}
}
}
},
"ValidationError": {
"description": "Laravel validation error response.",
"content": {
@@ -1779,6 +1831,42 @@
}
}
},
"AssignedTicketsPayloadEnvelope": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AssignedTicketsProjectGroup"
}
},
"meta": {
"type": "object",
"properties": {
"assignee": {
"$ref": "#/components/schemas/User"
}
},
"required": ["assignee"]
}
},
"required": ["data", "meta"]
},
"AssignedTicketsProjectGroup": {
"type": "object",
"properties": {
"project": {
"$ref": "#/components/schemas/Project"
},
"tickets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Ticket"
}
}
},
"required": ["project", "tickets"]
},
"BoardColumn": {
"type": "object",
"additionalProperties": true,