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: $.