UNPKG

@iotize/tap

Version:

IoTize Device client for Javascript

537 lines 36.6 kB
/** * 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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