@epilot/sdk 2.14.5 → 2.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/definitions/focus-pocus-runtime.json +1 -0
- package/definitions/focus-pocus.json +757 -0
- package/definitions/message.json +20 -0
- package/definitions/metering-runtime.json +1 -1
- package/definitions/metering.json +134 -7
- package/dist/apis/access-token.cjs +6 -6
- package/dist/apis/access-token.js +1 -1
- package/dist/apis/address-suggestions.cjs +6 -6
- package/dist/apis/address-suggestions.js +1 -1
- package/dist/apis/address.cjs +6 -6
- package/dist/apis/address.js +1 -1
- package/dist/apis/ai-agents.cjs +6 -6
- package/dist/apis/ai-agents.js +1 -1
- package/dist/apis/app.cjs +6 -6
- package/dist/apis/app.js +1 -1
- package/dist/apis/audit-logs.cjs +6 -6
- package/dist/apis/audit-logs.js +1 -1
- package/dist/apis/automation.cjs +6 -6
- package/dist/apis/automation.js +1 -1
- package/dist/apis/billing.cjs +6 -6
- package/dist/apis/billing.js +1 -1
- package/dist/apis/blueprint-manifest.cjs +6 -6
- package/dist/apis/blueprint-manifest.js +1 -1
- package/dist/apis/calendar.cjs +6 -6
- package/dist/apis/calendar.js +1 -1
- package/dist/apis/configuration-hub.cjs +6 -6
- package/dist/apis/configuration-hub.js +1 -1
- package/dist/apis/consent.cjs +6 -6
- package/dist/apis/consent.js +1 -1
- package/dist/apis/customer-portal.cjs +6 -6
- package/dist/apis/customer-portal.js +1 -1
- package/dist/apis/dashboard.cjs +6 -6
- package/dist/apis/dashboard.js +1 -1
- package/dist/apis/data-governance.cjs +6 -6
- package/dist/apis/data-governance.js +1 -1
- package/dist/apis/deduplication.cjs +6 -6
- package/dist/apis/deduplication.js +1 -1
- package/dist/apis/design.cjs +6 -6
- package/dist/apis/design.js +1 -1
- package/dist/apis/document.cjs +6 -6
- package/dist/apis/document.js +1 -1
- package/dist/apis/email-settings.cjs +6 -6
- package/dist/apis/email-settings.js +1 -1
- package/dist/apis/email-template.cjs +6 -6
- package/dist/apis/email-template.js +1 -1
- package/dist/apis/entity-mapping.cjs +6 -6
- package/dist/apis/entity-mapping.js +1 -1
- package/dist/apis/entity.cjs +6 -6
- package/dist/apis/entity.js +1 -1
- package/dist/apis/environments.cjs +6 -6
- package/dist/apis/environments.js +1 -1
- package/dist/apis/event-catalog.cjs +6 -6
- package/dist/apis/event-catalog.js +1 -1
- package/dist/apis/file.cjs +6 -6
- package/dist/apis/file.js +1 -1
- package/dist/apis/iban.cjs +6 -6
- package/dist/apis/iban.js +1 -1
- package/dist/apis/integration-toolkit.cjs +6 -6
- package/dist/apis/integration-toolkit.js +1 -1
- package/dist/apis/journey.cjs +6 -6
- package/dist/apis/journey.js +1 -1
- package/dist/apis/kanban.cjs +6 -6
- package/dist/apis/kanban.js +1 -1
- package/dist/apis/message.cjs +6 -6
- package/dist/apis/message.d.cts +2 -2
- package/dist/apis/message.d.ts +2 -2
- package/dist/apis/message.js +1 -1
- package/dist/apis/metering.cjs +8 -8
- package/dist/apis/metering.d.cts +2 -2
- package/dist/apis/metering.d.ts +2 -2
- package/dist/apis/metering.js +2 -2
- package/dist/apis/notes.cjs +6 -6
- package/dist/apis/notes.js +1 -1
- package/dist/apis/notification.cjs +6 -6
- package/dist/apis/notification.js +1 -1
- package/dist/apis/organization.cjs +6 -6
- package/dist/apis/organization.js +1 -1
- package/dist/apis/partner-directory.cjs +6 -6
- package/dist/apis/partner-directory.js +1 -1
- package/dist/apis/permissions.cjs +6 -6
- package/dist/apis/permissions.js +1 -1
- package/dist/apis/pricing-tier.cjs +6 -6
- package/dist/apis/pricing-tier.js +1 -1
- package/dist/apis/pricing.cjs +6 -6
- package/dist/apis/pricing.js +1 -1
- package/dist/apis/purpose.cjs +6 -6
- package/dist/apis/purpose.js +1 -1
- package/dist/apis/query.cjs +6 -6
- package/dist/apis/query.js +1 -1
- package/dist/apis/sandbox.cjs +6 -6
- package/dist/apis/sandbox.js +1 -1
- package/dist/apis/sharing.cjs +6 -6
- package/dist/apis/sharing.js +1 -1
- package/dist/apis/snapshot.cjs +6 -6
- package/dist/apis/snapshot.js +1 -1
- package/dist/apis/submission.cjs +6 -6
- package/dist/apis/submission.js +1 -1
- package/dist/apis/target.cjs +6 -6
- package/dist/apis/target.js +1 -1
- package/dist/apis/targeting.cjs +6 -6
- package/dist/apis/targeting.js +1 -1
- package/dist/apis/template-variables.cjs +6 -6
- package/dist/apis/template-variables.js +1 -1
- package/dist/apis/user.cjs +6 -6
- package/dist/apis/user.js +1 -1
- package/dist/apis/validation-rules.cjs +6 -6
- package/dist/apis/validation-rules.js +1 -1
- package/dist/apis/webhooks.cjs +6 -6
- package/dist/apis/webhooks.js +1 -1
- package/dist/apis/workflow-definition.cjs +6 -6
- package/dist/apis/workflow-definition.js +1 -1
- package/dist/apis/workflow.cjs +6 -6
- package/dist/apis/workflow.js +1 -1
- package/dist/{chunk-CD4J6HXV.cjs → chunk-C4HXUTOU.cjs} +3 -3
- package/dist/{chunk-62BXSTL6.js → chunk-GB3RZYS2.js} +3 -3
- package/dist/chunk-LE4OZS7T.js +14 -0
- package/dist/chunk-XNC4FWS2.cjs +14 -0
- package/dist/index.cjs +10 -10
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/js-yaml-DLCVPJ7G.js +0 -0
- package/dist/message-F4HJQBF5.cjs +7 -0
- package/dist/message-TLEET26B.js +7 -0
- package/dist/{message.d-VMmPsZVq.d.cts → message.d-b-UwZUNb.d.cts} +3 -0
- package/dist/{message.d-VMmPsZVq.d.ts → message.d-b-UwZUNb.d.ts} +3 -0
- package/dist/metering-COO4BTOC.js +7 -0
- package/dist/metering-FJI2AU7Q.cjs +7 -0
- package/dist/{metering-runtime-7DPUSUYS.js → metering-runtime-HQ5F6R5M.js} +1 -1
- package/dist/{metering-runtime-VXOK3WJZ.cjs → metering-runtime-LSBYAJ6Z.cjs} +2 -2
- package/dist/{metering.d-DoC7rUbS.d.cts → metering.d-DomHYl06.d.cts} +133 -10
- package/dist/{metering.d-DoC7rUbS.d.ts → metering.d-DomHYl06.d.ts} +133 -10
- package/docs/message.md +2 -0
- package/docs/metering.md +73 -21
- package/package.json +12 -11
- package/dist/chunk-2KZBLHTS.cjs +0 -14
- package/dist/chunk-K2F255B3.js +0 -14
- package/dist/message-663RPFCZ.js +0 -7
- package/dist/message-CEJ6VDZ6.cjs +0 -7
- package/dist/metering-3K36TQ5Z.cjs +0 -7
- package/dist/metering-7T6NJRHT.js +0 -7
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-NJK5F5TF.cjs');
|
|
2
|
-
|
|
3
|
-
// src/docs/message.json
|
|
4
|
-
var message_default = '# Message API\n\n- **Base URL:** `https://message.sls.epilot.io`\n- **Full API Docs:** [https://docs.epilot.io/api/message](https://docs.epilot.io/api/message)\n\n## Usage\n\n```ts\nimport { epilot } from \'@epilot/sdk\'\n\nepilot.authorize(() => \'<token>\')\nconst { data } = await epilot.message.sendMessage(...)\n```\n\n### Tree-shakeable import\n\n```ts\nimport { getClient, authorize } from \'@epilot/sdk/message\'\n\nconst messageClient = getClient()\nauthorize(messageClient, () => \'<token>\')\nconst { data } = await messageClient.sendMessage(...)\n```\n\n## Operations\n\n**Messages**\n- [`sendMessage`](#sendmessage)\n- [`updateMessage`](#updatemessage)\n- [`getMessage`](#getmessage)\n- [`deleteMessage`](#deletemessage)\n- [`getMessageEml`](#getmessageeml)\n- [`searchMessages`](#searchmessages)\n- [`trashMessage`](#trashmessage)\n- [`untrashMessage`](#untrashmessage)\n- [`markReadMessage`](#markreadmessage)\n- [`markReadMessageV2`](#markreadmessagev2)\n- [`markUnreadMessage`](#markunreadmessage)\n- [`getUnread`](#getunread)\n- [`markUnreadMessageV2`](#markunreadmessagev2)\n- [`spamMessage`](#spammessage)\n- [`unspamMessage`](#unspammessage)\n- [`getMessageV2`](#getmessagev2)\n\n**Threads**\n- [`searchThreads`](#searchthreads)\n- [`searchThreadsV2`](#searchthreadsv2)\n- [`searchIds`](#searchids)\n- [`getAssigneeWorkload`](#getassigneeworkload)\n- [`updateThread`](#updatethread)\n- [`deleteThread`](#deletethread)\n- [`moveThread`](#movethread)\n- [`markThreadAsDone`](#markthreadasdone)\n- [`markThreadAsOpen`](#markthreadasopen)\n- [`getThreadTimeline`](#getthreadtimeline)\n- [`trashThread`](#trashthread)\n- [`untrashThread`](#untrashthread)\n- [`spamThread`](#spamthread)\n- [`unspamThread`](#unspamthread)\n- [`bulkMoveThreads`](#bulkmovethreads)\n- [`bulkAssignThreads`](#bulkassignthreads)\n- [`threadBulkActionsRead`](#threadbulkactionsread)\n- [`threadBulkActionsUnread`](#threadbulkactionsunread)\n- [`threadBulkActionsFavorite`](#threadbulkactionsfavorite)\n- [`threadBulkActionsUnfavorite`](#threadbulkactionsunfavorite)\n- [`threadBulkActionsTrash`](#threadbulkactionstrash)\n- [`threadBulkActionsUntrash`](#threadbulkactionsuntrash)\n- [`threadBulkActionsDelete`](#threadbulkactionsdelete)\n- [`threadBulkActionsDone`](#threadbulkactionsdone)\n- [`threadBulkActionsOpen`](#threadbulkactionsopen)\n- [`markReadThread`](#markreadthread)\n- [`markReadThreadV2`](#markreadthreadv2)\n- [`markUnreadThread`](#markunreadthread)\n- [`markUnreadThreadV2`](#markunreadthreadv2)\n- [`assignThread`](#assignthread)\n- [`unassignThread`](#unassignthread)\n- [`assignUsers`](#assignusers)\n- [`assignUsersV2`](#assignusersv2)\n- [`pinThread`](#pinthread)\n- [`unpinThread`](#unpinthread)\n\n**Drafts**\n- [`createDraft`](#createdraft)\n- [`sendDraft`](#senddraft)\n\n**Schemas**\n- [`ErrorResponse`](#errorresponse)\n- [`MoveThreadPayload`](#movethreadpayload)\n- [`BaseEntity`](#baseentity)\n- [`Thread`](#thread)\n- [`Message`](#message)\n- [`MessageV2`](#messagev2)\n- [`Address`](#address)\n- [`AttachmentsRelation`](#attachmentsrelation)\n- [`File`](#file)\n- [`MessageRequestParams`](#messagerequestparams)\n- [`SearchParamsV2`](#searchparamsv2)\n- [`SearchParams`](#searchparams)\n- [`SearchIDParams`](#searchidparams)\n- [`AssigneeWorkloadParams`](#assigneeworkloadparams)\n- [`AssigneeWorkload`](#assigneeworkload)\n- [`AssigneeWorkloadResults`](#assigneeworkloadresults)\n- [`ReadMessagePayload`](#readmessagepayload)\n- [`ReadingScope`](#readingscope)\n- [`ThreadTimeline`](#threadtimeline)\n- [`ThreadDoneEvent`](#threaddoneevent)\n- [`ThreadOpenEvent`](#threadopenevent)\n- [`TimelineEventData`](#timelineeventdata)\n- [`TimelineEvent`](#timelineevent)\n- [`BulkActionsPayloadWithScopes`](#bulkactionspayloadwithscopes)\n- [`BulkActionsPayload`](#bulkactionspayload)\n- [`FieldsParam`](#fieldsparam)\n\n### `sendMessage`\n\nSend an email message\n\n`POST /v1/message/messages`\n\n```ts\nconst { data } = await client.sendMessage(\n {\n do_not_create_entities: true,\n },\n {},\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{}\n```\n\n</details>\n\n---\n\n### `updateMessage`\n\nUpdate message metadata\n\n`PUT /v1/message/messages`\n\n```ts\nconst { data } = await client.updateMessage()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "string",\n "_org": "206801",\n "_schema": "message",\n "_tags": ["pricing", "INBOX"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-10T09:14:31.990Z",\n "message_id": "<0102017b97a502f8-a67f01c2-68cc-4928-b91b-45853f34e259-000000@eu-west-1.amazonses.com>",\n "sender": "206801",\n "updated_by": "206801",\n "subject": "Request for solar panel price",\n "html": "<div>We at ABC GmbH would like to request a price quote for the solar panel.</div>",\n "text": "We at ABC GmbH would like to request a price quote for the solar panel.",\n "from": {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n },\n "reply_to": {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n },\n "to": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "cc": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "bcc": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "file": {\n "$relation": [\n {\n "entity_id": "f820ce3b-07b0-45ae-bcc6-babb2f53f79f",\n "filename": "Produktinformationen_epilot360_Double_Opt_in.pdf",\n "is_message_attachment": true,\n "may_be_signature_attachment": true,\n "cid": "fb222496-a1a5-4639-94f2-07b5e35e4068",\n "inline": false,\n "send_as_link": false,\n "save_to_entity": true\n }\n ]\n },\n "references": "<0102017b97a502f8-a67f01c2-68cc-4928-b91b-45853f34e259-000000@eu-west-1.amazonses.com> <CALHgQpziyxW9NaFUs+nRMykzr6Ljq6vjq4WO9SaihAuMasuDyg@mail.gmail.com>",\n "in_reply_to": "<CALHgQpziyxW9NaFUs+nRMykzr6Ljq6vjq4WO9SaihAuMasuDyg@mail.gmail.com>",\n "user_read_message": ["206801", "200109"],\n "org_read_message": ["789372", "210291"],\n "send_status": ["SEND"],\n "type": "SENT",\n "template_id": "3f34ce73-089c-4d45-a5ee-c161234e41c3"\n}\n```\n\n</details>\n\n---\n\n### `getMessage`\n\nGet an email message by id\n\n`GET /v1/message/messages/{id}`\n\n```ts\nconst { data } = await client.getMessage({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "string",\n "_org": "206801",\n "_schema": "message",\n "_tags": ["pricing", "INBOX"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-10T09:14:31.990Z",\n "message_id": "<0102017b97a502f8-a67f01c2-68cc-4928-b91b-45853f34e259-000000@eu-west-1.amazonses.com>",\n "sender": "206801",\n "updated_by": "206801",\n "subject": "Request for solar panel price",\n "html": "<div>We at ABC GmbH would like to request a price quote for the solar panel.</div>",\n "text": "We at ABC GmbH would like to request a price quote for the solar panel.",\n "from": {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n },\n "reply_to": {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n },\n "to": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "cc": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "bcc": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "file": {\n "$relation": [\n {\n "entity_id": "f820ce3b-07b0-45ae-bcc6-babb2f53f79f",\n "filename": "Produktinformationen_epilot360_Double_Opt_in.pdf",\n "is_message_attachment": true,\n "may_be_signature_attachment": true,\n "cid": "fb222496-a1a5-4639-94f2-07b5e35e4068",\n "inline": false,\n "send_as_link": false,\n "save_to_entity": true\n }\n ]\n },\n "references": "<0102017b97a502f8-a67f01c2-68cc-4928-b91b-45853f34e259-000000@eu-west-1.amazonses.com> <CALHgQpziyxW9NaFUs+nRMykzr6Ljq6vjq4WO9SaihAuMasuDyg@mail.gmail.com>",\n "in_reply_to": "<CALHgQpziyxW9NaFUs+nRMykzr6Ljq6vjq4WO9SaihAuMasuDyg@mail.gmail.com>",\n "user_read_message": ["206801", "200109"],\n "org_read_message": ["789372", "210291"],\n "send_status": ["SEND"],\n "type": "SENT",\n "template_id": "3f34ce73-089c-4d45-a5ee-c161234e41c3"\n}\n```\n\n</details>\n\n---\n\n### `deleteMessage`\n\nImmediately and permanently delete a message. This operation cannot be undone.\n\n`DELETE /v1/message/messages/{id}`\n\n```ts\nconst { data } = await client.deleteMessage({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `getMessageEml`\n\nDownload a message as an EML file.\nReturns a 302 redirect to a pre-signed S3 URL where the EML file can be downloaded.\n\n`GET /v1/message/messages/{id}/eml`\n\n```ts\nconst { data } = await client.getMessageEml({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `searchMessages`\n\nSearch Messages\n\n`POST /v1/message/messages:search`\n\n```ts\nconst { data } = await client.searchMessages(\n null,\n {\n inbox_id: \'3f34ce73-089c-4d45-a5ee-c161234e41c3\',\n q: \'subject:"Request for solar panel price" AND _tags:INBOX\',\n fields: [\'_id\', \'_title\', \'first_name\', \'account\', \'!account.*._files\', \'**._product\'],\n from: 0,\n size: 10,\n hydrate: false,\n include_scores: false,\n sort: \'string\',\n highlight: {}\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "hits": 14,\n "results": [\n {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "string",\n "_org": "206801",\n "_schema": "message",\n "_tags": ["pricing", "INBOX"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-10T09:14:31.990Z",\n "message_id": "<0102017b97a502f8-a67f01c2-68cc-4928-b91b-45853f34e259-000000@eu-west-1.amazonses.com>",\n "sender": "206801",\n "updated_by": "206801",\n "subject": "Request for solar panel price",\n "html": "<div>We at ABC GmbH would like to request a price quote for the solar panel.</div>",\n "text": "We at ABC GmbH would like to request a price quote for the solar panel.",\n "from": {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n },\n "reply_to": {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n },\n "to": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "cc": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "bcc": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "file": {\n "$relation": [\n {\n "entity_id": "f820ce3b-07b0-45ae-bcc6-babb2f53f79f",\n "filename": "Produktinformationen_epilot360_Double_Opt_in.pdf",\n "is_message_attachment": true,\n "may_be_signature_attachment": true,\n "cid": "fb222496-a1a5-4639-94f2-07b5e35e4068",\n "inline": false,\n "send_as_link": false,\n "save_to_entity": true\n }\n ]\n },\n "references": "<0102017b97a502f8-a67f01c2-68cc-4928-b91b-45853f34e259-000000@eu-west-1.amazonses.com> <CALHgQpziyxW9NaFUs+nRMykzr6Ljq6vjq4WO9SaihAuMasuDyg@mail.gmail.com>",\n "in_reply_to": "<CALHgQpziyxW9NaFUs+nRMykzr6Ljq6vjq4WO9SaihAuMasuDyg@mail.gmail.com>",\n "user_read_message": ["206801", "200109"],\n "org_read_message": ["789372", "210291"],\n "send_status": ["SEND"],\n "type": "SENT",\n "template_id": "3f34ce73-089c-4d45-a5ee-c161234e41c3"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `trashMessage`\n\nMove a message to the trash\n\n`POST /v1/message/messages/{id}/trash`\n\n```ts\nconst { data } = await client.trashMessage({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `untrashMessage`\n\nRestore a trashed message\n\n`POST /v1/message/messages/{id}/untrash`\n\n```ts\nconst { data } = await client.untrashMessage({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `markReadMessage`\n\nMark message as read\n\n`POST /v1/message/messages/{id}/read`\n\n```ts\nconst { data } = await client.markReadMessage({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `markReadMessageV2`\n\nMark message as read within a scope\n\n`POST /v2/message/messages/{id}/read`\n\n```ts\nconst { data } = await client.markReadMessageV2(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {\n scopes: [\'organization\', \'user\']\n },\n)\n```\n\n---\n\n### `markUnreadMessage`\n\nMark message as unread\n\n`POST /v1/message/messages/{id}/unread`\n\n```ts\nconst { data } = await client.markUnreadMessage({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `getUnread`\n\nGet all unread messages by actor\n\n`GET /v1/message/messages/unread/{actor}`\n\n```ts\nconst { data } = await client.getUnread({\n actor: \'example\',\n email_filter: [\'...\'],\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "count": 14,\n "unread": 0,\n "drafts": 12,\n "unassigned": 1,\n "spam": 3\n}\n```\n\n</details>\n\n---\n\n### `markUnreadMessageV2`\n\nMark message as unread within a scope\n\n`POST /v2/message/messages/{id}/unread`\n\n```ts\nconst { data } = await client.markUnreadMessageV2(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {\n scopes: [\'organization\', \'user\']\n },\n)\n```\n\n---\n\n### `searchThreads`\n\nSearch for threads of email messages.\n\n`POST /v1/message/threads:search`\n\n```ts\nconst { data } = await client.searchThreads(\n null,\n {\n q: \'subject:"Request for solar panel price" AND _tags:INBOX\',\n from: 0,\n size: 10,\n hydrate: false\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "hits": 14,\n "results": [\n {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "string",\n "_org": "206801",\n "_schema": "message",\n "_tags": ["pricing", "INBOX"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-10T09:14:31.990Z",\n "topic": "CUSTOMER_MESSAGE",\n "assigned_to": ["206801", "200109"],\n "org_read_message": ["789372", "210291"],\n "done": false,\n "latest_message": {},\n "latest_trash_message": {},\n "latest_message_at": "2024-02-10T09:14:31.990Z"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `searchThreadsV2`\n\nSearch for threads of email messages.\n\n`POST /v2/message/threads:search`\n\n```ts\nconst { data } = await client.searchThreadsV2(\n null,\n {\n inbox_id: \'3f34ce73-089c-4d45-a5ee-c161234e41c3\',\n q: \'subject:"Request for solar panel price" AND _tags:INBOX\',\n fields: [\'_id\', \'_title\', \'first_name\', \'account\', \'!account.*._files\', \'**._product\'],\n from: 0,\n size: 10,\n hydrate: false,\n include_scores: false,\n sort: \'string\',\n highlight: {}\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "hits": 14,\n "results": [\n {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "string",\n "_org": "206801",\n "_schema": "message",\n "_tags": ["pricing", "INBOX"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-10T09:14:31.990Z",\n "topic": "CUSTOMER_MESSAGE",\n "assigned_to": ["206801", "200109"],\n "org_read_message": ["789372", "210291"],\n "done": false,\n "latest_message": {},\n "latest_trash_message": {},\n "latest_message_at": "2024-02-10T09:14:31.990Z"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `searchIds`\n\nSearch threads and return all id\'s\n\n`POST /v1/message/threads:searchIds`\n\n```ts\nconst { data } = await client.searchIds(\n null,\n {\n q: \'subject:"Request for solar panel price" AND _tags:INBOX\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "hits": 14,\n "results": ["string"]\n}\n```\n\n</details>\n\n---\n\n### `getAssigneeWorkload`\n\nReturn the open-thread workload for a set of user ids.\n\n`POST /v2/message/threads:workload`\n\n```ts\nconst { data } = await client.getAssigneeWorkload(\n null,\n {\n user_ids: [\'11000902\', \'11001053\']\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "workloads": [\n {\n "user_id": "11000902",\n "open_threads": 2\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `updateThread`\n\nModify thread metadata\n\n`PUT /v1/message/threads`\n\n```ts\nconst { data } = await client.updateThread()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "string",\n "_org": "206801",\n "_schema": "message",\n "_tags": ["pricing", "INBOX"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-10T09:14:31.990Z",\n "topic": "CUSTOMER_MESSAGE",\n "assigned_to": ["206801", "200109"],\n "org_read_message": ["789372", "210291"],\n "done": false,\n "latest_message": {\n "message_id": "<0102017b97a502f8-a67f01c2-68cc-4928-b91b-45853f34e259-000000@eu-west-1.amazonses.com>",\n "sender": "206801",\n "updated_by": "206801",\n "subject": "Request for solar panel price",\n "html": "<div>We at ABC GmbH would like to request a price quote for the solar panel.</div>",\n "text": "We at ABC GmbH would like to request a price quote for the solar panel.",\n "from": {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n },\n "reply_to": {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n },\n "to": [\n {}\n ],\n "cc": [\n {}\n ],\n "bcc": [\n {}\n ],\n "file": {\n "$relation": []\n },\n "references": "<0102017b97a502f8-a67f01c2-68cc-4928-b91b-45853f34e259-000000@eu-west-1.amazonses.com> <CALHgQpziyxW9NaFUs+nRMykzr6Ljq6vjq4WO9SaihAuMasuDyg@mail.gmail.com>",\n "in_reply_to": "<CALHgQpziyxW9NaFUs+nRMykzr6Ljq6vjq4WO9SaihAuMasuDyg@mail.gmail.com>",\n "user_read_message": ["206801", "200109"],\n "org_read_message": ["789372", "210291"],\n "send_status": ["SEND"],\n "type": "SENT",\n "template_id": "3f34ce73-089c-4d45-a5ee-c161234e41c3"\n },\n "latest_trash_message": {\n "message_id": "<0102017b97a502f8-a67f01c2-68cc-4928-b91b-45853f34e259-000000@eu-west-1.amazonses.com>",\n "sender": "206801",\n "updated_by": "206801",\n "subject": "Request for solar panel price",\n "html": "<div>We at ABC GmbH would like to request a price quote for the solar panel.</div>",\n "text": "We at ABC GmbH would like to request a price quote for the solar panel.",\n "from": {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n },\n "reply_to": {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n },\n "to": [\n {}\n ],\n "cc": [\n {}\n ],\n "bcc": [\n {}\n ],\n "file": {\n "$relation": []\n },\n "references": "<0102017b97a502f8-a67f01c2-68cc-4928-b91b-45853f34e259-000000@eu-west-1.amazonses.com> <CALHgQpziyxW9NaFUs+nRMykzr6Ljq6vjq4WO9SaihAuMasuDyg@mail.gmail.com>",\n "in_reply_to": "<CALHgQpziyxW9NaFUs+nRMykzr6Ljq6vjq4WO9SaihAuMasuDyg@mail.gmail.com>",\n "user_read_message": ["206801", "200109"],\n "org_read_message": ["789372", "210291"],\n "send_status": ["SEND"],\n "type": "SENT",\n "template_id": "3f34ce73-089c-4d45-a5ee-c161234e41c3"\n },\n "latest_message_at": "2024-02-10T09:14:31.990Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteThread`\n\nImmediately and permanently delete a thread. This operation cannot be undone.\n\n`DELETE /v1/message/threads/{id}`\n\n```ts\nconst { data } = await client.deleteThread({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `moveThread`\n\nMove thread to a different Inbox\n\n`POST /v1/message/threads/{id}:move`\n\n```ts\nconst { data } = await client.moveThread(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {\n inbox_id: \'3f34ce73-089c-4d45-a5ee-c161234e41c3\'\n },\n)\n```\n\n---\n\n### `markThreadAsDone`\n\nMark thread as done\n\n`POST /v1/message/threads/{id}:markAsDone`\n\n```ts\nconst { data } = await client.markThreadAsDone({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `markThreadAsOpen`\n\nMark thread as open\n\n`POST /v1/message/threads/{id}:markAsOpen`\n\n```ts\nconst { data } = await client.markThreadAsOpen({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `getThreadTimeline`\n\nGet thread timeline\n\n`GET /v1/message/threads/{id}/timeline`\n\n```ts\nconst { data } = await client.getThreadTimeline({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "events": [\n {\n "data": {\n "type": "THREAD_DONE",\n "user_id": "123",\n "organization_id": "456"\n },\n "timestamp": "2024-01-01T00:00:00.000Z"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `trashThread`\n\nMove a thread to trash\n\n`POST /v1/message/threads/{id}/trash`\n\n```ts\nconst { data } = await client.trashThread({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `untrashThread`\n\nRestore a trashed thread\n\n`POST /v1/message/threads/{id}/untrash`\n\n```ts\nconst { data } = await client.untrashThread({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `spamThread`\n\nMark a thread as spam\n\n`POST /v1/message/threads/{id}/spam`\n\n```ts\nconst { data } = await client.spamThread({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `unspamThread`\n\nRemove spam marking from a thread\n\n`POST /v1/message/threads/{id}/unspam`\n\n```ts\nconst { data } = await client.unspamThread({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `spamMessage`\n\nMark a single message as spam. Also marks the parent thread as spam if all messages in the thread are spam.\n\n`POST /v1/message/messages/{id}/spam`\n\n```ts\nconst { data } = await client.spamMessage({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `unspamMessage`\n\nRemove spam marking from a single message. Also removes spam from the parent thread if no other messages are spam.\n\n`POST /v1/message/messages/{id}/unspam`\n\n```ts\nconst { data } = await client.unspamMessage({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `bulkMoveThreads`\n\nMove many threads to a different inbox\n\n`POST /v1/message/threads/bulk:move`\n\n```ts\nconst { data } = await client.bulkMoveThreads(\n null,\n {\n ids: [\'6b299eda-4018-4554-8965-c4b5598e6531\'],\n assign_to: [\'206801\'],\n inbox_id: \'3f34ce73-089c-4d45-a5ee-c161234e41c3\',\n scopes: [\'organization\', \'user\']\n },\n)\n```\n\n---\n\n### `bulkAssignThreads`\n\nAssign many threads\n\n`POST /v1/message/threads/bulk:assign`\n\n```ts\nconst { data } = await client.bulkAssignThreads(\n null,\n {\n ids: [\'6b299eda-4018-4554-8965-c4b5598e6531\'],\n assign_to: [\'206801\'],\n inbox_id: \'3f34ce73-089c-4d45-a5ee-c161234e41c3\',\n scopes: [\'organization\', \'user\']\n },\n)\n```\n\n---\n\n### `threadBulkActionsRead`\n\nPerform a bulk action of marking an array of thread ids as read\n\n`POST /v1/message/threads/bulk:read`\n\n```ts\nconst { data } = await client.threadBulkActionsRead(\n null,\n {\n ids: [\'6b299eda-4018-4554-8965-c4b5598e6531\'],\n assign_to: [\'206801\'],\n inbox_id: \'3f34ce73-089c-4d45-a5ee-c161234e41c3\',\n scopes: [\'organization\', \'user\']\n },\n)\n```\n\n---\n\n### `threadBulkActionsUnread`\n\nPerform a bulk action of marking an array of thread ids as unread\n\n`POST /v1/message/threads/bulk:unread`\n\n```ts\nconst { data } = await client.threadBulkActionsUnread(\n null,\n {\n ids: [\'6b299eda-4018-4554-8965-c4b5598e6531\'],\n assign_to: [\'206801\'],\n inbox_id: \'3f34ce73-089c-4d45-a5ee-c161234e41c3\',\n scopes: [\'organization\', \'user\']\n },\n)\n```\n\n---\n\n### `threadBulkActionsFavorite`\n\nPerform a bulk action of marking an array of thread ids favorite\n\n`POST /v1/message/threads/bulk:favorite`\n\n```ts\nconst { data } = await client.threadBulkActionsFavorite(\n null,\n {\n ids: [\'6b299eda-4018-4554-8965-c4b5598e6531\']\n },\n)\n```\n\n---\n\n### `threadBulkActionsUnfavorite`\n\nPerform a bulk action of marking an array of thread ids unfavorited\n\n`POST /v1/message/threads/bulk:unfavorite`\n\n```ts\nconst { data } = await client.threadBulkActionsUnfavorite(\n null,\n {\n ids: [\'6b299eda-4018-4554-8965-c4b5598e6531\']\n },\n)\n```\n\n---\n\n### `threadBulkActionsTrash`\n\nPerform a bulk action of trashing an array of threads\n\n`POST /v1/message/threads/bulk:trash`\n\n```ts\nconst { data } = await client.threadBulkActionsTrash(\n null,\n {\n ids: [\'6b299eda-4018-4554-8965-c4b5598e6531\']\n },\n)\n```\n\n---\n\n### `threadBulkActionsUntrash`\n\nPerform a bulk action of untrashing an array of threads\n\n`POST /v1/message/threads/bulk:untrash`\n\n```ts\nconst { data } = await client.threadBulkActionsUntrash(\n null,\n {\n ids: [\'6b299eda-4018-4554-8965-c4b5598e6531\']\n },\n)\n```\n\n---\n\n### `threadBulkActionsDelete`\n\nPerforms a bulk permanent delete for all threads\n\n`POST /v1/message/threads/bulk:delete`\n\n```ts\nconst { data } = await client.threadBulkActionsDelete(\n null,\n {\n ids: [\'6b299eda-4018-4554-8965-c4b5598e6531\']\n },\n)\n```\n\n---\n\n### `threadBulkActionsDone`\n\nPerform a bulk action of marking an array of threads as done\n\n`POST /v1/message/threads/bulk:done`\n\n```ts\nconst { data } = await client.threadBulkActionsDone(\n null,\n {\n ids: [\'6b299eda-4018-4554-8965-c4b5598e6531\']\n },\n)\n```\n\n---\n\n### `threadBulkActionsOpen`\n\nPerform a bulk action of marking an array of threads as open\n\n`POST /v1/message/threads/bulk:open`\n\n```ts\nconst { data } = await client.threadBulkActionsOpen(\n null,\n {\n ids: [\'6b299eda-4018-4554-8965-c4b5598e6531\']\n },\n)\n```\n\n---\n\n### `markReadThread`\n\nMark thread as read\n\n`POST /v1/message/threads/{id}/read`\n\n```ts\nconst { data } = await client.markReadThread({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `markReadThreadV2`\n\nMark thread as read within a scope\n\n`POST /v2/message/threads/{id}/read`\n\n```ts\nconst { data } = await client.markReadThreadV2(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {\n scopes: [\'organization\', \'user\']\n },\n)\n```\n\n---\n\n### `markUnreadThread`\n\nMark thread as unread\n\n`POST /v1/message/threads/{id}/unread`\n\n```ts\nconst { data } = await client.markUnreadThread({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `markUnreadThreadV2`\n\nMark thread as unread within a scope\n\n`POST /v2/message/threads/{id}/unread`\n\n```ts\nconst { data } = await client.markUnreadThreadV2(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {\n scopes: [\'organization\', \'user\']\n },\n)\n```\n\n---\n\n### `assignThread`\n\nAssign thread to entities\n\n`POST /v1/message/threads/{id}/assign`\n\n```ts\nconst { data } = await client.assignThread(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n [\n {\n slug: \'contact\',\n entity_id: \'3f34ce73-089c-4d45-a5ee-c161234e41c3\',\n org_id: \'206801\',\n is_main_entity: true\n }\n ],\n)\n```\n\n---\n\n### `unassignThread`\n\nUnassign thread from entities\n\n`POST /v1/message/threads/{id}/unassign`\n\n```ts\nconst { data } = await client.unassignThread(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n unlink_mapped_entities: true,\n },\n [\n {\n slug: \'contact\',\n entity_id: \'3f34ce73-089c-4d45-a5ee-c161234e41c3\'\n }\n ],\n)\n```\n\n---\n\n### `assignUsers`\n\nAssign users to thread for receiving notifications.\nThe operation replaces all existing assigned users in thread.\n\n`POST /v1/message/threads/{id}/assign:users`\n\n```ts\nconst { data } = await client.assignUsers(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {\n assigned_to: [\'206801\']\n },\n)\n```\n\n---\n\n### `assignUsersV2`\n\nAssign users to thread.\n\n`POST /v2/message/threads/{id}/assign:users`\n\n```ts\nconst { data } = await client.assignUsersV2(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {\n add: [\'206801\'],\n remove: [\'206801\']\n },\n)\n```\n\n---\n\n### `pinThread`\n\nPin a single thread\n\n`POST /v1/message/threads/{id}:pin`\n\n```ts\nconst { data } = await client.pinThread({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `unpinThread`\n\nUnpin a single thread\n\n`DELETE /v1/message/threads/{id}:pin`\n\n```ts\nconst { data } = await client.unpinThread({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `createDraft`\n\nCreate a new draft\n\n`POST /v1/message/drafts`\n\n```ts\nconst { data } = await client.createDraft(\n null,\n {},\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "string",\n "_org": "206801",\n "_schema": "message",\n "_tags": ["pricing", "INBOX"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-10T09:14:31.990Z",\n "message_id": "<0102017b97a502f8-a67f01c2-68cc-4928-b91b-45853f34e259-000000@eu-west-1.amazonses.com>",\n "sender": "206801",\n "updated_by": "206801",\n "subject": "Request for solar panel price",\n "html": "<div>We at ABC GmbH would like to request a price quote for the solar panel.</div>",\n "text": "We at ABC GmbH would like to request a price quote for the solar panel.",\n "from": {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n },\n "reply_to": {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n },\n "to": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "cc": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "bcc": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "file": {\n "$relation": [\n {\n "entity_id": "f820ce3b-07b0-45ae-bcc6-babb2f53f79f",\n "filename": "Produktinformationen_epilot360_Double_Opt_in.pdf",\n "is_message_attachment": true,\n "may_be_signature_attachment": true,\n "cid": "fb222496-a1a5-4639-94f2-07b5e35e4068",\n "inline": false,\n "send_as_link": false,\n "save_to_entity": true\n }\n ]\n },\n "references": "<0102017b97a502f8-a67f01c2-68cc-4928-b91b-45853f34e259-000000@eu-west-1.amazonses.com> <CALHgQpziyxW9NaFUs+nRMykzr6Ljq6vjq4WO9SaihAuMasuDyg@mail.gmail.com>",\n "in_reply_to": "<CALHgQpziyxW9NaFUs+nRMykzr6Ljq6vjq4WO9SaihAuMasuDyg@mail.gmail.com>",\n "user_read_message": ["206801", "200109"],\n "org_read_message": ["789372", "210291"],\n "send_status": ["SEND"],\n "type": "SENT",\n "template_id": "3f34ce73-089c-4d45-a5ee-c161234e41c3"\n}\n```\n\n</details>\n\n---\n\n### `sendDraft`\n\nSend the existing draft to the recipients\n\n`POST /v1/message/drafts:send`\n\n```ts\nconst { data } = await client.sendDraft()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "string",\n "_org": "206801",\n "_schema": "message",\n "_tags": ["pricing", "INBOX"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-10T09:14:31.990Z",\n "message_id": "<0102017b97a502f8-a67f01c2-68cc-4928-b91b-45853f34e259-000000@eu-west-1.amazonses.com>",\n "sender": "206801",\n "updated_by": "206801",\n "subject": "Request for solar panel price",\n "html": "<div>We at ABC GmbH would like to request a price quote for the solar panel.</div>",\n "text": "We at ABC GmbH would like to request a price quote for the solar panel.",\n "from": {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n },\n "reply_to": {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n },\n "to": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "cc": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "bcc": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "file": {\n "$relation": [\n {\n "entity_id": "f820ce3b-07b0-45ae-bcc6-babb2f53f79f",\n "filename": "Produktinformationen_epilot360_Double_Opt_in.pdf",\n "is_message_attachment": true,\n "may_be_signature_attachment": true,\n "cid": "fb222496-a1a5-4639-94f2-07b5e35e4068",\n "inline": false,\n "send_as_link": false,\n "save_to_entity": true\n }\n ]\n },\n "references": "<0102017b97a502f8-a67f01c2-68cc-4928-b91b-45853f34e259-000000@eu-west-1.amazonses.com> <CALHgQpziyxW9NaFUs+nRMykzr6Ljq6vjq4WO9SaihAuMasuDyg@mail.gmail.com>",\n "in_reply_to": "<CALHgQpziyxW9NaFUs+nRMykzr6Ljq6vjq4WO9SaihAuMasuDyg@mail.gmail.com>",\n "user_read_message": ["206801", "200109"],\n "org_read_message": ["789372", "210291"],\n "send_status": ["SEND"],\n "type": "SENT",\n "template_id": "3f34ce73-089c-4d45-a5ee-c161234e41c3"\n}\n```\n\n</details>\n\n---\n\n### `getMessageV2`\n\n- Fetches message by ID\n- If the message html is omitted on the entity, then it keeps the content on the message as a signed url\n {\n ...\n _id: "4d74976d-fb64-47fd-85e2-65eea140f5eb",\n _schem\n\n`GET /v2/message/messages/{id}`\n\n```ts\nconst { data } = await client.getMessageV2({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "html_omitted": false,\n "html_download_url": "https://s3.eu-central-1.amazonaws.com/epilot-attachments/3f34ce73-089c-4d45-a5ee-c161234e41c3/3f34ce73-089c-4d45-a5ee-c161234e41c3.html",\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "string",\n "_org": "206801",\n "_schema": "message",\n "_tags": ["pricing", "INBOX"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-10T09:14:31.990Z",\n "message_id": "<0102017b97a502f8-a67f01c2-68cc-4928-b91b-45853f34e259-000000@eu-west-1.amazonses.com>",\n "sender": "206801",\n "updated_by": "206801",\n "subject": "Request for solar panel price",\n "html": "<div>We at ABC GmbH would like to request a price quote for the solar panel.</div>",\n "text": "We at ABC GmbH would like to request a price quote for the solar panel.",\n "from": {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n },\n "reply_to": {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n },\n "to": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "cc": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "bcc": [\n {\n "name": "epilot",\n "address": "messaging@epilot.cloud",\n "email_type": "INTERNAL",\n "send_status": "SEND",\n "send_error": {}\n }\n ],\n "file": {\n "$relation": [\n {\n "entity_id": "f820ce3b-07b0-45ae-bcc6-babb2f53f79f",\n "filename": "Produktinformationen_epilot360_Double_Opt_in.pdf",\n "is_message_attachment": true,\n "may_be_signature_attachment": true,\n "cid": "fb222496-a1a5-4639-94f2-07b5e35e4068",\n "inline": false,\n "send_as_link": false,\n "save_to_entity": true\n }\n ]\n },\n "references": "<0102017b97a502f8-a67f01c2-68cc-4928-b91b-45853f34e259-000000@eu-west-1.amazonses.com> <CALHgQpziyxW9NaFUs+nRMykzr6Ljq6vjq4WO9SaihAuMasuDyg@mail.gmail.com>",\n "in_reply_to": "<CALHgQpziyxW9NaFUs+nRMykzr6Ljq6vjq4WO9SaihAuMasuDyg@mail.gmail.com>",\n "user_read_message": ["206801", "200109"],\n "org_read_message": ["789372", "210291"],\n "send_status": ["SEND"],\n "type": "SENT",\n "template_id": "3f34ce73-089c-4d45-a5ee-c161234e41c3"\n}\n```\n\n</details>\n\n---\n\n## Schemas\n\n### `ErrorResponse`\n\n```ts\ntype ErrorResponse = {\n error?: string\n}\n```\n\n### `MoveThreadPayload`\n\n```ts\ntype MoveThreadPayload = {\n inbox_id: string\n}\n```\n\n### `BaseEntity`\n\n```ts\ntype BaseEntity = {\n _id: string\n _title: string\n _org: string\n _schema: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n}\n```\n\n### `Thread`\n\nThread properties depend on API caller as it\'s not pre-defined. We do recommend having at least `topic` property for categorizing.\n\n```ts\ntype Thread = {\n topic: string\n assigned_to?: string[]\n org_read_message?: string[]\n done?: boolean\n latest_message?: {\n message_id?: string\n sender?: string\n updated_by?: string\n subject: string\n html?: string\n text?: string\n from: {\n name?: { ... }\n address: { ... }\n email_type?: { ... }\n send_status?: { ... }\n send_error?: { ... }\n }\n reply_to?: {\n name?: { ... }\n address: { ... }\n email_type?: { ... }\n send_status?: { ... }\n send_error?: { ... }\n }\n to?: Array<{\n name?: { ... }\n address: { ... }\n email_type?: { ... }\n send_status?: { ... }\n send_error?: { ... }\n }>\n cc?: Array<{\n name?: { ... }\n address: { ... }\n email_type?: { ... }\n send_status?: { ... }\n send_error?: { ... }\n }>\n bcc?: Array<{\n name?: { ... }\n address: { ... }\n email_type?: { ... }\n send_status?: { ... }\n send_error?: { ... }\n }>\n file?: {\n $relation?: { ... }\n }\n references?: string\n in_reply_to?: string\n user_read_message?: string[]\n org_read_message?: string[]\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"[]\n type?: "SENT" | "RECEIVED"\n template_id?: string\n }\n latest_trash_message?: {\n message_id?: string\n sender?: string\n updated_by?: string\n subject: string\n html?: string\n text?: string\n from: {\n name?: { ... }\n address: { ... }\n email_type?: { ... }\n send_status?: { ... }\n send_error?: { ... }\n }\n reply_to?: {\n name?: { ... }\n address: { ... }\n email_type?: { ... }\n send_status?: { ... }\n send_error?: { ... }\n }\n to?: Array<{\n name?: { ... }\n address: { ... }\n email_type?: { ... }\n send_status?: { ... }\n send_error?: { ... }\n }>\n cc?: Array<{\n name?: { ... }\n address: { ... }\n email_type?: { ... }\n send_status?: { ... }\n send_error?: { ... }\n }>\n bcc?: Array<{\n name?: { ... }\n address: { ... }\n email_type?: { ... }\n send_status?: { ... }\n send_error?: { ... }\n }>\n // ...\n}\n```\n\n### `Message`\n\n```ts\ntype Message = {\n message_id?: string\n sender?: string\n updated_by?: string\n subject: string\n html?: string\n text?: string\n from: {\n name?: string\n address: string\n email_type?: "INTERNAL" | "EXTERNAL" | "PARTNER"\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"\n send_error?: object\n }\n reply_to?: {\n name?: string\n address: string\n email_type?: "INTERNAL" | "EXTERNAL" | "PARTNER"\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"\n send_error?: object\n }\n to?: Array<{\n name?: string\n address: string\n email_type?: "INTERNAL" | "EXTERNAL" | "PARTNER"\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"\n send_error?: object\n }>\n cc?: Array<{\n name?: string\n address: string\n email_type?: "INTERNAL" | "EXTERNAL" | "PARTNER"\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"\n send_error?: object\n }>\n bcc?: Array<{\n name?: string\n address: string\n email_type?: "INTERNAL" | "EXTERNAL" | "PARTNER"\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"\n send_error?: object\n }>\n file?: {\n $relation?: Array<{\n entity_id: { ... }\n filename?: { ... }\n is_message_attachment?: { ... }\n may_be_signature_attachment?: { ... }\n cid?: { ... }\n inline?: { ... }\n send_as_link?: { ... }\n save_to_entity?: { ... }\n }>\n }\n references?: string\n in_reply_to?: string\n user_read_message?: string[]\n org_read_message?: string[]\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"[]\n type?: "SENT" | "RECEIVED"\n template_id?: string\n}\n```\n\n### `MessageV2`\n\n```ts\ntype MessageV2 = {\n _id: string\n _title: string\n _org: string\n _schema: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n message_id?: string\n sender?: string\n updated_by?: string\n subject: string\n html?: string\n text?: string\n from: {\n name?: string\n address: string\n email_type?: "INTERNAL" | "EXTERNAL" | "PARTNER"\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"\n send_error?: object\n }\n reply_to?: {\n name?: string\n address: string\n email_type?: "INTERNAL" | "EXTERNAL" | "PARTNER"\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"\n send_error?: object\n }\n to?: Array<{\n name?: string\n address: string\n email_type?: "INTERNAL" | "EXTERNAL" | "PARTNER"\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"\n send_error?: object\n }>\n cc?: Array<{\n name?: string\n address: string\n email_type?: "INTERNAL" | "EXTERNAL" | "PARTNER"\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"\n send_error?: object\n }>\n bcc?: Array<{\n name?: string\n address: string\n email_type?: "INTERNAL" | "EXTERNAL" | "PARTNER"\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"\n send_error?: object\n }>\n file?: {\n $relation?: Array<{\n entity_id: { ... }\n filename?: { ... }\n is_message_attachment?: { ... }\n may_be_signature_attachment?: { ... }\n cid?: { ... }\n inline?: { ... }\n send_as_link?: { ... }\n save_to_entity?: { ... }\n }>\n }\n references?: string\n in_reply_to?: string\n user_read_message?: string[]\n org_read_message?: string[]\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"[]\n type?: "SENT" | "RECEIVED"\n template_id?: string\n}\n```\n\n### `Address`\n\n```ts\ntype Address = {\n name?: string\n address: string\n email_type?: "INTERNAL" | "EXTERNAL" | "PARTNER"\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"\n send_error?: object\n}\n```\n\n### `AttachmentsRelation`\n\nMessage attachments\n\n```ts\ntype AttachmentsRelation = {\n $relation?: Array<{\n entity_id: string\n filename?: string\n is_message_attachment?: boolean\n may_be_signature_attachment?: boolean\n cid?: string\n inline?: boolean\n send_as_link?: boolean\n save_to_entity?: boolean\n }>\n}\n```\n\n### `File`\n\n```ts\ntype File = {\n entity_id: string\n filename?: string\n is_message_attachment?: boolean\n may_be_signature_attachment?: boolean\n cid?: string\n inline?: boolean\n send_as_link?: boolean\n save_to_entity?: boolean\n}\n```\n\n### `MessageRequestParams`\n\n```ts\ntype MessageRequestParams = {\n complete_thread?: boolean\n mark_thread_as_read?: boolean\n thread?: {\n topic: string\n assigned_to?: string[]\n }\n parent_id?: string\n subject: string\n html?: string\n text?: string\n from: {\n name?: string\n address: string\n email_type?: "INTERNAL" | "EXTERNAL" | "PARTNER"\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"\n send_error?: object\n }\n reply_to?: {\n name?: string\n address: string\n email_type?: "INTERNAL" | "EXTERNAL" | "PARTNER"\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"\n send_error?: object\n }\n to?: Array<{\n name?: string\n address: string\n email_type?: "INTERNAL" | "EXTERNAL" | "PARTNER"\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"\n send_error?: object\n }>\n cc?: Array<{\n name?: string\n address: string\n email_type?: "INTERNAL" | "EXTERNAL" | "PARTNER"\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"\n send_error?: object\n }>\n bcc?: Array<{\n name?: string\n address: string\n email_type?: "INTERNAL" | "EXTERNAL" | "PARTNER"\n send_status?: "SEND" | "DELIVERY" | "REJECT" | "COMPLAINT" | "BOUNCE" | "ERROR"\n send_error?: object\n }>\n file?: {\n $relation?: Array<{\n entity_id: { ... }\n filename?: { ... }\n is_message_attachment?: { ... }\n may_be_signature_attachment?: { ... }\n cid?: { ... }\n inline?: { ... }\n send_as_link?: { ... }\n save_to_entity?: { ... }\n }>\n }\n template_id?: string\n source?: "manual" | "automation" | "workflow" | "partner" | "bulk" | "system"\n}\n```\n\n### `SearchParamsV2`\n\n```ts\ntype SearchParamsV2 = {\n inbox_id?: string | string[]\n q: string\n fields?: string[]\n from?: number\n size?: number\n hydrate?: boolean\n include_scores?: boolean\n sort?: string\n highlight?: unknown\n}\n```\n\n### `SearchParams`\n\n```ts\ntype SearchParams = {\n q: string\n from?: number\n size?: number\n hydrate?: boolean\n}\n```\n\n### `SearchIDParams`\n\n```ts\ntype SearchIDParams = {\n q?: string\n}\n```\n\n### `AssigneeWorkloadParams`\n\n```ts\ntype AssigneeWorkloadParams = {\n user_ids: string[]\n}\n```\n\n### `AssigneeWorkload`\n\n```ts\ntype AssigneeWorkload = {\n user_id: string\n open_threads: number\n}\n```\n\n### `AssigneeWorkloadResults`\n\n```ts\ntype AssigneeWorkloadResults = {\n workloads: Array<{\n user_id: string\n open_threads: number\n }>\n}\n```\n\n### `ReadMessagePayload`\n\n```ts\ntype ReadMessagePayload = {\n scopes: "organization" | "user"[]\n}\n```\n\n### `ReadingScope`\n\nWho is marking an item as read or unread.\n\n```ts\ntype ReadingScope = "organization" | "user"\n```\n\n### `ThreadTimeline`\n\n```ts\ntype ThreadTimeline = {\n events: Array<{\n data: {\n type: { ... }\n user_id: { ... }\n organization_id: { ... }\n } | {\n type: { ... }\n user_id: { ... }\n organization_id: { ... }\n }\n timestamp: string\n }>\n}\n```\n\n### `ThreadDoneEvent`\n\n```ts\ntype ThreadDoneEvent = {\n type: "THREAD_DONE"\n user_id: string\n organization_id: string\n}\n```\n\n### `ThreadOpenEvent`\n\n```ts\ntype ThreadOpenEvent = {\n type: "THREAD_OPEN"\n user_id: string\n organization_id: string\n}\n```\n\n### `TimelineEventData`\n\n```ts\ntype TimelineEventData = {\n type: "THREAD_DONE"\n user_id: string\n organization_id: string\n} | {\n type: "THREAD_OPEN"\n user_id: string\n organization_id: string\n}\n```\n\n### `TimelineEvent`\n\n```ts\ntype TimelineEvent = {\n data: {\n type: "THREAD_DONE"\n user_id: string\n organization_id: string\n } | {\n type: "THREAD_OPEN"\n user_id: string\n organization_id: string\n }\n timestamp: string\n}\n```\n\n### `BulkActionsPayloadWithScopes`\n\n```ts\ntype BulkActionsPayloadWithScopes = {\n ids: string[]\n assign_to?: string[]\n inbox_id?: string\n scopes?: "organization" | "user"[]\n}\n```\n\n### `BulkActionsPayload`\n\n```ts\ntype BulkActionsPayload = {\n ids: string[]\n}\n```\n\n### `FieldsParam`\n\nList of entity fields to include or exclude in the response\n\nUse ! to exclude fields, e.g. `!_id` to exclude the `_id` field.\n\nGlobbing and globstart (**) is supported for nested fields.\n\n\n```ts\ntype FieldsParam = string[]\n```\n';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exports.default = message_default;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-NJK5F5TF.cjs');
|
|
2
|
-
|
|
3
|
-
// src/docs/metering.json
|
|
4
|
-
var metering_default = '# Metering API\n\n- **Base URL:** `https://metering.sls.epilot.io`\n- **Full API Docs:** [https://docs.epilot.io/api/metering](https://docs.epilot.io/api/metering)\n\n## Usage\n\n```ts\nimport { epilot } from \'@epilot/sdk\'\n\nepilot.authorize(() => \'<token>\')\nconst { data } = await epilot.metering.getCustomerMeters(...)\n```\n\n### Tree-shakeable import\n\n```ts\nimport { getClient, authorize } from \'@epilot/sdk/metering\'\n\nconst meteringClient = getClient()\nauthorize(meteringClient, () => \'<token>\')\nconst { data } = await meteringClient.getCustomerMeters(...)\n```\n\n## Operations\n\n**ECP**\n- [`getCustomerMeters`](#getcustomermeters)\n- [`getMetersByContractId`](#getmetersbycontractid)\n- [`updateMeter`](#updatemeter)\n- [`getMeter`](#getmeter)\n- [`getMeterCounters`](#getmetercounters)\n- [`getCounterDetails`](#getcounterdetails)\n- [`createPortalMeterReadings`](#createportalmeterreadings)\n\n**ECP Admin**\n- [`createMeterReading`](#createmeterreading)\n- [`createMeterReadings`](#createmeterreadings)\n- [`batchWriteMeterReadings`](#batchwritemeterreadings)\n- [`createMeterReadingFromSubmission`](#createmeterreadingfromsubmission)\n- [`getAllowedReadingForMeter`](#getallowedreadingformeter)\n- [`createReadingWithMeter`](#createreadingwithmeter)\n- [`getReadingsByInterval`](#getreadingsbyinterval)\n- [`updateMeterReading`](#updatemeterreading)\n- [`deleteMeterReading`](#deletemeterreading)\n\n**Metering**\n- [`getReadingChangesets`](#getreadingchangesets)\n- [`applyReadingChangeset`](#applyreadingchangeset)\n- [`dismissReadingChangeset`](#dismissreadingchangeset)\n- [`updateReadingChangeset`](#updatereadingchangeset)\n\n**Schemas**\n- [`ErrorResp`](#errorresp)\n- [`EntityId`](#entityid)\n- [`EntitySlug`](#entityslug)\n- [`BaseEntity`](#baseentity)\n- [`Entity`](#entity)\n- [`EntityItem`](#entityitem)\n- [`Id`](#id)\n- [`EntityRelation`](#entityrelation)\n- [`Meter`](#meter)\n- [`Direction`](#direction)\n- [`TariffType`](#tarifftype)\n- [`Reason`](#reason)\n- [`ReasonString`](#reasonstring)\n- [`ReadBy`](#readby)\n- [`ReadingStatus`](#readingstatus)\n- [`Reading`](#reading)\n- [`MeterReading`](#meterreading)\n- [`PortalMeterReading`](#portalmeterreading)\n- [`BatchReadingBase`](#batchreadingbase)\n- [`CreateOrUpdateBatchReading`](#createorupdatebatchreading)\n- [`DeleteBatchReading`](#deletebatchreading)\n- [`BatchReading`](#batchreading)\n- [`UpdateMeterReading`](#updatemeterreading)\n- [`MeterCounter`](#metercounter)\n- [`CounterReadingOnSubmission`](#counterreadingonsubmission)\n- [`SubmissionMeterReading`](#submissionmeterreading)\n- [`Unit`](#unit)\n- [`Source`](#source)\n- [`ActionLabel`](#actionlabel)\n- [`Rule`](#rule)\n- [`JourneyActions`](#journeyactions)\n- [`ReadingWithMeter`](#readingwithmeter)\n- [`MeterReadingChangeset`](#meterreadingchangeset)\n- [`FuzzyConfig`](#fuzzyconfig)\n- [`ProposedReading`](#proposedreading)\n- [`ChangesetCreator`](#changesetcreator)\n- [`TimestampTolerance`](#timestamptolerance)\n- [`ActivityId`](#activityid)\n\n### `getCustomerMeters`\n\nRetrieves all meters associated with the authenticated portal customer.\n\n`GET /v1/metering/meter`\n\n```ts\nconst { data } = await client.getCustomerMeters({\n include_pending_changesets: true,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "meter",\n "ma_lo_id": "A09-123",\n "status": "active",\n "meter_type": "three-phase-meter",\n "tariff_type": "Peak load tariff",\n "meter_number": "J-1093-1AK",\n "sector": "power",\n "location": [\n {\n "country": "Germany",\n "city": "Koln",\n "postal_code": 81475,\n "street": "Melateng\xFCrtel",\n "street_number": 71,\n "additional_info": "5. Etage",\n "_tags": ["billing", "delivery"]\n }\n ],\n "used_for": "Domestic Usage",\n "manufacturer": "Energy One",\n "calibration_date": "2022-10-10T00:00:00.000Z",\n "contract": {\n "$relation": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_slug": "contact"\n }\n ]\n },\n "customer": {\n "$relation": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_slug": "contact"\n }\n ]\n },\n "journey_actions": {\n "journey_id": "string",\n "action_label": {\n "en": "string",\n "de": "string"\n },\n "slug": "string",\n "rules": [\n {\n "entity": "string",\n "attribute": "string",\n "attribute_value": "string"\n }\n ]\n },\n "last_reading": "2022-10-10T00:00:00.000Z",\n "current_consumption": 100.5\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getMetersByContractId`\n\nRetrieves all meters associated with a given contract entity.\n\n`GET /v1/metering/contract/meters/{contract_id}`\n\n```ts\nconst { data } = await client.getMetersByContractId({\n contract_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "meter",\n "ma_lo_id": "A09-123",\n "status": "active",\n "meter_type": "three-phase-meter",\n "tariff_type": "Peak load tariff",\n "meter_number": "J-1093-1AK",\n "sector": "power",\n "location": [\n {\n "country": "Germany",\n "city": "Koln",\n "postal_code": 81475,\n "street": "Melateng\xFCrtel",\n "street_number": 71,\n "additional_info": "5. Etage",\n "_tags": ["billing", "delivery"]\n }\n ],\n "used_for": "Domestic Usage",\n "manufacturer": "Energy One",\n "calibration_date": "2022-10-10T00:00:00.000Z",\n "contract": {\n "$relation": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_slug": "contact"\n }\n ]\n },\n "customer": {\n "$relation": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_slug": "contact"\n }\n ]\n }\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `updateMeter`\n\nPartially updates the details of a meter entity by ID.\n\n`PATCH /v1/metering/meter/{id}`\n\n```ts\nconst { data } = await client.updateMeter(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {},\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "meter",\n "ma_lo_id": "A09-123",\n "status": "active",\n "meter_type": "three-phase-meter",\n "tariff_type": "Peak load tariff",\n "meter_number": "J-1093-1AK",\n "sector": "power",\n "location": [\n {\n "country": "Germany",\n "city": "Koln",\n "postal_code": 81475,\n "street": "Melateng\xFCrtel",\n "street_number": 71,\n "additional_info": "5. Etage",\n "_tags": ["billing", "delivery"]\n }\n ],\n "used_for": "Domestic Usage",\n "manufacturer": "Energy One",\n "calibration_date": "2022-10-10T00:00:00.000Z",\n "contract": {\n "$relation": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_slug": "contact"\n }\n ]\n },\n "customer": {\n "$relation": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_slug": "contact"\n }\n ]\n }\n }\n}\n```\n\n</details>\n\n---\n\n### `getMeter`\n\nRetrieves the full details of a specific meter by ID, including related entities and available journey actions.\n\n`GET /v1/metering/meter/{id}`\n\n```ts\nconst { data } = await client.getMeter({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "entity": {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "meter",\n "ma_lo_id": "A09-123",\n "status": "active",\n "meter_type": "three-phase-meter",\n "tariff_type": "Peak load tariff",\n "meter_number": "J-1093-1AK",\n "sector": "power",\n "location": [\n {\n "country": "Germany",\n "city": "Koln",\n "postal_code": 81475,\n "street": "Melateng\xFCrtel",\n "street_number": 71,\n "additional_info": "5. Etage",\n "_tags": ["billing", "delivery"]\n }\n ],\n "used_for": "Domestic Usage",\n "manufacturer": "Energy One",\n "calibration_date": "2022-10-10T00:00:00.000Z",\n "contract": {\n "$relation": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_slug": "contact"\n }\n ]\n },\n "customer": {\n "$relation": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_slug": "contact"\n }\n ]\n }\n },\n "journey_actions": {\n "journey_id": "string",\n "action_label": {\n "en": "string",\n "de": "string"\n },\n "slug": "string",\n "rules": [\n {\n "entity": "string",\n "attribute": "string",\n "attribute_value": "string"\n }\n ]\n },\n "relations": [\n {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z"\n }\n ]\n }\n}\n```\n\n</details>\n\n---\n\n### `getMeterCounters`\n\nRetrieves all meter counters associated with a given meter.\n\n`GET /v1/metering/counter`\n\n```ts\nconst { data } = await client.getMeterCounters({\n meter_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "meter_counter",\n "obis_number": "A-34",\n "direction": "feed-in",\n "transformer_ratio": 70,\n "unit": "string",\n "forecast_reading_value": 270,\n "forecast_as_of": "2022-12-10T00:00:00.000Z",\n "current_consumption": 240,\n "last_reading": "2022-10-10T00:00:00.000Z",\n "conversion_factor": 3,\n "tariff_type": "ht"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getCounterDetails`\n\nRetrieves the full details of a single meter counter by its ID.\n\n`GET /v1/metering/counter/{counter_id}`\n\n```ts\nconst { data } = await client.getCounterDetails({\n counter_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "meter_counter",\n "obis_number": "A-34",\n "direction": "feed-in",\n "transformer_ratio": 70,\n "unit": "string",\n "forecast_reading_value": 270,\n "forecast_as_of": "2022-12-10T00:00:00.000Z",\n "current_consumption": 240,\n "last_reading": "2022-10-10T00:00:00.000Z",\n "conversion_factor": 3,\n "tariff_type": "ht"\n }\n}\n```\n\n</details>\n\n---\n\n### `createMeterReading`\n\nInserts a new meter reading.\n\n`POST /v1/metering/reading`\n\n```ts\nconst { data } = await client.createMeterReading(\n {\n direct: true,\n },\n {\n value: 240,\n read_by: \'John Doe\',\n reason: \'\',\n meter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n counter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n direction: \'feed-in\',\n timestamp: \'2022-10-10T00:00:00.000Z\',\n source: \'ECP\',\n status: \'valid\',\n external_id: \'string\',\n remark: \'Customer reported unusual consumption\',\n metadata: {\n registration_id: \'1234567890\',\n business_unit: \'ABC\'\n },\n note: \'string\',\n unit: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "value": 240,\n "read_by": "John Doe",\n "reason": "",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "direction": "feed-in",\n "timestamp": "2022-10-10T00:00:00.000Z",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n },\n "note": "string",\n "unit": "string"\n }\n}\n```\n\n</details>\n\n---\n\n### `createMeterReadings`\n\nInserts multiple meter readings at once. Limited to 100 readings per request.\n\n`POST /v1/metering/readings`\n\n```ts\nconst { data } = await client.createMeterReadings(\n {\n async: true,\n activity_id: \'example\',\n skip_validation: true,\n direct: true,\n create_ticket: true,\n },\n {\n readings: [\n {\n value: 240,\n read_by: \'John Doe\',\n reason: \'\',\n meter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n counter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n direction: \'feed-in\',\n timestamp: \'2022-10-10T00:00:00.000Z\',\n source: \'ECP\',\n status: \'valid\',\n external_id: \'string\',\n remark: \'Customer reported unusual consumption\',\n metadata: {\n registration_id: \'1234567890\',\n business_unit: \'ABC\'\n },\n note: \'string\',\n unit: \'string\'\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "value": 240,\n "read_by": "John Doe",\n "reason": "",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "direction": "feed-in",\n "timestamp": "2022-10-10T00:00:00.000Z",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n },\n "note": "string",\n "unit": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `createPortalMeterReadings`\n\nInserts multiple meter readings at once for a given meter via the end customer portal.\nLimited to 100 readings per request.\n\n`POST /v1/metering/readings/{meter_id}`\n\n```ts\nconst { data } = await client.createPortalMeterReadings(\n {\n meter_id: \'example\',\n direct: true,\n },\n {\n readings: [\n {\n value: 240,\n read_by: \'John Doe\',\n reason: \'\',\n meter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n counter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n direction: \'feed-in\',\n timestamp: \'2022-10-10T00:00:00.000Z\',\n source: \'ECP\',\n status: \'valid\',\n external_id: \'string\',\n remark: \'Customer reported unusual consumption\',\n metadata: {\n registration_id: \'1234567890\',\n business_unit: \'ABC\'\n },\n note: \'string\',\n unit: \'string\'\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "value": 240,\n "read_by": "John Doe",\n "reason": "",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "direction": "feed-in",\n "timestamp": "2022-10-10T00:00:00.000Z",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n },\n "note": "string",\n "unit": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `batchWriteMeterReadings`\n\nUpserts or deletes multiple meter readings at once. Limited to 100 readings per request.\n\n`POST /v2/metering/readings`\n\n```ts\nconst { data } = await client.batchWriteMeterReadings(\n {\n async: true,\n skip_validation: true,\n activity_id: \'example\',\n direct: true,\n create_ticket: true,\n },\n {\n identifiers: [\'string\'],\n readings: [\n {\n meter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n counter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n direction: \'feed-in\',\n timestamp: \'2022-10-10T10:00:00Z\',\n external_id: \'string\',\n metadata: {\n registration_id: \'1234567890\',\n business_unit: \'ABC\'\n },\n operation: \'create\',\n value: 240,\n source: \'ECP\',\n read_by: \'John Doe\',\n reason: \'\',\n status: \'valid\',\n remark: \'Customer reported unusual consumption\',\n note: \'string\',\n unit: \'string\'\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "value": 240,\n "read_by": "John Doe",\n "reason": "",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "direction": "feed-in",\n "timestamp": "2022-10-10T00:00:00.000Z",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n },\n "note": "string",\n "unit": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `createMeterReadingFromSubmission`\n\nCreates meter readings from a journey submission payload.\n\n`POST /v1/metering/reading/submission`\n\n```ts\nconst { data } = await client.createMeterReadingFromSubmission(\n null,\n {\n org_id: \'123\',\n entity: {\n _org: \'123\',\n meterReadings: [\n {\n meterId: \'string\',\n readings: [\n {\n counterId: \'string\',\n direction: \'feed-in\',\n unit: \'string\',\n value: 240\n }\n ],\n readingValue: 240,\n readingDate: \'2022-10-10T10:10:00.000Z\',\n readBy: \'John Doe\',\n reason: \'\',\n maloId: \'A09-123\',\n obisNumber: \'A-34\',\n readingUnit: \'string\',\n meterType: \'one_tariff\',\n feedInValue: 240,\n feedOutValue: 240,\n htValue: 240,\n ntValue: 240\n }\n ]\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "Successfully Processed"\n}\n```\n\n</details>\n\n---\n\n### `getAllowedReadingForMeter`\n\nReturns the allowed min/max reading range for each counter of the given meter.\n\n`GET /v1/metering/allowed/reading/{meter_id}`\n\n```ts\nconst { data } = await client.getAllowedReadingForMeter({\n meter_id: \'example\',\n timestamp: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "counter_id": "string",\n "min_value": 0,\n "max_value": 0\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `createReadingWithMeter`\n\nCreates a meter reading along with meter lookup or creation by MA-LO ID and OBIS number.\n\n`POST /v1/metering/reading/with-meter`\n\n```ts\nconst { data } = await client.createReadingWithMeter(\n null,\n {\n ma_lo_id: \'A09-123\',\n meter_id: \'string\',\n obis_number: \'A-34\',\n unit: \'string\',\n direction: \'feed-in\',\n tariff_type: \'ht\',\n value: 240,\n read_by: \'John Doe\',\n reason: \'\',\n timestamp: \'2022-10-10T10:10:00.000Z\',\n source: \'ECP\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "value": 240,\n "read_by": "John Doe",\n "reason": "",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "direction": "feed-in",\n "timestamp": "2022-10-10T00:00:00.000Z",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n },\n "note": "string",\n "unit": "string"\n }\n}\n```\n\n</details>\n\n---\n\n### `getReadingsByInterval`\n\nRetrieves all readings specified in an interval.\nIf the start_date and end_date are equal, then it returns the readings of the specified date.\nThe start_date should be less than or equal to the end_da\n\n`GET /v1/metering/reading/{meter_id}/{counter_id}`\n\n```ts\nconst { data } = await client.getReadingsByInterval({\n meter_id: \'example\',\n counter_id: \'example\',\n start_date: \'example\',\n end_date: \'example\',\n direction: \'example\',\n size: 1,\n from: 1,\n type: \'example\',\n sort: \'example\',\n include_pending_changesets: true,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "value": 240,\n "read_by": "John Doe",\n "reason": "",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "direction": "feed-in",\n "timestamp": "2022-10-10T00:00:00.000Z",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n },\n "note": "string",\n "unit": "string"\n }\n ],\n "hits": 120,\n "firstRecordCreatedAt": "2022-10-01T20:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `updateMeterReading`\n\nUpdates an existing meter reading identified by meter ID, counter ID, and timestamp.\n\n`PUT /v1/metering/reading/{meter_id}/{counter_id}`\n\n```ts\nconst { data } = await client.updateMeterReading(\n {\n meter_id: \'example\',\n counter_id: \'example\',\n timestamp: \'example\',\n },\n {\n value: 240,\n read_by: \'John Doe\',\n reason: \'string\',\n meter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n counter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n direction: \'feed-in\',\n timestamp: \'2022-10-10T00:00:00.000Z\',\n source: \'ECP\',\n status: \'valid\',\n external_id: \'string\',\n remark: \'Customer reported unusual consumption\',\n metadata: {\n registration_id: \'1234567890\',\n business_unit: \'ABC\'\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "value": 240,\n "read_by": "John Doe",\n "reason": "",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "direction": "feed-in",\n "timestamp": "2022-10-10T00:00:00.000Z",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n },\n "note": "string",\n "unit": "string"\n }\n}\n```\n\n</details>\n\n---\n\n### `deleteMeterReading`\n\nPermanently deletes a meter reading identified by meter ID, counter ID, and timestamp.\n\n`DELETE /v1/metering/reading/{meter_id}/{counter_id}`\n\n```ts\nconst { data } = await client.deleteMeterReading({\n meter_id: \'example\',\n counter_id: \'example\',\n timestamp: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "meterId": "string",\n "counterId": "string",\n "timestamp": "2022-10-01T20:00:00.000Z"\n }\n}\n```\n\n</details>\n\n---\n\n### `getReadingChangesets`\n\nList pending reading changesets for a counter\n\n`GET /v1/metering/reading/{meter_id}/{counter_id}/changesets`\n\n```ts\nconst { data } = await client.getReadingChangesets({\n meter_id: \'example\',\n counter_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "changesets": [\n {\n "changeset_id": "string",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "proposed": {\n "value": 0,\n "direction": "feed-in",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "reason": "string",\n "remark": "string",\n "read_by": "string",\n "status": "valid",\n "external_id": "string"\n },\n "previous": {\n "value": 0,\n "direction": "feed-in",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "reason": "string",\n "remark": "string",\n "read_by": "string",\n "status": "valid",\n "external_id": "string"\n },\n "edit_mode": "external",\n "match_strategy": "exact",\n "timestamp_tolerance": "exact",\n "created_at": "1970-01-01T00:00:00.000Z",\n "created_by": {\n "type": "user",\n "id": "string"\n },\n "source": "360",\n "fuzzy_config": {\n "percentage_threshold": 0.01,\n "absolute_threshold": 0\n },\n "dismissed_reason": "string",\n "dismissed_at": "1970-01-01T00:00:00.000Z"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `applyReadingChangeset`\n\nApply (approve) a pending reading changeset\n\n`POST /v1/metering/reading/{meter_id}/{counter_id}/changesets/{changeset_id}:apply`\n\n```ts\nconst { data } = await client.applyReadingChangeset({\n meter_id: \'example\',\n counter_id: \'example\',\n changeset_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "reading": {\n "value": 240,\n "read_by": "John Doe",\n "reason": "",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "direction": "feed-in",\n "timestamp": "2022-10-10T00:00:00.000Z",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n },\n "note": "string",\n "unit": "string"\n },\n "changeset": {\n "changeset_id": "string",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "proposed": {\n "value": 0,\n "direction": "feed-in",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "reason": "string",\n "remark": "string",\n "read_by": "string",\n "status": "valid",\n "external_id": "string"\n },\n "previous": {\n "value": 0,\n "direction": "feed-in",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "reason": "string",\n "remark": "string",\n "read_by": "string",\n "status": "valid",\n "external_id": "string"\n },\n "edit_mode": "external",\n "match_strategy": "exact",\n "timestamp_tolerance": "exact",\n "created_at": "1970-01-01T00:00:00.000Z",\n "created_by": {\n "type": "user",\n "id": "string"\n },\n "source": "360",\n "fuzzy_config": {\n "percentage_threshold": 0.01,\n "absolute_threshold": 0\n },\n "dismissed_reason": "string",\n "dismissed_at": "1970-01-01T00:00:00.000Z"\n }\n}\n```\n\n</details>\n\n---\n\n### `dismissReadingChangeset`\n\nDismiss (reject) a pending reading changeset\n\n`POST /v1/metering/reading/{meter_id}/{counter_id}/changesets/{changeset_id}:dismiss`\n\n```ts\nconst { data } = await client.dismissReadingChangeset(\n {\n meter_id: \'example\',\n counter_id: \'example\',\n changeset_id: \'example\',\n },\n {\n reason: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "changeset_id": "string",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "proposed": {\n "value": 0,\n "direction": "feed-in",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "reason": "string",\n "remark": "string",\n "read_by": "string",\n "status": "valid",\n "external_id": "string"\n },\n "previous": {\n "value": 0,\n "direction": "feed-in",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "reason": "string",\n "remark": "string",\n "read_by": "string",\n "status": "valid",\n "external_id": "string"\n },\n "edit_mode": "external",\n "match_strategy": "exact",\n "timestamp_tolerance": "exact",\n "created_at": "1970-01-01T00:00:00.000Z",\n "created_by": {\n "type": "user",\n "id": "string"\n },\n "source": "360",\n "fuzzy_config": {\n "percentage_threshold": 0.01,\n "absolute_threshold": 0\n },\n "dismissed_reason": "string",\n "dismissed_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `updateReadingChangeset`\n\nEdit a pending reading changeset\n\n`PATCH /v1/metering/reading/{meter_id}/{counter_id}/changesets/{changeset_id}`\n\n```ts\nconst { data } = await client.updateReadingChangeset(\n {\n meter_id: \'example\',\n counter_id: \'example\',\n changeset_id: \'example\',\n },\n {\n proposed: {\n value: 0,\n direction: \'feed-in\',\n timestamp: \'1970-01-01T00:00:00.000Z\',\n reason: \'string\',\n remark: \'string\',\n read_by: \'string\',\n status: \'valid\',\n external_id: \'string\'\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "changeset_id": "string",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "proposed": {\n "value": 0,\n "direction": "feed-in",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "reason": "string",\n "remark": "string",\n "read_by": "string",\n "status": "valid",\n "external_id": "string"\n },\n "previous": {\n "value": 0,\n "direction": "feed-in",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "reason": "string",\n "remark": "string",\n "read_by": "string",\n "status": "valid",\n "external_id": "string"\n },\n "edit_mode": "external",\n "match_strategy": "exact",\n "timestamp_tolerance": "exact",\n "created_at": "1970-01-01T00:00:00.000Z",\n "created_by": {\n "type": "user",\n "id": "string"\n },\n "source": "360",\n "fuzzy_config": {\n "percentage_threshold": 0.01,\n "absolute_threshold": 0\n },\n "dismissed_reason": "string",\n "dismissed_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n## Schemas\n\n### `ErrorResp`\n\n```ts\ntype ErrorResp = {\n message?: string\n}\n```\n\n### `EntityId`\n\n```ts\ntype EntityId = string // uuid\n```\n\n### `EntitySlug`\n\nURL-friendly identifier for the entity schema\n\n```ts\ntype EntitySlug = string\n```\n\n### `BaseEntity`\n\n```ts\ntype BaseEntity = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n}\n```\n\n### `Entity`\n\n```ts\ntype Entity = Record<string, unknown>\n```\n\n### `EntityItem`\n\n```ts\ntype EntityItem = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n}\n```\n\n### `Id`\n\n```ts\ntype Id = string\n```\n\n### `EntityRelation`\n\n```ts\ntype EntityRelation = {\n entity_id?: string // uuid\n _slug?: "contact" | "contract"\n}\n```\n\n### `Meter`\n\n```ts\ntype Meter = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n _schema: "meter"\n ma_lo_id?: string\n status?: "active" | "decommissioned"\n meter_type?: "three-phase-meter" | "bellow-gas-meter" | "rotary-piston-meter" | "smart-meter" | "performance-meter" | "maximum-meter" | "turbine-gas-meter" | "ultrasonic-gas-meter" | "alternating-current-meter" | "modern-metering-system" | "intelligent-measuring-system" | "electronic-meter"\n tariff_type?: string\n meter_number?: string\n sector?: "power" | "water" | "gas" | "district_heating" | "waste_water"\n location?: object\n used_for?: string\n manufacturer?: string\n calibration_date?: string\n contract?: {\n $relation?: Array<{\n entity_id?: { ... }\n _slug?: { ... }\n }>\n }\n customer?: {\n $relation?: Array<{\n entity_id?: { ... }\n _slug?: { ... }\n }>\n }\n}\n```\n\n### `Direction`\n\n```ts\ntype Direction = "feed-in" | "feed-out"\n```\n\n### `TariffType`\n\n```ts\ntype TariffType = "ht" | "nt"\n```\n\n### `Reason`\n\nThe reason for recording the reading\nIf no reason is specified or left empty, the Epilot UI will show \'Regular\' as the default display text\n\n\n```ts\ntype Reason = "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n```\n\n### `ReasonString`\n\nThis field is deprecated. Please use the Reason enum instead.\n\n\n```ts\ntype ReasonString = string\n```\n\n### `ReadBy`\n\nThe person who recorded the reading\n\n```ts\ntype ReadBy = string\n```\n\n### `ReadingStatus`\n\n```ts\ntype ReadingStatus = "valid" | "in-validation" | "implausible" | null | ""\n```\n\n### `Reading`\n\n```ts\ntype Reading = {\n value: number\n read_by?: string\n reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n meter_id?: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n source: "ECP" | "ERP" | "360" | "journey-submission"\n status?: "valid" | "in-validation" | "implausible" | null | ""\n external_id?: string\n remark?: string\n metadata?: Record<string, string>\n note?: string\n unit?: string\n}\n```\n\n### `MeterReading`\n\n```ts\ntype MeterReading = {\n value: number\n read_by?: string\n reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n meter_id: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n source: "ECP" | "ERP" | "360" | "journey-submission"\n status?: "valid" | "in-validation" | "implausible" | null | ""\n external_id?: string\n remark?: string\n metadata?: Record<string, string>\n note?: string\n unit?: string\n}\n```\n\n### `PortalMeterReading`\n\n```ts\ntype PortalMeterReading = {\n value: number\n read_by?: string\n reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n meter_id?: string // uuid\n counter_id: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n source: "ECP" | "ERP" | "360" | "journey-submission"\n status?: "valid" | "in-validation" | "implausible" | null | ""\n external_id?: string\n remark?: string\n metadata?: Record<string, string>\n note?: string\n unit?: string\n}\n```\n\n### `BatchReadingBase`\n\nBase properties shared by all batch reading operations\n\n```ts\ntype BatchReadingBase = {\n meter_id?: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n external_id?: string\n metadata?: Record<string, string>\n}\n```\n\n### `CreateOrUpdateBatchReading`\n\nSchema for create or update operations - requires value, source, and meter_id\n\n```ts\ntype CreateOrUpdateBatchReading = {\n meter_id: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n external_id?: string\n metadata?: Record<string, string>\n operation?: "create" | "update"\n value: number\n source: "ECP" | "ERP" | "360" | "journey-submission"\n read_by?: string\n reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n status?: "valid" | "in-validation" | "implausible" | null | ""\n remark?: string\n note?: string\n unit?: string\n}\n```\n\n### `DeleteBatchReading`\n\nSchema for delete operations - only requires identifier fields specified in the identifiers parameter\n\n```ts\ntype DeleteBatchReading = {\n meter_id?: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n external_id?: string\n metadata?: Record<string, string>\n operation: "delete"\n}\n```\n\n### `BatchReading`\n\nA meter reading for batch operations. The required fields depend on the operation:\n- create/update: requires value, source, and meter_id\n- delete: only requires the fields specified in the identifiers parameter\n\n\n```ts\ntype BatchReading = {\n meter_id: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n external_id?: string\n metadata?: Record<string, string>\n operation?: "create" | "update"\n value: number\n source: "ECP" | "ERP" | "360" | "journey-submission"\n read_by?: string\n reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n status?: "valid" | "in-validation" | "implausible" | null | ""\n remark?: string\n note?: string\n unit?: string\n} | {\n meter_id?: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n external_id?: string\n metadata?: Record<string, string>\n operation: "delete"\n}\n```\n\n### `UpdateMeterReading`\n\n```ts\ntype UpdateMeterReading = {\n value: number\n read_by?: string\n reason?: string\n meter_id: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n source: "ECP" | "ERP" | "360" | "journey-submission"\n status?: "valid" | "in-validation" | "implausible" | null | ""\n external_id?: string\n remark?: string\n metadata?: Record<string, string>\n}\n```\n\n### `MeterCounter`\n\n```ts\ntype MeterCounter = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n _schema: "meter_counter"\n obis_number?: string\n direction?: "feed-in" | "feed-out"\n transformer_ratio?: number\n unit?: string\n forecast_reading_value?: string\n forecast_as_of?: string\n current_consumption?: number\n last_reading?: string\n conversion_factor?: number\n tariff_type?: "ht" | "nt"\n}\n```\n\n### `CounterReadingOnSubmission`\n\n```ts\ntype CounterReadingOnSubmission = {\n counterId: string\n direction: "feed-in" | "feed-out"\n unit?: string\n value: number\n}\n```\n\n### `SubmissionMeterReading`\n\n```ts\ntype SubmissionMeterReading = {\n meterId: string\n readings?: Array<{\n counterId: string\n direction: "feed-in" | "feed-out"\n unit?: string\n value: number\n }>\n readingValue?: number\n readingDate?: string\n readBy?: string\n reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n maloId?: string\n obisNumber?: string\n readingUnit?: string\n meterType?: "one_tariff" | "two_tariff" | "bi_directional"\n feedInValue?: number\n feedOutValue?: number\n htValue?: number\n ntValue?: number\n}\n```\n\n### `Unit`\n\n```ts\ntype Unit = string\n```\n\n### `Source`\n\n```ts\ntype Source = "ECP" | "ERP" | "360" | "journey-submission"\n```\n\n### `ActionLabel`\n\n```ts\ntype ActionLabel = {\n en?: string\n de?: string\n}\n```\n\n### `Rule`\n\n```ts\ntype Rule = {\n entity?: string\n attribute?: string\n attribute_value?: string\n}\n```\n\n### `JourneyActions`\n\n```ts\ntype JourneyActions = {\n journey_id?: string\n action_label?: {\n en?: string\n de?: string\n }\n slug?: string\n rules?: Array<{\n entity?: string\n attribute?: string\n attribute_value?: string\n }>\n}\n```\n\n### `ReadingWithMeter`\n\n```ts\ntype ReadingWithMeter = {\n ma_lo_id?: string\n meter_id?: string\n obis_number?: string\n unit?: string\n direction?: "feed-in" | "feed-out"\n tariff_type?: "ht" | "nt"\n value?: number\n read_by?: string\n reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n timestamp?: string\n source?: "ECP" | "ERP" | "360" | "journey-submission"\n}\n```\n\n### `MeterReadingChangeset`\n\n```ts\ntype MeterReadingChangeset = {\n changeset_id: string\n meter_id?: string // uuid\n counter_id?: string // uuid\n proposed: {\n value: number\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n reason?: string\n remark?: string\n read_by?: string\n status?: "valid" | "in-validation" | "implausible"\n external_id?: string\n }\n previous?: {\n value: number\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n reason?: string\n remark?: string\n read_by?: string\n status?: "valid" | "in-validation" | "implausible"\n external_id?: string\n }\n edit_mode: "external" | "approval"\n match_strategy?: "exact" | "fuzzy"\n timestamp_tolerance?: "exact" | {\n type: "same-day"\n timezone?: string\n } | {\n type: "within-seconds"\n seconds: number\n }\n created_at: string // date-time\n created_by?: {\n type?: "user" | "portal_user" | "api_client" | "automation"\n id?: string\n }\n source?: "360" | "ECP" | "ERP" | "journey-submission"\n fuzzy_config?: {\n percentage_threshold?: number\n absolute_threshold?: number\n }\n dismissed_reason?: string\n dismissed_at?: string // date-time\n}\n```\n\n### `FuzzyConfig`\n\nNumeric-threshold fuzzy matching for meter reading auto-clear.\n\nNOTE: This is intentionally different from entity-api\'s FuzzyConfig. Entity-api\'s\nfuzzy strategies (suffix, digits_only, normalize_phone, ignore_fields,\ncontains_entry, regex) are designed for strings and structured objects (IBAN, phone\n\n```ts\ntype FuzzyConfig = {\n percentage_threshold?: number\n absolute_threshold?: number\n}\n```\n\n### `ProposedReading`\n\n```ts\ntype ProposedReading = {\n value: number\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n reason?: string\n remark?: string\n read_by?: string\n status?: "valid" | "in-validation" | "implausible"\n external_id?: string\n}\n```\n\n### `ChangesetCreator`\n\n```ts\ntype ChangesetCreator = {\n type?: "user" | "portal_user" | "api_client" | "automation"\n id?: string\n}\n```\n\n### `TimestampTolerance`\n\nSlack on `reading.timestamp` when auto-clear matches an incoming reading\nagainst a pending changeset. Both sides reference the SAME physical\nmeter-read event \u2014 one as stored when the user submitted, the other as\nechoed back by the ERP. The tolerance accommodates round-trip format\ndrift between the t\n\n```ts\ntype TimestampTolerance = "exact" | {\n type: "same-day"\n timezone?: string\n} | {\n type: "within-seconds"\n seconds: number\n}\n```\n\n### `ActivityId`\n\nSee https://github.com/ulid/spec\n\n```ts\ntype ActivityId = string // ulid\n```\n';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exports.default = metering_default;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import "./chunk-YPSWSI3M.js";
|
|
2
|
-
|
|
3
|
-
// src/docs/metering.json
|
|
4
|
-
var metering_default = '# Metering API\n\n- **Base URL:** `https://metering.sls.epilot.io`\n- **Full API Docs:** [https://docs.epilot.io/api/metering](https://docs.epilot.io/api/metering)\n\n## Usage\n\n```ts\nimport { epilot } from \'@epilot/sdk\'\n\nepilot.authorize(() => \'<token>\')\nconst { data } = await epilot.metering.getCustomerMeters(...)\n```\n\n### Tree-shakeable import\n\n```ts\nimport { getClient, authorize } from \'@epilot/sdk/metering\'\n\nconst meteringClient = getClient()\nauthorize(meteringClient, () => \'<token>\')\nconst { data } = await meteringClient.getCustomerMeters(...)\n```\n\n## Operations\n\n**ECP**\n- [`getCustomerMeters`](#getcustomermeters)\n- [`getMetersByContractId`](#getmetersbycontractid)\n- [`updateMeter`](#updatemeter)\n- [`getMeter`](#getmeter)\n- [`getMeterCounters`](#getmetercounters)\n- [`getCounterDetails`](#getcounterdetails)\n- [`createPortalMeterReadings`](#createportalmeterreadings)\n\n**ECP Admin**\n- [`createMeterReading`](#createmeterreading)\n- [`createMeterReadings`](#createmeterreadings)\n- [`batchWriteMeterReadings`](#batchwritemeterreadings)\n- [`createMeterReadingFromSubmission`](#createmeterreadingfromsubmission)\n- [`getAllowedReadingForMeter`](#getallowedreadingformeter)\n- [`createReadingWithMeter`](#createreadingwithmeter)\n- [`getReadingsByInterval`](#getreadingsbyinterval)\n- [`updateMeterReading`](#updatemeterreading)\n- [`deleteMeterReading`](#deletemeterreading)\n\n**Metering**\n- [`getReadingChangesets`](#getreadingchangesets)\n- [`applyReadingChangeset`](#applyreadingchangeset)\n- [`dismissReadingChangeset`](#dismissreadingchangeset)\n- [`updateReadingChangeset`](#updatereadingchangeset)\n\n**Schemas**\n- [`ErrorResp`](#errorresp)\n- [`EntityId`](#entityid)\n- [`EntitySlug`](#entityslug)\n- [`BaseEntity`](#baseentity)\n- [`Entity`](#entity)\n- [`EntityItem`](#entityitem)\n- [`Id`](#id)\n- [`EntityRelation`](#entityrelation)\n- [`Meter`](#meter)\n- [`Direction`](#direction)\n- [`TariffType`](#tarifftype)\n- [`Reason`](#reason)\n- [`ReasonString`](#reasonstring)\n- [`ReadBy`](#readby)\n- [`ReadingStatus`](#readingstatus)\n- [`Reading`](#reading)\n- [`MeterReading`](#meterreading)\n- [`PortalMeterReading`](#portalmeterreading)\n- [`BatchReadingBase`](#batchreadingbase)\n- [`CreateOrUpdateBatchReading`](#createorupdatebatchreading)\n- [`DeleteBatchReading`](#deletebatchreading)\n- [`BatchReading`](#batchreading)\n- [`UpdateMeterReading`](#updatemeterreading)\n- [`MeterCounter`](#metercounter)\n- [`CounterReadingOnSubmission`](#counterreadingonsubmission)\n- [`SubmissionMeterReading`](#submissionmeterreading)\n- [`Unit`](#unit)\n- [`Source`](#source)\n- [`ActionLabel`](#actionlabel)\n- [`Rule`](#rule)\n- [`JourneyActions`](#journeyactions)\n- [`ReadingWithMeter`](#readingwithmeter)\n- [`MeterReadingChangeset`](#meterreadingchangeset)\n- [`FuzzyConfig`](#fuzzyconfig)\n- [`ProposedReading`](#proposedreading)\n- [`ChangesetCreator`](#changesetcreator)\n- [`TimestampTolerance`](#timestamptolerance)\n- [`ActivityId`](#activityid)\n\n### `getCustomerMeters`\n\nRetrieves all meters associated with the authenticated portal customer.\n\n`GET /v1/metering/meter`\n\n```ts\nconst { data } = await client.getCustomerMeters({\n include_pending_changesets: true,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "meter",\n "ma_lo_id": "A09-123",\n "status": "active",\n "meter_type": "three-phase-meter",\n "tariff_type": "Peak load tariff",\n "meter_number": "J-1093-1AK",\n "sector": "power",\n "location": [\n {\n "country": "Germany",\n "city": "Koln",\n "postal_code": 81475,\n "street": "Melateng\xFCrtel",\n "street_number": 71,\n "additional_info": "5. Etage",\n "_tags": ["billing", "delivery"]\n }\n ],\n "used_for": "Domestic Usage",\n "manufacturer": "Energy One",\n "calibration_date": "2022-10-10T00:00:00.000Z",\n "contract": {\n "$relation": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_slug": "contact"\n }\n ]\n },\n "customer": {\n "$relation": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_slug": "contact"\n }\n ]\n },\n "journey_actions": {\n "journey_id": "string",\n "action_label": {\n "en": "string",\n "de": "string"\n },\n "slug": "string",\n "rules": [\n {\n "entity": "string",\n "attribute": "string",\n "attribute_value": "string"\n }\n ]\n },\n "last_reading": "2022-10-10T00:00:00.000Z",\n "current_consumption": 100.5\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getMetersByContractId`\n\nRetrieves all meters associated with a given contract entity.\n\n`GET /v1/metering/contract/meters/{contract_id}`\n\n```ts\nconst { data } = await client.getMetersByContractId({\n contract_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "meter",\n "ma_lo_id": "A09-123",\n "status": "active",\n "meter_type": "three-phase-meter",\n "tariff_type": "Peak load tariff",\n "meter_number": "J-1093-1AK",\n "sector": "power",\n "location": [\n {\n "country": "Germany",\n "city": "Koln",\n "postal_code": 81475,\n "street": "Melateng\xFCrtel",\n "street_number": 71,\n "additional_info": "5. Etage",\n "_tags": ["billing", "delivery"]\n }\n ],\n "used_for": "Domestic Usage",\n "manufacturer": "Energy One",\n "calibration_date": "2022-10-10T00:00:00.000Z",\n "contract": {\n "$relation": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_slug": "contact"\n }\n ]\n },\n "customer": {\n "$relation": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_slug": "contact"\n }\n ]\n }\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `updateMeter`\n\nPartially updates the details of a meter entity by ID.\n\n`PATCH /v1/metering/meter/{id}`\n\n```ts\nconst { data } = await client.updateMeter(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {},\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "meter",\n "ma_lo_id": "A09-123",\n "status": "active",\n "meter_type": "three-phase-meter",\n "tariff_type": "Peak load tariff",\n "meter_number": "J-1093-1AK",\n "sector": "power",\n "location": [\n {\n "country": "Germany",\n "city": "Koln",\n "postal_code": 81475,\n "street": "Melateng\xFCrtel",\n "street_number": 71,\n "additional_info": "5. Etage",\n "_tags": ["billing", "delivery"]\n }\n ],\n "used_for": "Domestic Usage",\n "manufacturer": "Energy One",\n "calibration_date": "2022-10-10T00:00:00.000Z",\n "contract": {\n "$relation": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_slug": "contact"\n }\n ]\n },\n "customer": {\n "$relation": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_slug": "contact"\n }\n ]\n }\n }\n}\n```\n\n</details>\n\n---\n\n### `getMeter`\n\nRetrieves the full details of a specific meter by ID, including related entities and available journey actions.\n\n`GET /v1/metering/meter/{id}`\n\n```ts\nconst { data } = await client.getMeter({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "entity": {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "meter",\n "ma_lo_id": "A09-123",\n "status": "active",\n "meter_type": "three-phase-meter",\n "tariff_type": "Peak load tariff",\n "meter_number": "J-1093-1AK",\n "sector": "power",\n "location": [\n {\n "country": "Germany",\n "city": "Koln",\n "postal_code": 81475,\n "street": "Melateng\xFCrtel",\n "street_number": 71,\n "additional_info": "5. Etage",\n "_tags": ["billing", "delivery"]\n }\n ],\n "used_for": "Domestic Usage",\n "manufacturer": "Energy One",\n "calibration_date": "2022-10-10T00:00:00.000Z",\n "contract": {\n "$relation": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_slug": "contact"\n }\n ]\n },\n "customer": {\n "$relation": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_slug": "contact"\n }\n ]\n }\n },\n "journey_actions": {\n "journey_id": "string",\n "action_label": {\n "en": "string",\n "de": "string"\n },\n "slug": "string",\n "rules": [\n {\n "entity": "string",\n "attribute": "string",\n "attribute_value": "string"\n }\n ]\n },\n "relations": [\n {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z"\n }\n ]\n }\n}\n```\n\n</details>\n\n---\n\n### `getMeterCounters`\n\nRetrieves all meter counters associated with a given meter.\n\n`GET /v1/metering/counter`\n\n```ts\nconst { data } = await client.getMeterCounters({\n meter_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "meter_counter",\n "obis_number": "A-34",\n "direction": "feed-in",\n "transformer_ratio": 70,\n "unit": "string",\n "forecast_reading_value": 270,\n "forecast_as_of": "2022-12-10T00:00:00.000Z",\n "current_consumption": 240,\n "last_reading": "2022-10-10T00:00:00.000Z",\n "conversion_factor": 3,\n "tariff_type": "ht"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getCounterDetails`\n\nRetrieves the full details of a single meter counter by its ID.\n\n`GET /v1/metering/counter/{counter_id}`\n\n```ts\nconst { data } = await client.getCounterDetails({\n counter_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "meter_counter",\n "obis_number": "A-34",\n "direction": "feed-in",\n "transformer_ratio": 70,\n "unit": "string",\n "forecast_reading_value": 270,\n "forecast_as_of": "2022-12-10T00:00:00.000Z",\n "current_consumption": 240,\n "last_reading": "2022-10-10T00:00:00.000Z",\n "conversion_factor": 3,\n "tariff_type": "ht"\n }\n}\n```\n\n</details>\n\n---\n\n### `createMeterReading`\n\nInserts a new meter reading.\n\n`POST /v1/metering/reading`\n\n```ts\nconst { data } = await client.createMeterReading(\n {\n direct: true,\n },\n {\n value: 240,\n read_by: \'John Doe\',\n reason: \'\',\n meter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n counter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n direction: \'feed-in\',\n timestamp: \'2022-10-10T00:00:00.000Z\',\n source: \'ECP\',\n status: \'valid\',\n external_id: \'string\',\n remark: \'Customer reported unusual consumption\',\n metadata: {\n registration_id: \'1234567890\',\n business_unit: \'ABC\'\n },\n note: \'string\',\n unit: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "value": 240,\n "read_by": "John Doe",\n "reason": "",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "direction": "feed-in",\n "timestamp": "2022-10-10T00:00:00.000Z",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n },\n "note": "string",\n "unit": "string"\n }\n}\n```\n\n</details>\n\n---\n\n### `createMeterReadings`\n\nInserts multiple meter readings at once. Limited to 100 readings per request.\n\n`POST /v1/metering/readings`\n\n```ts\nconst { data } = await client.createMeterReadings(\n {\n async: true,\n activity_id: \'example\',\n skip_validation: true,\n direct: true,\n create_ticket: true,\n },\n {\n readings: [\n {\n value: 240,\n read_by: \'John Doe\',\n reason: \'\',\n meter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n counter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n direction: \'feed-in\',\n timestamp: \'2022-10-10T00:00:00.000Z\',\n source: \'ECP\',\n status: \'valid\',\n external_id: \'string\',\n remark: \'Customer reported unusual consumption\',\n metadata: {\n registration_id: \'1234567890\',\n business_unit: \'ABC\'\n },\n note: \'string\',\n unit: \'string\'\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "value": 240,\n "read_by": "John Doe",\n "reason": "",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "direction": "feed-in",\n "timestamp": "2022-10-10T00:00:00.000Z",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n },\n "note": "string",\n "unit": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `createPortalMeterReadings`\n\nInserts multiple meter readings at once for a given meter via the end customer portal.\nLimited to 100 readings per request.\n\n`POST /v1/metering/readings/{meter_id}`\n\n```ts\nconst { data } = await client.createPortalMeterReadings(\n {\n meter_id: \'example\',\n direct: true,\n },\n {\n readings: [\n {\n value: 240,\n read_by: \'John Doe\',\n reason: \'\',\n meter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n counter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n direction: \'feed-in\',\n timestamp: \'2022-10-10T00:00:00.000Z\',\n source: \'ECP\',\n status: \'valid\',\n external_id: \'string\',\n remark: \'Customer reported unusual consumption\',\n metadata: {\n registration_id: \'1234567890\',\n business_unit: \'ABC\'\n },\n note: \'string\',\n unit: \'string\'\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "value": 240,\n "read_by": "John Doe",\n "reason": "",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "direction": "feed-in",\n "timestamp": "2022-10-10T00:00:00.000Z",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n },\n "note": "string",\n "unit": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `batchWriteMeterReadings`\n\nUpserts or deletes multiple meter readings at once. Limited to 100 readings per request.\n\n`POST /v2/metering/readings`\n\n```ts\nconst { data } = await client.batchWriteMeterReadings(\n {\n async: true,\n skip_validation: true,\n activity_id: \'example\',\n direct: true,\n create_ticket: true,\n },\n {\n identifiers: [\'string\'],\n readings: [\n {\n meter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n counter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n direction: \'feed-in\',\n timestamp: \'2022-10-10T10:00:00Z\',\n external_id: \'string\',\n metadata: {\n registration_id: \'1234567890\',\n business_unit: \'ABC\'\n },\n operation: \'create\',\n value: 240,\n source: \'ECP\',\n read_by: \'John Doe\',\n reason: \'\',\n status: \'valid\',\n remark: \'Customer reported unusual consumption\',\n note: \'string\',\n unit: \'string\'\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "value": 240,\n "read_by": "John Doe",\n "reason": "",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "direction": "feed-in",\n "timestamp": "2022-10-10T00:00:00.000Z",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n },\n "note": "string",\n "unit": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `createMeterReadingFromSubmission`\n\nCreates meter readings from a journey submission payload.\n\n`POST /v1/metering/reading/submission`\n\n```ts\nconst { data } = await client.createMeterReadingFromSubmission(\n null,\n {\n org_id: \'123\',\n entity: {\n _org: \'123\',\n meterReadings: [\n {\n meterId: \'string\',\n readings: [\n {\n counterId: \'string\',\n direction: \'feed-in\',\n unit: \'string\',\n value: 240\n }\n ],\n readingValue: 240,\n readingDate: \'2022-10-10T10:10:00.000Z\',\n readBy: \'John Doe\',\n reason: \'\',\n maloId: \'A09-123\',\n obisNumber: \'A-34\',\n readingUnit: \'string\',\n meterType: \'one_tariff\',\n feedInValue: 240,\n feedOutValue: 240,\n htValue: 240,\n ntValue: 240\n }\n ]\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "Successfully Processed"\n}\n```\n\n</details>\n\n---\n\n### `getAllowedReadingForMeter`\n\nReturns the allowed min/max reading range for each counter of the given meter.\n\n`GET /v1/metering/allowed/reading/{meter_id}`\n\n```ts\nconst { data } = await client.getAllowedReadingForMeter({\n meter_id: \'example\',\n timestamp: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "counter_id": "string",\n "min_value": 0,\n "max_value": 0\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `createReadingWithMeter`\n\nCreates a meter reading along with meter lookup or creation by MA-LO ID and OBIS number.\n\n`POST /v1/metering/reading/with-meter`\n\n```ts\nconst { data } = await client.createReadingWithMeter(\n null,\n {\n ma_lo_id: \'A09-123\',\n meter_id: \'string\',\n obis_number: \'A-34\',\n unit: \'string\',\n direction: \'feed-in\',\n tariff_type: \'ht\',\n value: 240,\n read_by: \'John Doe\',\n reason: \'\',\n timestamp: \'2022-10-10T10:10:00.000Z\',\n source: \'ECP\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "value": 240,\n "read_by": "John Doe",\n "reason": "",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "direction": "feed-in",\n "timestamp": "2022-10-10T00:00:00.000Z",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n },\n "note": "string",\n "unit": "string"\n }\n}\n```\n\n</details>\n\n---\n\n### `getReadingsByInterval`\n\nRetrieves all readings specified in an interval.\nIf the start_date and end_date are equal, then it returns the readings of the specified date.\nThe start_date should be less than or equal to the end_da\n\n`GET /v1/metering/reading/{meter_id}/{counter_id}`\n\n```ts\nconst { data } = await client.getReadingsByInterval({\n meter_id: \'example\',\n counter_id: \'example\',\n start_date: \'example\',\n end_date: \'example\',\n direction: \'example\',\n size: 1,\n from: 1,\n type: \'example\',\n sort: \'example\',\n include_pending_changesets: true,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "value": 240,\n "read_by": "John Doe",\n "reason": "",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "direction": "feed-in",\n "timestamp": "2022-10-10T00:00:00.000Z",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n },\n "note": "string",\n "unit": "string"\n }\n ],\n "hits": 120,\n "firstRecordCreatedAt": "2022-10-01T20:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `updateMeterReading`\n\nUpdates an existing meter reading identified by meter ID, counter ID, and timestamp.\n\n`PUT /v1/metering/reading/{meter_id}/{counter_id}`\n\n```ts\nconst { data } = await client.updateMeterReading(\n {\n meter_id: \'example\',\n counter_id: \'example\',\n timestamp: \'example\',\n },\n {\n value: 240,\n read_by: \'John Doe\',\n reason: \'string\',\n meter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n counter_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n direction: \'feed-in\',\n timestamp: \'2022-10-10T00:00:00.000Z\',\n source: \'ECP\',\n status: \'valid\',\n external_id: \'string\',\n remark: \'Customer reported unusual consumption\',\n metadata: {\n registration_id: \'1234567890\',\n business_unit: \'ABC\'\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "value": 240,\n "read_by": "John Doe",\n "reason": "",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "direction": "feed-in",\n "timestamp": "2022-10-10T00:00:00.000Z",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n },\n "note": "string",\n "unit": "string"\n }\n}\n```\n\n</details>\n\n---\n\n### `deleteMeterReading`\n\nPermanently deletes a meter reading identified by meter ID, counter ID, and timestamp.\n\n`DELETE /v1/metering/reading/{meter_id}/{counter_id}`\n\n```ts\nconst { data } = await client.deleteMeterReading({\n meter_id: \'example\',\n counter_id: \'example\',\n timestamp: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "meterId": "string",\n "counterId": "string",\n "timestamp": "2022-10-01T20:00:00.000Z"\n }\n}\n```\n\n</details>\n\n---\n\n### `getReadingChangesets`\n\nList pending reading changesets for a counter\n\n`GET /v1/metering/reading/{meter_id}/{counter_id}/changesets`\n\n```ts\nconst { data } = await client.getReadingChangesets({\n meter_id: \'example\',\n counter_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "changesets": [\n {\n "changeset_id": "string",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "proposed": {\n "value": 0,\n "direction": "feed-in",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "reason": "string",\n "remark": "string",\n "read_by": "string",\n "status": "valid",\n "external_id": "string"\n },\n "previous": {\n "value": 0,\n "direction": "feed-in",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "reason": "string",\n "remark": "string",\n "read_by": "string",\n "status": "valid",\n "external_id": "string"\n },\n "edit_mode": "external",\n "match_strategy": "exact",\n "timestamp_tolerance": "exact",\n "created_at": "1970-01-01T00:00:00.000Z",\n "created_by": {\n "type": "user",\n "id": "string"\n },\n "source": "360",\n "fuzzy_config": {\n "percentage_threshold": 0.01,\n "absolute_threshold": 0\n },\n "dismissed_reason": "string",\n "dismissed_at": "1970-01-01T00:00:00.000Z"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `applyReadingChangeset`\n\nApply (approve) a pending reading changeset\n\n`POST /v1/metering/reading/{meter_id}/{counter_id}/changesets/{changeset_id}:apply`\n\n```ts\nconst { data } = await client.applyReadingChangeset({\n meter_id: \'example\',\n counter_id: \'example\',\n changeset_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "reading": {\n "value": 240,\n "read_by": "John Doe",\n "reason": "",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "direction": "feed-in",\n "timestamp": "2022-10-10T00:00:00.000Z",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n },\n "note": "string",\n "unit": "string"\n },\n "changeset": {\n "changeset_id": "string",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "proposed": {\n "value": 0,\n "direction": "feed-in",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "reason": "string",\n "remark": "string",\n "read_by": "string",\n "status": "valid",\n "external_id": "string"\n },\n "previous": {\n "value": 0,\n "direction": "feed-in",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "reason": "string",\n "remark": "string",\n "read_by": "string",\n "status": "valid",\n "external_id": "string"\n },\n "edit_mode": "external",\n "match_strategy": "exact",\n "timestamp_tolerance": "exact",\n "created_at": "1970-01-01T00:00:00.000Z",\n "created_by": {\n "type": "user",\n "id": "string"\n },\n "source": "360",\n "fuzzy_config": {\n "percentage_threshold": 0.01,\n "absolute_threshold": 0\n },\n "dismissed_reason": "string",\n "dismissed_at": "1970-01-01T00:00:00.000Z"\n }\n}\n```\n\n</details>\n\n---\n\n### `dismissReadingChangeset`\n\nDismiss (reject) a pending reading changeset\n\n`POST /v1/metering/reading/{meter_id}/{counter_id}/changesets/{changeset_id}:dismiss`\n\n```ts\nconst { data } = await client.dismissReadingChangeset(\n {\n meter_id: \'example\',\n counter_id: \'example\',\n changeset_id: \'example\',\n },\n {\n reason: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "changeset_id": "string",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "proposed": {\n "value": 0,\n "direction": "feed-in",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "reason": "string",\n "remark": "string",\n "read_by": "string",\n "status": "valid",\n "external_id": "string"\n },\n "previous": {\n "value": 0,\n "direction": "feed-in",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "reason": "string",\n "remark": "string",\n "read_by": "string",\n "status": "valid",\n "external_id": "string"\n },\n "edit_mode": "external",\n "match_strategy": "exact",\n "timestamp_tolerance": "exact",\n "created_at": "1970-01-01T00:00:00.000Z",\n "created_by": {\n "type": "user",\n "id": "string"\n },\n "source": "360",\n "fuzzy_config": {\n "percentage_threshold": 0.01,\n "absolute_threshold": 0\n },\n "dismissed_reason": "string",\n "dismissed_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `updateReadingChangeset`\n\nEdit a pending reading changeset\n\n`PATCH /v1/metering/reading/{meter_id}/{counter_id}/changesets/{changeset_id}`\n\n```ts\nconst { data } = await client.updateReadingChangeset(\n {\n meter_id: \'example\',\n counter_id: \'example\',\n changeset_id: \'example\',\n },\n {\n proposed: {\n value: 0,\n direction: \'feed-in\',\n timestamp: \'1970-01-01T00:00:00.000Z\',\n reason: \'string\',\n remark: \'string\',\n read_by: \'string\',\n status: \'valid\',\n external_id: \'string\'\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "changeset_id": "string",\n "meter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "counter_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "proposed": {\n "value": 0,\n "direction": "feed-in",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "reason": "string",\n "remark": "string",\n "read_by": "string",\n "status": "valid",\n "external_id": "string"\n },\n "previous": {\n "value": 0,\n "direction": "feed-in",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "reason": "string",\n "remark": "string",\n "read_by": "string",\n "status": "valid",\n "external_id": "string"\n },\n "edit_mode": "external",\n "match_strategy": "exact",\n "timestamp_tolerance": "exact",\n "created_at": "1970-01-01T00:00:00.000Z",\n "created_by": {\n "type": "user",\n "id": "string"\n },\n "source": "360",\n "fuzzy_config": {\n "percentage_threshold": 0.01,\n "absolute_threshold": 0\n },\n "dismissed_reason": "string",\n "dismissed_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n## Schemas\n\n### `ErrorResp`\n\n```ts\ntype ErrorResp = {\n message?: string\n}\n```\n\n### `EntityId`\n\n```ts\ntype EntityId = string // uuid\n```\n\n### `EntitySlug`\n\nURL-friendly identifier for the entity schema\n\n```ts\ntype EntitySlug = string\n```\n\n### `BaseEntity`\n\n```ts\ntype BaseEntity = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n}\n```\n\n### `Entity`\n\n```ts\ntype Entity = Record<string, unknown>\n```\n\n### `EntityItem`\n\n```ts\ntype EntityItem = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n}\n```\n\n### `Id`\n\n```ts\ntype Id = string\n```\n\n### `EntityRelation`\n\n```ts\ntype EntityRelation = {\n entity_id?: string // uuid\n _slug?: "contact" | "contract"\n}\n```\n\n### `Meter`\n\n```ts\ntype Meter = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n _schema: "meter"\n ma_lo_id?: string\n status?: "active" | "decommissioned"\n meter_type?: "three-phase-meter" | "bellow-gas-meter" | "rotary-piston-meter" | "smart-meter" | "performance-meter" | "maximum-meter" | "turbine-gas-meter" | "ultrasonic-gas-meter" | "alternating-current-meter" | "modern-metering-system" | "intelligent-measuring-system" | "electronic-meter"\n tariff_type?: string\n meter_number?: string\n sector?: "power" | "water" | "gas" | "district_heating" | "waste_water"\n location?: object\n used_for?: string\n manufacturer?: string\n calibration_date?: string\n contract?: {\n $relation?: Array<{\n entity_id?: { ... }\n _slug?: { ... }\n }>\n }\n customer?: {\n $relation?: Array<{\n entity_id?: { ... }\n _slug?: { ... }\n }>\n }\n}\n```\n\n### `Direction`\n\n```ts\ntype Direction = "feed-in" | "feed-out"\n```\n\n### `TariffType`\n\n```ts\ntype TariffType = "ht" | "nt"\n```\n\n### `Reason`\n\nThe reason for recording the reading\nIf no reason is specified or left empty, the Epilot UI will show \'Regular\' as the default display text\n\n\n```ts\ntype Reason = "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n```\n\n### `ReasonString`\n\nThis field is deprecated. Please use the Reason enum instead.\n\n\n```ts\ntype ReasonString = string\n```\n\n### `ReadBy`\n\nThe person who recorded the reading\n\n```ts\ntype ReadBy = string\n```\n\n### `ReadingStatus`\n\n```ts\ntype ReadingStatus = "valid" | "in-validation" | "implausible" | null | ""\n```\n\n### `Reading`\n\n```ts\ntype Reading = {\n value: number\n read_by?: string\n reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n meter_id?: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n source: "ECP" | "ERP" | "360" | "journey-submission"\n status?: "valid" | "in-validation" | "implausible" | null | ""\n external_id?: string\n remark?: string\n metadata?: Record<string, string>\n note?: string\n unit?: string\n}\n```\n\n### `MeterReading`\n\n```ts\ntype MeterReading = {\n value: number\n read_by?: string\n reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n meter_id: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n source: "ECP" | "ERP" | "360" | "journey-submission"\n status?: "valid" | "in-validation" | "implausible" | null | ""\n external_id?: string\n remark?: string\n metadata?: Record<string, string>\n note?: string\n unit?: string\n}\n```\n\n### `PortalMeterReading`\n\n```ts\ntype PortalMeterReading = {\n value: number\n read_by?: string\n reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n meter_id?: string // uuid\n counter_id: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n source: "ECP" | "ERP" | "360" | "journey-submission"\n status?: "valid" | "in-validation" | "implausible" | null | ""\n external_id?: string\n remark?: string\n metadata?: Record<string, string>\n note?: string\n unit?: string\n}\n```\n\n### `BatchReadingBase`\n\nBase properties shared by all batch reading operations\n\n```ts\ntype BatchReadingBase = {\n meter_id?: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n external_id?: string\n metadata?: Record<string, string>\n}\n```\n\n### `CreateOrUpdateBatchReading`\n\nSchema for create or update operations - requires value, source, and meter_id\n\n```ts\ntype CreateOrUpdateBatchReading = {\n meter_id: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n external_id?: string\n metadata?: Record<string, string>\n operation?: "create" | "update"\n value: number\n source: "ECP" | "ERP" | "360" | "journey-submission"\n read_by?: string\n reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n status?: "valid" | "in-validation" | "implausible" | null | ""\n remark?: string\n note?: string\n unit?: string\n}\n```\n\n### `DeleteBatchReading`\n\nSchema for delete operations - only requires identifier fields specified in the identifiers parameter\n\n```ts\ntype DeleteBatchReading = {\n meter_id?: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n external_id?: string\n metadata?: Record<string, string>\n operation: "delete"\n}\n```\n\n### `BatchReading`\n\nA meter reading for batch operations. The required fields depend on the operation:\n- create/update: requires value, source, and meter_id\n- delete: only requires the fields specified in the identifiers parameter\n\n\n```ts\ntype BatchReading = {\n meter_id: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n external_id?: string\n metadata?: Record<string, string>\n operation?: "create" | "update"\n value: number\n source: "ECP" | "ERP" | "360" | "journey-submission"\n read_by?: string\n reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n status?: "valid" | "in-validation" | "implausible" | null | ""\n remark?: string\n note?: string\n unit?: string\n} | {\n meter_id?: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n external_id?: string\n metadata?: Record<string, string>\n operation: "delete"\n}\n```\n\n### `UpdateMeterReading`\n\n```ts\ntype UpdateMeterReading = {\n value: number\n read_by?: string\n reason?: string\n meter_id: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n source: "ECP" | "ERP" | "360" | "journey-submission"\n status?: "valid" | "in-validation" | "implausible" | null | ""\n external_id?: string\n remark?: string\n metadata?: Record<string, string>\n}\n```\n\n### `MeterCounter`\n\n```ts\ntype MeterCounter = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n _schema: "meter_counter"\n obis_number?: string\n direction?: "feed-in" | "feed-out"\n transformer_ratio?: number\n unit?: string\n forecast_reading_value?: string\n forecast_as_of?: string\n current_consumption?: number\n last_reading?: string\n conversion_factor?: number\n tariff_type?: "ht" | "nt"\n}\n```\n\n### `CounterReadingOnSubmission`\n\n```ts\ntype CounterReadingOnSubmission = {\n counterId: string\n direction: "feed-in" | "feed-out"\n unit?: string\n value: number\n}\n```\n\n### `SubmissionMeterReading`\n\n```ts\ntype SubmissionMeterReading = {\n meterId: string\n readings?: Array<{\n counterId: string\n direction: "feed-in" | "feed-out"\n unit?: string\n value: number\n }>\n readingValue?: number\n readingDate?: string\n readBy?: string\n reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n maloId?: string\n obisNumber?: string\n readingUnit?: string\n meterType?: "one_tariff" | "two_tariff" | "bi_directional"\n feedInValue?: number\n feedOutValue?: number\n htValue?: number\n ntValue?: number\n}\n```\n\n### `Unit`\n\n```ts\ntype Unit = string\n```\n\n### `Source`\n\n```ts\ntype Source = "ECP" | "ERP" | "360" | "journey-submission"\n```\n\n### `ActionLabel`\n\n```ts\ntype ActionLabel = {\n en?: string\n de?: string\n}\n```\n\n### `Rule`\n\n```ts\ntype Rule = {\n entity?: string\n attribute?: string\n attribute_value?: string\n}\n```\n\n### `JourneyActions`\n\n```ts\ntype JourneyActions = {\n journey_id?: string\n action_label?: {\n en?: string\n de?: string\n }\n slug?: string\n rules?: Array<{\n entity?: string\n attribute?: string\n attribute_value?: string\n }>\n}\n```\n\n### `ReadingWithMeter`\n\n```ts\ntype ReadingWithMeter = {\n ma_lo_id?: string\n meter_id?: string\n obis_number?: string\n unit?: string\n direction?: "feed-in" | "feed-out"\n tariff_type?: "ht" | "nt"\n value?: number\n read_by?: string\n reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n timestamp?: string\n source?: "ECP" | "ERP" | "360" | "journey-submission"\n}\n```\n\n### `MeterReadingChangeset`\n\n```ts\ntype MeterReadingChangeset = {\n changeset_id: string\n meter_id?: string // uuid\n counter_id?: string // uuid\n proposed: {\n value: number\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n reason?: string\n remark?: string\n read_by?: string\n status?: "valid" | "in-validation" | "implausible"\n external_id?: string\n }\n previous?: {\n value: number\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n reason?: string\n remark?: string\n read_by?: string\n status?: "valid" | "in-validation" | "implausible"\n external_id?: string\n }\n edit_mode: "external" | "approval"\n match_strategy?: "exact" | "fuzzy"\n timestamp_tolerance?: "exact" | {\n type: "same-day"\n timezone?: string\n } | {\n type: "within-seconds"\n seconds: number\n }\n created_at: string // date-time\n created_by?: {\n type?: "user" | "portal_user" | "api_client" | "automation"\n id?: string\n }\n source?: "360" | "ECP" | "ERP" | "journey-submission"\n fuzzy_config?: {\n percentage_threshold?: number\n absolute_threshold?: number\n }\n dismissed_reason?: string\n dismissed_at?: string // date-time\n}\n```\n\n### `FuzzyConfig`\n\nNumeric-threshold fuzzy matching for meter reading auto-clear.\n\nNOTE: This is intentionally different from entity-api\'s FuzzyConfig. Entity-api\'s\nfuzzy strategies (suffix, digits_only, normalize_phone, ignore_fields,\ncontains_entry, regex) are designed for strings and structured objects (IBAN, phone\n\n```ts\ntype FuzzyConfig = {\n percentage_threshold?: number\n absolute_threshold?: number\n}\n```\n\n### `ProposedReading`\n\n```ts\ntype ProposedReading = {\n value: number\n direction?: "feed-in" | "feed-out"\n timestamp?: string // date-time\n reason?: string\n remark?: string\n read_by?: string\n status?: "valid" | "in-validation" | "implausible"\n external_id?: string\n}\n```\n\n### `ChangesetCreator`\n\n```ts\ntype ChangesetCreator = {\n type?: "user" | "portal_user" | "api_client" | "automation"\n id?: string\n}\n```\n\n### `TimestampTolerance`\n\nSlack on `reading.timestamp` when auto-clear matches an incoming reading\nagainst a pending changeset. Both sides reference the SAME physical\nmeter-read event \u2014 one as stored when the user submitted, the other as\nechoed back by the ERP. The tolerance accommodates round-trip format\ndrift between the t\n\n```ts\ntype TimestampTolerance = "exact" | {\n type: "same-day"\n timezone?: string\n} | {\n type: "within-seconds"\n seconds: number\n}\n```\n\n### `ActivityId`\n\nSee https://github.com/ulid/spec\n\n```ts\ntype ActivityId = string // ulid\n```\n';
|
|
5
|
-
export {
|
|
6
|
-
metering_default as default
|
|
7
|
-
};
|