naftiko: 1.0.0-alpha2 info: label: m3ter API — Measurements description: 'm3ter API — Measurements. 6 operations. Lead operation: Generate Upload URL. Self-contained Naftiko capability covering one M3ter business surface.' tags: - M3ter - Measurements created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: M3TER_API_KEY: M3TER_API_KEY capability: consumes: - type: http namespace: m3ter-measurements baseUri: https://api.m3ter.com description: m3ter API — Measurements business capability. Self-contained, no shared references. resources: - name: organizations-orgId-fileuploads-measurements-generateUploadUrl path: /organizations/{orgId}/fileuploads/measurements/generateUploadUrl operations: - name: generateuploadurl method: POST description: Generate Upload URL outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: UUID of the Organization. The Organization represents your company as a direct customer of the m3ter platform. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: organizations-orgId-fileuploads-measurements-jobs path: /organizations/{orgId}/fileuploads/measurements/jobs operations: - name: listjobs method: GET description: List File Upload Jobs outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: UUID of the organization required: true - name: pageSize in: query type: integer description: Number of File Upload jobs to retrieve per page. - name: nextToken in: query type: string description: '`nextToken` for multi page retrievals.' - name: dateCreatedStart in: query type: string description: 'Include only File Upload jobs created on or after this date. Required format is ISO-8601: yyyy-MM-dd''T''HH:mm:ss''Z''' - name: dateCreatedEnd in: query type: string description: 'Include only File Upload jobs created before this date. Required format is ISO-8601: yyyy-MM-dd''T''HH:mm:ss''Z''' - name: fileKey in: query type: string description: <> - name: organizations-orgId-fileuploads-measurements-jobs-id path: /organizations/{orgId}/fileuploads/measurements/jobs/{id} operations: - name: getuploadjobresponse method: GET description: Get File Upload Job Response 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: UUID of the file upload job. required: true - name: organizations-orgId-fileuploads-measurements-jobs-id-original path: /organizations/{orgId}/fileuploads/measurements/jobs/{id}/original operations: - name: getjoboriginalfiledownloadurl method: GET description: Get Original File Download URL 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: UUID of the file service job for the original measurements file upload. required: true - name: organizations-orgId-measurements path: /organizations/{orgId}/measurements operations: - name: submitmeasurements method: POST description: Submit Measurements outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: UUID of the organization. The Organization represents your company as a direct customer of the m3ter service. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: organizations-orgId-measurements-failedIngest-getDownloadUrl path: /organizations/{orgId}/measurements/failedIngest/getDownloadUrl operations: - name: getvalidationerrordownloadurl method: GET description: Get Failed Ingest File Download URL outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: orgId in: path type: string description: UUID of the Organization required: true - name: file in: query type: string description: The file path authentication: type: bearer token: '{{env.M3TER_API_KEY}}' exposes: - type: rest namespace: m3ter-measurements-rest port: 8080 description: REST adapter for m3ter API — Measurements. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/organizations/{orgid}/fileuploads/measurements/generateuploadurl name: organizations-orgid-fileuploads-measurements-generateuploadurl description: REST surface for organizations-orgId-fileuploads-measurements-generateUploadUrl. operations: - method: POST name: generateuploadurl description: Generate Upload URL call: m3ter-measurements.generateuploadurl with: orgId: rest.orgId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/organizations/{orgid}/fileuploads/measurements/jobs name: organizations-orgid-fileuploads-measurements-jobs description: REST surface for organizations-orgId-fileuploads-measurements-jobs. operations: - method: GET name: listjobs description: List File Upload Jobs call: m3ter-measurements.listjobs with: orgId: rest.orgId pageSize: rest.pageSize nextToken: rest.nextToken dateCreatedStart: rest.dateCreatedStart dateCreatedEnd: rest.dateCreatedEnd fileKey: rest.fileKey outputParameters: - type: object mapping: $. - path: /v1/organizations/{orgid}/fileuploads/measurements/jobs/{id} name: organizations-orgid-fileuploads-measurements-jobs-id description: REST surface for organizations-orgId-fileuploads-measurements-jobs-id. operations: - method: GET name: getuploadjobresponse description: Get File Upload Job Response call: m3ter-measurements.getuploadjobresponse with: orgId: rest.orgId id: rest.id outputParameters: - type: object mapping: $. - path: /v1/organizations/{orgid}/fileuploads/measurements/jobs/{id}/original name: organizations-orgid-fileuploads-measurements-jobs-id-original description: REST surface for organizations-orgId-fileuploads-measurements-jobs-id-original. operations: - method: GET name: getjoboriginalfiledownloadurl description: Get Original File Download URL call: m3ter-measurements.getjoboriginalfiledownloadurl with: orgId: rest.orgId id: rest.id outputParameters: - type: object mapping: $. - path: /v1/organizations/{orgid}/measurements name: organizations-orgid-measurements description: REST surface for organizations-orgId-measurements. operations: - method: POST name: submitmeasurements description: Submit Measurements call: m3ter-measurements.submitmeasurements with: orgId: rest.orgId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/organizations/{orgid}/measurements/failedingest/getdownloadurl name: organizations-orgid-measurements-failedingest-getdownloadurl description: REST surface for organizations-orgId-measurements-failedIngest-getDownloadUrl. operations: - method: GET name: getvalidationerrordownloadurl description: Get Failed Ingest File Download URL call: m3ter-measurements.getvalidationerrordownloadurl with: orgId: rest.orgId file: rest.file outputParameters: - type: object mapping: $. - type: mcp namespace: m3ter-measurements-mcp port: 9090 transport: http description: MCP adapter for m3ter API — Measurements. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: generate-upload-url description: Generate Upload URL hints: readOnly: false destructive: false idempotent: false call: m3ter-measurements.generateuploadurl with: orgId: tools.orgId body: tools.body outputParameters: - type: object mapping: $. - name: list-file-upload-jobs description: List File Upload Jobs hints: readOnly: true destructive: false idempotent: true call: m3ter-measurements.listjobs with: orgId: tools.orgId pageSize: tools.pageSize nextToken: tools.nextToken dateCreatedStart: tools.dateCreatedStart dateCreatedEnd: tools.dateCreatedEnd fileKey: tools.fileKey outputParameters: - type: object mapping: $. - name: get-file-upload-job-response description: Get File Upload Job Response hints: readOnly: true destructive: false idempotent: true call: m3ter-measurements.getuploadjobresponse with: orgId: tools.orgId id: tools.id outputParameters: - type: object mapping: $. - name: get-original-file-download-url description: Get Original File Download URL hints: readOnly: true destructive: false idempotent: true call: m3ter-measurements.getjoboriginalfiledownloadurl with: orgId: tools.orgId id: tools.id outputParameters: - type: object mapping: $. - name: submit-measurements description: Submit Measurements hints: readOnly: false destructive: false idempotent: false call: m3ter-measurements.submitmeasurements with: orgId: tools.orgId body: tools.body outputParameters: - type: object mapping: $. - name: get-failed-ingest-file-download description: Get Failed Ingest File Download URL hints: readOnly: true destructive: false idempotent: true call: m3ter-measurements.getvalidationerrordownloadurl with: orgId: tools.orgId file: tools.file outputParameters: - type: object mapping: $.