@iotize/tap
Version:
IoTize Device client for Javascript
537 lines • 36.6 kB
JavaScript
/**
* Generated file. Do not edit
*/
import { TapRequestFrame } from '@iotize/tap/client/api';
import * as serviceConverters from './service-converters';
import { converters as commonConverters } from '@iotize/tap/service/core';
const allConverters = Object.assign(Object.assign({}, commonConverters), serviceConverters);
export const SERVICE_CALLS = {
login: {
method: TapRequestFrame.MethodType.POST,
pathAlias: '/interface/login',
path: '/1024//0',
bodyEncoder: allConverters.loginCredential,
},
loginWithHash: {
method: TapRequestFrame.MethodType.POST,
pathAlias: '/interface/login-with-hash',
path: '/1024//0',
bodyEncoder: allConverters.loginCredentialHashed,
},
logout: {
method: TapRequestFrame.MethodType.POST,
pathAlias: '/interface/logout',
path: '/1024//1',
},
getCurrentProfileId: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/current-profile/id',
path: '/1024//2',
responseBodyDecoder: allConverters.uint16,
},
getCurrentHostProtocol: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/current-host-protocol',
path: '/1024//3',
responseBodyDecoder: allConverters.hostProtocol,
},
putCurrentHostProtocol: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/current-host-protocol',
path: '/1024//3',
bodyEncoder: allConverters.hostProtocol,
},
getUID: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/uid',
path: '/1024//5',
},
loginWithUID: {
method: TapRequestFrame.MethodType.POST,
pathAlias: '/interface/uid',
path: '/1024//5',
},
keepAlive: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/keep-alive',
path: '/1024//4',
responseBodyDecoder: allConverters.uint32,
},
postKeepAlive: {
method: TapRequestFrame.MethodType.POST,
pathAlias: '/interface/keep-alive',
path: '/1024//4',
},
getSecurityOptions: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/security-options',
path: '/1024//6',
responseBodyDecoder: allConverters.securityOptions,
},
putSecurityOptions: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/security-options',
path: '/1024//6',
bodyEncoder: allConverters.securityOptions,
},
getCurrentGroupId: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/current-group-id',
path: '/1024//7',
responseBodyDecoder: allConverters.uint16,
},
getBundleIdSwdDirectAccess: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/bundle-id-swd-direct-access',
path: '/1024//100',
responseBodyDecoder: allConverters.uint16,
},
putBundleIdSwdDirectAccess: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/bundle-id-swd-direct-access',
path: '/1024//100',
bodyEncoder: allConverters.uint16,
},
getBundleIdSerialAccess: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/bundle-id-serial-access',
path: '/1024//101',
responseBodyDecoder: allConverters.uint16,
},
putBundleIdSerialAccess: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/bundle-id-serial-access',
path: '/1024//101',
bodyEncoder: allConverters.uint16,
},
getBundleIdModbusDirectAccess: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/bundle-id-modbus-direct-access',
path: '/1024//102',
responseBodyDecoder: allConverters.uint16,
},
putBundleIdModbusDirectAccess: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/bundle-id-modbus-direct-access',
path: '/1024//102',
bodyEncoder: allConverters.uint16,
},
getBundleIdTapnpassControlAccess: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/bundle-id-tapnpass-control-access',
path: '/1024//103',
responseBodyDecoder: allConverters.uint16,
},
putBundleIdTapnpassControlAccess: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/bundle-id-tapnpass-control-access',
path: '/1024//103',
bodyEncoder: allConverters.uint16,
},
getBundleIdFirmwareUpdateAccess: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/bundle-id-firmware-update-access',
path: '/1024//104',
responseBodyDecoder: allConverters.uint16,
},
putBundleIdFirmwareUpdateAccess: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/bundle-id-firmware-update-access',
path: '/1024//104',
bodyEncoder: allConverters.uint16,
},
getBundleIdMqttIdsAccess: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/bundle-id-mqtt-ids-access',
path: '/1024//105',
responseBodyDecoder: allConverters.uint16,
},
putBundleIdMqttIdsAccess: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/bundle-id-mqtt-ids-access',
path: '/1024//105',
bodyEncoder: allConverters.uint16,
},
getBundleIdVariableConfigAccess: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/bundle-id-variable-config-access',
path: '/1024//106',
responseBodyDecoder: allConverters.uint16,
},
putBundleIdVariableConfigAccess: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/bundle-id-variable-config-access',
path: '/1024//106',
bodyEncoder: allConverters.uint16,
},
getBundleIdFileSystemAccess: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/bundle-id-file-system-access',
path: '/1024//107',
responseBodyDecoder: allConverters.uint16,
},
putBundleIdFileSystemAccess: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/bundle-id-file-system-access',
path: '/1024//107',
bodyEncoder: allConverters.uint16,
},
getConfigFormatVersion: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/config-format-version',
path: '/1024//8',
responseBodyDecoder: allConverters.uint16,
},
putConfigFormatVersion: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/config-format-version',
path: '/1024//8',
bodyEncoder: allConverters.uint16,
},
getAppName: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/app-name',
path: '/1024//9',
responseBodyDecoder: allConverters.ascii,
},
putAppName: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/app-name',
path: '/1024//9',
bodyEncoder: allConverters.ascii,
},
getConfigVersion: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/config-version',
path: '/1024//10',
responseBodyDecoder: allConverters.stringVersion,
},
putConfigVersion: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/config-version',
path: '/1024//10',
bodyEncoder: allConverters.stringVersion,
},
reloadConfig: {
method: TapRequestFrame.MethodType.POST,
pathAlias: '/interface/config-version',
path: '/1024//10',
},
getAppPath: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/app-path',
path: '/1024//11',
responseBodyDecoder: allConverters.ascii,
},
putAppPath: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/app-path',
path: '/1024//11',
bodyEncoder: allConverters.ascii,
},
postAppPath: {
method: TapRequestFrame.MethodType.POST,
pathAlias: '/interface/app-path',
path: '/1024//11',
bodyEncoder: allConverters.ascii,
},
getNfcPairingMode: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/nfc/pairing-mode',
path: '/1024//13',
responseBodyDecoder: allConverters.nfcPairingMode,
},
putNfcPairingMode: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/nfc/pairing-mode',
path: '/1024//13',
bodyEncoder: allConverters.nfcPairingMode,
},
getPairingOptions: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/pairing-options',
path: '/1024//13',
responseBodyDecoder: allConverters.wirelessPairingOptions,
},
postPairingOptions: {
method: TapRequestFrame.MethodType.POST,
pathAlias: '/interface/pairing-options',
path: '/1024//13',
bodyEncoder: allConverters.wirelessPairingOptions,
},
putPairingOptions: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/pairing-options',
path: '/1024//13',
bodyEncoder: allConverters.wirelessPairingOptions,
},
getPowerOptimisationLevel: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/power-optimisation-level',
path: '/1024//14',
responseBodyDecoder: allConverters.lowPowerOptimizationLevel,
},
putPowerOptimisationLevel: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/power-optimisation-level',
path: '/1024//14',
bodyEncoder: allConverters.lowPowerOptimizationLevel,
},
getCpuFrequencyOptions: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/cpu-frequency-options',
path: '/1024//141',
responseBodyDecoder: allConverters.cpuFrequencyOptions,
},
putCpuFrequencyOptions: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/cpu-frequency-options',
path: '/1024//141',
bodyEncoder: allConverters.cpuFrequencySpeed,
},
getPowerOptimisationOptions: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/power-optimisation-options',
path: '/1024//142',
responseBodyDecoder: allConverters.powerOptimizationOptions,
},
putPowerOptimisationOptions: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/power-optimisation-options',
path: '/1024//142',
bodyEncoder: allConverters.powerOptimizationOptions,
},
getMaxLowPowerTime: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/max-low-power-time',
path: '/1024//33',
responseBodyDecoder: allConverters.uint32,
},
putMaxLowPowerTime: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/max-low-power-time',
path: '/1024//33',
bodyEncoder: allConverters.uint32,
},
getAutoRebootTimeout: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/auto-reboot-timeout',
path: '/1024//123',
responseBodyDecoder: allConverters.uint16,
},
putAutoRebootTimeout: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/auto-reboot-timeout',
path: '/1024//123',
bodyEncoder: allConverters.uint16,
},
getAuthorizedHostProtocol: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/authorized-host-protocol',
path: '/1024//17',
responseBodyDecoder: allConverters.hostProtocolArray,
},
putAuthorizedHostProtocol: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/authorized-host-protocol',
path: '/1024//17',
bodyEncoder: allConverters.hostProtocolArray,
},
getConfigFormatFirmwareVersion: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/config-format-firmware-version',
path: '/1024//18',
responseBodyDecoder: allConverters.uint16,
},
getUniversalLink: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/universal-link',
path: '/1024//19',
responseBodyDecoder: allConverters.ascii,
},
putUniversalLink: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/universal-link',
path: '/1024//19',
bodyEncoder: allConverters.ascii,
},
postUniversalLink: {
method: TapRequestFrame.MethodType.POST,
pathAlias: '/interface/universal-link',
path: '/1024//19',
bodyEncoder: allConverters.ascii,
},
listObjectInstances: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/list-object-instances',
path: '/1024//140',
bodyEncoder: allConverters.uint16,
},
getAvailableHostProtocols: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/available-host-protocols',
path: '/1024//21',
responseBodyDecoder: allConverters.hostProtocolArray,
},
getDisabledServices: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/disabled-services',
path: '/1024//75',
responseBodyDecoder: allConverters.serviceCodeArray,
},
postDisabledServices: {
method: TapRequestFrame.MethodType.POST,
pathAlias: '/interface/disabled-services',
path: '/1024//75',
bodyEncoder: allConverters.serviceCodeArray,
},
getNetworkOptions: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/network-options',
path: '/1024//127',
responseBodyDecoder: allConverters.networkOptions,
},
putNetworkOptions: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/network-options',
path: '/1024//127',
bodyEncoder: allConverters.networkOptions,
},
getRadioMixEnabled: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/radio-mix-enabled',
path: '/1024//132',
responseBodyDecoder: allConverters.uint8,
},
putRadioMixEnabled: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/radio-mix-enabled',
path: '/1024//132',
bodyEncoder: allConverters.uint8,
},
getNfcConnectionPriority: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/nfc_connection_priority',
path: '/1024//24',
responseBodyDecoder: allConverters.nfcConnectionPriority,
},
postNfcConnectionPriority: {
method: TapRequestFrame.MethodType.POST,
pathAlias: '/interface/nfc_connection_priority',
path: '/1024//24',
bodyEncoder: allConverters.nfcConnectionPriority,
},
putNfcConnectionPriority: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/nfc_connection_priority',
path: '/1024//24',
bodyEncoder: allConverters.nfcConnectionPriority,
},
getNfcAutologProfileId: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/nfc-autolog-profile-id',
path: '/1024//43',
responseBodyDecoder: allConverters.uint16,
},
putNfcAutologProfileId: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/nfc-autolog-profile-id',
path: '/1024//43',
bodyEncoder: allConverters.uint16,
},
getHostInactivityPeriod: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/host-inactivity-period',
path: '/1024//34',
responseBodyDecoder: allConverters.uint16,
},
putHostInactivityPeriod: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/host-inactivity-period',
path: '/1024//34',
bodyEncoder: allConverters.uint16,
},
getApplicationData: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/application-data',
path: '/1024//36',
},
putApplicationData: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/application-data',
path: '/1024//36',
},
postApplicationData: {
method: TapRequestFrame.MethodType.POST,
pathAlias: '/interface/application-data',
path: '/1024//36',
},
getProductKey: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/product-key',
path: '/1024//60',
responseBodyDecoder: allConverters.ascii,
},
getCurrentHostProtocolMaxFrameSize: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/current-host-protocol-max-frame-size',
path: '/1024//88',
responseBodyDecoder: allConverters.protocolMaxFrameSize,
},
executeMultiRequestFrame: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/multi-request-frame',
path: '/1024//89',
responseBodyDecoder: allConverters.multiResponseFrame,
bodyEncoder: allConverters.multiRequestFrame,
},
putCertificatePublicKey: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/certificate/public-key',
append: true,
path: '/1024//37',
},
putCertificatePrivateKey: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/certificate/private-key',
append: true,
path: '/1024//38',
},
putCertificateRootKey: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/certificate/root-key',
append: true,
path: '/1024//39',
},
getProductCode: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/product-code',
path: '/1024//84',
responseBodyDecoder: allConverters.ascii,
},
putProductCode: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/product-code',
path: '/1024//84',
bodyEncoder: allConverters.ascii,
},
getSpecialFeatureProfile: {
method: TapRequestFrame.MethodType.GET,
pathAlias: '/interface/special-feature/{featureId}',
path: '/1024//{featureId}',
responseBodyDecoder: allConverters.uint16,
},
setSpecialFeatureProfile: {
method: TapRequestFrame.MethodType.POST,
pathAlias: '/interface/special-feature/{featureId}',
path: '/1024//{featureId}',
bodyEncoder: allConverters.uint16,
},
putSpecialFeatureProfile: {
method: TapRequestFrame.MethodType.PUT,
pathAlias: '/interface/special-feature/{featureId}',
path: '/1024//{featureId}',
bodyEncoder: allConverters.uint16,
},
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jYWxscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NlcnZpY2UvaW1wbC9pbnRlcmZhY2Uvc3JjL2xpYi9nZW5lcmF0ZWQvc2VydmljZS1jYWxscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQW1CSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxLQUFLLGlCQUFpQixNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLElBQUksZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRSxNQUFNLGFBQWEsbUNBQ2QsZ0JBQWdCLEdBQ2hCLGlCQUFpQixDQUNyQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLEtBQUssRUFBRTtRQUNMLE1BQU0sRUFBRSxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUk7UUFDdkMsU0FBUyxFQUFFLGtCQUFrQjtRQUM3QixJQUFJLEVBQUUsVUFBVTtRQUNoQixXQUFXLEVBQUUsYUFBYSxDQUFDLGVBQWU7S0FDRDtJQUUzQyxhQUFhLEVBQUU7UUFDYixNQUFNLEVBQUUsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJO1FBQ3ZDLFNBQVMsRUFBRSw0QkFBNEI7UUFDdkMsSUFBSSxFQUFFLFVBQVU7UUFDaEIsV0FBVyxFQUFFLGFBQWEsQ0FBQyxxQkFBcUI7S0FDRDtJQUVqRCxNQUFNLEVBQUU7UUFDTixNQUFNLEVBQUUsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJO1FBQ3ZDLFNBQVMsRUFBRSxtQkFBbUI7UUFDOUIsSUFBSSxFQUFFLFVBQVU7S0FDYztJQUVoQyxtQkFBbUIsRUFBRTtRQUNuQixNQUFNLEVBQUUsZUFBZSxDQUFDLFVBQVUsQ0FBQyxHQUFHO1FBQ3RDLFNBQVMsRUFBRSwrQkFBK0I7UUFDMUMsSUFBSSxFQUFFLFVBQVU7UUFDaEIsbUJB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