{
  "api": "cf-internal-js-api",
  "docsBaseUrl": "https://documentation.opengate.es/",
  "functions": [
    {
      "id": "iec102.validCatalogParams",
      "internal": true,
      "kind": "function",
      "name": "validCatalogParams",
      "namespace": "iec102",
      "page": {
        "title": "IEC102 JS Internal API guide",
        "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/",
        "weight": 80
      },
      "signature": "iec102.validCatalogParams()",
      "summary": "Parse operation parameters to check if they are valid catalog parameters for ASDUs calculation. This method is used internally to check if it is possible to calculate period and asdusToExec automatically from operations params.",
      "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/#iec102validcatalogparams"
    },
    {
      "examples": [
        {
          "code": "{\n    \"inital\": 1698793200000,\n    \"final\": 1701298800000\n}",
          "language": "json"
        },
        {
          "code": "var period = iec102.getPeriodFromParams();",
          "language": "javascript"
        }
      ],
      "id": "iec102.getPeriodFromParams",
      "internal": true,
      "kind": "function",
      "name": "getPeriodFromParams",
      "namespace": "iec102",
      "page": {
        "title": "IEC102 JS Internal API guide",
        "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/",
        "weight": 80
      },
      "returns": {
        "description": "Object"
      },
      "signature": "iec102.getPeriodFromParams()",
      "summary": "Auxiliary function to calculate period object. This method only works if operations parameters match catalog parameters. It uses iec102.referenceTime and operation parameters.",
      "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/#iec102getperiodfromparams"
    },
    {
      "examples": [
        {
          "code": "var speed = iec102.speed();",
          "language": "javascript"
        }
      ],
      "id": "iec102.speed",
      "internal": true,
      "kind": "function",
      "name": "speed",
      "namespace": "iec102",
      "page": {
        "title": "IEC102 JS Internal API guide",
        "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/",
        "weight": 80
      },
      "returns": {
        "description": "number"
      },
      "signature": "iec102.speed()",
      "summary": "Auxiliary function internally used to calculate connection speed.",
      "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/#iec102speed"
    },
    {
      "examples": [
        {
          "code": "var carrier = iec102.carrier();",
          "language": "javascript"
        }
      ],
      "id": "iec102.carrier",
      "internal": true,
      "kind": "function",
      "name": "carrier",
      "namespace": "iec102",
      "page": {
        "title": "IEC102 JS Internal API guide",
        "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/",
        "weight": 80
      },
      "returns": {
        "description": "number"
      },
      "signature": "iec102.carrier()",
      "summary": "Auxiliary function internally used to calculate carrier value.",
      "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/#iec102carrier"
    },
    {
      "examples": [
        {
          "code": "var mustExecute = iec102.mustExecute('provision.device.identifier', 1698793200000, 1701298800000);",
          "language": "javascript"
        }
      ],
      "id": "iec102.mustExecute",
      "internal": true,
      "kind": "function",
      "name": "mustExecute",
      "namespace": "iec102",
      "page": {
        "title": "IEC102 JS Internal API guide",
        "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/",
        "weight": 80
      },
      "params": [
        {
          "description": "Datastream id to be checked",
          "name": "ds",
          "type": "string"
        },
        {
          "description": "Initial time reference",
          "name": "periodInitialTime",
          "type": "number"
        },
        {
          "description": "Final time reference",
          "name": "periodFinalTime",
          "type": "number"
        }
      ],
      "returns": {
        "description": "boolean"
      },
      "signature": "iec102.mustExecute(ds, periodInitialTime, periodFinalTime)",
      "summary": "Auxiliary function internally used to calculate if some asdu must be executed when defining ASDUs from operation parameters. It will be checked if the collected datastream fits specific conditions.",
      "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/#iec102mustexecuteds-periodinitialtime-periodfinaltime"
    },
    {
      "examples": [
        {
          "code": "var selectedSteps = iec102.getSelectedSteps();",
          "language": "javascript"
        }
      ],
      "id": "iec102.getSelectedSteps",
      "internal": true,
      "kind": "function",
      "name": "getSelectedSteps",
      "namespace": "iec102",
      "page": {
        "title": "IEC102 JS Internal API guide",
        "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/",
        "weight": 80
      },
      "returns": {
        "description": "array"
      },
      "signature": "iec102.getSelectedSteps()",
      "summary": "Auxiliary function internally used get an array with the names of steps to be executed for current operation. It matches operations steps list and defined ASDUs to be executed.",
      "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/#iec102getselectedsteps"
    },
    {
      "id": "iec102.skipAllSelectedSteps",
      "internal": true,
      "kind": "function",
      "name": "skipAllSelectedSteps",
      "namespace": "iec102",
      "page": {
        "title": "IEC102 JS Internal API guide",
        "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/",
        "weight": 80
      },
      "params": [
        {
          "description": "Datastream id to be collected to indicate reading state.",
          "name": "ds",
          "type": "string"
        },
        {
          "description": "Description to be added to skipped step",
          "name": "stepDescription",
          "type": "string"
        }
      ],
      "signature": "iec102.skipAllSelectedSteps(ds, stepDescription)",
      "summary": "Auxiliary function internally used set in the response the steps that are skipped.",
      "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/#iec102skipallselectedstepsds-stepdescription"
    },
    {
      "examples": [
        {
          "code": "var unreadOperation = iec102.unreadOperation();",
          "language": "javascript"
        }
      ],
      "id": "iec102.unreadOperation",
      "internal": true,
      "kind": "function",
      "name": "unreadOperation",
      "namespace": "iec102",
      "page": {
        "title": "IEC102 JS Internal API guide",
        "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/",
        "weight": 80
      },
      "returns": {
        "description": "boolean"
      },
      "signature": "iec102.unreadOperation()",
      "summary": "Auxiliary function internally to calculate if reading state to be collected is UNREAD.",
      "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/#iec102unreadoperation"
    },
    {
      "examples": [
        {
          "code": "iec102.asdus.processStep(stepBehaviour, asduResult);",
          "language": "javascript"
        }
      ],
      "id": "iec102.asdus.processStep",
      "internal": true,
      "kind": "function",
      "name": "processStep",
      "namespace": "iec102.asdus",
      "page": {
        "title": "IEC102 JS Internal API guide",
        "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/",
        "weight": 80
      },
      "params": [
        {
          "description": "json with step name parameter and send specification",
          "name": "stepBehaviour",
          "type": "Object"
        },
        {
          "description": "ASDU execution result",
          "name": "asduResult",
          "type": "Object"
        }
      ],
      "signature": "iec102.asdus.processStep(stepBehaviour, asduResult)",
      "summary": "Auxiliary function to fill response step for specific ASDU and send it if specified in stepBehaviour",
      "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/#iec102asdusprocessstepstepbehaviour-asduresult"
    },
    {
      "id": "iec102.generateLoadCurveArrayDatastream",
      "internal": true,
      "kind": "function",
      "name": "generateLoadCurveArrayDatastream",
      "namespace": "iec102",
      "page": {
        "title": "IEC102 JS Internal API guide",
        "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/",
        "weight": 80
      },
      "params": [
        {
          "description": "Name of datastream the datastream to be added to collection",
          "name": "arrayId",
          "type": "string"
        },
        {
          "description": "Datastream object previously added to collection to get the values to use to build the array",
          "name": "sourceDatastream",
          "type": "string"
        },
        {
          "description": "ASDU execution result. Used to calculate sourceInfo value",
          "name": "asduResult",
          "type": "Object"
        },
        {
          "description": "Period initial time. Used to calculate array elements number",
          "name": "initialTime",
          "type": "number"
        },
        {
          "description": "Period initial time. Used to set datapoint at field",
          "name": "finalTime",
          "type": "number"
        },
        {
          "description": "Used to calculate array elements",
          "name": "totalDays",
          "type": "number"
        }
      ],
      "signature": "iec102.generateLoadCurveArrayDatastream(arrayId, sourceDatastream, asduResult, initialTime, finalTime, totalDays)",
      "summary": "Creates an array with values retrieved from load curve ASDUS. Finally created array is added to collection object.",
      "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/#iec102generateloadcurvearraydatastreamarrayid-sourcedatastream-asduresult-initialtime-finaltime-totaldays"
    },
    {
      "id": "iec102.generateArrayDatastream",
      "internal": true,
      "kind": "function",
      "name": "generateArrayDatastream",
      "namespace": "iec102",
      "page": {
        "title": "IEC102 JS Internal API guide",
        "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/",
        "weight": 80
      },
      "params": [
        {
          "description": "Name of datastream the datastream to be added to collection",
          "name": "arrayId",
          "type": "string"
        },
        {
          "description": "Datastream object previously added to collection to get the values to use to build the array",
          "name": "sourceDatastream",
          "type": "string"
        },
        {
          "description": "ASDU execution result. Used to calculate sourceInfo value",
          "name": "asduResult",
          "type": "Object"
        },
        {
          "description": "Period initial time. Used to calculate array elements number",
          "name": "initialTime",
          "type": "number"
        },
        {
          "description": "Period initial time. Used to set datapoint at field",
          "name": "finalTime",
          "type": "number"
        },
        {
          "description": "Used to calculate array elements",
          "name": "totalDays",
          "type": "number"
        }
      ],
      "signature": "iec102.generateArrayDatastream(arrayId, sourceDatastream, asduResult, initialTime, finalTime, totalDays)",
      "summary": "Creates an array with values retrieved from pricing ASDUS. Finally created array is added to collection object.",
      "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/#iec102generatearraydatastreamarrayid-sourcedatastream-asduresult-initialtime-finaltime-totaldays"
    },
    {
      "id": "iec102.recalculateLoadCurves",
      "internal": true,
      "kind": "function",
      "name": "recalculateLoadCurves",
      "namespace": "iec102",
      "page": {
        "title": "IEC102 JS Internal API guide",
        "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/",
        "weight": 80
      },
      "params": [
        {
          "description": "ASDU execution result. Used to identify calculations to do.",
          "name": "asduResult",
          "type": "Object"
        },
        {
          "description": "Period initial time. Used to identify calculations to do.",
          "name": "initialTime",
          "type": "number"
        },
        {
          "description": "Period initial time. Used to identify calculations to do.",
          "name": "finalTime",
          "type": "number"
        }
      ],
      "signature": "iec102.recalculateLoadCurves(asduResult, initialTime, finalTime)",
      "summary": "Calculates, if necessary, load curve incremental values from total values and vice versa.",
      "url": "api/device_integration/connector_functions/protocol_apis/iec102_internal/#iec102recalculateloadcurvesasduresult-initialtime-finaltime"
    },
    {
      "examples": [
        {
          "code": "utils.odm.addIdentificationHint('provision.device.communicationModules.subscription.msisdn.current.value', \"34658965875\", true);",
          "language": "javascript"
        }
      ],
      "id": "utils.odm.addIdentificationHint",
      "internal": true,
      "kind": "function",
      "name": "addIdentificationHint",
      "namespace": "utils.odm",
      "page": {
        "title": "Utils hidden JS API",
        "url": "api/device_integration/connector_functions/core_javascript_api/utils_internal/",
        "weight": 110
      },
      "params": [
        {
          "description": "Datastream id plus .current.value",
          "name": "key",
          "type": "string"
        },
        {
          "description": "Value of datastream to search entity in the Mongo Data Base.",
          "name": "value",
          "type": "string"
        },
        {
          "description": "If the datastream is structured or not.",
          "name": "structured",
          "type": "boolean"
        }
      ],
      "returns": {
        "description": "empty."
      },
      "signature": "utils.odm.addIdentificationHint(key, value, structured)",
      "summary": "It can be used to add datastream in the Identification section of the OdmMessage, to identify the entity in Mongo Data Base.",
      "url": "api/device_integration/connector_functions/core_javascript_api/utils_internal/#utilsodmaddidentificationhintkey-value-structured"
    },
    {
      "examples": [
        {
          "code": "utils.odm.addCollectionHint('provision.device.communicationModules.subscription.address.current.value.value', \"127.0.0.1\", true);",
          "language": "javascript"
        }
      ],
      "id": "utils.odm.addCollectionHint",
      "internal": true,
      "kind": "function",
      "name": "addCollectionHint",
      "namespace": "utils.odm",
      "page": {
        "title": "Utils hidden JS API",
        "url": "api/device_integration/connector_functions/core_javascript_api/utils_internal/",
        "weight": 110
      },
      "params": [
        {
          "description": "Datastream id plus .current.value",
          "name": "key",
          "type": "string"
        },
        {
          "description": "Value of datastream to search entity in the Mongo Data Base.",
          "name": "value",
          "type": "string"
        },
        {
          "description": "If the datastream is structured or not.",
          "name": "structured",
          "type": "boolean"
        }
      ],
      "returns": {
        "description": "empty."
      },
      "signature": "utils.odm.addCollectionHint(key, value, structured)",
      "summary": "It can be used to add datastream in the Identification section of the OdmMessage, to relate the collected data with the subEntity; it is used with entities that have more than one CommunicationsCommsModule.",
      "url": "api/device_integration/connector_functions/core_javascript_api/utils_internal/#utilsodmaddcollectionhintkey-value-structured"
    },
    {
      "examples": [
        {
          "code": "var entity = utils.odm.db.getEntity(\"device_identifier\");",
          "language": "javascript"
        }
      ],
      "id": "utils.odm.db.getEntity",
      "internal": true,
      "kind": "function",
      "name": "getEntity",
      "namespace": "utils.odm.db",
      "page": {
        "title": "Utils hidden JS API",
        "url": "api/device_integration/connector_functions/core_javascript_api/utils_internal/",
        "weight": 110
      },
      "params": [
        {
          "description": "Device identifier",
          "name": "identifier",
          "type": "string"
        }
      ],
      "returns": {
        "description": "returns entity from database. It will be a json with flattened datastreams."
      },
      "signature": "utils.odm.db.getEntity(identifier)",
      "summary": "It can be used to get specific entity from database. Only entities of same organization will be searched. If no entity is found null object will be returned.",
      "url": "api/device_integration/connector_functions/core_javascript_api/utils_internal/#utilsodmdbgetentityidentifier"
    },
    {
      "examples": [
        {
          "code": "var hashResult = crypt.hmac.hash(\"HmacSHA512\", \"Some data to be hashed\", \"hashingKey\");\nlog(hashResult)\n/* Expected output: \n{\n \"error\": null,\n \"result\": [-102, 54, -66, -103, -25, 112, 1, 118, -65, 122, -22, 27, 88, 106, -54, 122, -11, -109, -63, 99, -127, -23, -15, -43, 28, 109, -22, -65, 25, 45, -85, 9, 39, 44, 39, 75, -95, -47, -61, -103, 101, -80, -62, -35, -102, 74, -76, 45, 94, -7, -35, 8, -80, -80, -65, -103, 127, 104, 75, -65, -89, 111, -34, 109]\n}\n*/",
          "language": "javascript"
        }
      ],
      "id": "crypt.hmac.hash",
      "internal": true,
      "kind": "function",
      "name": "hash",
      "namespace": "crypt.hmac",
      "page": {
        "title": "Crypto JS Internal API guide",
        "url": "api/device_integration/connector_functions/core_javascript_api/cryptography_internal/",
        "weight": 120
      },
      "params": [
        {
          "description": "Algorithm to be used for hashing. Check valid algorithm",
          "name": "algorithm",
          "type": "\u003ccode\u003ealgorithm\u003c/code\u003e"
        },
        {
          "description": "Data to be hashed",
          "name": "data",
          "type": "\u003ccode\u003estring\u003c/code\u003e"
        },
        {
          "description": "key to be used for hashing",
          "name": "key",
          "type": "\u003ccode\u003eUint8Array\u003c/code\u003e"
        }
      ],
      "returns": {
        "description": "\u003ccode\u003eObject\u003c/code\u003e"
      },
      "signature": "crypt.hmac.hash(algorithm, data, key)",
      "summary": "Create a hash from provided string using provided algorithm.",
      "url": "api/device_integration/connector_functions/core_javascript_api/cryptography_internal/#crypthmachashalgorithm-data-key"
    }
  ],
  "generatedAt": "2026-08-17T11:35:12Z",
  "internal": true,
  "platformVersion": "20.5.1-SNAPSHOT",
  "schemaVersion": "1.0"
}