naftiko: 1.0.0-alpha2 info: label: Dynatrace Problems API v2 — Problems description: 'Dynatrace Problems API v2 — Problems. 8 operations. Lead operation: Dynatrace List Problems. Self-contained Naftiko capability covering one Dynatrace business surface.' tags: - Dynatrace - Problems created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: DYNATRACE_API_KEY: DYNATRACE_API_KEY capability: consumes: - type: http namespace: problems-api-v2-problems baseUri: https://{environmentId}.live.dynatrace.com/api/v2 description: Dynatrace Problems API v2 — Problems business capability. Self-contained, no shared references. resources: - name: problems path: /problems operations: - name: listproblems method: GET description: Dynatrace List Problems outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: nextPageKey in: query type: string description: The cursor for the next page of results, obtained from the nextPageKey field of a previous response. When this parameter is set, all other query parameters exce - name: pageSize in: query type: integer description: The number of problems to return per page. Default is 50, maximum is 500. - name: problemSelector in: query type: string description: Defines the scope of the query using the problem selector syntax. Allows filtering by status, severity, management zone, and other problem properties. For examp - name: entitySelector in: query type: string description: Filters results to problems affecting entities matching this selector. Use the entity selector syntax, e.g., type(SERVICE), tag(production). Problems are return - name: from in: query type: string description: The start of the queried time range. Use a relative expression (now-1h), ISO 8601 timestamp, or Unix timestamp in milliseconds. Default is now-2h. - name: to in: query type: string description: The end of the queried time range. Use a relative expression (now), ISO 8601 timestamp, or Unix timestamp in milliseconds. Default is now. - name: sort in: query type: string description: 'Defines the sort order of the results. Use field name prefixed with + for ascending or - for descending. For example, -startTime sorts by start time descending ' - name: fields in: query type: string description: Defines additional fields to include in the response beyond the default set. Use a comma-separated list. For example, +evidenceDetails,+impactAnalysis to includ - name: problems-problemId path: /problems/{problemId} operations: - name: getproblem method: GET description: Dynatrace Get Problem Details outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fields in: query type: string description: Defines additional fields to include in the response. Use a comma-separated list prefixed with +, e.g., +evidenceDetails. - name: problems-problemId-close path: /problems/{problemId}/close operations: - name: closeproblem method: POST description: Dynatrace Close Problem outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: problems-problemId-comments path: /problems/{problemId}/comments operations: - name: listproblemcomments method: GET description: Dynatrace List Comments on a Problem outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: nextPageKey in: query type: string description: Cursor for the next page of results. - name: pageSize in: query type: integer description: The number of comments to return per page. Default is 50. - name: createproblemcomment method: POST description: Dynatrace Add Comment to Problem outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: problems-problemId-comments-commentId path: /problems/{problemId}/comments/{commentId} operations: - name: getproblemcomment method: GET description: Dynatrace Get Comment outputRawFormat: json outputParameters: - name: result type: object value: $. - name: updateproblemcomment method: PUT description: Dynatrace Update Comment outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: deleteproblemcomment method: DELETE description: Dynatrace Delete Comment outputRawFormat: json outputParameters: - name: result type: object value: $. authentication: type: apikey key: Authorization value: '{{env.DYNATRACE_API_KEY}}' placement: header exposes: - type: rest namespace: problems-api-v2-problems-rest port: 8080 description: REST adapter for Dynatrace Problems API v2 — Problems. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/problems name: problems description: REST surface for problems. operations: - method: GET name: listproblems description: Dynatrace List Problems call: problems-api-v2-problems.listproblems with: nextPageKey: rest.nextPageKey pageSize: rest.pageSize problemSelector: rest.problemSelector entitySelector: rest.entitySelector from: rest.from to: rest.to sort: rest.sort fields: rest.fields outputParameters: - type: object mapping: $. - path: /v1/problems/{problemid} name: problems-problemid description: REST surface for problems-problemId. operations: - method: GET name: getproblem description: Dynatrace Get Problem Details call: problems-api-v2-problems.getproblem with: fields: rest.fields outputParameters: - type: object mapping: $. - path: /v1/problems/{problemid}/close name: problems-problemid-close description: REST surface for problems-problemId-close. operations: - method: POST name: closeproblem description: Dynatrace Close Problem call: problems-api-v2-problems.closeproblem with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/problems/{problemid}/comments name: problems-problemid-comments description: REST surface for problems-problemId-comments. operations: - method: GET name: listproblemcomments description: Dynatrace List Comments on a Problem call: problems-api-v2-problems.listproblemcomments with: nextPageKey: rest.nextPageKey pageSize: rest.pageSize outputParameters: - type: object mapping: $. - method: POST name: createproblemcomment description: Dynatrace Add Comment to Problem call: problems-api-v2-problems.createproblemcomment with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/problems/{problemid}/comments/{commentid} name: problems-problemid-comments-commentid description: REST surface for problems-problemId-comments-commentId. operations: - method: GET name: getproblemcomment description: Dynatrace Get Comment call: problems-api-v2-problems.getproblemcomment outputParameters: - type: object mapping: $. - method: PUT name: updateproblemcomment description: Dynatrace Update Comment call: problems-api-v2-problems.updateproblemcomment with: body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleteproblemcomment description: Dynatrace Delete Comment call: problems-api-v2-problems.deleteproblemcomment outputParameters: - type: object mapping: $. - type: mcp namespace: problems-api-v2-problems-mcp port: 9090 transport: http description: MCP adapter for Dynatrace Problems API v2 — Problems. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: dynatrace-list-problems description: Dynatrace List Problems hints: readOnly: true destructive: false idempotent: true call: problems-api-v2-problems.listproblems with: nextPageKey: tools.nextPageKey pageSize: tools.pageSize problemSelector: tools.problemSelector entitySelector: tools.entitySelector from: tools.from to: tools.to sort: tools.sort fields: tools.fields outputParameters: - type: object mapping: $. - name: dynatrace-get-problem-details description: Dynatrace Get Problem Details hints: readOnly: true destructive: false idempotent: true call: problems-api-v2-problems.getproblem with: fields: tools.fields outputParameters: - type: object mapping: $. - name: dynatrace-close-problem description: Dynatrace Close Problem hints: readOnly: false destructive: false idempotent: false call: problems-api-v2-problems.closeproblem with: body: tools.body outputParameters: - type: object mapping: $. - name: dynatrace-list-comments-problem description: Dynatrace List Comments on a Problem hints: readOnly: true destructive: false idempotent: true call: problems-api-v2-problems.listproblemcomments with: nextPageKey: tools.nextPageKey pageSize: tools.pageSize outputParameters: - type: object mapping: $. - name: dynatrace-add-comment-problem description: Dynatrace Add Comment to Problem hints: readOnly: false destructive: false idempotent: false call: problems-api-v2-problems.createproblemcomment with: body: tools.body outputParameters: - type: object mapping: $. - name: dynatrace-get-comment description: Dynatrace Get Comment hints: readOnly: true destructive: false idempotent: true call: problems-api-v2-problems.getproblemcomment outputParameters: - type: object mapping: $. - name: dynatrace-update-comment description: Dynatrace Update Comment hints: readOnly: false destructive: false idempotent: true call: problems-api-v2-problems.updateproblemcomment with: body: tools.body outputParameters: - type: object mapping: $. - name: dynatrace-delete-comment description: Dynatrace Delete Comment hints: readOnly: false destructive: true idempotent: true call: problems-api-v2-problems.deleteproblemcomment outputParameters: - type: object mapping: $.