naftiko: 1.0.0-alpha2 info: label: m3ter API — ResourceGroup description: 'm3ter API — ResourceGroup. 9 operations. Lead operation: List ResourceGroups. Self-contained Naftiko capability covering one M3ter business surface.' tags: - M3ter - ResourceGroup created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: M3TER_API_KEY: M3TER_API_KEY capability: consumes: - type: http namespace: m3ter-resourcegroup baseUri: https://api.m3ter.com description: m3ter API — ResourceGroup business capability. Self-contained, no shared references. resources: - name: organizations-orgId-resourcegroups-type path: /organizations/{orgId}/resourcegroups/{type} operations: - name: listresourcegroups method: GET description: List ResourceGroups outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: UUID of the organization required: true - name: type in: path type: string description: The type of resource required: true - name: pageSize in: query type: integer description: Number of ResourceGroups to retrieve per page - name: nextToken in: query type: string description: nextToken for multi page retrievals - name: postresourcegroup method: POST description: Create ResourceGroup outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: UUID of the organization required: true - name: type in: path type: string description: The type of resource required: true - name: body in: body type: object description: Request body (JSON). required: true - name: organizations-orgId-resourcegroups-type-id path: /organizations/{orgId}/resourcegroups/{type}/{id} operations: - name: getresourcegroup method: GET description: Retrieve ResourceGroup outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: UUID of the organization required: true - name: id in: path type: string description: The UUID of the ResourceGroup to retrieve. required: true - name: type in: path type: string description: The type of resource required: true - name: putresourcegroup method: PUT description: Update ResourceGroup outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: UUID of the organization required: true - name: id in: path type: string description: The UUID of the ResourceGroup to update. required: true - name: type in: path type: string description: The type of resource required: true - name: body in: body type: object description: Request body (JSON). required: true - name: deleteresourcegroup method: DELETE description: Delete ResourceGroup outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The UUID of the ResourceGroup to delete. required: true - name: orgId in: path type: string description: UUID of the organization required: true - name: type in: path type: string description: The type of resource required: true - name: organizations-orgId-resourcegroups-type-resourceGroupId-addresource path: /organizations/{orgId}/resourcegroups/{type}/{resourceGroupId}/addresource operations: - name: addresourcetogroup method: POST description: Add item outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: UUID of the organization required: true - name: resourceGroupId in: path type: string description: The UUID of the ResourceGroup to add the item to. required: true - name: type in: path type: string description: The type of resource the Resource Group is for, such as a Meter Resource Group. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: organizations-orgId-resourcegroups-type-resourceGroupId-contents path: /organizations/{orgId}/resourcegroups/{type}/{resourceGroupId}/contents operations: - name: listresourcegroupsforid method: POST description: List ResourceGroup items outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: UUID of the organization required: true - name: type in: path type: string description: The type of resource required: true - name: resourceGroupId in: path type: string description: UUID of the ResourceGroup required: true - name: pageSize in: query type: integer description: Number of ResourceGroupItems to retrieve per page - name: nextToken in: query type: string description: nextToken for multi page retrievals - name: organizations-orgId-resourcegroups-type-resourceGroupId-permissions path: /organizations/{orgId}/resourcegroups/{type}/{resourceGroupId}/permissions operations: - name: getresourcegrouppermissions method: GET description: List ResourceGroup permission policies outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: UUID of the organization required: true - name: type in: path type: string description: The type of resource required: true - name: resourceGroupId in: path type: string description: UUID of the ResourceGroup required: true - name: pageSize in: query type: integer description: Number of PermissionPolicy entities to retrieve per page - name: nextToken in: query type: string description: nextToken for multi page retrievals - name: organizations-orgId-resourcegroups-type-resourceGroupId-removeresource path: /organizations/{orgId}/resourcegroups/{type}/{resourceGroupId}/removeresource operations: - name: removeresourcefromgroup method: POST description: Remove item outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: UUID of the organization required: true - name: resourceGroupId in: path type: string description: The UUID of the ResourceGroup to remove the item from. required: true - name: type in: path type: string description: The type of resource required: true - name: body in: body type: object description: Request body (JSON). required: true authentication: type: bearer token: '{{env.M3TER_API_KEY}}' exposes: - type: rest namespace: m3ter-resourcegroup-rest port: 8080 description: REST adapter for m3ter API — ResourceGroup. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/organizations/{orgid}/resourcegroups/{type} name: organizations-orgid-resourcegroups-type description: REST surface for organizations-orgId-resourcegroups-type. operations: - method: GET name: listresourcegroups description: List ResourceGroups call: m3ter-resourcegroup.listresourcegroups with: orgId: rest.orgId type: rest.type pageSize: rest.pageSize nextToken: rest.nextToken outputParameters: - type: object mapping: $. - method: POST name: postresourcegroup description: Create ResourceGroup call: m3ter-resourcegroup.postresourcegroup with: orgId: rest.orgId type: rest.type body: rest.body outputParameters: - type: object mapping: $. - path: /v1/organizations/{orgid}/resourcegroups/{type}/{id} name: organizations-orgid-resourcegroups-type-id description: REST surface for organizations-orgId-resourcegroups-type-id. operations: - method: GET name: getresourcegroup description: Retrieve ResourceGroup call: m3ter-resourcegroup.getresourcegroup with: orgId: rest.orgId id: rest.id type: rest.type outputParameters: - type: object mapping: $. - method: PUT name: putresourcegroup description: Update ResourceGroup call: m3ter-resourcegroup.putresourcegroup with: orgId: rest.orgId id: rest.id type: rest.type body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleteresourcegroup description: Delete ResourceGroup call: m3ter-resourcegroup.deleteresourcegroup with: id: rest.id orgId: rest.orgId type: rest.type outputParameters: - type: object mapping: $. - path: /v1/organizations/{orgid}/resourcegroups/{type}/{resourcegroupid}/addresource name: organizations-orgid-resourcegroups-type-resourcegroupid-addresource description: REST surface for organizations-orgId-resourcegroups-type-resourceGroupId-addresource. operations: - method: POST name: addresourcetogroup description: Add item call: m3ter-resourcegroup.addresourcetogroup with: orgId: rest.orgId resourceGroupId: rest.resourceGroupId type: rest.type body: rest.body outputParameters: - type: object mapping: $. - path: /v1/organizations/{orgid}/resourcegroups/{type}/{resourcegroupid}/contents name: organizations-orgid-resourcegroups-type-resourcegroupid-contents description: REST surface for organizations-orgId-resourcegroups-type-resourceGroupId-contents. operations: - method: POST name: listresourcegroupsforid description: List ResourceGroup items call: m3ter-resourcegroup.listresourcegroupsforid with: orgId: rest.orgId type: rest.type resourceGroupId: rest.resourceGroupId pageSize: rest.pageSize nextToken: rest.nextToken outputParameters: - type: object mapping: $. - path: /v1/organizations/{orgid}/resourcegroups/{type}/{resourcegroupid}/permissions name: organizations-orgid-resourcegroups-type-resourcegroupid-permissions description: REST surface for organizations-orgId-resourcegroups-type-resourceGroupId-permissions. operations: - method: GET name: getresourcegrouppermissions description: List ResourceGroup permission policies call: m3ter-resourcegroup.getresourcegrouppermissions with: orgId: rest.orgId type: rest.type resourceGroupId: rest.resourceGroupId pageSize: rest.pageSize nextToken: rest.nextToken outputParameters: - type: object mapping: $. - path: /v1/organizations/{orgid}/resourcegroups/{type}/{resourcegroupid}/removeresource name: organizations-orgid-resourcegroups-type-resourcegroupid-removeresource description: REST surface for organizations-orgId-resourcegroups-type-resourceGroupId-removeresource. operations: - method: POST name: removeresourcefromgroup description: Remove item call: m3ter-resourcegroup.removeresourcefromgroup with: orgId: rest.orgId resourceGroupId: rest.resourceGroupId type: rest.type body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: m3ter-resourcegroup-mcp port: 9090 transport: http description: MCP adapter for m3ter API — ResourceGroup. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-resourcegroups description: List ResourceGroups hints: readOnly: true destructive: false idempotent: true call: m3ter-resourcegroup.listresourcegroups with: orgId: tools.orgId type: tools.type pageSize: tools.pageSize nextToken: tools.nextToken outputParameters: - type: object mapping: $. - name: create-resourcegroup description: Create ResourceGroup hints: readOnly: false destructive: false idempotent: false call: m3ter-resourcegroup.postresourcegroup with: orgId: tools.orgId type: tools.type body: tools.body outputParameters: - type: object mapping: $. - name: retrieve-resourcegroup description: Retrieve ResourceGroup hints: readOnly: true destructive: false idempotent: true call: m3ter-resourcegroup.getresourcegroup with: orgId: tools.orgId id: tools.id type: tools.type outputParameters: - type: object mapping: $. - name: update-resourcegroup description: Update ResourceGroup hints: readOnly: false destructive: false idempotent: true call: m3ter-resourcegroup.putresourcegroup with: orgId: tools.orgId id: tools.id type: tools.type body: tools.body outputParameters: - type: object mapping: $. - name: delete-resourcegroup description: Delete ResourceGroup hints: readOnly: false destructive: true idempotent: true call: m3ter-resourcegroup.deleteresourcegroup with: id: tools.id orgId: tools.orgId type: tools.type outputParameters: - type: object mapping: $. - name: add-item description: Add item hints: readOnly: false destructive: false idempotent: false call: m3ter-resourcegroup.addresourcetogroup with: orgId: tools.orgId resourceGroupId: tools.resourceGroupId type: tools.type body: tools.body outputParameters: - type: object mapping: $. - name: list-resourcegroup-items description: List ResourceGroup items hints: readOnly: true destructive: false idempotent: false call: m3ter-resourcegroup.listresourcegroupsforid with: orgId: tools.orgId type: tools.type resourceGroupId: tools.resourceGroupId pageSize: tools.pageSize nextToken: tools.nextToken outputParameters: - type: object mapping: $. - name: list-resourcegroup-permission-policies description: List ResourceGroup permission policies hints: readOnly: true destructive: false idempotent: true call: m3ter-resourcegroup.getresourcegrouppermissions with: orgId: tools.orgId type: tools.type resourceGroupId: tools.resourceGroupId pageSize: tools.pageSize nextToken: tools.nextToken outputParameters: - type: object mapping: $. - name: remove-item description: Remove item hints: readOnly: false destructive: false idempotent: false call: m3ter-resourcegroup.removeresourcefromgroup with: orgId: tools.orgId resourceGroupId: tools.resourceGroupId type: tools.type body: tools.body outputParameters: - type: object mapping: $.