naftiko: 1.0.0-alpha2 info: label: Permit.io API — Operation Approval (EAP) description: 'Permit.io API — Operation Approval (EAP). 7 operations. Lead operation: List Operation Approvals. Self-contained Naftiko capability covering one Permit Io business surface.' tags: - Permit Io - Operation Approval (EAP) created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: PERMIT_IO_API_KEY: PERMIT_IO_API_KEY capability: consumes: - type: http namespace: permit-io-operation-approval-eap baseUri: '' description: Permit.io API — Operation Approval (EAP) business capability. Self-contained, no shared references. resources: - name: v2-elements-proj_id-env_id-config-elements_config_id-operation_approval path: /v2/elements/{proj_id}/{env_id}/config/{elements_config_id}/operation_approval operations: - name: listoperationapprovals method: GET description: List Operation Approvals outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: proj_id in: path type: string description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' required: true - name: env_id in: path type: string description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' required: true - name: elements_config_id in: path type: string description: 'Either the unique id of the elements_config, or the URL-friendly key of the elements_config (i.e: the "slug").' required: true - name: status in: query type: string description: Optional status filter, will only return access requests with this status. - name: resource in: query type: string description: Optional resource filter, will only return access request granted in that resource. - name: resource_instance in: query type: string description: Optional resource instance filter, will only return access request granted in that resource instance. - name: page in: query type: integer description: Page number of the results to fetch, starting at 1. - name: per_page in: query type: integer description: The number of results per page (max 100). - name: createoperationapproval method: POST description: Create Operation Approval outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: proj_id in: path type: string description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' required: true - name: env_id in: path type: string description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' required: true - name: elements_config_id in: path type: string description: 'Either the unique id of the elements_config, or the URL-friendly key of the elements_config (i.e: the "slug").' required: true - name: body in: body type: object description: Request body (JSON). required: true - name: v2-elements-proj_id-env_id-config-elements_config_id-operation_approval-operatio path: /v2/elements/{proj_id}/{env_id}/config/{elements_config_id}/operation_approval/{operation_approval_id} operations: - name: getoperationapproval method: GET description: Get Operation Approval outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: operation_approval_id in: path type: string description: 'Either the unique id of the operation_approval, or the URL-friendly key of the operation_approval (i.e: the "slug").' required: true - name: proj_id in: path type: string description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' required: true - name: env_id in: path type: string description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' required: true - name: elements_config_id in: path type: string description: 'Either the unique id of the elements_config, or the URL-friendly key of the elements_config (i.e: the "slug").' required: true - name: page in: query type: integer description: Page number of the results to fetch, starting at 1. - name: per_page in: query type: integer description: The number of results per page (max 100). - name: v2-elements-proj_id-env_id-config-elements_config_id-operation_approval-operatio path: /v2/elements/{proj_id}/{env_id}/config/{elements_config_id}/operation_approval/{operation_approval_id}/approve operations: - name: approveoperationapproval method: PUT description: Approve Operation Approval outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: operation_approval_id in: path type: string description: 'Either the unique id of the operation_approval, or the URL-friendly key of the operation_approval (i.e: the "slug").' required: true - name: proj_id in: path type: string description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' required: true - name: env_id in: path type: string description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' required: true - name: elements_config_id in: path type: string description: 'Either the unique id of the elements_config, or the URL-friendly key of the elements_config (i.e: the "slug").' required: true - name: body in: body type: object description: Request body (JSON). required: true - name: v2-elements-proj_id-env_id-config-elements_config_id-operation_approval-operatio path: /v2/elements/{proj_id}/{env_id}/config/{elements_config_id}/operation_approval/{operation_approval_id}/cancel operations: - name: canceloperationapproval method: PUT description: Cancel Operation Approval outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: operation_approval_id in: path type: string description: 'Either the unique id of the operation_approval, or the URL-friendly key of the operation_approval (i.e: the "slug").' required: true - name: proj_id in: path type: string description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' required: true - name: env_id in: path type: string description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' required: true - name: elements_config_id in: path type: string description: 'Either the unique id of the elements_config, or the URL-friendly key of the elements_config (i.e: the "slug").' required: true - name: v2-elements-proj_id-env_id-config-elements_config_id-operation_approval-operatio path: /v2/elements/{proj_id}/{env_id}/config/{elements_config_id}/operation_approval/{operation_approval_id}/deny operations: - name: denyoperationapproval method: PUT description: Deny Operation Approval outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: operation_approval_id in: path type: string description: 'Either the unique id of the operation_approval, or the URL-friendly key of the operation_approval (i.e: the "slug").' required: true - name: proj_id in: path type: string description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' required: true - name: env_id in: path type: string description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' required: true - name: elements_config_id in: path type: string description: 'Either the unique id of the elements_config, or the URL-friendly key of the elements_config (i.e: the "slug").' required: true - name: body in: body type: object description: Request body (JSON). required: true - name: v2-elements-proj_id-env_id-config-elements_config_id-operation_approval-operatio path: /v2/elements/{proj_id}/{env_id}/config/{elements_config_id}/operation_approval/{operation_approval_id}/reviewer operations: - name: updateoperationapprovalreviewer method: PATCH description: Update Operation Approval Reviewer outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: operation_approval_id in: path type: string description: 'Either the unique id of the operation_approval, or the URL-friendly key of the operation_approval (i.e: the "slug").' required: true - name: proj_id in: path type: string description: 'Either the unique id of the project, or the URL-friendly key of the project (i.e: the "slug").' required: true - name: env_id in: path type: string description: 'Either the unique id of the environment, or the URL-friendly key of the environment (i.e: the "slug").' required: true - name: elements_config_id in: path type: string description: 'Either the unique id of the elements_config, or the URL-friendly key of the elements_config (i.e: the "slug").' required: true - name: body in: body type: object description: Request body (JSON). required: true authentication: type: bearer token: '{{env.PERMIT_IO_API_KEY}}' exposes: - type: rest namespace: permit-io-operation-approval-eap-rest port: 8080 description: REST adapter for Permit.io API — Operation Approval (EAP). One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/v2/elements/{proj-id}/{env-id}/config/{elements-config-id}/operation-approval name: v2-elements-proj-id-env-id-config-elements-config-id-operation-approval description: REST surface for v2-elements-proj_id-env_id-config-elements_config_id-operation_approval. operations: - method: GET name: listoperationapprovals description: List Operation Approvals call: permit-io-operation-approval-eap.listoperationapprovals with: proj_id: rest.proj_id env_id: rest.env_id elements_config_id: rest.elements_config_id status: rest.status resource: rest.resource resource_instance: rest.resource_instance page: rest.page per_page: rest.per_page outputParameters: - type: object mapping: $. - method: POST name: createoperationapproval description: Create Operation Approval call: permit-io-operation-approval-eap.createoperationapproval with: proj_id: rest.proj_id env_id: rest.env_id elements_config_id: rest.elements_config_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v2/elements/{proj-id}/{env-id}/config/{elements-config-id}/operation-approval/{operation-approval-id} name: v2-elements-proj-id-env-id-config-elements-config-id-operation-approval-operatio description: REST surface for v2-elements-proj_id-env_id-config-elements_config_id-operation_approval-operatio. operations: - method: GET name: getoperationapproval description: Get Operation Approval call: permit-io-operation-approval-eap.getoperationapproval with: operation_approval_id: rest.operation_approval_id proj_id: rest.proj_id env_id: rest.env_id elements_config_id: rest.elements_config_id page: rest.page per_page: rest.per_page outputParameters: - type: object mapping: $. - path: /v1/v2/elements/{proj-id}/{env-id}/config/{elements-config-id}/operation-approval/{operation-approval-id}/approve name: v2-elements-proj-id-env-id-config-elements-config-id-operation-approval-operatio description: REST surface for v2-elements-proj_id-env_id-config-elements_config_id-operation_approval-operatio. operations: - method: PUT name: approveoperationapproval description: Approve Operation Approval call: permit-io-operation-approval-eap.approveoperationapproval with: operation_approval_id: rest.operation_approval_id proj_id: rest.proj_id env_id: rest.env_id elements_config_id: rest.elements_config_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v2/elements/{proj-id}/{env-id}/config/{elements-config-id}/operation-approval/{operation-approval-id}/cancel name: v2-elements-proj-id-env-id-config-elements-config-id-operation-approval-operatio description: REST surface for v2-elements-proj_id-env_id-config-elements_config_id-operation_approval-operatio. operations: - method: PUT name: canceloperationapproval description: Cancel Operation Approval call: permit-io-operation-approval-eap.canceloperationapproval with: operation_approval_id: rest.operation_approval_id proj_id: rest.proj_id env_id: rest.env_id elements_config_id: rest.elements_config_id outputParameters: - type: object mapping: $. - path: /v1/v2/elements/{proj-id}/{env-id}/config/{elements-config-id}/operation-approval/{operation-approval-id}/deny name: v2-elements-proj-id-env-id-config-elements-config-id-operation-approval-operatio description: REST surface for v2-elements-proj_id-env_id-config-elements_config_id-operation_approval-operatio. operations: - method: PUT name: denyoperationapproval description: Deny Operation Approval call: permit-io-operation-approval-eap.denyoperationapproval with: operation_approval_id: rest.operation_approval_id proj_id: rest.proj_id env_id: rest.env_id elements_config_id: rest.elements_config_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v2/elements/{proj-id}/{env-id}/config/{elements-config-id}/operation-approval/{operation-approval-id}/reviewer name: v2-elements-proj-id-env-id-config-elements-config-id-operation-approval-operatio description: REST surface for v2-elements-proj_id-env_id-config-elements_config_id-operation_approval-operatio. operations: - method: PATCH name: updateoperationapprovalreviewer description: Update Operation Approval Reviewer call: permit-io-operation-approval-eap.updateoperationapprovalreviewer with: operation_approval_id: rest.operation_approval_id proj_id: rest.proj_id env_id: rest.env_id elements_config_id: rest.elements_config_id body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: permit-io-operation-approval-eap-mcp port: 9090 transport: http description: MCP adapter for Permit.io API — Operation Approval (EAP). One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-operation-approvals description: List Operation Approvals hints: readOnly: true destructive: false idempotent: true call: permit-io-operation-approval-eap.listoperationapprovals with: proj_id: tools.proj_id env_id: tools.env_id elements_config_id: tools.elements_config_id status: tools.status resource: tools.resource resource_instance: tools.resource_instance page: tools.page per_page: tools.per_page outputParameters: - type: object mapping: $. - name: create-operation-approval description: Create Operation Approval hints: readOnly: false destructive: false idempotent: false call: permit-io-operation-approval-eap.createoperationapproval with: proj_id: tools.proj_id env_id: tools.env_id elements_config_id: tools.elements_config_id body: tools.body outputParameters: - type: object mapping: $. - name: get-operation-approval description: Get Operation Approval hints: readOnly: true destructive: false idempotent: true call: permit-io-operation-approval-eap.getoperationapproval with: operation_approval_id: tools.operation_approval_id proj_id: tools.proj_id env_id: tools.env_id elements_config_id: tools.elements_config_id page: tools.page per_page: tools.per_page outputParameters: - type: object mapping: $. - name: approve-operation-approval description: Approve Operation Approval hints: readOnly: false destructive: false idempotent: true call: permit-io-operation-approval-eap.approveoperationapproval with: operation_approval_id: tools.operation_approval_id proj_id: tools.proj_id env_id: tools.env_id elements_config_id: tools.elements_config_id body: tools.body outputParameters: - type: object mapping: $. - name: cancel-operation-approval description: Cancel Operation Approval hints: readOnly: false destructive: false idempotent: true call: permit-io-operation-approval-eap.canceloperationapproval with: operation_approval_id: tools.operation_approval_id proj_id: tools.proj_id env_id: tools.env_id elements_config_id: tools.elements_config_id outputParameters: - type: object mapping: $. - name: deny-operation-approval description: Deny Operation Approval hints: readOnly: false destructive: false idempotent: true call: permit-io-operation-approval-eap.denyoperationapproval with: operation_approval_id: tools.operation_approval_id proj_id: tools.proj_id env_id: tools.env_id elements_config_id: tools.elements_config_id body: tools.body outputParameters: - type: object mapping: $. - name: update-operation-approval-reviewer description: Update Operation Approval Reviewer hints: readOnly: false destructive: false idempotent: true call: permit-io-operation-approval-eap.updateoperationapprovalreviewer with: operation_approval_id: tools.operation_approval_id proj_id: tools.proj_id env_id: tools.env_id elements_config_id: tools.elements_config_id body: tools.body outputParameters: - type: object mapping: $.