Ctrl K
ComunidadGuías…

apps/api/openapi.json

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
{
  "openapi": "3.0.0",
  "paths": {
    "/boards/{boardPublicId}/members": {
      "get": {
        "operationId": "getBoardMembers",
        "parameters": [
          {
            "name": "boardPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/BoardMemberDto"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "List a board's members",
        "tags": [
          "Board Members"
        ]
      },
      "post": {
        "operationId": "addBoardMember",
        "parameters": [
          {
            "name": "boardPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddBoardMemberDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoardMemberRoleResultDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Add a workspace member to a board",
        "tags": [
          "Board Members"
        ]
      }
    },
    "/boards/{boardPublicId}/members/{workspaceMemberPublicId}": {
      "put": {
        "operationId": "updateBoardMemberRole",
        "parameters": [
          {
            "name": "boardPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "workspaceMemberPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBoardMemberRoleDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoardMemberRoleResultDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update a board member's role",
        "tags": [
          "Board Members"
        ]
      },
      "delete": {
        "operationId": "removeBoardMember",
        "parameters": [
          {
            "name": "boardPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "workspaceMemberPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BoardMemberRemoveResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Remove a member from a board",
        "tags": [
          "Board Members"
        ]
      }
    },
    "/checklists/{checklistPublicId}": {
      "put": {
        "operationId": "updateChecklist",
        "parameters": [
          {
            "name": "checklistPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateChecklistDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChecklistResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update a checklist",
        "tags": [
          "Cards"
        ]
      },
      "delete": {
        "operationId": "deleteChecklist",
        "parameters": [
          {
            "name": "checklistPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteChecklistResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Delete a checklist",
        "tags": [
          "Cards"
        ]
      }
    },
    "/checklists/{checklistPublicId}/items": {
      "post": {
        "operationId": "createChecklistItem",
        "parameters": [
          {
            "name": "checklistPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateChecklistItemDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChecklistItemResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Add an item to a checklist",
        "tags": [
          "Cards"
        ]
      }
    },
    "/checklists/items/{checklistItemPublicId}": {
      "patch": {
        "operationId": "updateChecklistItem",
        "parameters": [
          {
            "name": "checklistItemPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateChecklistItemDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChecklistItemResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update a checklist item",
        "tags": [
          "Cards"
        ]
      },
      "delete": {
        "operationId": "deleteChecklistItem",
        "parameters": [
          {
            "name": "checklistItemPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteChecklistResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Delete a checklist item",
        "tags": [
          "Cards"
        ]
      }
    },
    "/cards/{cardPublicId}/checklists": {
      "post": {
        "operationId": "createChecklist",
        "parameters": [
          {
            "name": "cardPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateChecklistDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChecklistResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Add a checklist to a card",
        "tags": [
          "Cards"
        ]
      }
    },
    "/feedback": {
      "post": {
        "operationId": "createFeedback",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateFeedbackDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateFeedbackResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Submit feedback",
        "tags": [
          "Feedback"
        ]
      }
    },
    "/labels/{labelPublicId}": {
      "get": {
        "operationId": "getLabel",
        "parameters": [
          {
            "name": "labelPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LabelResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get a label by public ID",
        "tags": [
          "Labels"
        ]
      },
      "put": {
        "operationId": "updateLabel",
        "parameters": [
          {
            "name": "labelPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLabelDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LabelResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update a label",
        "tags": [
          "Labels"
        ]
      },
      "delete": {
        "operationId": "deleteLabel",
        "parameters": [
          {
            "name": "labelPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteLabelResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Delete a label",
        "tags": [
          "Labels"
        ]
      }
    },
    "/labels": {
      "post": {
        "operationId": "createLabel",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLabelDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LabelResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Create a label",
        "tags": [
          "Labels"
        ]
      }
    },
    "/lists": {
      "post": {
        "operationId": "createList",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateListDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Create a list",
        "tags": [
          "Lists"
        ]
      }
    },
    "/lists/{listPublicId}": {
      "delete": {
        "operationId": "deleteList",
        "parameters": [
          {
            "name": "listPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteListResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Delete a list",
        "tags": [
          "Lists"
        ]
      },
      "put": {
        "operationId": "updateList",
        "parameters": [
          {
            "name": "listPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateListDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update a list",
        "tags": [
          "Lists"
        ]
      }
    },
    "/mcp": {
      "post": {
        "operationId": "StreamableHttpController_handlePostRequest",
        "parameters": [],
        "responses": {
          "201": {
            "description": ""
          }
        },
        "tags": [
          "StreamableHttp"
        ]
      },
      "get": {
        "operationId": "StreamableHttpController_handleGetRequest",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "StreamableHttp"
        ]
      },
      "delete": {
        "operationId": "StreamableHttpController_handleDeleteRequest",
        "parameters": [],
        "responses": {
          "200": {
            "description": ""
          }
        },
        "tags": [
          "StreamableHttp"
        ]
      }
    },
    "/workspaces/{workspacePublicId}/members/invite": {
      "post": {
        "operationId": "inviteMember",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InviteMemberDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemberInviteResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Invite a member to a workspace",
        "tags": [
          "Workspaces"
        ]
      }
    },
    "/workspaces/{workspacePublicId}/members/{memberPublicId}": {
      "delete": {
        "operationId": "deleteMember",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "memberPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteMemberResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Delete a member from a workspace",
        "tags": [
          "Workspaces"
        ]
      }
    },
    "/workspaces/{workspacePublicId}/members/{memberPublicId}/role": {
      "put": {
        "operationId": "updateMemberRole",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "memberPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMemberRoleDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateMemberRoleResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Update member role",
        "tags": [
          "Workspaces"
        ]
      }
    },
    "/workspaces/{workspacePublicId}/invite": {
      "get": {
        "operationId": "getActiveInviteLink",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActiveInviteLinkResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get active invite link for workspace",
        "tags": [
          "Workspaces"
        ]
      }
    },
    "/workspaces/{workspacePublicId}/invites": {
      "post": {
        "operationId": "createInviteLink",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateInviteLinkResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Create invite link for workspace",
        "tags": [
          "Workspaces"
        ]
      },
      "delete": {
        "operationId": "deactivateInviteLink",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeactivateInviteLinkResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Deactivate invite link for workspace",
        "tags": [
          "Workspaces"
        ]
      }
    },
    "/invites/{inviteCode}": {
      "get": {
        "operationId": "getInviteByCode",
        "parameters": [
          {
            "name": "inviteCode",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InviteByCodeResponseDto"
                }
              }
            }
          }
        },
        "summary": "Get invite information by code",
        "tags": [
          "Invite"
        ]
      }
    },
    "/invites/accept": {
      "post": {
        "operationId": "acceptInviteLink",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AcceptInviteLinkDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptInviteLinkResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Accept an invite link",
        "tags": [
          "Invites"
        ]
      }
    },
    "/workspaces/{workspacePublicId}/permissions/me": {
      "get": {
        "operationId": "getMyPermissions",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMyPermissionsResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get my permissions",
        "tags": [
          "Permissions"
        ]
      }
    },
    "/workspaces/{workspacePublicId}/members/{memberPublicId}/permissions": {
      "get": {
        "operationId": "getMemberPermissions",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "memberPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMemberPermissionsResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get member permissions",
        "tags": [
          "Permissions"
        ]
      }
    },
    "/workspaces/{workspacePublicId}/members/{memberPublicId}/permissions/grant": {
      "post": {
        "operationId": "grantPermission",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "memberPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PermissionActionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Grant permission to member",
        "tags": [
          "Permissions"
        ]
      }
    },
    "/workspaces/{workspacePublicId}/members/{memberPublicId}/permissions/revoke": {
      "post": {
        "operationId": "revokePermission",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "memberPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PermissionActionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Revoke permission from member",
        "tags": [
          "Permissions"
        ]
      }
    },
    "/workspaces/{workspacePublicId}/members/{memberPublicId}/permissions/reset": {
      "post": {
        "operationId": "resetMemberPermissions",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "memberPublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Reset member permissions to role defaults",
        "tags": [
          "Permissions"
        ]
      }
    },
    "/workspaces/{workspacePublicId}/members/permissions/reset": {
      "post": {
        "operationId": "resetWorkspaceMemberPermissions",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Reset all member permission overrides in a workspace",
        "tags": [
          "Permissions"
        ]
      }
    },
    "/workspaces/{workspacePublicId}/roles": {
      "get": {
        "operationId": "getWorkspaceRoles",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkspaceRolesResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get workspace roles",
        "tags": [
          "Permissions"
        ]
      }
    },
    "/workspaces/{workspacePublicId}/roles/permissions": {
      "get": {
        "operationId": "getWorkspaceRolePermissions",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWorkspaceRolePermissionsResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get workspace role permissions",
        "tags": [
          "Permissions"
        ]
      }
    },
    "/workspaces/{workspacePublicId}/roles/{rolePublicId}/permissions": {
      "get": {
        "operationId": "getRolePermissions",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "rolePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetRolePermissionsResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get role permissions",
        "tags": [
          "Permissions"
        ]
      }
    },
    "/workspaces/{workspacePublicId}/roles/{rolePublicId}/permissions/grant": {
      "post": {
        "operationId": "grantRolePermission",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "rolePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PermissionActionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Grant permission to role",
        "tags": [
          "Permissions"
        ]
      }
    },
    "/workspaces/{workspacePublicId}/roles/{rolePublicId}/permissions/revoke": {
      "post": {
        "operationId": "revokeRolePermission",
        "parameters": [
          {
            "name": "workspacePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "rolePublicId",
            "required": true,
            "in": "path",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PermissionActionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuccessResponseDto"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Revoke permission from role",
        "tags": [
          "Permissions"
        ]
      }
    }
  },
  "info": {
    "title": "Kan API",
    "description": "OpenAPI compliant REST API",
    "version": "1.0.0",
    "contact": {}
  },
  "tags": [],
  "servers": [],
  "components": {
    "securitySchemes": {
      "bearer": {
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "type": "http"
      }
    },
    "schemas": {
      "BoardMemberDto": {
        "type": "object",
        "properties": {
          "publicId": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "enum": [
              "admin",
              "member"
            ]
          },
          "workspaceRole": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
          },
          "user": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "nullable": true
              },
              "name": {
                "type": "string",
                "nullable": true
              },
              "email": {
                "type": "string"
              },
              "image": {
                "type": "string",
                "nullable": true
              }
            },
            "required": [
              "id",
              "name",
              "email",
              "image"
            ],
            "nullable": true
          }
        },
        "required": [
          "publicId",
          "email",
          "status",
          "role",
          "workspaceRole",
          "createdAt",
          "user"
        ]
      },
      "AddBoardMemberDto": {
        "type": "object",
        "properties": {
          "workspaceMemberPublicId": {
            "type": "string",
            "minLength": 12
          },
          "role": {
            "default": "member",
            "type": "string",
            "enum": [
              "admin",
              "member"
            ]
          }
        },
        "required": [
          "workspaceMemberPublicId"
        ]
      },
      "BoardMemberRoleResultDto": {
        "type": "object",
        "properties": {
          "publicId": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "enum": [
              "admin",
              "member"
            ]
          }
        },
        "required": [
          "publicId",
          "role"
        ]
      },
      "UpdateBoardMemberRoleDto": {
        "type": "object",
        "properties": {
          "role": {
            "type": "string",
            "enum": [
              "admin",
              "member"
            ]
          }
        },
        "required": [
          "role"
        ]
      },
      "BoardMemberRemoveResponseDto": {
        "type": "object",
        "properties": {
          "publicId": {
            "type": "string"
          }
        },
        "required": [
          "publicId"
        ]
      },
      "UpdateChecklistDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          }
        },
        "required": [
          "name"
        ]
      },
      "ChecklistResponseDto": {
        "type": "object",
        "properties": {
          "publicId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "publicId",
          "name"
        ]
      },
      "DeleteChecklistResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ]
      },
      "CreateChecklistItemDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500
          }
        },
        "required": [
          "title"
        ]
      },
      "ChecklistItemResponseDto": {
        "type": "object",
        "properties": {
          "publicId": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "completed": {
            "type": "boolean"
          }
        },
        "required": [
          "publicId",
          "title",
          "completed"
        ]
      },
      "UpdateChecklistItemDto": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500
          },
          "completed": {
            "type": "boolean"
          },
          "index": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          }
        }
      },
      "CreateChecklistDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255
          }
        },
        "required": [
          "name"
        ]
      },
      "CreateFeedbackDto": {
        "type": "object",
        "properties": {
          "feedback": {
            "type": "string",
            "minLength": 1
          },
          "url": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "feedback",
          "url"
        ]
      },
      "CreateFeedbackResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ]
      },
      "LabelResponseDto": {
        "type": "object",
        "properties": {
          "publicId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "colourCode": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "publicId",
          "name",
          "colourCode"
        ]
      },
      "CreateLabelDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "boardPublicId": {
            "type": "string",
            "minLength": 12
          },
          "colourCode": {
            "type": "string",
            "minLength": 7,
            "maxLength": 7
          }
        },
        "required": [
          "name",
          "boardPublicId",
          "colourCode"
        ]
      },
      "UpdateLabelDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 36
          },
          "colourCode": {
            "type": "string",
            "minLength": 7,
            "maxLength": 7
          }
        },
        "required": [
          "name",
          "colourCode"
        ]
      },
      "DeleteLabelResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ]
      },
      "CreateListDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "boardPublicId": {
            "type": "string",
            "minLength": 12
          }
        },
        "required": [
          "name",
          "boardPublicId"
        ]
      },
      "ListResponseDto": {
        "type": "object",
        "properties": {
          "publicId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "publicId",
          "name"
        ]
      },
      "DeleteListResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ]
      },
      "UpdateListDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "index": {
            "type": "number"
          }
        }
      },
      "InviteMemberDto": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
          }
        },
        "required": [
          "email"
        ]
      },
      "MemberInviteResponseDto": {
        "type": "object",
        "properties": {
          "publicId": {
            "type": "string"
          }
        },
        "required": [
          "publicId"
        ]
      },
      "DeleteMemberResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ]
      },
      "UpdateMemberRoleDto": {
        "type": "object",
        "properties": {
          "role": {
            "type": "string",
            "enum": [
              "admin",
              "member",
              "guest"
            ]
          }
        },
        "required": [
          "role"
        ]
      },
      "UpdateMemberRoleResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "role": {
            "type": "string"
          }
        },
        "required": [
          "success",
          "role"
        ]
      },
      "ActiveInviteLinkResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "number"
          },
          "inviteCode": {
            "type": "string"
          },
          "inviteLink": {
            "type": "string"
          },
          "isActive": {
            "type": "boolean"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
          }
        },
        "required": [
          "isActive"
        ]
      },
      "CreateInviteLinkResponseDto": {
        "type": "object",
        "properties": {
          "publicId": {
            "type": "string"
          },
          "inviteCode": {
            "type": "string"
          },
          "inviteLink": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
            "nullable": true
          }
        },
        "required": [
          "publicId",
          "inviteCode",
          "inviteLink",
          "expiresAt"
        ]
      },
      "DeactivateInviteLinkResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ]
      },
      "InviteByCodeResponseDto": {
        "type": "object",
        "properties": {
          "publicId": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
            "nullable": true
          }
        },
        "required": [
          "publicId",
          "status",
          "expiresAt"
        ]
      },
      "AcceptInviteLinkDto": {
        "type": "object",
        "properties": {
          "inviteCode": {
            "type": "string",
            "minLength": 12
          }
        },
        "required": [
          "inviteCode"
        ]
      },
      "AcceptInviteLinkResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "workspacePublicId": {
            "type": "string"
          },
          "workspaceSlug": {
            "type": "string"
          }
        },
        "required": [
          "success"
        ]
      },
      "GetMyPermissionsResponseDto": {
        "type": "object",
        "properties": {
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "role": {
            "type": "string"
          }
        },
        "required": [
          "permissions",
          "role"
        ]
      },
      "GetMemberPermissionsResponseDto": {
        "type": "object",
        "properties": {
          "memberPublicId": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "overrides": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "permission": {
                  "type": "string"
                },
                "granted": {
                  "type": "boolean"
                }
              },
              "required": [
                "permission",
                "granted"
              ]
            }
          }
        },
        "required": [
          "memberPublicId",
          "role",
          "permissions",
          "overrides"
        ]
      },
      "PermissionActionDto": {
        "type": "object",
        "properties": {
          "permission": {
            "type": "string",
            "enum": [
              "workspace:view",
              "workspace:edit",
              "workspace:delete",
              "workspace:manage",
              "board:view",
              "board:create",
              "board:edit",
              "board:delete",
              "list:view",
              "list:create",
              "list:edit",
              "list:delete",
              "card:view",
              "card:create",
              "card:edit",
              "card:delete",
              "comment:view",
              "comment:create",
              "comment:edit",
              "comment:delete",
              "member:view",
              "member:invite",
              "member:edit",
              "member:remove"
            ]
          }
        },
        "required": [
          "permission"
        ]
      },
      "SuccessResponseDto": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ]
      },
      "GetWorkspaceRolesResponseDto": {
        "type": "object",
        "properties": {
          "roles": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "publicId": {
                  "type": "string",
                  "minLength": 12
                },
                "name": {
                  "type": "string"
                },
                "description": {
                  "type": "string",
                  "nullable": true
                },
                "hierarchyLevel": {
                  "type": "number"
                },
                "isSystem": {
                  "type": "boolean"
                }
              },
              "required": [
                "publicId",
                "name",
                "description",
                "hierarchyLevel",
                "isSystem"
              ]
            }
          }
        },
        "required": [
          "roles"
        ]
      },
      "GetWorkspaceRolePermissionsResponseDto": {
        "type": "object",
        "properties": {
          "roles": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "publicId": {
                  "type": "string",
                  "minLength": 12
                },
                "name": {
                  "type": "string"
                },
                "permissions": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "publicId",
                "name",
                "permissions"
              ]
            }
          }
        },
        "required": [
          "roles"
        ]
      },
      "GetRolePermissionsResponseDto": {
        "type": "object",
        "properties": {
          "rolePublicId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "rolePublicId",
          "name",
          "permissions"
        ]
      }
    }
  }
}