### Making Authenticated API Requests Source: https://hacknplan.com/docs/api-authentication This example demonstrates how to make a GET request to the projects endpoint, including the necessary Authorization header with your API key. ```APIDOC ## GET /v0/projects ### Description Retrieves a list of projects accessible with the provided API key. ### Method GET ### Endpoint /v0/projects ### Parameters #### Headers - **Authorization** (string) - Required - The API key in the format `ApiKey YOUR_API_KEY`. - **Content-Type** (string) - Required - Set to `application/json`. ### Request Example ```javascript const YOUR_API_KEY = "YOUR_API_KEY"; const response = await fetch("https://api.hacknplan.com/v0/projects", { method: "GET", headers: { Authorization: "ApiKey " + YOUR_API_KEY, "Content-Type": "application/json", }, }); const data = await response.json(); console.log(data); ``` ### Response #### Success Response (200) - **data** (array) - A list of projects. ``` -------------------------------- ### Using API Key for Authentication Source: https://hacknplan.com/docs/developers/api-authentication This example demonstrates how to include your API key in the Authorization header when making a GET request to the projects endpoint. ```APIDOC ## GET /v0/projects ### Description Retrieves a list of projects accessible by the authenticated user. ### Method GET ### Endpoint /v0/projects ### Parameters #### Request Headers - **Authorization** (string) - Required - The API key for authentication. Format: `ApiKey YOUR_API_KEY` - **Content-Type** (string) - Required - Specifies the content type of the request body. Value: `application/json` ### Request Example ```javascript const YOUR_API_KEY = "YOUR_API_KEY"; const response = await fetch("https://api.hacknplan.com/v0/projects", { method: "GET", headers: { Authorization: "ApiKey " + YOUR_API_KEY, "Content-Type": "application/json", }, }); const data = await response.json(); console.log(data); ``` ### Response #### Success Response (200) - **data** (array) - A list of projects. #### Response Example ```json { "example": "[Project objects]" } ``` ``` -------------------------------- ### Making Authenticated API Requests Source: https://hacknplan.com/docs/api-authentication Use this example to make authenticated GET requests to the HacknPlan API. Ensure your API key is securely stored and included in the Authorization header. ```javascript const response = await fetch("https://api.hacknplan.com/v0/projects", { method: "GET", headers: { Authorization: "ApiKey " + YOUR_API_KEY, "Content-Type": "application/json", }, }); const data = await response.json(); console.log(data); ``` -------------------------------- ### Get Single Resource by ID Source: https://hacknplan.com/docs/developers/calling-the-api Retrieve a specific resource by appending its ID to the URL path. Examples include fetching a project or a work item within a project. ```http GET https://api.hacknplan.com/v0/projects/100 ``` ```http GET https://api.hacknplan.com/v0/projects/100/workitems/25 ``` -------------------------------- ### Get Work Item - Example JSON Source: https://hacknplan.com/docs/developers/api-reference This JSON object represents a single work item retrieved from the API. It contains detailed information about the work item, including its project, ID, title, and associated metadata. ```json { "projectId": 1, "workItemId": 1, "parentStoryId": 1, "isStory": true, "title": "string", "description": "string", "category": { "projectId": 1, "categoryId": 1, ``` -------------------------------- ### Get All Projects Source: https://hacknplan.com/docs/developers/api-reference Retrieves a list of all projects that the authenticated user is a member of. ```APIDOC ## GET /v0/projects ### Description Get all the projects the authenticated user is member of. ### Method GET ### Endpoint /v0/projects ### Responses #### Success Response (200) - **project** (array) - A list of project objects. #### Error Response (401) Unauthorized ``` -------------------------------- ### Get Project Storage Info Source: https://hacknplan.com/docs/developers/api-reference Retrieves storage usage information for a given project. ```APIDOC ## GET /v0/projects/{projectId}/storage ### Description Gets storage information about the project. ### Method GET ### Endpoint /v0/projects/{projectId}/storage ### Parameters #### Path Parameters - **projectId** (integer, int32) - Required - The unique identifier of the project. ### Responses #### Success Response (200) - **projectStorageData** (object) - A project storage data object. ### Response Example ```json { "projectId": 1, "totalSpace": 1, "totalUsedSpace": 1, "projectUsedSpace": 1, "fileLimit": 1 } ``` ``` -------------------------------- ### Get Project Stages Source: https://hacknplan.com/docs/developers/api-reference Retrieves a list of all stages within a specified project. ```APIDOC ## GET /v0/projects/{projectId}/stages ### Description Gets a list of the stages in the project. ### Method GET ### Endpoint /v0/projects/{projectId}/stages ### Parameters #### Path Parameters - **projectId** (integer, int32) - Required - The unique identifier of the project. ### Responses #### Success Response (200) - **projectStage** (array) - A list of stage objects. ### Response Example ```json [ { "projectId": 1, "stageId": 1, "name": "string", "icon": "string", "color": "string", "status": "string", "isUnblocker": true, "creationDate": "2026-01-01T00:00:00Z" } ] ``` ``` -------------------------------- ### Get Project Webhooks Source: https://hacknplan.com/docs/developers/api-reference Retrieves a list of all webhooks configured for a specific project. Requires admin privileges. ```json [ { "projectId": 1, "webhookId": 1, "url": "string", "events": [ "string" ], "isEnabled": true, "headers": [ "string" ], "creator": { "projectId": 1, "user": { "id": 1, "username": "string", "email": "string", "name": "string", "creationDate": "2026-01-01T00:00:00Z" }, "isAdmin": true, "isGuest": true, "isActive": true, "creationDate": "2026-01-01T00:00:00Z", "permissions": { "categoryPermissions": [ {} ], "gameDesignModelPermissions": { "id": null, "name": null, "canRead": null, "canWrite": null } }, "role": { "projectId": 1, "roleId": 1, "name": "string", "isAdmin": true, "creationDate": "2026-01-01T00:00:00Z", "permissions": {} } }, "creationDate": "2026-01-01T00:00:00Z" } ] ``` -------------------------------- ### Get Project Files Source: https://hacknplan.com/docs/developers/api-reference Retrieves a list of all files associated with a specific project. Supports pagination. ```APIDOC ## GET /v0/projects/{projectId}/files ### Description [ADMIN] Gets all the files in the project. ### Method GET ### Endpoint /v0/projects/{projectId}/files ### Parameters #### Path Parameters - **projectId** (integer, int32) - Required - The unique identifier of the project. #### Query Parameters - **offset** (integer, int32) - Optional - The number of items to skip from the result, for pagination. Defaults to 0. Min value 0. - **limit** (integer, int32) - Optional - The max number of items to return, for pagination. Defaults to 20. Min value 1. Max value 100. ### Responses #### Success Response (200) - **projectFile** (array) - A list of project file objects. ### Response Example ```json [ { "projectId": 1, "fileId": 1, "name": "string", "thumbName": "string", "url": "string", "thumbUrl": "string", "size": 1, "isImage": true, "user": { "id": 1, "username": "string", "email": "string", "name": "string", "creationDate": "2026-01-01T00:00:00Z" }, "creationDate": "2026-01-01T00:00:00Z" } ] ``` ``` -------------------------------- ### Example Milestone Object Source: https://hacknplan.com/docs/developers/api-reference Represents the structure of a milestone object, including its properties and associated boards. ```json { "dueDate": "2026-01-01T00:00:00Z", "closingDate": "2026-01-01T00:00:00Z", "creationDate": "2026-01-01T00:00:00Z", "boards": [ { "projectId": 1, "boardId": 1, "milestoneId": 1, "name": "string", "description": "string", "generalInfo": "string", "startDate": "2026-01-01T00:00:00Z", "dueDate": "2026-01-01T00:00:00Z", "closingDate": "2026-01-01T00:00:00Z", "creationDate": "2026-01-01T00:00:00Z", "creator": {}, "isDefault": true } ] } ``` -------------------------------- ### Getting a Single Resource Source: https://hacknplan.com/docs/developers/calling-the-api Retrieve a specific resource by appending its ID to the URL path. Examples include getting a project by ID or a work item by ID. ```APIDOC ## Getting a Single Resource ### Description Retrieve a specific resource by appending its ID to the URL path. ### Method GET ### Endpoint Examples - Project by ID: `https://api.hacknplan.com/v0/projects/{projectId}` - Work item by ID: `https://api.hacknplan.com/v0/projects/{projectId}/workitems/{workItemId}` ``` -------------------------------- ### List Projects Source: https://hacknplan.com/docs/developers/calling-the-api Use GET to retrieve a list of all projects accessible to the authenticated user. Ensure Authorization and Content-Type headers are included. ```http GET https://api.hacknplan.com/v0/projects ``` -------------------------------- ### Add New User to Project Source: https://hacknplan.com/docs/developers/api-reference Adds a new user to a project. An invitation email will be sent to the user. Requires administrator privileges. ```json { "projectId": 1, "user": { "id": 1, "username": "string", "email": "string", "name": "string", "creationDate": "2026-01-01T00:00:00Z" }, "isAdmin": true, "isGuest": true, "isActive": true, "creationDate": "2026-01-01T00:00:00Z", "permissions": { "categoryPermissions": [ { "categoryId": 1, "canRead": true, "canWrite": true, "canUpdate": true } ], "gameDesignModelPermissions": { "id": 1, "name": "string", "canRead": true, "canWrite": true } }, "role": { "projectId": 1, "roleId": 1, "name": "string", "isAdmin": true, "creationDate": "2026-01-01T00:00:00Z", "permissions": {} } } ``` -------------------------------- ### Get Project Boards Source: https://hacknplan.com/docs/developers/api-reference Retrieves a list of boards for a given project. Optionally include closed boards. ```json [ { "projectId": 1, "boardId": 1, "milestoneId": 1, "name": "string", "description": "string", "generalInfo": "string", "startDate": "2026-01-01T00:00:00Z", "dueDate": "2026-01-01T00:00:00Z", "closingDate": "2026-01-01T00:00:00Z", "creationDate": "2026-01-01T00:00:00Z", "creator": { "id": 1, "username": "string", "email": "string", "name": "string", "creationDate": "2026-01-01T00:00:00Z" }, "isDefault": true } ] ``` -------------------------------- ### Get Project Events Source: https://hacknplan.com/docs/developers/api-reference Retrieves a list of events for a given project within a specified date range. Requires the project ID, a start date, and an end date. ```json [ { "projectId": 1, "name": "string", "url": "string", "category": { "projectId": 1, "categoryId": 1, "name": "string", "icon": "string", "color": "string", "creationDate": "2026-01-01T00:00:00Z" }, "startDate": "2026-01-01T00:00:00Z", "endDate": "2026-01-01T00:00:00Z", "backgroundColor": "string", "textColor": "string", "isAllDayEvent": true } ] ``` -------------------------------- ### Create Project Source: https://hacknplan.com/docs/developers/api-reference Creates a new project in HacknPlan. Requires project details in the request body. ```APIDOC ## POST /v0/projects ### Description Creates a new project. ### Method POST ### Endpoint /v0/projects ### Parameters #### Request Body - **createProjectValues** (createProjectValues) - Required - An object with the values for the new project. ### Responses #### Success Response (201) - **project** (project) - A newly created project object. #### Error Response (400) Invalid values object. #### Error Response (401) Unauthorized #### Error Response (403) Forbidden ``` -------------------------------- ### Create Board Source: https://hacknplan.com/docs/developers/api-reference [ADMIN] Creates a new board within a specified project. Requires board creation values. ```APIDOC ## POST /v0/projects/{projectId}/boards ### Description [ADMIN] Creates a new board. ### Method POST ### Endpoint /v0/projects/{projectId}/boards ### Parameters #### Path Parameters - **projectId** (integer (int32)) - Required - The unique identifier of the project. #### Request Body - **createBoardValues** (createBoardValues) - Required - The board creation values object. ### Responses #### Success Response (201) - **board** (board) - A newly created board object. ### Response Example ```json { "projectId": 1, "boardId": 1, "milestoneId": 1, "name": "string", "description": "string", "generalInfo": "string", "startDate": "2026-01-01T00:00:00Z", "dueDate": "2026-01-01T00:00:00Z", "closingDate": "2026-01-01T00:00:00Z", "creationDate": "2026-01-01T00:00:00Z", "creator": { "id": 1, "username": "string", "email": "string", "name": "string", "creationDate": "2026-01-01T00:00:00Z" }, "isDefault": true } ``` ``` -------------------------------- ### Projects / Design Element Types - Get Source: https://hacknplan.com/docs/developers/api-reference Gets a design element type. ```APIDOC ## GET /v0/projects/{projectId}/designelementtypes/{designElementTypeId} ### Description Gets a design element type. ### Method GET ### Endpoint /v0/projects/{projectId}/designelementtypes/{designElementTypeId} ### Parameters #### Path Parameters - **projectId** (integer) - Required - The unique identifier of the project. - **designElementTypeId** (integer) - Required - The unique identifier of the design element type. ### Responses #### Success Response (200) - **projectDesignElementType** (object) - A desing element type object. ### Response Example ```json { "projectId": 1, "designElementTypeId": 1, "name": "string", "creationDate": "2026-01-01T00:00:00Z" } ``` ``` -------------------------------- ### Get Project Storage Information Source: https://hacknplan.com/docs/developers/api-reference Fetches storage details for a given project, including total space, used space, and file limits. ```json { "projectId": 1, "totalSpace": 1, "totalUsedSpace": 1, "projectUsedSpace": 1, "fileLimit": 1 } ``` -------------------------------- ### Create New Board Source: https://hacknplan.com/docs/developers/api-reference Creates a new board within a project. Requires board creation values. ```json { "projectId": 1, "boardId": 1, "milestoneId": 1, "name": "string", "description": "string", "generalInfo": "string", "startDate": "2026-01-01T00:00:00Z", "dueDate": "2026-01-01T00:00:00Z", "closingDate": "2026-01-01T00:00:00Z", "creationDate": "2026-01-01T00:00:00Z", "creator": { "id": 1, "username": "string", "email": "string", "name": "string", "creationDate": "2026-01-01T00:00:00Z" }, "isDefault": true } ``` -------------------------------- ### Get Webhook Events (GET) Source: https://hacknplan.com/docs/developers/api-reference Retrieves a list of all available webhook event types that can be subscribed to. This is useful for understanding what events can trigger a webhook. ```json [ "string" ] ``` -------------------------------- ### Create Webhook Source: https://hacknplan.com/docs/developers/api-reference Creates a new webhook for a specified project. Requires administrative privileges. ```APIDOC ## POST /v0/projects/{projectId}/webhooks ### Description [ADMIN] Creates a webhook. ### Method POST ### Endpoint /v0/projects/{projectId}/webhooks ### Parameters #### Path Parameters - **projectId** (integer) - Required - The unique identifier of the project. #### Request Body - **createWebhookValues** (createWebhookValues) - Required - The webhook creation values object. ### Responses #### Success Response (201) - **webhook** (webhook) - A new webhook object. #### Response Example ```json { "projectId": 1, "webhookId": 1, "url": "string", "events": [ "string" ], "isEnabled": true, "headers": [ "string" ], "creator": { "projectId": 1, "user": { "id": 1, "username": "string", "email": "string", "name": "string", "creationDate": "2026-01-01T00:00:00Z" }, "isAdmin": true, "isGuest": true, "isActive": true, "creationDate": "2026-01-01T00:00:00Z", "permissions": { "categoryPermissions": [ { "categoryId": null, "canRead": null, "canWrite": null, "canUpdate": null } ], "gameDesignModelPermissions": { "id": 1, "name": "string", "canRead": true, "canWrite": true } }, "role": { "projectId": 1, "roleId": 1, "name": "string", "isAdmin": true, "creationDate": "2026-01-01T00:00:00Z", "permissions": {} } }, "creationDate": "2026-01-01T00:00:00Z" } ``` #### Error Responses - **400** - Invalid values object. - **403** - The authorized user does not have permission to execute the action. - **404** - Project not found. ``` -------------------------------- ### Projects / Events - List Source: https://hacknplan.com/docs/developers/api-reference Gets a list of project events. ```APIDOC ## GET /v0/projects/{projectId}/events ### Description Gets a list of project events. ### Method GET ### Endpoint /v0/projects/{projectId}/events ### Parameters #### Path Parameters - **projectId** (integer) - Required - The unique identifier of the project. #### Query Parameters - **from** (string) - Required - The minimum date of the events. - **to** (string) - Required - The maximum date of the events. ### Responses #### Success Response (200) - **projectEvent** (array) - A list of project event objects. ### Response Example ```json [ { "projectId": 1, "name": "string", "url": "string", "category": { "projectId": 1, "categoryId": 1, "name": "string", "icon": "string", "color": "string", "creationDate": "2026-01-01T00:00:00Z" }, "startDate": "2026-01-01T00:00:00Z", "endDate": "2026-01-01T00:00:00Z", "backgroundColor": "string", "textColor": "string", "isAllDayEvent": true } ] ``` ``` -------------------------------- ### Listing Resources Source: https://hacknplan.com/docs/developers/calling-the-api Retrieve a list of all projects available to the authenticated user. Requires Authorization and Content-Type headers. ```APIDOC ## Listing Resources ### Description To list projects available to the authenticated user. ### Method GET ### Endpoint https://api.hacknplan.com/v0/projects ### Headers - Authorization - Content-Type: application/json ``` -------------------------------- ### Get Project Metrics Source: https://hacknplan.com/docs/developers/api-reference Retrieves the metrics associated with a specific project. ```APIDOC ## GET /v0/projects/{projectId}/metrics ### Description Gets the project metrics. ### Method GET ### Endpoint /v0/projects/{projectId}/metrics ### Parameters #### Path Parameters - **projectId** (integer) - Required - The unique identifier of the project. ### Response #### Success Response (200) - **metrics** (object) - A project metrics object. ### Response Example ```json { "categories": [ { "category": { "projectId": 1, "categoryId": 1, "name": "string", "icon": "string", "color": "string", "creationDate": "2026-01-01T00:00:00Z" }, "totalWorkItems": 1, "totalWorkItemsVariation": 1, "openWorkItems": 1, "closedWorkItems": 1, "estimatedCost": 1 } ] } ``` ``` -------------------------------- ### Get Project by ID Source: https://hacknplan.com/docs/developers/api-reference Retrieves a specific project by its unique identifier. ```APIDOC ## GET /v0/projects/{projectId} ### Description Gets a project. ### Method GET ### Endpoint /v0/projects/{projectId} ### Parameters #### Path Parameters - **projectId** (integer (int32)) - Required - The unique identifier of the project. ### Responses #### Success Response (200) - **project** (project) - A project object. #### Error Response (401) Unauthorized #### Error Response (403) Forbidden #### Error Response (404) NotFound ``` -------------------------------- ### Create Resource (Task) Source: https://hacknplan.com/docs/developers/calling-the-api Use POST to create new resources, such as a task within a project. The request body must be JSON and include relevant fields for the new resource. A successful creation returns a 201 Created status. ```http POST https://api.hacknplan.com/v0/projects/100/workitems ``` ```json { "title": "string", "description": "string", "parentId": 0, "isStory": false, "categoryId": 0, "estimatedCost": 0, "importanceLevelId": 0, "boardId": 0, "designElementId": 0, "startDate": "2019-11-25T16:28:20.172Z", "dueDate": "2019-11-25T16:28:20.172Z", "assignedUserIds": [0], "tagIds": [0], "subTasks": ["string"], "dependencyIds": [0] } ``` -------------------------------- ### Create Webhook Source: https://hacknplan.com/docs/developers/api-reference Creates a new webhook for a project. Requires admin privileges. The response includes the newly created webhook object. ```json { "projectId": 1, "webhookId": 1, "url": "string", "events": [ "string" ], "isEnabled": true, "headers": [ "string" ], "creator": { "projectId": 1, "user": { "id": 1, "username": "string", "email": "string", "name": "string", "creationDate": "2026-01-01T00:00:00Z" }, "isAdmin": true, "isGuest": true, "isActive": true, "creationDate": "2026-01-01T00:00:00Z", "permissions": { "categoryPermissions": [ { "categoryId": null, "canRead": null, "canWrite": null, "canUpdate": null } ], "gameDesignModelPermissions": { "id": 1, "name": "string", "canRead": true, "canWrite": true } }, "role": { "projectId": 1, "roleId": 1, "name": "string", "isAdmin": true, "creationDate": "2026-01-01T00:00:00Z", "permissions": {} } }, "creationDate": "2026-01-01T00:00:00Z" } ``` -------------------------------- ### Get Workspace User by ID Source: https://hacknplan.com/docs/developers/api-reference Retrieves a specific workspace user by their ID. ```APIDOC ## GET /v0/workspaces/{workspaceId}/users/{userId} ### Description Gets a workspace user. ### Method GET ### Endpoint /v0/workspaces/{workspaceId}/users/{userId} ### Parameters #### Path Parameters - **workspaceId** (integer) - Required - The unique identifier of the workspace. - **userId** (integer) - Required - The unique identifier of the user. ### Responses #### Success Response (200) - **workspaceUser** (object) - A workspace user object. ### Response Example ```json { "workspaceId": 1, "user": { "id": 1, "username": "string", "email": "string", "name": "string", "creationDate": "2026-01-01T00:00:00Z" }, "teamId": 1, "isAdmin": true, "isGuest": true, "isActive": true, "creationDate": "2026-01-01T00:00:00Z" } ``` ``` -------------------------------- ### Create Work Item - Example JSON Source: https://hacknplan.com/docs/developers/api-reference This JSON object represents the structure for creating a new work item. It includes fields for project ID, title, description, category, stage, and other relevant details. ```json { "projectId": 1, "workItemId": 1, "parentStoryId": 1, "isStory": true, "title": "string", "description": "string", "category": { "projectId": 1, "categoryId": 1, "name": "string", "icon": "string", "color": "string", "creationDate": "2026-01-01T00:00:00Z" }, "stage": { "projectId": 1, "stageId": 1, "name": "string", "icon": "string", "color": "string", "status": "string", "isUnblocker": true, "creationDate": "2026-01-01T00:00:00Z" }, "estimatedCost": 1, "loggedCost": 1, "storyTasksEstimatedCost": 1, "storyTasksLoggedCost": 1, "boardIndex": 1, "designElementIndex": 1, "designElement": { "index": 1, "projectId": 1, "designElementId": 1, "type": { "projectId": 1, "designElementTypeId": 1, "name": "string", "creationDate": "2026-01-01T00:00:00Z" }, "name": "string", "prefix": "string", "parent": {}, "children": [ {} ], "totalWorkItemCount": 1, "closedWorkItemCount": 1, "description": "string", "startDate": "2026-01-01T00:00:00Z", "dueDate": "2026-01-01T00:00:00Z", "creationDate": "2026-01-01T00:00:00Z", "updateDate": "2026-01-01T00:00:00Z", "user": { "projectId": 1, "user": { "id": 1, "username": "string", "email": "string", "name": "string", "creationDate": "2026-01-01T00:00:00Z" }, "isAdmin": true, "isGuest": true, "isActive": true, "creationDate": "2026-01-01T00:00:00Z", "permissions": { "categoryPermissions": [ {} ], "gameDesignModelPermissions": null }, "role": { "projectId": 1, "roleId": 1, "name": "string", "isAdmin": true, "creationDate": "2026-01-01T00:00:00Z", "permissions": {} } } }, "startDate": "2026-01-01T00:00:00Z", "dueDate": "2026-01-01T00:00:00Z", "updateDate": "2026-01-01T00:00:00Z", "closingDate": "2026-01-01T00:00:00Z", "creationDate": "2026-01-01T00:00:00Z", "user": {}, "board": { "projectId": 1, "boardId": 1, "milestoneId": 1, "name": "string", "description": "string", "generalInfo": "string", "startDate": "2026-01-01T00:00:00Z", "dueDate": "2026-01-01T00:00:00Z", "closingDate": "2026-01-01T00:00:00Z", "creationDate": "2026-01-01T00:00:00Z", "creator": {}, "isDefault": true }, "assignedUsers": [ {} ], "tags": [ { "projectId": 1, "tagId": 1, "name": "string", "icon": "string", "color": "string", "displayIconOnly": true, "creationDate": "2026-01-01T00:00:00Z" } ], "importanceLevel": { "projectId": 1, "importanceLevelId": 1, "name": "string", "icon": "string", "color": "string", "isDefault": true, "creationDate": "2026-01-01T00:00:00Z" }, "picture": { "projectId": 1, "workItemId": 1, "attachmentId": 1, "file": { "projectId": 1, "fileId": 1, "name": "string", "thumbName": "string", "url": "string", "thumbUrl": "string", "size": 1, "isImage": true, "user": {}, "creationDate": "2026-01-01T00:00:00Z" }, "user": {}, "isCardPicture": true, "creationDate": "2026-01-01T00:00:00Z" }, "hasDependencies": true, "isBlocked": true } ``` -------------------------------- ### Get Workspace Team by ID Source: https://hacknplan.com/docs/developers/api-reference Retrieves a specific workspace team by its ID. ```APIDOC ## GET /v0/workspaces/{workspaceId}/teams/{teamId} ### Description Get a workspace team by id. ### Method GET ### Endpoint /v0/workspaces/{workspaceId}/teams/{teamId} ### Parameters #### Path Parameters - **workspaceId** (integer) - Required - The unique identifier of the workspace. - **teamId** (integer) - Required - The unique identifier of the team within the workspace. ### Responses #### Success Response (200) - **workspaceTeam** (object) - A workspace team object. ### Response Example ```json { "workspaceId": 1, "teamId": 1, "name": "string", "users": [ { "workspaceId": 1, "user": { "id": 1, "username": "string", "email": "string", "name": "string", "creationDate": "2026-01-01T00:00:00Z" }, "teamId": 1, "isAdmin": true, "isGuest": true, "isActive": true, "creationDate": "2026-01-01T00:00:00Z" } ], "creator": {}, "creationDate": "2026-01-01T00:00:00Z" } ``` ``` -------------------------------- ### Listing Resources Source: https://hacknplan.com/docs/calling-the-api Retrieve a list of projects available to the authenticated user. Requires Authorization and Content-Type headers. ```APIDOC ## Listing Resources To list projects available to the authenticated user: GET `https://api.hacknplan.com/v0/projects` Include both `Authorization` and `Content-Type` headers. ``` -------------------------------- ### Get Workspace Teams Source: https://hacknplan.com/docs/developers/api-reference Retrieves a list of all teams within a specified workspace. ```APIDOC ## GET /v0/workspaces/{workspaceId}/teams ### Description Gets a list of the teams in the workspace. ### Method GET ### Endpoint /v0/workspaces/{workspaceId}/teams ### Parameters #### Path Parameters - **workspaceId** (integer) - Required - The unique identifier of the workspace. ### Responses #### Success Response (200) - **workspaceTeam** (array) - A list of workspace team objects. ### Response Example ```json [ { "workspaceId": 1, "teamId": 1, "name": "string", "users": [ { "workspaceId": 1, "user": { "id": 1, "username": "string", "email": "string", "name": "string", "creationDate": "2026-01-01T00:00:00Z" }, "teamId": 1, "isAdmin": true, "isGuest": true, "isActive": true, "creationDate": "2026-01-01T00:00:00Z" } ], "creator": {}, "creationDate": "2026-01-01T00:00:00Z" } ] ``` ``` -------------------------------- ### Get Webhook Events Source: https://hacknplan.com/docs/developers/api-reference Retrieves a list of all available webhook event types. ```APIDOC ## GET /v0/webhookevents ### Description Gets the list of webhook events. ### Method GET ### Endpoint /v0/webhookevents ### Responses #### Success Response (200) - **array** A list of webhook events. ### Response Example ```json [ "string" ] ``` ``` -------------------------------- ### Creating a Resource Source: https://hacknplan.com/docs/calling-the-api Create a new resource using the POST method. The request body must be in JSON format and include all necessary fields for the resource. ```APIDOC ## Creating a Resource Creating resources uses `POST`. Example: create a task in project `100`: `POST ``https://api.hacknplan.com/v0/projects/100/workitems` Request body example: ```json { "title": "string", "description": "string", "parentId": 0, "isStory": false, "categoryId": 0, "estimatedCost": 0, "importanceLevelId": 0, "boardId": 0, "designElementId": 0, "startDate": "2019-11-25T16:28:20.172Z", "dueDate": "2019-11-25T16:28:20.172Z", "assignedUserIds": [0], "tagIds": [0], "subTasks": ["string"], "dependencyIds": [0] } ``` On success, API returns `201 Created`. ``` -------------------------------- ### Get Authenticated User Information Source: https://hacknplan.com/docs/developers/api-reference Retrieves the details of the currently authenticated user. ```APIDOC ## GET /v0/users/me ### Description Returns the information of the authenticated user. ### Method GET ### Endpoint /v0/users/me ### Responses #### Success Response (200) user (object) - A existing user object. #### Response Example ```json { "id": 1, "username": "string", "email": "string", "name": "string", "creationDate": "2026-01-01T00:00:00Z" } ``` #### Error Response (401) Unauthorized #### Error Response (404) NotFound ``` -------------------------------- ### Creating a Resource Source: https://hacknplan.com/docs/developers/calling-the-api Create a new resource using the POST method. The request body must be in JSON format and include relevant fields for the resource being created. ```APIDOC ## Creating a Resource ### Description Create a new resource using the POST method. The request body must be in JSON format. ### Method POST ### Endpoint Example `https://api.hacknplan.com/v0/projects/{projectId}/workitems` ### Request Body Example ```json { "title": "string", "description": "string", "parentId": 0, "isStory": false, "categoryId": 0, "estimatedCost": 0, "importanceLevelId": 0, "boardId": 0, "designElementId": 0, "startDate": "2019-11-25T16:28:20.172Z", "dueDate": "2019-11-25T16:28:20.172Z", "assignedUserIds": [0], "tagIds": [0], "subTasks": ["string"], "dependencyIds": [0] } ``` ### Response #### Success Response (201 Created) ``` -------------------------------- ### Get Project Tags Source: https://hacknplan.com/docs/developers/api-reference Retrieves a list of all tags associated with a specific project. ```APIDOC ## GET /v0/projects/{projectId}/tags ### Description Gets a list of the project tags. ### Method GET ### Endpoint /v0/projects/{projectId}/tags ### Parameters #### Path Parameters - **projectId** (integer) - Required - The unique identifier of the project ### Responses #### Success Response (200) - **projectTag** (array) - A list of project tag objects. ### Response Example ```json [ { "projectId": 1, "tagId": 1, "name": "string", "icon": "string", "color": "string", "displayIconOnly": true, "creationDate": "2026-01-01T00:00:00Z" } ] ``` ``` -------------------------------- ### Add User to Project Source: https://hacknplan.com/docs/developers/api-reference Adds a new user to a project. An invitation email is sent upon successful addition. This is an administrative action. ```APIDOC ## POST /v0/projects/{projectId}/users ### Description [ADMIN] Adds a new user to the project. ### Method POST ### Endpoint /v0/projects/{projectId}/users ### Parameters #### Path Parameters - **projectId** (integer, int32) - Required - The unique identifier of the project. #### Request Body - **createProjectUserValues** (createProjectUserValues) - Required - The values object. ### Response #### Success Response (200) - **message** (string) - An invitation email has been sent. #### Success Response (201) - **projectUser** (projectUser) - A new project user object. ### Response Example (201) ```json { "projectId": 1, "user": { "id": 1, "username": "string", "email": "string", "name": "string", "creationDate": "2026-01-01T00:00:00Z" }, "isAdmin": true, "isGuest": true, "isActive": true, "creationDate": "2026-01-01T00:00:00Z", "permissions": { "categoryPermissions": [ { "categoryId": 1, "canRead": true, "canWrite": true, "canUpdate": true } ], "gameDesignModelPermissions": { "id": 1, "name": "string", "canRead": true, "canWrite": true } }, "role": { "projectId": 1, "roleId": 1, "name": "string", "isAdmin": true, "creationDate": "2026-01-01T00:00:00Z", "permissions": {} } } ``` ``` -------------------------------- ### Get Project Files Source: https://hacknplan.com/docs/developers/api-reference Retrieves a paginated list of all files within a specified project. Ensure valid offset and limit parameters are provided. ```json [ { "projectId": 1, "fileId": 1, "name": "string", "thumbName": "string", "url": "string", "thumbUrl": "string", "size": 1, "isImage": true, "user": { "id": 1, "username": "string", "email": "string", "name": "string", "creationDate": "2026-01-01T00:00:00Z" }, "creationDate": "2026-01-01T00:00:00Z" } ] ``` -------------------------------- ### Get Work Item Subtask Source: https://hacknplan.com/docs/developers/api-reference Retrieves a specific subtask of a work item by its ID. ```APIDOC ## GET /v0/projects/{projectId}/workitems/{workItemId}/subtasks/{subTaskId} ### Description Gets a work item subtask. ### Method GET ### Endpoint /v0/projects/{projectId}/workitems/{workItemId}/subtasks/{subTaskId} ### Parameters #### Path Parameters - **projectId** (integer (int32)) - Required - The unique identifier of the project. - **workItemId** (integer (int32)) - Required - The unique identifier of the work item. - **subTaskId** (integer (int32)) - Required - The unique identifier of the subtask. ### Responses #### Success Response (200) - **workItemComment** (workItemComment) - A work item comment object. ### Response Example ```json { "projectId": 1, "workItemId": 1, "commentId": 1, "text": "string", "user": { "id": 1, "username": "string", "email": "string", "name": "string", "creationDate": "2026-01-01T00:00:00Z" }, "workLog": { "projectId": 1, "workItemId": 1, "workLogId": 1, "user": {}, "value": 1, "comment": "string", "creationDate": "2026-01-01T00:00:00Z" }, "creationDate": "2026-01-01T00:00:00Z", "updateDate": "2026-01-01T00:00:00Z" } ``` ```