naftiko: 1.0.0-alpha2 info: label: Escape Public API — Issues description: 'Escape Public API — Issues. 9 operations. Lead operation: List issues. Self-contained Naftiko capability covering one Escape business surface.' tags: - Escape - Issues created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: ESCAPE_API_KEY: ESCAPE_API_KEY capability: consumes: - type: http namespace: escape-issues baseUri: https://public.escape.tech/v3 description: Escape Public API — Issues business capability. Self-contained, no shared references. resources: - name: issues path: /issues operations: - name: listissues method: GET description: List issues outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: cursor in: query type: string description: The cursor to start the pagination from. Returned by the previous page response. If not provided, the first page will be returned. - name: size in: query type: integer description: The number of items to return per page - name: sortType in: query type: string description: The type to sort by - name: sortDirection in: query type: string description: The direction to sort by - name: profileIds in: query type: string description: Filter by application IDs - name: assetIds in: query type: string description: Filter by asset IDs - name: domains in: query type: string description: Filter by domain - name: ids in: query type: string description: Filter by specific issue IDs - name: names in: query type: string description: Filter by issue names - name: scanIds in: query type: string description: Filter by scan IDs - name: tagIds in: query type: string description: Filter by tag IDs - name: search in: query type: string description: Search term to filter issues by name or description - name: jiraTicket in: query type: string description: Filter by issues with Jira tickets - name: risks in: query type: array description: Filter by risk types - name: assetClasses in: query type: array description: Filter by asset classes - name: scannerKinds in: query type: array description: Filter by scanner kinds - name: severities in: query type: array description: Filter by issue severities - name: status in: query type: array description: Filter by issue status - name: issues-bulk-update path: /issues/bulk-update operations: - name: bulkupdateissues method: POST description: Bulk update issues outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: issues-funnel path: /issues/funnel operations: - name: getissuefunnel method: GET description: Get issue funnel outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: projectIds in: query type: string description: Filter by project IDs - name: issues-trends path: /issues/trends operations: - name: getissuetrends method: GET description: Get issue severity trends outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: after in: query type: string description: Start date (ISO 8601) required: true - name: before in: query type: string description: End date (ISO 8601) required: true - name: interval in: query type: string description: Time bucket interval (e.g. "1 day", "1 week") - name: applicationIds in: query type: string description: Filter by application IDs - name: projectIds in: query type: string description: Filter by project IDs - name: issues-issueId path: /issues/{issueId} operations: - name: getissue method: GET description: Get an issue outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: issueId in: path type: string description: The issue ID required: true - name: updateissue method: PUT description: Update an issue outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: issueId in: path type: string description: The issue ID required: true - name: body in: body type: object description: Request body (JSON). required: false - name: issues-issueId-activities path: /issues/{issueId}/activities operations: - name: listissueactivities method: GET description: List activities of an issue outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: issueId in: path type: string description: The issue ID required: true - name: createissuecomment method: POST description: Comment on an issue outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: issueId in: path type: string description: The issue ID required: true - name: body in: body type: object description: Request body (JSON). required: false - name: issues-issueId-notify path: /issues/{issueId}/notify operations: - name: notifyissueowners method: POST description: Notify issue owners outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: issueId in: path type: string description: The issue ID required: true - name: body in: body type: object description: Request body (JSON). required: false authentication: type: apikey key: X-ESCAPE-API-KEY value: '{{env.ESCAPE_API_KEY}}' placement: header exposes: - type: rest namespace: escape-issues-rest port: 8080 description: REST adapter for Escape Public API — Issues. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/issues name: issues description: REST surface for issues. operations: - method: GET name: listissues description: List issues call: escape-issues.listissues with: cursor: rest.cursor size: rest.size sortType: rest.sortType sortDirection: rest.sortDirection profileIds: rest.profileIds assetIds: rest.assetIds domains: rest.domains ids: rest.ids names: rest.names scanIds: rest.scanIds tagIds: rest.tagIds search: rest.search jiraTicket: rest.jiraTicket risks: rest.risks assetClasses: rest.assetClasses scannerKinds: rest.scannerKinds severities: rest.severities status: rest.status outputParameters: - type: object mapping: $. - path: /v1/issues/bulk-update name: issues-bulk-update description: REST surface for issues-bulk-update. operations: - method: POST name: bulkupdateissues description: Bulk update issues call: escape-issues.bulkupdateissues with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/issues/funnel name: issues-funnel description: REST surface for issues-funnel. operations: - method: GET name: getissuefunnel description: Get issue funnel call: escape-issues.getissuefunnel with: projectIds: rest.projectIds outputParameters: - type: object mapping: $. - path: /v1/issues/trends name: issues-trends description: REST surface for issues-trends. operations: - method: GET name: getissuetrends description: Get issue severity trends call: escape-issues.getissuetrends with: after: rest.after before: rest.before interval: rest.interval applicationIds: rest.applicationIds projectIds: rest.projectIds outputParameters: - type: object mapping: $. - path: /v1/issues/{issueid} name: issues-issueid description: REST surface for issues-issueId. operations: - method: GET name: getissue description: Get an issue call: escape-issues.getissue with: issueId: rest.issueId outputParameters: - type: object mapping: $. - method: PUT name: updateissue description: Update an issue call: escape-issues.updateissue with: issueId: rest.issueId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/issues/{issueid}/activities name: issues-issueid-activities description: REST surface for issues-issueId-activities. operations: - method: GET name: listissueactivities description: List activities of an issue call: escape-issues.listissueactivities with: issueId: rest.issueId outputParameters: - type: object mapping: $. - method: POST name: createissuecomment description: Comment on an issue call: escape-issues.createissuecomment with: issueId: rest.issueId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/issues/{issueid}/notify name: issues-issueid-notify description: REST surface for issues-issueId-notify. operations: - method: POST name: notifyissueowners description: Notify issue owners call: escape-issues.notifyissueowners with: issueId: rest.issueId body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: escape-issues-mcp port: 9090 transport: http description: MCP adapter for Escape Public API — Issues. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-issues description: List issues hints: readOnly: true destructive: false idempotent: true call: escape-issues.listissues with: cursor: tools.cursor size: tools.size sortType: tools.sortType sortDirection: tools.sortDirection profileIds: tools.profileIds assetIds: tools.assetIds domains: tools.domains ids: tools.ids names: tools.names scanIds: tools.scanIds tagIds: tools.tagIds search: tools.search jiraTicket: tools.jiraTicket risks: tools.risks assetClasses: tools.assetClasses scannerKinds: tools.scannerKinds severities: tools.severities status: tools.status outputParameters: - type: object mapping: $. - name: bulk-update-issues description: Bulk update issues hints: readOnly: false destructive: false idempotent: false call: escape-issues.bulkupdateissues with: body: tools.body outputParameters: - type: object mapping: $. - name: get-issue-funnel description: Get issue funnel hints: readOnly: true destructive: false idempotent: true call: escape-issues.getissuefunnel with: projectIds: tools.projectIds outputParameters: - type: object mapping: $. - name: get-issue-severity-trends description: Get issue severity trends hints: readOnly: true destructive: false idempotent: true call: escape-issues.getissuetrends with: after: tools.after before: tools.before interval: tools.interval applicationIds: tools.applicationIds projectIds: tools.projectIds outputParameters: - type: object mapping: $. - name: get-issue description: Get an issue hints: readOnly: true destructive: false idempotent: true call: escape-issues.getissue with: issueId: tools.issueId outputParameters: - type: object mapping: $. - name: update-issue description: Update an issue hints: readOnly: false destructive: false idempotent: true call: escape-issues.updateissue with: issueId: tools.issueId body: tools.body outputParameters: - type: object mapping: $. - name: list-activities-issue description: List activities of an issue hints: readOnly: true destructive: false idempotent: true call: escape-issues.listissueactivities with: issueId: tools.issueId outputParameters: - type: object mapping: $. - name: comment-issue description: Comment on an issue hints: readOnly: false destructive: false idempotent: false call: escape-issues.createissuecomment with: issueId: tools.issueId body: tools.body outputParameters: - type: object mapping: $. - name: notify-issue-owners description: Notify issue owners hints: readOnly: false destructive: false idempotent: false call: escape-issues.notifyissueowners with: issueId: tools.issueId body: tools.body outputParameters: - type: object mapping: $.