Miro · Capability
Miro Developer Platform — Legal holds
Miro Developer Platform — Legal holds. 12 operations. Lead operation: Get all cases. Self-contained Naftiko capability covering one Miro business surface.
What You Can Do
GET
Getallcases
— Get all cases
/v1/v2/orgs/{org-id}/cases
POST
Createcase
— Create case
/v1/v2/orgs/{org-id}/cases
DELETE
Deletecase
— Close case
/v1/v2/orgs/{org-id}/cases/{case-id}
GET
Getcase
— Get case
/v1/v2/orgs/{org-id}/cases/{case-id}
PUT
Editcase
— Edit case
/v1/v2/orgs/{org-id}/cases/{case-id}
GET
Getlegalholdexportjobs
— Get board export jobs of a case
/v1/v2/orgs/{org-id}/cases/{case-id}/export-jobs
GET
Getalllegalholds
— Get all legal holds within a case
/v1/v2/orgs/{org-id}/cases/{case-id}/legal-holds
POST
Createlegalhold
— Create legal hold
/v1/v2/orgs/{org-id}/cases/{case-id}/legal-holds
DELETE
Deletelegalhold
— Close legal hold
/v1/v2/orgs/{org-id}/cases/{case-id}/legal-holds/{legal-hold-id}
GET
Getlegalhold
— Get legal hold information
/v1/v2/orgs/{org-id}/cases/{case-id}/legal-holds/{legal-hold-id}
PUT
Editlegalhold
— Edit legal hold
/v1/v2/orgs/{org-id}/cases/{case-id}/legal-holds/{legal-hold-id}
GET
Getlegalholdcontentitems
— Get content items under legal hold
/v1/v2/orgs/{org-id}/cases/{case-id}/legal-holds/{legal-hold-id}/content-items
MCP Tools
get-all-cases
Get all cases
read-only
idempotent
create-case
Create case
close-case
Close case
idempotent
get-case
Get case
read-only
idempotent
edit-case
Edit case
idempotent
get-board-export-jobs-case
Get board export jobs of a case
read-only
idempotent
get-all-legal-holds-within
Get all legal holds within a case
read-only
idempotent
create-legal-hold
Create legal hold
close-legal-hold
Close legal hold
idempotent
get-legal-hold-information
Get legal hold information
read-only
idempotent
edit-legal-hold
Edit legal hold
idempotent
get-content-items-under-legal
Get content items under legal hold
read-only
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: Miro Developer Platform — Legal holds
description: 'Miro Developer Platform — Legal holds. 12 operations. Lead operation: Get all cases. Self-contained Naftiko
capability covering one Miro business surface.'
tags:
- Miro
- Legal holds
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
MIRO_API_KEY: MIRO_API_KEY
capability:
consumes:
- type: http
namespace: miro-legal-holds
baseUri: https://api.miro.com
description: Miro Developer Platform — Legal holds business capability. Self-contained, no shared references.
resources:
- name: v2-orgs-org_id-cases
path: /v2/orgs/{org_id}/cases
operations:
- name: getallcases
method: GET
description: Get all cases
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: org_id
in: path
type: string
description: The ID of the organization for which you want to retrieve the list of cases.
required: true
- name: createcase
method: POST
description: Create case
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: org_id
in: path
type: string
description: The ID of the organization in which you want to create a new case.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: v2-orgs-org_id-cases-case_id
path: /v2/orgs/{org_id}/cases/{case_id}
operations:
- name: deletecase
method: DELETE
description: Close case
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: org_id
in: path
type: string
description: The ID of the organization in which you want to close a case.
required: true
- name: case_id
in: path
type: string
description: The ID of the case you want to close.
required: true
- name: getcase
method: GET
description: Get case
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: org_id
in: path
type: string
description: The ID of the organization for which you want to retrieve the case information.
required: true
- name: case_id
in: path
type: string
description: The ID of the case you want to retrieve.
required: true
- name: editcase
method: PUT
description: Edit case
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: org_id
in: path
type: string
description: The ID of the organization for which you want to edit the case information.
required: true
- name: case_id
in: path
type: string
description: The ID of the case you want to edit.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: v2-orgs-org_id-cases-case_id-export-jobs
path: /v2/orgs/{org_id}/cases/{case_id}/export-jobs
operations:
- name: getlegalholdexportjobs
method: GET
description: Get board export jobs of a case
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: org_id
in: path
type: string
description: The ID of the organization for which you want to retrieve the list of export jobs within a case.
required: true
- name: case_id
in: path
type: string
description: The ID of the case for which you want to retrieve the list of export jobs.
required: true
- name: v2-orgs-org_id-cases-case_id-legal-holds
path: /v2/orgs/{org_id}/cases/{case_id}/legal-holds
operations:
- name: getalllegalholds
method: GET
description: Get all legal holds within a case
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: org_id
in: path
type: string
description: The ID of the organization for which you want to retrieve the list of legal holds within a case.
required: true
- name: case_id
in: path
type: string
description: The ID of the case for which you want to retrieve the list of legal holds.
required: true
- name: createlegalhold
method: POST
description: Create legal hold
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: org_id
in: path
type: string
description: The ID of the organization in which you want to create a new legal hold.
required: true
- name: case_id
in: path
type: string
description: The ID of the case in which you want to create a new legal hold.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: v2-orgs-org_id-cases-case_id-legal-holds-legal_hold_id
path: /v2/orgs/{org_id}/cases/{case_id}/legal-holds/{legal_hold_id}
operations:
- name: deletelegalhold
method: DELETE
description: Close legal hold
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: org_id
in: path
type: string
description: The ID of the organization in which you want to close a legal hold.
required: true
- name: case_id
in: path
type: string
description: The ID of the case in which you want to close a legal hold.
required: true
- name: legal_hold_id
in: path
type: string
description: The ID of the legal hold you want to close.
required: true
- name: getlegalhold
method: GET
description: Get legal hold information
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: org_id
in: path
type: string
description: The ID of the organization for which you want to retrieve the legal hold information.
required: true
- name: case_id
in: path
type: string
description: The ID of the case for which you want to retrieve the legal hold information.
required: true
- name: legal_hold_id
in: path
type: string
description: The ID of the legal hold you want to retrieve.
required: true
- name: editlegalhold
method: PUT
description: Edit legal hold
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: org_id
in: path
type: string
description: The ID of the organization for which you want to edit the legal hold information.
required: true
- name: case_id
in: path
type: string
description: The ID of the case for which you want to edit the legal hold information.
required: true
- name: legal_hold_id
in: path
type: string
description: The ID of the legal hold you want to edit.
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: v2-orgs-org_id-cases-case_id-legal-holds-legal_hold_id-content-items
path: /v2/orgs/{org_id}/cases/{case_id}/legal-holds/{legal_hold_id}/content-items
operations:
- name: getlegalholdcontentitems
method: GET
description: Get content items under legal hold
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: org_id
in: path
type: string
description: The ID of the organization for which you want to retrieve the list of content items under hold.
required: true
- name: case_id
in: path
type: string
description: The ID of the case for which you want to retrieve the list of content items under hold.
required: true
- name: legal_hold_id
in: path
type: string
description: The ID of the legal hold for which you want to retrieve the list of content items under hold.
required: true
authentication:
type: bearer
token: '{{env.MIRO_API_KEY}}'
exposes:
- type: rest
namespace: miro-legal-holds-rest
port: 8080
description: REST adapter for Miro Developer Platform — Legal holds. One Spectral-compliant resource per consumed operation,
prefixed with /v1.
resources:
- path: /v1/v2/orgs/{org-id}/cases
name: v2-orgs-org-id-cases
description: REST surface for v2-orgs-org_id-cases.
operations:
- method: GET
name: getallcases
description: Get all cases
call: miro-legal-holds.getallcases
with:
org_id: rest.org_id
outputParameters:
- type: object
mapping: $.
- method: POST
name: createcase
description: Create case
call: miro-legal-holds.createcase
with:
org_id: rest.org_id
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v2/orgs/{org-id}/cases/{case-id}
name: v2-orgs-org-id-cases-case-id
description: REST surface for v2-orgs-org_id-cases-case_id.
operations:
- method: DELETE
name: deletecase
description: Close case
call: miro-legal-holds.deletecase
with:
org_id: rest.org_id
case_id: rest.case_id
outputParameters:
- type: object
mapping: $.
- method: GET
name: getcase
description: Get case
call: miro-legal-holds.getcase
with:
org_id: rest.org_id
case_id: rest.case_id
outputParameters:
- type: object
mapping: $.
- method: PUT
name: editcase
description: Edit case
call: miro-legal-holds.editcase
with:
org_id: rest.org_id
case_id: rest.case_id
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v2/orgs/{org-id}/cases/{case-id}/export-jobs
name: v2-orgs-org-id-cases-case-id-export-jobs
description: REST surface for v2-orgs-org_id-cases-case_id-export-jobs.
operations:
- method: GET
name: getlegalholdexportjobs
description: Get board export jobs of a case
call: miro-legal-holds.getlegalholdexportjobs
with:
org_id: rest.org_id
case_id: rest.case_id
outputParameters:
- type: object
mapping: $.
- path: /v1/v2/orgs/{org-id}/cases/{case-id}/legal-holds
name: v2-orgs-org-id-cases-case-id-legal-holds
description: REST surface for v2-orgs-org_id-cases-case_id-legal-holds.
operations:
- method: GET
name: getalllegalholds
description: Get all legal holds within a case
call: miro-legal-holds.getalllegalholds
with:
org_id: rest.org_id
case_id: rest.case_id
outputParameters:
- type: object
mapping: $.
- method: POST
name: createlegalhold
description: Create legal hold
call: miro-legal-holds.createlegalhold
with:
org_id: rest.org_id
case_id: rest.case_id
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v2/orgs/{org-id}/cases/{case-id}/legal-holds/{legal-hold-id}
name: v2-orgs-org-id-cases-case-id-legal-holds-legal-hold-id
description: REST surface for v2-orgs-org_id-cases-case_id-legal-holds-legal_hold_id.
operations:
- method: DELETE
name: deletelegalhold
description: Close legal hold
call: miro-legal-holds.deletelegalhold
with:
org_id: rest.org_id
case_id: rest.case_id
legal_hold_id: rest.legal_hold_id
outputParameters:
- type: object
mapping: $.
- method: GET
name: getlegalhold
description: Get legal hold information
call: miro-legal-holds.getlegalhold
with:
org_id: rest.org_id
case_id: rest.case_id
legal_hold_id: rest.legal_hold_id
outputParameters:
- type: object
mapping: $.
- method: PUT
name: editlegalhold
description: Edit legal hold
call: miro-legal-holds.editlegalhold
with:
org_id: rest.org_id
case_id: rest.case_id
legal_hold_id: rest.legal_hold_id
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v2/orgs/{org-id}/cases/{case-id}/legal-holds/{legal-hold-id}/content-items
name: v2-orgs-org-id-cases-case-id-legal-holds-legal-hold-id-content-items
description: REST surface for v2-orgs-org_id-cases-case_id-legal-holds-legal_hold_id-content-items.
operations:
- method: GET
name: getlegalholdcontentitems
description: Get content items under legal hold
call: miro-legal-holds.getlegalholdcontentitems
with:
org_id: rest.org_id
case_id: rest.case_id
legal_hold_id: rest.legal_hold_id
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: miro-legal-holds-mcp
port: 9090
transport: http
description: MCP adapter for Miro Developer Platform — Legal holds. One tool per consumed operation, routed inline through
this capability's consumes block.
tools:
- name: get-all-cases
description: Get all cases
hints:
readOnly: true
destructive: false
idempotent: true
call: miro-legal-holds.getallcases
with:
org_id: tools.org_id
outputParameters:
- type: object
mapping: $.
- name: create-case
description: Create case
hints:
readOnly: false
destructive: false
idempotent: false
call: miro-legal-holds.createcase
with:
org_id: tools.org_id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: close-case
description: Close case
hints:
readOnly: false
destructive: true
idempotent: true
call: miro-legal-holds.deletecase
with:
org_id: tools.org_id
case_id: tools.case_id
outputParameters:
- type: object
mapping: $.
- name: get-case
description: Get case
hints:
readOnly: true
destructive: false
idempotent: true
call: miro-legal-holds.getcase
with:
org_id: tools.org_id
case_id: tools.case_id
outputParameters:
- type: object
mapping: $.
- name: edit-case
description: Edit case
hints:
readOnly: false
destructive: false
idempotent: true
call: miro-legal-holds.editcase
with:
org_id: tools.org_id
case_id: tools.case_id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: get-board-export-jobs-case
description: Get board export jobs of a case
hints:
readOnly: true
destructive: false
idempotent: true
call: miro-legal-holds.getlegalholdexportjobs
with:
org_id: tools.org_id
case_id: tools.case_id
outputParameters:
- type: object
mapping: $.
- name: get-all-legal-holds-within
description: Get all legal holds within a case
hints:
readOnly: true
destructive: false
idempotent: true
call: miro-legal-holds.getalllegalholds
with:
org_id: tools.org_id
case_id: tools.case_id
outputParameters:
- type: object
mapping: $.
- name: create-legal-hold
description: Create legal hold
hints:
readOnly: false
destructive: false
idempotent: false
call: miro-legal-holds.createlegalhold
with:
org_id: tools.org_id
case_id: tools.case_id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: close-legal-hold
description: Close legal hold
hints:
readOnly: false
destructive: true
idempotent: true
call: miro-legal-holds.deletelegalhold
with:
org_id: tools.org_id
case_id: tools.case_id
legal_hold_id: tools.legal_hold_id
outputParameters:
- type: object
mapping: $.
- name: get-legal-hold-information
description: Get legal hold information
hints:
readOnly: true
destructive: false
idempotent: true
call: miro-legal-holds.getlegalhold
with:
org_id: tools.org_id
case_id: tools.case_id
legal_hold_id: tools.legal_hold_id
outputParameters:
- type: object
mapping: $.
- name: edit-legal-hold
description: Edit legal hold
hints:
readOnly: false
destructive: false
idempotent: true
call: miro-legal-holds.editlegalhold
with:
org_id: tools.org_id
case_id: tools.case_id
legal_hold_id: tools.legal_hold_id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: get-content-items-under-legal
description: Get content items under legal hold
hints:
readOnly: true
destructive: false
idempotent: true
call: miro-legal-holds.getlegalholdcontentitems
with:
org_id: tools.org_id
case_id: tools.case_id
legal_hold_id: tools.legal_hold_id
outputParameters:
- type: object
mapping: $.