{
  "openapi": "3.0.1",
  "info": {
    "description": "Onboarding API for machines",
    "title": "Machine Onboarding",
    "version": "1.0"
  },
  "externalDocs": {
    "description": "Trackunit Developer Hub",
    "url": "https://developers.trackunit.com/"
  },
  "servers": [
    {
      "url": "https://iris.trackunit.com/public/api/machine-onboarding",
      "description": "Production"
    }
  ],
  "security": [
    {
      "authorizationBearer": []
    }
  ],
  "paths": {
    "/onboardings": {
      "post": {
        "operationId": "createMachineOnboarding",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateOnboardingRepresentation"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Onboarding request successfully created - Reply includes a link to the https://developers.trackunit.com/reference/getevents API including a serial number for the requested unit.The onboarding process is not completed until you have received event(s) from this event API."
          },
          "400": {
            "description": "Bad Request, covers everything from syntax checking to validating mandatory fields, and data values being valid - the message body in the response will typically contain information about which parameters are missing or having invalid values"
          },
          "403": {
            "description": "Invalid or no Bearer token provided in Authorization header"
          },
          "500": {
            "description": "Internal Server Error"
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "summary": "Create Machine Onboarding Request"
      }
    }
  },
  "components": {
    "schemas": {
      "CreateOnboardingRepresentation": {
        "required": [
          "machine"
        ],
        "type": "object",
        "properties": {
          "machine": {
            "$ref": "#/components/schemas/MachineRepresentation"
          },
          "service": {
            "$ref": "#/components/schemas/ServiceRepresentation"
          }
        }
      },
      "IdleModeConfigurationRepresentation": {
        "required": [
          "idleCalculationMode"
        ],
        "type": "object",
        "properties": {
          "idleCalculationMode": {
            "type": "string",
            "description": "Defines Idle hours calculation mode * None: no idling is calculated for the equipment. * Low_Vehicle_Speed: (km/h) - idling is derived based on low movement speed. This is the default configuration for cars / on-road equipment. * Derived_from_Productive_Hours: idling is derived from equipment being non-productive; i.e., Operating / Total Hours minus Productive Hours. This is contingent on Productive Hours data e.g., from input wiring being mapped by InsightMapping data. * Low_Engine_Speed: (rpm) - idling is derived from engine speed where is a must to also define the idleMin and idleMax values, which defines the range for idling. This is contingent on engine speed data e.g., from CAN being available in the Insights section.",
            "enum": [
              "none",
              "low_vehicle_speed",
              "low_engine_speed",
              "derived_from_productive_hours"
            ]
          },
          "idleMax": {
            "type": "number",
            "description": "Only needed with ENGINE_RPM mode, defines the maximum EngineSpeed, where the idle calculation will only consider RPM below this value as Idling",
            "format": "double"
          },
          "idleMin": {
            "type": "number",
            "description": "Only needed with ENGINE_RPM mode, defines the minimum EngineSpeed, where the idle calculation will only consider RPM above this value as Idling",
            "format": "double"
          }
        },
        "description": "Defines how Idle hours are calculated  Do *not* enable this feature if Idle hours already are available, e.g. through CAN profile"
      },
      "MachineRepresentation": {
        "required": [
          "brand",
          "category",
          "model",
          "name",
          "unit",
          "vin"
        ],
        "type": "object",
        "properties": {
          "brand": {
            "type": "string",
            "description": "Brand of the machine - valid values are listed in the example",
            "example": "\"brand\":\"Zodiac\" - Valid values: ABG, Acromet, AEM, AGT, Ahlmann, Aichi, Airman Equipment, AIRO, AKSA, Allmand, Allu, Alorem, Altrad, Ammann, Amphitech, Arrow, ATLAS, Atlas Copco, Atlet, ATN, Ausa, Avant, Avtron, Baron, Bell, Belle, Benford, Bergmann, Bitelli, Bizzochi, BMW, Bobcat, Bocker, Bomag, Boschung, Boss, Bravi, Brendon powerwashers, Broce, Brokk, BT, Canycom, Carer, Case, Caterpillar, Cesab, Challenger, Charlatte, Chevrolet, Chicago Pneumatic, Citroën, Claas, Clark, Club Car, CMC, Cobus, Columbia, Comac, Comet, Compair, Crown, CTE, Cummins, Cushman, Custers, DAEWOO, DAF, Dahms, Degetech, DEL, Demag, Denka, Dieci, Dingli, Dinolift, Distrimex, Ditch witch, Dodge, Doosan, Dryair, Dust Fighter, Dynapac, Easylift, Egholm, Eijkelkamp SonicSampDrill, Einsa, Elliott, Endress, EP, Eurowagon, Expediter, Falcon, Fantuzzi, Faun, Fendt, Fenwick, Ferris, FG Wilson, Fiat, Fladung, Ford, France Elevateur, Franke, Fraste, Freightliner, Frost Fighter, FSI Franskan, Furukawa, Först, G.S. International, Gehl, Generac, Generator, Genie, Gesan, Giant, GM, GMC, GMG, Godwin, Goldhofer, Gorman-Rupp, Gradall, Grashopper, GreenMech, Grouthog, Grove, GSR Spa, Guinault SA, HAB, Hako, Hamm, Hammelmann, Hanta, Haulotte, Heatstar, Heatwork, Heli Americas, Himoinsa, Hino, Hinowa, Hitachi, Hitzinger, Hi-Way Safety, Hoist, Holland lift, Honda, HTC, HTF, Huddig, Husmann, Husqvarna, Hustler, Hy-Brid, Hydrema, Hydro, Hydro-ax, Hüffermann, Hypac, Hyster, Hyundai, IMER, Ingersoll Rand, Intellitech, International, Iseki, Isuzu, Iteco, ITW GSE, Iveco, JBT, JCB, Jensen, JLG, JMS, John Deere, Jungheinrich, Kaercher, Kaeser, Kalmar, Kalmar Motor AB, Kato, Kenworth, KLUBB, Knikmops, Kobelco, Komatsu, Komptech, Kramer, Kubota, Laymor, Leeboy, Leguan, Liebherr, Liftlux, Light Tower, Lincoln Electric, Linde, Linkbelt, LiuGong, LMT, Mac, Mack, Maeda, Magni, Magnum, MAN, Manitex, Manitou, Manitowoc, Mantall, Mantis, Marini, Masons, Massey Ferguson, MasterMover, McCloskey, Mec, Mecalac, MEGA E, Meiller, Menzi Muck, Mercedes-Benz, Merlo, Messersi, MFL, MIC, Mikasa, Miller Electric, MI-T-M, Mitsubishi, MMD, Moffet, Moffett, Montabert, Morbark, Morooka, Movex, MSU, MTU, Mulag, Multicar, Multione, Multiquip, Multitel, Mustang, Neoplan, Neptunes, New Holland, NIF, Niftylift, Nilfisk, Nilfisk Outdoor, Nissan, NLB, Numatic International, O&K, Ocmer, Oil & Steel, Oil&Steel, Olympian, Omme, Opel, Other, Palfinger, Paus, PB, PB Lift, Pel-Job, Perkins, Peterbilt, Peugeot, Platform Basket, PM Cranes, Polaris, Potain, Power Curber, Power Grip, Power Stow, Power Tower, Powerscreen, Pramac, Prentice, Putzmeister, Railking, Ram, Raniero, Reinco, Renault, Rheinmetall Canada, Roadtec, Ruthman, Ruthmann, Saelen, Sakai, Sany, Sase, Scando, Scania, Scarab, Schaeffer, Schopf, Schrader, Schwing, SDMO, Seat, Secatol, Sellick, Sennebogen, Shifta, Shindaiwa, Sinoboom, Skoda, Skyjack, Skytrak, Smartlift, SMV, Snorkel, Socage, Solar Guide, S-P-S, Sterling, Stiga, Still, Stöcklin, Sullair, Sullivan-Palatek, Sumitomo, Sunward, Superior, Svetruck, Tadano, Takeuchi, Taylor, Taylor Dunn, TCM, TEC Hünert, Telestack, Tennant, Terberg, Terberg Kinglifter, Terex, Terex Finlay, Terramac, Teupen, Thawzall, Thwaites, Tigercat, Tigieffe, Timan, Timberwolf, TiPS, TLD, Toro, Towerlight, Toyota, Trepel, Trevie Benne, TS Industrie, Unic, UNICARRIERS, Unimog, Upright, Utilev, Wacker Neuson, Waltco, Valtra, Van Eck, Wanco, Waterkracht, Weber MT, Weidemann, Weiler, Venieri, Vermeer, Versalift, Versatel, Vestergaard, Western Global, Western Star, West-Trailer, Weycor, Wirtgen, Vitra, Volkswagen, Volvo, Woma, Wumag, Wylie, Vögele, XCMG, Yale, Yamabiko, Yanmar, Youngman, Zepro, Zodiac"
          },
          "category": {
            "type": "string",
            "description": "Machine Category - valid values are listed in the example",
            "example": "\"category\":\"Other\" - Valid values: Air starting unit, Aircraft loader, All Terrain Vehicle, Arrow Board, Articulated hauler, Asphalt compactor, Attachment, AWP (Aerial work platform), AWP/Articulated boom lift, AWP/Boom lift, AWP/Car-mounted aerial work platform, AWP/Non-powered lift, AWP/Scissor lift, AWP/Stock Picker, AWP/Telehandler, AWP/Track, AWP/Truck, AWP/Vertical lift, Backhoe, Baggage and equipment tractor, Baggage trailer, Boat, Body carrier, Bus, Car, Charger, Compact Crawler Boom, Compressor, Container carrier, Container/pallet dolly, Container/pallet loader, Container/pallet transporter, Conveyer belt self-propelled, Crane, Crawler Dump, Crawler Excavator, Crawler Loader, De-icer, Demolition Robot, Distribution tractor, Ditch Pump, Dozer, Drilling Machine, Dumper, Electric Tug, Excavator, Flat bed tractor, Forest machine, Forklift, Fuel & Lube Truck, Generator, Grader, Ground power unit, Harvester, Heater, Heaters, Ladder lift, Lavatory service vehicle, Light tower, Mastic Transport Mixer Horizontal, Mastic Transport Mixer Perpendicular, Material Handler, Material transfer, Message Board, Milling machine, Mower, Multi-purpose tractor, Other, Pallet Truck, Passenger bus, Passenger stairs self-propelled, Passenger stairs towable, Paver, Pipe layer, Plate Vibrator, Potable water service vehicle, Powerwasher, Railroad tractor, Rigid dump truck, Road roller, Rock Drill, Roro tractor, Rubber Tire Excavator, Saw, Scissorlift, Scissorlift Diesel, Scissorlift Electric, Scraper, Screener, Scrubber Dryer, Service Truck, Shredder, Skidsteer, Soil compactor, Spider lift, Stabilizer, Street sweeper, Surface Drill Rig, SUV, Telehandler, Telescopic loader, Terminal tractor, Tipper, Tow bar, Towbar aircraft tractor, Towbarless aircraft tractor, Track loader, Tracked Dumper, Tracked excavator, Tractor, Tractor Trailer, Trailer, Trailer Mounted Boom, Trencher, Truck, Truck-mounted forklift, Two-way road/rail excavator, Utility Vehicle, Van, Waste water pump, Welder, Wheel loader, Wheeled excavator, Vibratory Rammer, Vibratory Roller, Wood chipper, Yard Dog"
          },
          "extendedInfo": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "description": "Optional, Extended machine information, as a list of key and value pairs - valid keys are listed in the example",
              "example": "\"extendedInfo\":{\"engine.brand\":\"Miller\",\"engine.model\":\"91 Straight 8 Supercharged\",\"<key>\":\"<value>\"} - Valid keys: plant, engine.brand, engine.type, engine.model, engine.avgFuelConsumption, warranty.start, warranty.end, manufacturer, technicalName, transmission.brand, transmission.model, bodyController.brand, bodyController.model, displayController.brand, displayController.model, "
            },
            "description": "Optional, Extended machine information, as a list of key and value pairs - valid keys are listed in the example",
            "example": "\"extendedInfo\":{\"engine.brand\":\"Miller\",\"engine.model\":\"91 Straight 8 Supercharged\",\"<key>\":\"<value>\"} - Valid keys: plant, engine.brand, engine.type, engine.model, engine.avgFuelConsumption, warranty.start, warranty.end, manufacturer, technicalName, transmission.brand, transmission.model, bodyController.brand, bodyController.model, displayController.brand, displayController.model, "
          },
          "externalReference": {
            "type": "string",
            "description": "Optional, External Reference of the machine"
          },
          "model": {
            "type": "string",
            "description": "Model of the machine"
          },
          "name": {
            "type": "string",
            "description": "Name of the machine"
          },
          "productionDate": {
            "type": "string",
            "description": "Optional, Production date of the machine",
            "format": "date"
          },
          "unit": {
            "$ref": "#/components/schemas/UnitRepresentation"
          },
          "vin": {
            "type": "string",
            "description": "VIN number of the machine"
          }
        }
      },
      "ServiceRepresentation": {
        "type": "object",
        "properties": {
          "allowCustomerToSeeServiceLog": {
            "type": "boolean"
          },
          "date": {
            "type": "string",
            "description": "Date for when the machines have its first service",
            "format": "date"
          },
          "includeNoteInReminder": {
            "type": "boolean"
          },
          "serviceHours": {
            "minimum": 1,
            "type": "integer",
            "description": "Number of running hours before the machine has its first service",
            "format": "int32"
          },
          "serviceKm": {
            "minimum": 1,
            "type": "integer",
            "description": "Number of km before the machine has its first service",
            "format": "int32"
          },
          "serviceNote": {
            "type": "string",
            "description": "A note attached to this service"
          },
          "warningServiceHours": {
            "minimum": 1,
            "type": "integer",
            "description": "Number of running hours before a notification about its first service will be sent",
            "format": "int32"
          },
          "warningServiceKm": {
            "minimum": 1,
            "type": "integer",
            "description": "When the machine has driven this many km, sends a notification about its first service",
            "format": "int32"
          }
        }
      },
      "UnitRepresentation": {
        "type": "object",
        "properties": {
          "canProfileId": {
            "type": "integer",
            "description": "Optional. Id of the CAN profile - Must match a valid Trackunit CAN profile, and the API user account must have permission for the CAN profile.",
            "format": "int32"
          },
          "idleModeConfiguration": {
            "$ref": "#/components/schemas/IdleModeConfigurationRepresentation"
          },
          "insightMapping": {
            "type": "array",
            "description": "Optional. Makes it possible to change the default mapping of Mtec/RAW parameters to Machine Insight data fields. The example shows the default mapping which takes place if this parameter is not used at all.  However if you use this mapping then all defaults are _**replaced**_ with the fields herein, which means _**you have to map all default-fields**_ even if you only want to change one field.That said, in special cases, it can be useful to leave out a mapping, for instance, if a parameter is available though CAN data.",
            "example": "\"insightMapping\":[{\"sourceField\":\"run1\",\"initialOffset\":0.0,\"divisionScaling\":3600.0,\"destinationField\":\"CumulativeOperatingHours\"},{\"sourceField\":\"input1\",\"initialOffset\":null,\"divisionScaling\":null,\"destinationField\":\"EngineStatus\"},{\"sourceField\":\"runodo\",\"initialOffset\":0.0,\"divisionScaling\":3600.0,\"destinationField\":\"CumulativeMovingHours\"},{\"sourceField\":\"km\",\"initialOffset\":0.0,\"divisionScaling\":1.0,\"destinationField\":\"Distance\"},{\"sourceField\":\"speed\",\"initialOffset\":0.0,\"divisionScaling\":1.0,\"destinationField\":\"Speed\"},{\"sourceField\":\"externalpower\",\"initialOffset\":0.0,\"divisionScaling\":1000.0,\"destinationField\":\"BatteryPotential\"}]",
            "items": {
              "$ref": "#/components/schemas/ValueMappingRepresentation"
            }
          },
          "predefinedCommandIds": {
            "type": "array",
            "description": "Optional. Enables sending a predefined customer command identified by an id. You can get the list of predefined commands available for the customer from the Power Config API by a GET call to the endpoint: /commands/predefined/.  In order to figure out if the command assignment was successful or not, you need to retrieve assignment events by a GET call to the /events/getEvents/.  These events have been defined to indicate the success or failure of sending a predefined command: * _predefined-command-assigned_, when the command was assigned successfully. * _predefined-command-assignment-failed_, when the command assignment failed due to an internal error. * _predefined-command-assignment-failed-unauthorized_, when the customer is not allowed to assign the command. * _predefined-command-assignment-failed-code_, when the command assignment failed due to client usage error.  The codes have been defined for the predefined-command-assignment-failed-code: * 1: Aborted, when the command could not be assigned due to a CAN profile on-boarding error. * 2: Command Not Available, when the command is not available for the customer.",
            "example": "\"predefinedCommandIds\": [\"544CC93B-E5C1-4F0C-B56B-36D272FC5BF7\", ... ]",
            "items": {
              "type": "string",
              "description": "Optional. Enables sending a predefined customer command identified by an id. You can get the list of predefined commands available for the customer from the Power Config API by a GET call to the endpoint: /commands/predefined/.  In order to figure out if the command assignment was successful or not, you need to retrieve assignment events by a GET call to the /events/getEvents/.  These events have been defined to indicate the success or failure of sending a predefined command: * _predefined-command-assigned_, when the command was assigned successfully. * _predefined-command-assignment-failed_, when the command assignment failed due to an internal error. * _predefined-command-assignment-failed-unauthorized_, when the customer is not allowed to assign the command. * _predefined-command-assignment-failed-code_, when the command assignment failed due to client usage error.  The codes have been defined for the predefined-command-assignment-failed-code: * 1: Aborted, when the command could not be assigned due to a CAN profile on-boarding error. * 2: Command Not Available, when the command is not available for the customer.",
              "format": "uuid"
            }
          },
          "serialNumber": {
            "maxLength": 2147483647,
            "minLength": 1,
            "type": "string",
            "description": "Serial number of the mounted unit - Must match a valid Trackunit device serial number, and API user account must have access / permission to edit the device."
          },
          "textCommands": {
            "type": "array",
            "description": "Optional, enables one or more Text Commands. These text commands are currently supported: * _INFILT_ON_: Enables Input Filtering. * _INFILT_OFF_: Disables Input Filtering.  In order to figure out if the command assignment was successful or not, you need to retrieve assignment events by a GET call to the /events/getEvents/.  These events have been defined to indicate the success or failure of sending text commands: * _text-command-assigned_, when the commands were assigned successfully. * _test-command-assignment-failed_, when the command assignments failed due to an internal error. * _text-command-assignment-failed-unauthorized_, when the customer is not allowed to assign the commands. * _text-command-assignment-failed-code_, when the command assignments failed due to client usage error.  The codes have been defined for the text-command-assignment-failed-code: * 1: Aborted, when the command could not be assigned due to a CAN profile on-boarding error. * 2: Command Not Available, when the command is not available for the customer.",
            "example": "\"textCommands\": [\"INFILT_ON\", ... ]",
            "items": {
              "type": "string",
              "description": "Optional, enables one or more Text Commands. These text commands are currently supported: * _INFILT_ON_: Enables Input Filtering. * _INFILT_OFF_: Disables Input Filtering.  In order to figure out if the command assignment was successful or not, you need to retrieve assignment events by a GET call to the /events/getEvents/.  These events have been defined to indicate the success or failure of sending text commands: * _text-command-assigned_, when the commands were assigned successfully. * _test-command-assignment-failed_, when the command assignments failed due to an internal error. * _text-command-assignment-failed-unauthorized_, when the customer is not allowed to assign the commands. * _text-command-assignment-failed-code_, when the command assignments failed due to client usage error.  The codes have been defined for the text-command-assignment-failed-code: * 1: Aborted, when the command could not be assigned due to a CAN profile on-boarding error. * 2: Command Not Available, when the command is not available for the customer.",
              "example": "\"textCommands\": [\"INFILT_ON\", ... ]",
              "enum": [
                "INFILT_ON",
                "INFILT_OFF"
              ]
            }
          },
          "unitId": {
            "type": "string"
          }
        }
      },
      "ValueMappingRepresentation": {
        "required": [
          "destinationField",
          "sourceField"
        ],
        "type": "object",
        "properties": {
          "destinationField": {
            "type": "string",
            "description": "Id identifying the output-value data field",
            "enum": [
              "EngineFuelRate",
              "EngineSpeed",
              "CumulativeOperatingHours",
              "EngineOilPressure",
              "EngineOilTemperature",
              "EngineCoolantTemperature",
              "EngineCoolantLevel",
              "EngineExhaustTemperature",
              "FuelRemainingPercent",
              "FuelRemainingTankCapacity",
              "WaterInFuelIndicator",
              "HydraulicTemperature",
              "HydraulicOilLevel",
              "BatteryPotential",
              "SeatBeltSwitch",
              "EnginePercentLoadAtCurrentSpeed",
              "ActualEnginePercentTorque",
              "PitchAngle",
              "RollAngle",
              "FuelUsed",
              "AftertreatmentDieselParticulateFilterSootLoadPercent",
              "AftertreatmentDieselParticulateFilterAshLoadPercent",
              "AftertreatmentDieselParticulateFilterTimeSinceLastActiveRegeneration",
              "AftertreatmentDieselParticulateFilterPassiveRegenerationStatus",
              "AftertreatmentDieselParticulateFilterActiveRegenerationStatus",
              "AftertreatmentDieselParticulateFilterStatus",
              "AfterTreatmentDieselParticulateFilterIntakeTemperature",
              "AfterTreatmentExhaustTemperature",
              "DieselParticulateFilterLampCommand",
              "AmberWarningLamp",
              "DEFRemaining",
              "EngineFuelTemperature",
              "EngineIntakeAirPressure",
              "EngineIntakeManifoldPressure",
              "EngineInterCoolerTemperature",
              "EngineOilLevel",
              "EngineTotalIdleFuelUsed",
              "ExhaustSystemHighTemperatureLampCommand",
              "HydraulicPressure",
              "MalfunctionIndicatorLamp",
              "ProtectLamp",
              "RedStopLamp",
              "TransmissionOilTemperature",
              "AftertreatmentDieselExhaustFluidTankTemperature",
              "AftertreatmentSCROperatorInducementSeverity",
              "AftertreatmentDieselExhaustFluidConcentration",
              "DieselParticulateFilterActiveRegenerationInhibitedDuetoInhibitSwitch",
              "PayloadPercentage",
              "GeneratorTotalkWHoursExport",
              "HydraulicOilFilterRestrictionSwitch",
              "ServiceComponentIdentification",
              "ServiceDelayOrCalendarTimeBased",
              "ServiceDelayOrOperationalTimeBased",
              "Distance",
              "CumulativePowerTakeOffHours",
              "Location",
              "EngineFuelDeliveryPressure",
              "EngineCoolantPressure",
              "WheelBasedVehicleSpeed",
              "BarometricPressure",
              "AmbientAirTemperature",
              "EngineIntakeAirTemperature",
              "RoadSurfaceTemperature",
              "EngineIntakeManifoldTemperature",
              "EngineAirFilterDifferentialPressure",
              "CumulativeIdleHours",
              "BatteryChargerState",
              "BatteryChargerPowerLineState",
              "BatteryChargerOutputVoltage",
              "BatteryChargerOutputCurrent",
              "EngineTripFuel",
              "AverageLoadFactorLast24",
              "CumulativeActiveRegenerationHours",
              "CumulativeIdleNonOperatingHours",
              "CumulativeLoadCount",
              "CumulativePayloadTotals",
              "EngineStatus",
              "FuelUsedLast24",
              "MaximumSpeedLast24",
              "CumulativeProductiveHours",
              "CumulativeMovingHours",
              "Speed",
              "OperationStatus",
              "CumulativeEngineHours",
              "PlatformHeightPercent",
              "PlatformHeight",
              "PlatformElevated",
              "Payload",
              "BatteryStateOfChargePercent",
              "BatteryCurrent",
              "BatteryTemperature",
              "ACPhaseL1NeutralRMSVoltage",
              "ACPhaseL2NeutralRMSVoltage",
              "ACPhaseL3NeutralRMSVoltage",
              "ACPhaseL1Frequency",
              "ACPhaseL2Frequency",
              "ACPhaseL3Frequency",
              "ACPhaseL1RMSCurrent",
              "ACPhaseL2RMSCurrent",
              "ACPhaseL3RMSCurrent",
              "ACPhaseL1L2RMSVoltage",
              "ACPhaseL2L3RMSVoltage",
              "ACPhaseL3L1RMSVoltage",
              "ACTotalActivePower",
              "ACPhaseL1ActivePower",
              "ACPhaseL2ActivePower",
              "ACPhaseL3ActivePower",
              "ACTotalApparentPower",
              "ACTotalPowerFactor",
              "ACTotalReactivePower",
              "PayloadTemperature",
              "AcTotalRelativeActivePowerLoadPercentage",
              "AcTotalRelativeApparentPowerLoadPercentage",
              "AcTotalRelativeLoadPercentage",
              "AcAveragePhaseToNeutralRmsVoltage",
              "AcAveragePhaseToPhaseRmsVoltage",
              "AcAverageRmsCurrent",
              "Accelerometer_X_Axis",
              "Accelerometer_Y_Axis",
              "Accelerometer_Z_Axis",
              "AccelerometerShock",
              "Impact",
              "AftertreatmentDieselParticulateFilterTimeToNextActiveRegeneration",
              "AftertreatmentSCRTimeSinceLastCleaningEvent",
              "EngineFuelFilterDifferentialPressure",
              "EngineOilFilterDifferentialPressure",
              "AcAverageFrequency",
              "StabilizersDeployed",
              "PlatformStowed",
              "RescueModeActive",
              "BatteryStateOfHealthPercent",
              "BatteryRemainingRunTime",
              "BatteryChargeCyclesCount",
              "BatteryCumulativeDischargedEnergy",
              "BatteryRemainingChargeTime",
              "BatteryChargerInputVoltage",
              "BatteryChargerInputCurrent",
              "BatteryChargerOutputCurrentLimit",
              "BatteryChargerInputCurrentLimit",
              "AfterTreatmentDieselParticulateFilterDifferentialPressure",
              "CumulativeCO2Emissions",
              "AftertreatmentDieselParticulateFilterActiveRegenerationState",
              "AftertreatmentDieselParticulateFilterState"
            ]
          },
          "divisionScaling": {
            "type": "number",
            "description": "After offset correction, the input-value is divided by this scaling-value, that is, outputValue = (input + AddInitialOffset) /  DivisionScaling This value is ignored for Status type _SourceFields_ (e.g. _Input1_)",
            "format": "double"
          },
          "initialOffset": {
            "type": "number",
            "description": "Offset added to the initial input-value before scaling This value is ignored for Status type _SourceFields_ (e.g. _Input1_)",
            "format": "double"
          },
          "sourceField": {
            "type": "string",
            "description": "Id identifying the input-value data field",
            "enum": [
              "km",
              "run1",
              "input1",
              "run2",
              "input2",
              "run3",
              "input3",
              "run4",
              "input4",
              "runodo",
              "speed",
              "externalpower",
              "run5",
              "input5",
              "run6",
              "input6"
            ]
          }
        },
        "description": "Defines a mapping from a _Mtec/RAW_ input field to a _Machine Insight_ field, with the possibility to do offset and scaling of the input-value, thus enabling conversion to the correct _Unit of Measure_ for the output value",
        "example": "\"insightMapping\":[{\"sourceField\":\"run1\",\"initialOffset\":0.0,\"divisionScaling\":3600.0,\"destinationField\":\"CumulativeOperatingHours\"},{\"sourceField\":\"input1\",\"initialOffset\":null,\"divisionScaling\":null,\"destinationField\":\"EngineStatus\"},{\"sourceField\":\"runodo\",\"initialOffset\":0.0,\"divisionScaling\":3600.0,\"destinationField\":\"CumulativeMovingHours\"},{\"sourceField\":\"km\",\"initialOffset\":0.0,\"divisionScaling\":1.0,\"destinationField\":\"Distance\"},{\"sourceField\":\"speed\",\"initialOffset\":0.0,\"divisionScaling\":1.0,\"destinationField\":\"Speed\"},{\"sourceField\":\"externalpower\",\"initialOffset\":0.0,\"divisionScaling\":1000.0,\"destinationField\":\"BatteryPotential\"}]"
      }
    },
    "securitySchemes": {
      "authorizationBearer": {
        "bearerFormat": "JWT",
        "scheme": "bearer",
        "type": "http"
      }
    }
  }
}
