HackMD Team Folders API
Operations related to folders within a team.
Operations related to folders within a team.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/hackmd:hackmd-team-folders-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: HackMD Open Team Folders API
version: 1.0.0
description: HackMD OpenAPI
license:
name: UNLICENSED
contact:
name: HackMD Team
email: support@hackmd.io
servers:
- url: /v1
description: API Server
tags:
- name: Team Folders
description: Operations related to folders within a team.
paths:
/teams/{teampath}/folders:
get:
operationId: ListTeamFolders
responses:
'200':
description: Ok
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ApiFolder'
type: array
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRequestErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'429':
description: Rate limit or workspace quota exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRateLimitErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiServerErrorResponse'
description: List all folders in a team workspace
tags:
- Team Folders
security:
- token: []
parameters:
- description: The path identifier for the team.
in: path
name: teampath
required: true
schema:
type: string
summary: List team folders
x-summary-source: derived
post:
operationId: CreateTeamFolder
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiFolder'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiBadRequestResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'404':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'422':
description: Validation failed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiValidationError'
'429':
description: Rate limit or workspace quota exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRateLimitErrorResponse'
'500':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiServerErrorResponse'
description: Create a new folder in a team workspace
tags:
- Team Folders
security:
- token: []
parameters:
- description: The path identifier for the team.
in: path
name: teampath
required: true
schema:
type: string
requestBody:
description: The folder properties.
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTeamFolderBody'
description: The folder properties.
summary: Create team folder
x-summary-source: derived
/teams/{teampath}/folders/folder-order:
get:
operationId: GetTeamFolderOrder
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/ApiFolderOrder'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRequestErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'429':
description: Rate limit or workspace quota exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRateLimitErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiServerErrorResponse'
description: 'Get your personal folder ordering for this team workspace (parent folder id or `root` → ordered child folder ids).
Uses the same folder UUIDs as (not internal Yjs clientIds).'
tags:
- Team Folders
security:
- token: []
parameters:
- in: path
name: teampath
required: true
schema:
type: string
summary: Get team folder order
x-summary-source: derived
put:
operationId: UpdateTeamFolderOrder
responses:
'204':
description: ''
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiBadRequestResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'422':
description: Validation failed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiValidationError'
'429':
description: Rate limit or workspace quota exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRateLimitErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiServerErrorResponse'
description: Replace your personal folder ordering for this team workspace.
tags:
- Team Folders
security:
- token: []
parameters:
- in: path
name: teampath
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateFolderOrderBody'
summary: Update team folder order
x-summary-source: derived
/teams/{teampath}/folders/{folderId}:
get:
operationId: GetTeamFolder
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiFolder'
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiBadRequestResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'404':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'429':
description: Rate limit or workspace quota exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRateLimitErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ApiServerErrorResponse'
description: Get a single folder in a team workspace
tags:
- Team Folders
security:
- token: []
parameters:
- description: The path identifier for the team.
in: path
name: teampath
required: true
schema:
type: string
- description: The ID of the folder to retrieve.
in: path
name: folderId
required: true
schema:
type: string
summary: Get team folder
x-summary-source: derived
patch:
operationId: UpdateTeamFolder
responses:
'202':
description: ''
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiBadRequestResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'404':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'422':
description: Validation failed
content:
application/json:
schema:
$ref: '#/components/schemas/ApiValidationError'
'429':
description: Rate limit or workspace quota exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRateLimitErrorResponse'
'500':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiServerErrorResponse'
description: Update a folder in a team workspace
tags:
- Team Folders
security:
- token: []
parameters:
- description: The path identifier for the team.
in: path
name: teampath
required: true
schema:
type: string
- description: The ID of the folder to update.
in: path
name: folderId
required: true
schema:
type: string
requestBody:
description: The properties to update.
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTeamFolderBody'
description: The properties to update.
summary: Update team folder
x-summary-source: derived
delete:
operationId: DeleteTeamFolder
responses:
'204':
description: No content
'400':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiBadRequestResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'404':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiErrorResponse'
'429':
description: Rate limit or workspace quota exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRateLimitErrorResponse'
'500':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ApiServerErrorResponse'
description: Delete a folder in a team workspace
tags:
- Team Folders
security:
- token: []
parameters:
- description: The path identifier for the team.
in: path
name: teampath
required: true
schema:
type: string
- description: The ID of the folder to delete.
in: path
name: folderId
required: true
schema:
type: string
summary: Delete team folder
x-summary-source: derived
components:
schemas:
FolderName:
type: string
example: Engineering
description: Folder name.
ApiFolderOrder:
description: 'Per-user display order of folders: maps each parent folder id (or `root`) to
an ordered list of child folder ids. Keys and values use the same UUIDs as
{@link ApiFolder.id} (not Yjs clientIds stored internally in preferences).'
properties: {}
type: object
additionalProperties:
items:
type: string
type: array
ApiErrorResponse:
properties:
error:
type: string
required:
- error
type: object
additionalProperties: false
Record_string.ApiValidationFieldError_:
properties: {}
additionalProperties:
$ref: '#/components/schemas/ApiValidationFieldError'
type: object
description: Construct a type with a set of properties K of type T
ApiRequestErrorResponse:
properties:
message:
type: string
required:
- message
type: object
additionalProperties: false
ApiValidationError:
properties:
message:
type: string
enum:
- Validation Failed
details:
$ref: '#/components/schemas/Record_string.ApiValidationFieldError_'
required:
- message
- details
type: object
additionalProperties: false
ApiRateLimitErrorResponse:
anyOf:
- $ref: '#/components/schemas/ApiErrorResponse'
- $ref: '#/components/schemas/ApiQuotaErrorResponse'
ApiQuotaErrorResponse:
properties:
error:
properties:
upgradeUrl:
type: string
helpUrl:
type: string
message:
type: string
code:
type: string
enum:
- quota_exceeded
required:
- upgradeUrl
- helpUrl
- message
- code
type: object
required:
- error
type: object
additionalProperties: false
FolderIconCodepoint:
type: string
example: 1F525
description: 'Folder icon as an emoji unified codepoint string.
Examples: `1F525` (🔥), `2764-FE0F` (❤️).'
CreateTeamFolderBody:
properties:
color:
$ref: '#/components/schemas/FolderColorHex'
icon:
$ref: '#/components/schemas/FolderIconCodepoint'
description:
type: string
parentFolderId:
type: string
name:
$ref: '#/components/schemas/FolderName'
type: object
UpdateFolderOrderBody:
properties:
order:
$ref: '#/components/schemas/ApiFolderOrder'
required:
- order
type: object
additionalProperties: false
ApiFolder:
properties:
id:
type: string
name:
$ref: '#/components/schemas/FolderName'
description:
type:
- string
- 'null'
icon:
allOf:
- $ref: '#/components/schemas/FolderIconCodepoint'
color:
allOf:
- $ref: '#/components/schemas/FolderColorHex'
parentFolderId:
type:
- string
- 'null'
createdAt:
type: number
format: double
updatedAt:
type: number
format: double
required:
- id
- name
- description
- icon
- color
- parentFolderId
- createdAt
- updatedAt
type: object
additionalProperties: false
ApiValidationFieldError:
properties:
message:
type: string
value: {}
required:
- message
type: object
additionalProperties: false
FolderColorHex:
type: string
example: '#FF6B6B'
description: 'Folder display color in hexadecimal format.
Accepts `#RGB`, `#RGBA`, `#RRGGBB`, or `#RRGGBBAA`.'
ApiBadRequestResponse:
anyOf:
- $ref: '#/components/schemas/ApiErrorResponse'
- $ref: '#/components/schemas/ApiRequestErrorResponse'
ApiServerErrorResponse:
anyOf:
- $ref: '#/components/schemas/ApiErrorResponse'
- $ref: '#/components/schemas/ApiRequestErrorResponse'
UpdateTeamFolderBody:
properties:
parentFolderId:
type:
- string
- 'null'
color:
allOf:
- $ref: '#/components/schemas/FolderColorHex'
icon:
allOf:
- $ref: '#/components/schemas/FolderIconCodepoint'
description:
type:
- string
- 'null'
name:
$ref: '#/components/schemas/FolderName'
type: object
securitySchemes:
token:
type: http
scheme: bearer
x-provenance:
method: harvested
publisher: HackMD
source: https://api.hackmd.io/v1/docs/swagger.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)